Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-Text-CSV_XS for
openSUSE:Factory checked in at 2024-05-16 17:12:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Text-CSV_XS (Old)
and /work/SRC/openSUSE:Factory/.perl-Text-CSV_XS.new.1880 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Text-CSV_XS"
Thu May 16 17:12:47 2024 rev:54 rq:1174131 version:1.540.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Text-CSV_XS/perl-Text-CSV_XS.changes
2024-03-10 20:23:54.608437117 +0100
+++
/work/SRC/openSUSE:Factory/.perl-Text-CSV_XS.new.1880/perl-Text-CSV_XS.changes
2024-05-16 17:13:27.608192391 +0200
@@ -1,0 +2,12 @@
+Fri Apr 19 03:08:23 UTC 2024 - Tina Müller <[email protected]>
+
+- updated to 1.54
+ see /usr/share/doc/packages/perl-Text-CSV_XS/ChangeLog
+
+ 1.54 - 2024-04-18, H.Merijn Brand
+ * Fix doc (Jean Forget, RT#150757)
+ * It's 2024
+ * Fix comment_str with strict
+ * Doc fixup (RT#151546)
+
+-------------------------------------------------------------------
Old:
----
Text-CSV_XS-1.53.tgz
New:
----
Text-CSV_XS-1.54.tgz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Text-CSV_XS.spec ++++++
--- /var/tmp/diff_new_pack.5z9Ou6/_old 2024-05-16 17:13:30.492296921 +0200
+++ /var/tmp/diff_new_pack.5z9Ou6/_new 2024-05-16 17:13:30.492296921 +0200
@@ -18,9 +18,10 @@
%define cpan_name Text-CSV_XS
Name: perl-Text-CSV_XS
-Version: 1.530.0
+Version: 1.540.0
Release: 0
-%define cpan_version 1.53
+# 1.54 -> normalize -> 1.540.0
+%define cpan_version 1.54
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Comma-Separated Values manipulation routines
URL: https://metacpan.org/release/%{cpan_name}
@@ -30,7 +31,7 @@
BuildRequires: perl-macros
Provides: perl(Text::CSV_XS) = %{version}
%undefine __perllib_provides
-Recommends: perl(Encode) >= 3.200.0
+Recommends: perl(Encode) >= 3.210.0
%{perl_requires}
%description
++++++ Text-CSV_XS-1.53.tgz -> Text-CSV_XS-1.54.tgz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/CSV_XS.pm
new/Text-CSV_XS-1.54/CSV_XS.pm
--- old/Text-CSV_XS-1.53/CSV_XS.pm 2023-09-22 10:29:41.000000000 +0200
+++ new/Text-CSV_XS-1.54/CSV_XS.pm 2024-04-18 09:41:00.000000000 +0200
@@ -1,6 +1,6 @@
package Text::CSV_XS;
-# Copyright (c) 2007-2023 H.Merijn Brand. All rights reserved.
+# Copyright (c) 2007-2024 H.Merijn Brand. All rights reserved.
# Copyright (c) 1998-2001 Jochen Wiedmann. All rights reserved.
# Copyright (c) 1997 Alan Citterman. All rights reserved.
#
@@ -23,7 +23,7 @@
use Carp;
use vars qw( $VERSION @ISA @EXPORT_OK %EXPORT_TAGS );
-$VERSION = "1.53";
+$VERSION = "1.54";
@ISA = qw( Exporter );
XSLoader::load ("Text::CSV_XS", $VERSION);
@@ -1795,7 +1795,7 @@
=item *
-The separation-, escape-, and escape- characters can be any ASCII character
+The separation-, quote-, and escape character(s) can be any ASCII character
in the range from C<0x20> (space) to C<0x7E> (tilde). Characters outside
this range may or may not work as expected. Multibyte characters, like UTF
C<U+060C> (ARABIC COMMA), C<U+FF0C> (FULLWIDTH COMMA), C<U+241B> (SYMBOL
@@ -1980,6 +1980,9 @@
If this attribute is set to C<1>, any row that parses to a different number
of fields than the previous row will cause the parser to throw error 2014.
+Empty rows or rows that result in no fields (like comment lines) are exempt
+from these checks.
+
=head3 skip_empty_rows
X<skip_empty_rows>
@@ -3983,6 +3986,22 @@
[ "1", "2" ],
[ "3", "4", "5" ]]
+=head3 csv
+X<csv>
+
+The I<function> L</csv> can also be called as a method or with an existing
+Text::CSV_XS object. This could help if the function is to be invoked a lot
+of times and the overhead of creating the object internally over and over
+again would be prevented by passing an existing instance.
+
+ my $csv = Text::CSV_XS->new ({ binary => 1, auto_diag => 1 });
+
+ my $aoa = $csv->csv (in => $fh);
+ my $aoa = csv (in => $fh, csv => $csv);
+
+both act the same. Running this 20000 times on a 20 lines CSV file, showed
+a 53% speedup.
+
=head2 Callbacks
X<Callbacks>
@@ -4322,21 +4341,6 @@
}
]
-=item csv
-
-The I<function> L</csv> can also be called as a method or with an existing
-Text::CSV_XS object. This could help if the function is to be invoked a lot
-of times and the overhead of creating the object internally over and over
-again would be prevented by passing an existing instance.
-
- my $csv = Text::CSV_XS->new ({ binary => 1, auto_diag => 1 });
-
- my $aoa = $csv->csv (in => $fh);
- my $aoa = csv (in => $fh, csv => $csv);
-
-both act the same. Running this 20000 times on a 20 lines CSV file, showed
-a 53% speedup.
-
=back
=head1 INTERNALS
@@ -5156,7 +5160,7 @@
=head1 COPYRIGHT AND LICENSE
- Copyright (C) 2007-2023 H.Merijn Brand. All rights reserved.
+ Copyright (C) 2007-2024 H.Merijn Brand. All rights reserved.
Copyright (C) 1998-2001 Jochen Wiedmann. All rights reserved.
Copyright (C) 1997 Alan Citterman. All rights reserved.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/CSV_XS.xs
new/Text-CSV_XS-1.54/CSV_XS.xs
--- old/Text-CSV_XS-1.53/CSV_XS.xs 2023-11-20 18:35:19.000000000 +0100
+++ new/Text-CSV_XS-1.54/CSV_XS.xs 2024-04-11 15:14:07.000000000 +0200
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2023 H.Merijn Brand. All rights reserved.
+/* Copyright (c) 2007-2024 H.Merijn Brand. All rights reserved.
* Copyright (c) 1998-2001 Jochen Wiedmann. All rights reserved.
* This program is free software; you can redistribute it and/or
* modify it under the same terms as Perl itself.
@@ -547,13 +547,23 @@
(void)memcpy (cache, csv, sizeof (csv_t));
} /* cache_set */
-#define _pretty_strl(csv) cx_pretty_str (aTHX_ csv, strlen (csv))
-#define _pretty_str(csv,xse) cx_pretty_str (aTHX_ csv, xse)
+#define _pretty_strl(cp) cx_pretty_str (aTHX_ cp, strlen (cp))
+#define _pretty_str(cp,xse) cx_pretty_str (aTHX_ cp, xse)
static char *cx_pretty_str (pTHX_ byte *s, STRLEN l) {
SV *dsv = newSVpvs_flags ("", SVs_TEMP);
return (pv_pretty (dsv, (char *)s, l, 0, NULL, NULL,
(PERL_PV_PRETTY_DUMP | PERL_PV_ESCAPE_UNI_DETECT)));
} /* _pretty_str */
+#define _pretty_sv(cp) cx_pretty_sv (aTHX_ cp)
+static char *cx_pretty_sv (pTHX_ SV *sv) {
+ SV *dsv = newSVpvs_flags ("", SVs_TEMP);
+ if (SvOK (sv) && SvPOK (sv)) {
+ STRLEN l;
+ char *s = SvPV (sv, l);
+ return _pretty_str (s, l);
+ }
+ return ("");
+ } /* _pretty_sv */
#define _cache_show_byte(trim,c) \
warn (" %-21s %02x:%3d\n", trim, c, c)
@@ -584,6 +594,7 @@
_cache_show_byte ("diag_verbose", csv->diag_verbose);
_cache_show_byte ("formula", csv->formula);
_cache_show_byte ("strict", csv->strict);
+ _cache_show_byte ("strict_n", csv->strict_n);
_cache_show_byte ("skip_empty_rows", csv->skip_empty_rows);
_cache_show_byte ("has_error_input", csv->has_error_input);
_cache_show_byte ("blank_is_undef", csv->blank_is_undef);
@@ -592,6 +603,7 @@
_cache_show_byte ("keep_meta_info", csv->keep_meta_info);
_cache_show_byte ("verbatim", csv->verbatim);
+ _cache_show_byte ("useIO", csv->useIO);
_cache_show_byte ("has_hooks", csv->has_hooks);
_cache_show_byte ("eol_is_cr", csv->eol_is_cr);
_cache_show_byte ("eol_len", csv->eol_len);
@@ -1110,9 +1122,13 @@
char *ptr2;
STRLEN l;
-#if MAINT_DEBUG > 4
- (void)fprintf (stderr, "# Combine:\n");
+#if MAINT_DEBUG > 6
+ (void)fprintf (stderr, "# %04d Combine:\n", __LINE__);
sv_dump (sv);
+#else
+#if MAINT_DEBUG > 4
+ (void)fprintf (stderr, "# %04d Combine: '%s'\n", __LINE__,
_pretty_sv (sv));
+#endif
#endif
for (ptr2 = ptr, l = len; l; ++ptr2, --l) {
byte c = *ptr2;
@@ -1252,9 +1268,13 @@
csv->tmp = result ? POPs : NULL;
PUTBACK;
-#if MAINT_DEBUG > 4
- (void)fprintf (stderr, "getline () returned:\n");
+#if MAINT_DEBUG > 6
+ (void)fprintf (stderr, "# %04d getline () returned:\n", __LINE__);
sv_dump (csv->tmp);
+#else
+#if MAINT_DEBUG > 4
+ (void)fprintf (stderr, "# %04d getline () returned: '%s'\n", __LINE__,
_pretty_sv (csv->tmp));
+#endif
#endif
}
if (csv->tmp && SvOK (csv->tmp)) {
@@ -1272,7 +1292,7 @@
}
if (match) {
#if MAINT_DEBUG > 4
- (void)fprintf (stderr, "# EOLX match, size: %d\n", csv->size);
+ (void)fprintf (stderr, "# %04d EOLX match, size: %d\n",
__LINE__, csv->size);
#endif
csv->size -= csv->eol_len;
unless (csv->verbatim)
@@ -1303,14 +1323,18 @@
}
#if MAINT_DEBUG > 4
-#define PUT_RPT (void)fprintf (stderr, "# CSV_PUT @ %4d: 0x%02x
'%c'\n", __LINE__, c, isprint (c) ? c : '?')
-#define PUT_SEPX_RPT1 (void)fprintf (stderr, "# PUT SEPX @ %4d\n", __LINE__)
-#define PUT_SEPX_RPT2 (void)fprintf (stderr, "# Done putting SEPX\n")
-#define PUT_QUOX_RPT1 (void)fprintf (stderr, "# PUT QUOX @ %4d\n", __LINE__)
-#define PUT_QUOX_RPT2 (void)fprintf (stderr, "# Done putting QUOX\n")
-#define PUT_EOLX_RPT1 (void)fprintf (stderr, "# PUT EOLX @ %4d\n", __LINE__)
-#define PUT_EOLX_RPT2 (void)fprintf (stderr, "# Done putting EOLX\n")
-#define PUSH_RPT (void)fprintf (stderr, "# AV_PUSHd @ %4d\n", __LINE__);
sv_dump (sv)
+#define PUT_RPT (void)fprintf (stderr, "# %04d CSV_PUT: 0x%02x '%c'\n",
__LINE__, c, isprint (c) ? c : '?')
+#define PUT_SEPX_RPT1 (void)fprintf (stderr, "# %04d PUT SEPX\n", __LINE__)
+#define PUT_SEPX_RPT2 (void)fprintf (stderr, "# %04d Done putting SEPX\n")
+#define PUT_QUOX_RPT1 (void)fprintf (stderr, "# %04d PUT QUOX\n", __LINE__)
+#define PUT_QUOX_RPT2 (void)fprintf (stderr, "# %04d Done putting QUOX\n")
+#define PUT_EOLX_RPT1 (void)fprintf (stderr, "# %04d PUT EOLX\n", __LINE__)
+#define PUT_EOLX_RPT2 (void)fprintf (stderr, "# %04d Done putting EOLX\n")
+#if MAINT_DEBUG > 6
+#define PUSH_RPT (void)fprintf (stderr, "# %04d AV_PUSHd\n", __LINE__);
sv_dump (sv)
+#else
+#define PUSH_RPT (void)fprintf (stderr, "# %04d AV_PUSHd '%s'\n",
__LINE__, _pretty_sv (sv))
+#endif
#else
#define PUT_RPT
#define PUT_SEPX_RPT1
@@ -1360,9 +1384,9 @@
#if MAINT_DEBUG > 3
int CSV_GET_ (pTHX_ csv_t *csv, SV *src, int l) {
int c;
- (void)fprintf (stderr, "# 1-CSV_GET @ %4d: (used: %d, size: %d, eol_pos:
%d, eolx = %d)\n", l, csv->used, csv->size, csv->eol_pos, csv->eolx);
+ (void)fprintf (stderr, "# %04d 1-CSV_GET: (used: %d, size: %d, eol_pos:
%d, eolx = %d)\n", l, csv->used, csv->size, csv->eol_pos, csv->eolx);
c = CSV_GET1;
- (void)fprintf (stderr, "# 2-CSV_GET @ %4d: 0x%02x '%c'\n", l, c, isprint
(c) ? c : '?');
+ (void)fprintf (stderr, "# %04d 2-CSV_GET: 0x%02x '%c'\n", l, c, isprint
(c) ? c : '?');
return (c);
} /* CSV_GET_ */
#define CSV_GET CSV_GET_ (aTHX_ csv, src, __LINE__)
@@ -1462,13 +1486,13 @@
#endif
restart:
#if MAINT_DEBUG > 9
- (void)fprintf (stderr, "# at restart: %d/%d/%03x pos %d = 0x%02x\n",
- waitingForField ? 1 : 0, sv ? 1 : 0, f, spl, c);
+ (void)fprintf (stderr, "# %04d at restart: %d/%d/%03x pos %d =
0x%02x\n",
+ __LINE__, waitingForField ? 1 : 0, sv ? 1 : 0, f, spl, c);
#endif
if (is_SEP (c)) {
#if MAINT_DEBUG > 1
- (void)fprintf (stderr, "# %d/%d/%03x pos %d = SEP %s\t%s\n",
- waitingForField ? 1 : 0, sv ? 1 : 0, f, spl,
+ (void)fprintf (stderr, "# %04d %d/%d/%03x pos %d = SEP %s\t%s\n",
+ __LINE__, waitingForField ? 1 : 0, sv ? 1 : 0, f, spl,
_sep_string (csv), _pretty_strl (csv->bptr + csv->used));
#endif
if (waitingForField) {
@@ -1502,8 +1526,8 @@
else
if (is_QUOTE (c)) {
#if MAINT_DEBUG > 1
- (void)fprintf (stderr, "# %d/%d/%03x pos %d = QUO '%c'\t\t%s\n",
- waitingForField ? 1 : 0, sv ? 1 : 0, f, spl, c,
+ (void)fprintf (stderr, "# %04d %d/%d/%03x pos %d = QUO
'%c'\t\t%s\n",
+ __LINE__, waitingForField ? 1 : 0, sv ? 1 : 0, f, spl, c,
_pretty_strl (csv->bptr + csv->used));
#endif
if (waitingForField) {
@@ -1683,8 +1707,8 @@
else
if (c == csv->escape_char && csv->escape_char) {
#if MAINT_DEBUG > 1
- (void)fprintf (stderr, "# %d/%d/%03x pos %d = ESC '%c'\t%s\n",
- waitingForField ? 1 : 0, sv ? 1 : 0, f, spl, c,
+ (void)fprintf (stderr, "# %04d %d/%d/%03x pos %d = ESC '%c'\t%s\n",
+ __LINE__, waitingForField ? 1 : 0, sv ? 1 : 0, f, spl, c,
_pretty_strl (csv->bptr + csv->used));
#endif
/* This means quote_char != escape_char */
@@ -1759,8 +1783,8 @@
if (c == CH_NL || is_EOL (c)) {
EOLX:
#if MAINT_DEBUG > 1
- (void)fprintf (stderr, "# %d/%d/%03x pos %d = NL\t%s\n",
- waitingForField ? 1 : 0, sv ? 1 : 0, f, spl,
+ (void)fprintf (stderr, "# %04d %d/%d/%03x pos %d = NL\t%s\n",
+ __LINE__, waitingForField ? 1 : 0, sv ? 1 : 0, f, spl,
_pretty_strl (csv->bptr + csv->used));
#endif
if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows)
{
@@ -1833,8 +1857,8 @@
else
if (c == CH_CR && !(csv->verbatim)) {
#if MAINT_DEBUG > 1
- (void)fprintf (stderr, "# %d/%d/%03x pos %d = CR\n",
- waitingForField ? 1 : 0, sv ? 1 : 0, f, spl);
+ (void)fprintf (stderr, "# %04d %d/%d/%03x pos %d = CR\n",
+ __LINE__, waitingForField ? 1 : 0, sv ? 1 : 0, f, spl);
#endif
if (waitingForField) {
int c2;
@@ -1856,8 +1880,8 @@
c = EOF;
#if MAINT_DEBUG > 9
- (void)fprintf (stderr, "# (%d) ... CR EOF 0x%x\n",
- seenSomething, c);
+ (void)fprintf (stderr, "# %04d (%d) ... CR EOF 0x%x\n",
+ __LINE__, seenSomething, c);
#endif
unless (seenSomething)
break;
@@ -1966,8 +1990,8 @@
} /* CH_CR */
else {
#if MAINT_DEBUG > 1
- (void)fprintf (stderr, "# %d/%d/%03x pos %d = CCC '%c'\t\t%s\n",
- waitingForField ? 1 : 0, sv ? 1 : 0, f, spl, c,
+ (void)fprintf (stderr, "# %04d %d/%d/%03x pos %d = CCC
'%c'\t\t%s\n",
+ __LINE__, waitingForField ? 1 : 0, sv ? 1 : 0, f, spl, c,
_pretty_strl (csv->bptr + csv->used));
#endif
/* Needed for non-IO parse, where EOL is not set during read */
@@ -1977,7 +2001,7 @@
(csv->used += csv->eol_len - 1)) {
c = CH_EOLX;
#if MAINT_DEBUG > 5
- (void)fprintf (stderr, "# -> EOLX (0x%x)\n", c);
+ (void)fprintf (stderr, "# %04d -> EOLX (0x%x)\n", __LINE__, c);
#endif
goto EOLX;
}
@@ -1988,19 +2012,19 @@
#if MAINT_DEBUG > 5
(void)fprintf (stderr,
- "COMMENT? cl = %d, size = %d, used = %d\n",
- cl, csv->size, csv->used);
+ "# %04d COMMENT? cl = %d, size = %d, used = %d\n",
+ __LINE__, cl, csv->size, csv->used);
#endif
if (cl == 1 || (
(csv->size - csv->used >= cl - 1 &&
!memcmp (csv->bptr + csv->used, csv->comment_str + 1,
cl - 1) &&
(csv->used += cl - 1)))) {
- csv->used = csv->size;
- csv->fld_idx = 0;
- c = CSV_GET;
+ csv->used = csv->size;
+ csv->fld_idx = csv->strict_n ? csv->strict_n - 1 : 0;
+ c = CSV_GET;
seenSomething = FALSE;
#if MAINT_DEBUG > 5
- (void)fprintf (stderr, "# COMMENT, SKIPPED\n");
+ (void)fprintf (stderr, "# %04d COMMENT, SKIPPED\n",
__LINE__);
#endif
if (c == EOF)
break;
@@ -2012,7 +2036,7 @@
do {
c = CSV_GET;
#if MAINT_DEBUG > 5
- (void)fprintf (stderr, "# WS next got (0x%x)\n", c);
+ (void)fprintf (stderr, "# %04d WS next got (0x%x)\n",
__LINE__, c);
#endif
} while (is_whitespace (c));
if (c == EOF)
@@ -2024,8 +2048,8 @@
}
#if MAINT_DEBUG > 5
- (void)fprintf (stderr, "# %sc 0x%x is%s binary %s utf8\n",
- f & CSV_FLAGS_QUO ? "quoted " : "", c,
+ (void)fprintf (stderr, "# %04d %sc 0x%x is%s binary %s utf8\n",
+ __LINE__, f & CSV_FLAGS_QUO ? "quoted " : "", c,
is_csv_binary (c) ? "" : " not",
csv->utf8 ? "is" : "not");
#endif
@@ -2089,7 +2113,7 @@
int res;
#if MAINT_DEBUG > 1
- (void)fprintf (stderr, "# HOOK %s %x\n", cb_name, av);
+ (void)fprintf (stderr, "# %04d HOOK %s %x\n", __LINE__, cb_name, av);
#endif
unless ((svp = hv_fetchs (hv, "callbacks", FALSE)) && _is_hashref (*svp))
return 0; /* uncoverable statement defensive programming */
@@ -2162,8 +2186,14 @@
(void)hv_store (hv, "_EOF", 4, &PL_sv_no, 0);
if (csv.strict) {
- unless (csv.strict_n) csv.strict_n = (short)csv.fld_idx;
- if (csv.fld_idx != csv.strict_n) {
+ STRLEN nf = av_len (av);
+#if MAINT_DEBUG > 6
+ (void)fprintf (stderr, "# %04d Strict nf = %2d, n = %2d, idx = %2d,
recno = %2d, res = %d\n",
+ __LINE__, nf, csv.strict_n, csv.fld_idx, csv.recno, result);
+#endif
+
+ if (nf && !csv.strict_n) csv.strict_n = (short)nf;
+ if (csv.strict_n > 0 && nf != csv.strict_n) {
unless (csv.useIO & useIO_EOF)
ParseError (&csv, 2014, csv.used);
if (last_error) /* an error callback can reset and accept */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/ChangeLog
new/Text-CSV_XS-1.54/ChangeLog
--- old/Text-CSV_XS-1.53/ChangeLog 2023-11-22 20:30:12.000000000 +0100
+++ new/Text-CSV_XS-1.54/ChangeLog 2024-04-18 09:42:29.000000000 +0200
@@ -1,3 +1,9 @@
+1.54 - 2024-04-18, H.Merijn Brand
+ * Fix doc (Jean Forget, RT#150757)
+ * It's 2024
+ * Fix comment_str with strict
+ * Doc fixup (RT#151546)
+
1.53 - 2023-11-22, H.Merijn Brand
* Two casts for -Wformat (issue 50)
* Add --skip-empty to csv2xlsx
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/META.json
new/Text-CSV_XS-1.54/META.json
--- old/Text-CSV_XS-1.53/META.json 2023-11-23 10:19:13.000000000 +0100
+++ new/Text-CSV_XS-1.54/META.json 2024-04-18 14:09:14.000000000 +0200
@@ -1,70 +1,70 @@
{
- "release_status" : "stable",
+ "name" : "Text-CSV_XS",
+ "author" : [
+ "H.Merijn Brand <[email protected]>"
+ ],
+ "abstract" : "Comma-Separated Values manipulation routines",
+ "dynamic_config" : 1,
+ "resources" : {
+ "x_IRC" : "irc://irc.perl.org/#csv",
+ "repository" : {
+ "web" : "https://github.com/Tux/Text-CSV_XS",
+ "type" : "git",
+ "url" : "https://github.com/Tux/Text-CSV_XS"
+ },
+ "bugtracker" : {
+ "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Text-CSV_XS"
+ },
+ "homepage" : "https://metacpan.org/pod/Text::CSV_XS",
+ "license" : [
+ "http://dev.perl.org/licenses/"
+ ]
+ },
+ "version" : "1.54",
"prereqs" : {
- "configure" : {
+ "test" : {
"requires" : {
- "ExtUtils::MakeMaker" : "0"
- },
+ "Tie::Scalar" : "0",
+ "Test::More" : "0"
+ }
+ },
+ "configure" : {
"recommends" : {
"ExtUtils::MakeMaker" : "7.70"
- }
},
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
"runtime" : {
- "recommends" : {
- "Encode" : "3.20"
- },
"requires" : {
- "IO::Handle" : "0",
"perl" : "5.006001",
- "XSLoader" : "0"
- }
- },
- "test" : {
- "requires" : {
- "Tie::Scalar" : "0",
- "Test::More" : "0"
- }
+ "XSLoader" : "0",
+ "IO::Handle" : "0"
},
+ "recommends" : {
+ "Encode" : "3.21"
+ }
+ },
"build" : {
"requires" : {
"Config" : "0"
- }
}
- },
- "resources" : {
- "homepage" : "https://metacpan.org/pod/Text::CSV_XS",
- "bugtracker" : {
- "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Text-CSV_XS"
- },
- "license" : [
- "http://dev.perl.org/licenses/"
- ],
- "repository" : {
- "url" : "https://github.com/Tux/Text-CSV_XS",
- "type" : "git",
- "web" : "https://github.com/Tux/Text-CSV_XS"
- },
- "x_IRC" : "irc://irc.perl.org/#csv"
- },
- "name" : "Text-CSV_XS",
+ }
+ },
+ "meta-spec" : {
+ "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+ "version" : 2
+ },
+ "generated_by" : "Author",
"provides" : {
"Text::CSV_XS" : {
- "version" : "1.53",
+ "version" : "1.54",
"file" : "CSV_XS.pm"
- }
- },
- "abstract" : "Comma-Separated Values manipulation routines",
+ }
+ },
+ "release_status" : "stable",
"license" : [
"perl_5"
- ],
- "author" : [
- "H.Merijn Brand <[email protected]>"
- ],
- "version" : "1.53",
- "generated_by" : "Author",
- "dynamic_config" : 1,
- "meta-spec" : {
- "version" : 2,
- "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec"
- }
- }
+ ]
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/META.yml
new/Text-CSV_XS-1.54/META.yml
--- old/Text-CSV_XS-1.53/META.yml 2023-11-23 10:19:13.000000000 +0100
+++ new/Text-CSV_XS-1.54/META.yml 2024-04-18 14:09:14.000000000 +0200
@@ -16,9 +16,9 @@
provides:
Text::CSV_XS:
file: CSV_XS.pm
- version: '1.53'
+ version: '1.54'
recommends:
- Encode: '3.20'
+ Encode: '3.21'
requires:
IO::Handle: 0
Test::More: 0
@@ -31,4 +31,4 @@
homepage: https://metacpan.org/pod/Text::CSV_XS
license: http://dev.perl.org/licenses/
repository: https://github.com/Tux/Text-CSV_XS
-version: '1.53'
+version: '1.54'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/Makefile.PL
new/Text-CSV_XS-1.54/Makefile.PL
--- old/Text-CSV_XS-1.53/Makefile.PL 2023-10-12 15:50:23.000000000 +0200
+++ new/Text-CSV_XS-1.54/Makefile.PL 2024-01-04 15:57:25.000000000 +0100
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# Copyright PROCURA B.V. (c) 2006-2023 H.Merijn Brand
+# Copyright PROCURA B.V. (c) 2006-2024 H.Merijn Brand
require 5.006001; # <- also see postamble at the bottom for META.yml
use strict;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/README new/Text-CSV_XS-1.54/README
--- old/Text-CSV_XS-1.53/README 2023-05-30 17:31:32.000000000 +0200
+++ new/Text-CSV_XS-1.54/README 2024-01-04 15:57:28.000000000 +0100
@@ -19,7 +19,7 @@
That process is described in the documentation.
Copying:
- Copyright (c) 2007-2023 H.Merijn Brand. All rights reserved.
+ Copyright (c) 2007-2024 H.Merijn Brand. All rights reserved.
Copyright (c) 1998-2001 Jochen Wiedmann. All rights reserved.
Portions Copyright (c) 1997 Alan Citterman. All rights reserved.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/cpanfile
new/Text-CSV_XS-1.54/cpanfile
--- old/Text-CSV_XS-1.53/cpanfile 2023-11-23 10:19:13.000000000 +0100
+++ new/Text-CSV_XS-1.54/cpanfile 2024-04-18 14:09:13.000000000 +0200
@@ -1,7 +1,7 @@
requires "IO::Handle";
requires "XSLoader";
-recommends "Encode" => "3.20";
+recommends "Encode" => "3.21";
on "configure" => sub {
requires "ExtUtils::MakeMaker";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/examples/csv-check
new/Text-CSV_XS-1.54/examples/csv-check
--- old/Text-CSV_XS-1.53/examples/csv-check 2023-01-03 13:36:46.000000000
+0100
+++ new/Text-CSV_XS-1.54/examples/csv-check 2024-01-04 15:55:56.000000000
+0100
@@ -1,7 +1,7 @@
#!/pro/bin/perl
# csv-check: Check validity of CSV file and report
-# (m)'20 [21 May 2020] Copyright H.M.Brand 2007-2023
+# (m)'20 [21 May 2020] Copyright H.M.Brand 2007-2024
# This code requires the defined-or feature and PerlIO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/examples/csv2xls
new/Text-CSV_XS-1.54/examples/csv2xls
--- old/Text-CSV_XS-1.53/examples/csv2xls 2023-11-14 13:48:22.000000000
+0100
+++ new/Text-CSV_XS-1.54/examples/csv2xls 2024-01-04 15:56:00.000000000
+0100
@@ -1,7 +1,7 @@
#!/pro/bin/perl
# csv2xls: Convert csv to xls
-# (m)'23 [14 Nov 2023] Copyright H.M.Brand 2007-2023
+# (m)'23 [14 Nov 2023] Copyright H.M.Brand 2007-2024
use 5.012000;
use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/examples/csv2xlsx
new/Text-CSV_XS-1.54/examples/csv2xlsx
--- old/Text-CSV_XS-1.53/examples/csv2xlsx 2023-11-14 13:48:55.000000000
+0100
+++ new/Text-CSV_XS-1.54/examples/csv2xlsx 2024-01-04 15:56:17.000000000
+0100
@@ -1,7 +1,7 @@
#!/pro/bin/perl
# csv2xlsx: Convert csv to xlsx
-# (m)'23 Copyright H.M.Brand 2007-2023
+# (m)'23 Copyright H.M.Brand 2007-2024
use 5.014000;
use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/examples/csvdiff
new/Text-CSV_XS-1.54/examples/csvdiff
--- old/Text-CSV_XS-1.53/examples/csvdiff 2023-08-07 13:57:49.000000000
+0200
+++ new/Text-CSV_XS-1.54/examples/csvdiff 2024-01-04 15:56:15.000000000
+0100
@@ -4,7 +4,7 @@
use warnings;
# csvdiff: Show differences between CSV files
-# (m)'23 [05 Aug 2023] Copyright H.M.Brand 2009-2023
+# (m)'23 [05 Aug 2023] Copyright H.M.Brand 2009-2024
our $VERSION = "1.03 - 20230805";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/examples/parser-xs.pl
new/Text-CSV_XS-1.54/examples/parser-xs.pl
--- old/Text-CSV_XS-1.53/examples/parser-xs.pl 2023-01-03 13:17:24.000000000
+0100
+++ new/Text-CSV_XS-1.54/examples/parser-xs.pl 2024-01-04 15:56:03.000000000
+0100
@@ -3,7 +3,7 @@
# This script can be used as a base to parse unreliable CSV streams
# Modify to your own needs
#
-# (m)'08 [23 Apr 2008] Copyright H.M.Brand 2008-2023
+# (m)'08 [23 Apr 2008] Copyright H.M.Brand 2008-2024
use strict;
use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/examples/rewrite.pl
new/Text-CSV_XS-1.54/examples/rewrite.pl
--- old/Text-CSV_XS-1.53/examples/rewrite.pl 2023-01-03 13:17:26.000000000
+0100
+++ new/Text-CSV_XS-1.54/examples/rewrite.pl 2024-01-04 15:56:06.000000000
+0100
@@ -4,7 +4,7 @@
use warnings;
# rewrite.pl: Convert csv to csv
-# (m)'17 [20 Sep 2017] Copyright H.M.Brand 2014-2023
+# (m)'17 [20 Sep 2017] Copyright H.M.Brand 2014-2024
our $VERSION = "0.05 - 20170920";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/examples/speed.pl
new/Text-CSV_XS-1.54/examples/speed.pl
--- old/Text-CSV_XS-1.53/examples/speed.pl 2023-01-03 13:17:28.000000000
+0100
+++ new/Text-CSV_XS-1.54/examples/speed.pl 2024-01-04 15:56:07.000000000
+0100
@@ -1,7 +1,7 @@
#!/usr/bin/perl -w
# speed.pl: compare different versions of Text-CSV* modules
-# (m)'08 [07 Apr 2008] Copyright H.M.Brand 2007-2023
+# (m)'08 [07 Apr 2008] Copyright H.M.Brand 2007-2024
require 5.006001;
use strict;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/ppport.h
new/Text-CSV_XS-1.54/ppport.h
--- old/Text-CSV_XS-1.53/ppport.h 2023-08-07 09:06:27.000000000 +0200
+++ new/Text-CSV_XS-1.54/ppport.h 2024-01-04 10:29:29.000000000 +0100
@@ -6,7 +6,7 @@
ppport.h -- Perl/Pollution/Portability Version 3.71
- Automatically created by Devel::PPPort running under perl 5.038000.
+ Automatically created by Devel::PPPort running under perl 5.038002.
Do NOT edit this file directly! -- Edit PPPort_pm.PL and the
includes in parts/inc/ instead.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/t/47_comment.t
new/Text-CSV_XS-1.54/t/47_comment.t
--- old/Text-CSV_XS-1.53/t/47_comment.t 2023-11-20 18:39:05.000000000 +0100
+++ new/Text-CSV_XS-1.54/t/47_comment.t 2024-04-11 15:01:58.000000000 +0200
@@ -12,7 +12,7 @@
}
else {
require Encode;
- plan tests => 61;
+ plan tests => 65;
}
require "./t/util.pl";
}
@@ -56,17 +56,57 @@
}
}
+my $data = <<"EOC";
+id | name
+#
+42 | foo
+#
+EOC
+
is_deeply (csv (
- in => *DATA,
+ in => \$data,
sep_char => "|",
headers => "auto",
allow_whitespace => 1,
- comment_str => "#"
+ comment_str => "#",
+ strict => 0,
), [{ id => 42, name => "foo" }], "Last record is comment");
+is_deeply (csv (
+ in => \$data,
+ sep_char => "|",
+ headers => "auto",
+ allow_whitespace => 1,
+ comment_str => "#",
+ strict => 1,
+ ), [{ id => 42, name => "foo" }], "Last record is comment, under strict");
+
+$data .= "3\n";
+is_deeply (csv (
+ in => \$data,
+ sep_char => "|",
+ headers => "auto",
+ allow_whitespace => 1,
+ comment_str => "#",
+ strict => 0,
+ ), [{ id => 42, name => "foo" },
+ { id => 3, name => undef },
+ ], "Valid record past comment");
+is_deeply (csv (
+ in => \$data,
+ sep_char => "|",
+ headers => "auto",
+ allow_whitespace => 1,
+ comment_str => "#",
+ strict => 1,
+ auto_diag => 0, # Suppress error 2014
+ ), [{ id => 42, name => "foo" }], "Invalid record past comment, under
strict");
+is_deeply (csv (
+ in => \"# comment\n42 | foo\n53 | bar\n",
+ sep_char => "|",
+ allow_whitespace => 1,
+ comment_str => "#",
+ strict => 1,
+ auto_diag => 1,
+ ), [[ 42, "foo" ], [ 53, "bar" ]], "Comment on first line, under strict");
1;
-__END__
-id | name
-#
-42 | foo
-#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Text-CSV_XS-1.53/t/80_diag.t
new/Text-CSV_XS-1.54/t/80_diag.t
--- old/Text-CSV_XS-1.53/t/80_diag.t 2023-09-19 10:50:39.000000000 +0200
+++ new/Text-CSV_XS-1.54/t/80_diag.t 2024-03-29 10:38:21.000000000 +0100
@@ -3,7 +3,7 @@
use strict;
use warnings;
- use Test::More tests => 345;
+ use Test::More tests => 347;
#use Test::More "no_plan";
my %err;