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 <timueller+p...@suse.de>
+
+- 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 <hmbr...@cpan.org>"
+   ],
+   "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 <hmbr...@cpan.org>"
-      ],
-   "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;

Reply via email to