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 2025-08-27 21:33:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Text-CSV_XS (Old) and /work/SRC/openSUSE:Factory/.perl-Text-CSV_XS.new.30751 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Text-CSV_XS" Wed Aug 27 21:33:19 2025 rev:59 rq:1301444 version:1.610.0 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Text-CSV_XS/perl-Text-CSV_XS.changes 2025-02-11 21:23:07.834545469 +0100 +++ /work/SRC/openSUSE:Factory/.perl-Text-CSV_XS.new.30751/perl-Text-CSV_XS.changes 2025-08-27 21:33:20.927344992 +0200 @@ -1,0 +2,6 @@ +Wed Aug 13 13:00:44 UTC 2025 - Tina Müller <tina.muel...@suse.com> + +- updated to 1.610.0 (1.61) + see /usr/share/doc/packages/perl-Text-CSV_XS/ChangeLog + +------------------------------------------------------------------- Old: ---- Text-CSV_XS-1.60.tgz New: ---- README.md Text-CSV_XS-1.61.tgz _scmsync.obsinfo build.specials.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Text-CSV_XS.spec ++++++ --- /var/tmp/diff_new_pack.uKbWh0/_old 2025-08-27 21:33:21.451366902 +0200 +++ /var/tmp/diff_new_pack.uKbWh0/_new 2025-08-27 21:33:21.455367070 +0200 @@ -18,15 +18,16 @@ %define cpan_name Text-CSV_XS Name: perl-Text-CSV_XS -Version: 1.600.0 +Version: 1.610.0 Release: 0 -# 1.60 -> normalize -> 1.600.0 -%define cpan_version 1.60 +# 1.61 -> normalize -> 1.610.0 +%define cpan_version 1.61 License: Artistic-1.0 OR GPL-1.0-or-later Summary: Comma-Separated Values manipulation routines URL: https://metacpan.org/release/%{cpan_name} Source0: https://cpan.metacpan.org/authors/id/H/HM/HMBRAND/%{cpan_name}-%{cpan_version}.tgz Source1: cpanspec.yml +Source100: README.md BuildRequires: perl BuildRequires: perl-macros Provides: perl(Text::CSV_XS) = %{version} @@ -63,5 +64,5 @@ %perl_gen_filelist %files -f %{name}.files -%doc ChangeLog CONTRIBUTING.md examples README SECURITY.md +%doc ChangeLog CONTRIBUTING.md examples LOVE_LETTER.md README SECURITY.md ++++++ README.md ++++++ ## Build Results Current state of perl in openSUSE:Factory is  The current state of perl in the devel project build (devel:languages:perl)  ++++++ Text-CSV_XS-1.60.tgz -> Text-CSV_XS-1.61.tgz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.60/CSV_XS.pm new/Text-CSV_XS-1.61/CSV_XS.pm --- old/Text-CSV_XS-1.60/CSV_XS.pm 2025-01-05 15:13:41.000000000 +0100 +++ new/Text-CSV_XS-1.61/CSV_XS.pm 2025-07-10 19:02:16.000000000 +0200 @@ -23,7 +23,7 @@ use Carp; use vars qw( $VERSION @ISA @EXPORT_OK %EXPORT_TAGS ); -$VERSION = "1.60"; +$VERSION = "1.61"; @ISA = qw( Exporter ); XSLoader::load ("Text::CSV_XS", $VERSION); @@ -3767,15 +3767,14 @@ X<detect_bom> If C<detect_bom> is given, the method L</header> will be invoked on the -opened stream to check if there is a BOM and set the encoding accordingly. +opened stream to check if there is a BOM and set the encoding accordingly. +Note that the attribute L<C<headers>|/headers> can be used to overrule the +default behavior of how that method automatically sets the attribute. C<detect_bom> can be abbreviated to C<bom>. This is the same as setting L<C<encoding>|/encoding> to C<"auto">. -Note that as the method L</header> is invoked, its default is to also set -the headers. - =head3 headers X<headers> @@ -5085,7 +5084,7 @@ The header line parsed in the L</header> contains an empty field. =item * -1013 "INI - the header contains nun-unique fields" +1013 "INI - the header contains non-unique fields" X<1013> The header line parsed in the L</header> contains at least two identical @@ -5302,9 +5301,12 @@ L<Text::CSV::Encoded>, L<Text::CSV::Separator>, L<Text::CSV::Slurp>, L<Spreadsheet::CSV> and L<Spreadsheet::Read>, and of course L<perl>. -If you are using Raku, have a look at C<Text::CSV> in the Raku ecosystem, +If you are using Raku, have a look at C<Text::CSV> in the Raku ecosystem, offering the same features. +A beautiful L<Love Letter|https://github.com/medialab/xan/blob/master/docs/LOVE_LETTER.md> +to C<CSV> by the developers of L<xan|https://github.com/medialab/xan#readme>. + =head3 non-perl A CSV parser in JavaScript, also used by L<W3C|http://www.w3.org>, is the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.60/CSV_XS.xs new/Text-CSV_XS-1.61/CSV_XS.xs --- old/Text-CSV_XS-1.60/CSV_XS.xs 2025-01-29 15:29:33.000000000 +0100 +++ new/Text-CSV_XS-1.61/CSV_XS.xs 2025-07-10 19:02:08.000000000 +0200 @@ -282,7 +282,7 @@ { 1010, "INI - the header is empty" }, { 1011, "INI - the header contains more than one valid separator" }, { 1012, "INI - the header contains an empty field" }, - { 1013, "INI - the header contains nun-unique fields" }, + { 1013, "INI - the header contains non-unique fields" }, { 1014, "INI - header called on undefined stream" }, /* Syntax errors */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.60/ChangeLog new/Text-CSV_XS-1.61/ChangeLog --- old/Text-CSV_XS-1.60/ChangeLog 2025-01-29 15:40:11.000000000 +0100 +++ new/Text-CSV_XS-1.61/ChangeLog 2025-07-26 15:43:19.000000000 +0200 @@ -1,3 +1,8 @@ +1.61 - 2025-07-26, H.Merijn Brand + * Add love letter to CSV from xan project with reference + * Bugtracker to github (long overdue) (issue 63) + * Update to Devel::PPPort-3.73 + 1.60 - 2025-01-29, H.Merijn Brand * Add SECURITY.md * CR/NL/CRNL inside quoted fields not affected by strict_eol diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.60/LOVE_LETTER.md new/Text-CSV_XS-1.61/LOVE_LETTER.md --- old/Text-CSV_XS-1.60/LOVE_LETTER.md 1970-01-01 01:00:00.000000000 +0100 +++ new/Text-CSV_XS-1.61/LOVE_LETTER.md 2025-03-31 09:31:21.000000000 +0200 @@ -0,0 +1,65 @@ +# A love letter to the CSV format + +*Or why people pretending CSV is dead are wrong* + +Every month or so, a new blog article declaring the near demise of CSV in favor of some "obviously superior" format ([parquet](https://parquet.apache.org/), newline-delimited JSON, [MessagePack](https://msgpack.org/) records etc.) find its ways to the reader's eyes. Sadly those articles often offer a very narrow and biased comparison and often fail to understand what makes CSV a seemingly unkillable staple of data serialization. + +It is therefore my intention, through this article, to write a love letter to this data format, often criticized for the wrong reasons, even more so when it is somehow deemed "cool" to hate on it. My point is not, far from it, to say that CSV is a silver bullet but rather to shine a light on some of the format's sometimes overlooked strengths. + +## 1. CSV is dead simple + +The specification of CSV holds in its title: "comma separated values". Okay, it's a lie, but still, the specification holds in a tweet and can be explained to anybody in seconds: commas separate values, new lines separate rows. Now quote values containing commas and line breaks, double your quotes, and that's it. This is so simple you might even invent it yourself without knowing it already exists while learning how to program. + +Of course it does not mean you should not use a dedicated CSV parser/writer because you *will* mess something up. + +## 2. CSV is a collective idea + +No one owns CSV. It has no real specification (yes, I know about the controversial ex-post [RFC 4180](https://datatracker.ietf.org/doc/html/rfc4180)), just a set of rules everyone kinda agrees to respect implicitly. It is, and will forever remain, an open and free collective idea. + +## 3. CSV is text + +Like JSON, YAML or XML, CSV is just plain text, that you are free to encode however you like. CSV is not a binary format, can be opened with any text editor and does not require any specialized program to be read. This means, by extension, that it can both be read and edited by humans directly, somehow. + +## 4. CSV is streamable + +CSV can be read row by row very easily without requiring more memory than what is needed to fit a single row. This also means that a trivial program that anyone can write is able to read gigabytes of CSV data with only some kilobytes of RAM. + +By comparison, column-oriented data formats such as parquet are not able to stream files row by row without requiring you to jump here and there in the file or to buffer the memory cleverly so you don't tank read performance. + +But of course, CSV is terrible if you are only interested in specific columns because you will indeed need to read all of a row only to access the part you are interested in. + +Column-oriented data format are of course a very good fit for the dataframes mindset of R, pandas and such. But critics of CSV coming from this set of practices tend to only care about use-cases where everything is expected to fit into memory. + +## 5. CSV can be appended to + +It is trivial to add new rows at the end of a CSV file and it is very efficient to do so. Just open the file in append mode (`a+`) and get going. + +Once again, column-oriented data formats cannot do this, or at least not in a straightforward manner. They can actually be regarded as on-disk dataframes, and like with dataframes, adding a column is very efficient while adding a new row really isn't. + +## 6. CSV is dynamically typed + +Please don't flee. Let me explain why this is sometimes a good thing. Sometimes when dealing with data, you might like to have some flexibility, especially across programming languages, when parsing serialized data. + +Consider JavaScript, for instance, that is unable to represent 64 bits integers. Or what languages, frameworks and libraries consider as null values (don't get me started on pandas and null values). CSV lets you parse values as you see fit and is in fact dynamically typed. But this is as much of a strength as it can become a potential footgun if you are not careful. + +Note also, but this might be hard to do with higher-level languages such as python and JavaScript, that you are not required to decode the text at all to process CSV cell values and that you can work directly on the binary representation of the text for performance reasons. + +## 7. CSV is succinct + +Having the headers written only once at the beginning of the file means the amount of formal repetition of the format is naturally very low. Consider a list of objects in JSON or the equivalent in XML and you will quickly see the cost of repeating keys everywhere. That does not mean JSON and XML will not compress very well, but few formats exhibit this level of natural conciseness. + +What's more, strings are often already optimally represented and the overhead of the format itself (some commas and quotes here and there) is kept to a minimum. Of course, statically-typed numbers could be represented more concisely, but you will not save up an order of magnitude there neither. + +## 8. Reverse CSV is still valid CSV + +This one is not often realized by everyone but a reversed (byte by byte) CSV file, is still valid CSV. This is only made possible because of the genius idea to escape quotes by doubling them, which means escaping is a palindrome. It would not work if CSV used a backslash-based escaping scheme, as is most common when representing string literals. + +But why should you care? Well, this means you can read very efficiently and very easily the last rows of a CSV file. Just feed the bytes of your file in reverse order to a CSV parser, then reverse the yielded rows and their cells' bytes and you are done (maybe read the header row before though). + +This means you can very well use a CSV output as a way to efficiently resume an aborted process. You can indeed read and parse the last rows of a CSV file in constant time since you don't need to read the whole file but only to position yourself at the end of the file to buffer the bytes in reverse and feed them to the parser. + +## 9. Excel hates CSV + +It clearly means CSV must be doing something right. + +Signed: [xan](https://github.com/medialab/xan#readme), the CSV magician diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.60/MANIFEST new/Text-CSV_XS-1.61/MANIFEST --- old/Text-CSV_XS-1.60/MANIFEST 2025-01-31 11:36:19.000000000 +0100 +++ new/Text-CSV_XS-1.61/MANIFEST 2025-07-26 16:50:04.000000000 +0200 @@ -4,6 +4,7 @@ cpanfile Dependency list for cpan/cpanm CONTRIBUTING.md Guide in how to contribute SECURITY.md Guide for reporting security issues +LOVE_LETTER.md A love letter to CSV from the xan folk CSV_XS.pm Perl part of the module CSV_XS.xs C part of the module Makefile.PL Makefile generator diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.60/META.json new/Text-CSV_XS-1.61/META.json --- old/Text-CSV_XS-1.60/META.json 2025-01-31 11:36:19.000000000 +0100 +++ new/Text-CSV_XS-1.61/META.json 2025-07-26 16:50:05.000000000 +0200 @@ -1,70 +1,70 @@ { - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : 2 - }, - "provides" : { - "Text::CSV_XS" : { - "version" : "1.60", - "file" : "CSV_XS.pm" - } - }, - "dynamic_config" : 1, - "abstract" : "Comma-Separated Values manipulation routines", - "generated_by" : "Author", - "license" : [ - "perl_5" - ], "prereqs" : { - "test" : { + "build" : { "requires" : { - "Test::More" : "0", - "Tie::Scalar" : "0" + "Config" : "0" } }, - "build" : { + "runtime" : { "requires" : { - "Config" : "0" + "perl" : "5.006001", + "XSLoader" : "0", + "IO::Handle" : "0" + }, + "recommends" : { + "Encode" : "3.21" } }, "configure" : { - "recommends" : { - "ExtUtils::MakeMaker" : "7.70" - }, "requires" : { "ExtUtils::MakeMaker" : "0" + }, + "recommends" : { + "ExtUtils::MakeMaker" : "7.76" } }, - "runtime" : { - "recommends" : { - "Encode" : "3.21" - }, + "test" : { "requires" : { - "XSLoader" : "0", - "IO::Handle" : "0", - "perl" : "5.006001" + "Test::More" : "0", + "Tie::Scalar" : "0" } } }, + "author" : [ + "H.Merijn Brand <hmbr...@cpan.org>" + ], + "provides" : { + "Text::CSV_XS" : { + "file" : "CSV_XS.pm", + "version" : "1.61" + } + }, + "abstract" : "Comma-Separated Values manipulation routines", "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], + "homepage" : "https://metacpan.org/pod/Text::CSV_XS", "repository" : { "type" : "git", "url" : "https://github.com/Tux/Text-CSV_XS", "web" : "https://github.com/Tux/Text-CSV_XS" }, - "x_IRC" : "irc://irc.perl.org/#csv", "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Text-CSV_XS" + "web" : "https://github.com/Tux/Text-CSV_XS/issues" }, - "homepage" : "https://metacpan.org/pod/Text::CSV_XS" + "x_IRC" : "irc://irc.perl.org/#csv", + "license" : [ + "http://dev.perl.org/licenses/" + ] }, - "version" : "1.60", - "author" : [ - "H.Merijn Brand <hmbr...@cpan.org>" - ], + "version" : "1.61", + "dynamic_config" : 1, + "meta-spec" : { + "version" : 2, + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec" + }, + "generated_by" : "Author", "name" : "Text-CSV_XS", + "license" : [ + "perl_5" + ], "release_status" : "stable" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.60/META.yml new/Text-CSV_XS-1.61/META.yml --- old/Text-CSV_XS-1.60/META.yml 2025-01-31 11:36:19.000000000 +0100 +++ new/Text-CSV_XS-1.61/META.yml 2025-07-26 16:50:05.000000000 +0200 @@ -16,7 +16,7 @@ provides: Text::CSV_XS: file: CSV_XS.pm - version: '1.60' + version: '1.61' recommends: Encode: '3.21' requires: @@ -27,8 +27,8 @@ perl: '5.006001' resources: IRC: irc://irc.perl.org/#csv - bugtracker: http://rt.cpan.org/NoAuth/Bugs.html?Dist=Text-CSV_XS + bugtracker: https://github.com/Tux/Text-CSV_XS/issues homepage: https://metacpan.org/pod/Text::CSV_XS license: http://dev.perl.org/licenses/ repository: https://github.com/Tux/Text-CSV_XS -version: '1.60' +version: '1.61' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.60/SECURITY.md new/Text-CSV_XS-1.61/SECURITY.md --- old/Text-CSV_XS-1.60/SECURITY.md 2025-01-06 15:07:17.000000000 +0100 +++ new/Text-CSV_XS-1.61/SECURITY.md 2025-06-05 21:10:20.000000000 +0200 @@ -1,21 +1,20 @@ # Security Policy for the Text::CSV_XS distribution. -Report issues via email at: H.Merijn Brand <hmbr...@cpan.org>. +Report security issues by email to H.Merijn Brand <hmbr...@cpan.org>. - -This is the Security Policy for the Perl Text::CSV_XS distribution. +This is the Security Policy for Text::CSV_XS. The latest version of the Security Policy can be found in the [git repository for Text::CSV_XS](https://github.com/Tux/Text-CSV_XS). This text is based on the CPAN Security Group's Guidelines for Adding -a Security Policy to Perl Distributions (version 1.0.0) +a Security Policy to Perl Distributions (version 1.3.0) https://security.metacpan.org/docs/guides/security-policy-for-authors.html # How to Report a Security Vulnerability -Security vulnerabilities can be reported by e-mail to the current -project maintainers at H.Merijn Brand <hmbr...@cpan.org>. +Security vulnerabilities can be reported to the current Text::CSV_XS +maintainers by email to H.Merijn Brand <hmbr...@cpan.org>. Please include as many details as possible, including code samples or test cases, so that we can reproduce the issue. Check that your @@ -62,13 +61,16 @@ Any security vulnerabilities in Text::CSV_XS are covered by this policy. +Security vulnerabilities in versions of any libraries that are +included in Text::CSV_XS are also covered by this policy. + Security vulnerabilities are considered anything that allows users to execute unauthorised code, access unauthorised resources, or to have an adverse impact on accessibility or performance of a system. -Security vulnerabilities in upstream software (embedded libraries, -prerequisite modules or system libraries, or in Perl), are not -covered by this policy unless they affect Text::CSV_XS, or Text::CSV_XS can +Security vulnerabilities in upstream software (prerequisite modules +or system libraries, or in Perl), are not covered by this policy +unless they affect Text::CSV_XS, or Text::CSV_XS can be used to exploit vulnerabilities in them. Security vulnerabilities in downstream software (any software that diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.60/cpanfile new/Text-CSV_XS-1.61/cpanfile --- old/Text-CSV_XS-1.60/cpanfile 2025-01-31 11:36:19.000000000 +0100 +++ new/Text-CSV_XS-1.61/cpanfile 2025-07-26 16:50:04.000000000 +0200 @@ -6,7 +6,7 @@ on "configure" => sub { requires "ExtUtils::MakeMaker"; - recommends "ExtUtils::MakeMaker" => "7.70"; + recommends "ExtUtils::MakeMaker" => "7.76"; }; on "build" => sub { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.60/ppport.h new/Text-CSV_XS-1.61/ppport.h --- old/Text-CSV_XS-1.60/ppport.h 2024-08-09 09:25:43.000000000 +0200 +++ new/Text-CSV_XS-1.61/ppport.h 2025-07-26 15:42:30.000000000 +0200 @@ -4,9 +4,9 @@ /* ---------------------------------------------------------------------- - ppport.h -- Perl/Pollution/Portability Version 3.72 + ppport.h -- Perl/Pollution/Portability Version 3.73 - Automatically created by Devel::PPPort running under perl 5.040000. + Automatically created by Devel::PPPort running under perl 5.042000. Do NOT edit this file directly! -- Edit PPPort_pm.PL and the includes in parts/inc/ instead. @@ -21,7 +21,7 @@ =head1 NAME -ppport.h - Perl/Pollution/Portability version 3.72 +ppport.h - Perl/Pollution/Portability version 3.73 =head1 SYNOPSIS @@ -302,6 +302,7 @@ sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL sv_unmagicext() NEED_sv_unmagicext NEED_sv_unmagicext_GLOBAL + sv_vstring_get() NEED_sv_vstring_get NEED_sv_vstring_get_GLOBAL utf8_to_uvchr_buf() NEED_utf8_to_uvchr_buf NEED_utf8_to_uvchr_buf_GLOBAL vload_module() NEED_vload_module NEED_vload_module_GLOBAL vmess() NEED_vmess NEED_vmess_GLOBAL @@ -588,7 +589,7 @@ # Disable broken TRIE-optimization BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if "$]" >= "5.009004" && "$]" <= "5.009005"} -my $VERSION = 3.72; +my $VERSION = 3.73; my %opt = ( quiet => 0, @@ -7089,6 +7090,7 @@ Perl_sqrt|5.006000|5.006000|n PERL_STACK_OFFSET_DEFINED|||piu PERL_STACK_OVERFLOW_CHECK|5.006000||Viu +PERL_STACK_REALIGN|||piu PERL_STATIC_FORCE_INLINE|5.031011||Viu PERL_STATIC_FORCE_INLINE_NO_RET|5.031011||Viu PERL_STATIC_INLINE|5.013004|5.013004|poVn @@ -9445,7 +9447,7 @@ sv_ref|5.023005|5.023005| SvREFCNT|5.003007|5.003007| SvREFCNT_dec|5.003007|5.003007| -SvREFCNT_dec_NN|5.017007|5.017007| +SvREFCNT_dec_NN|5.017007|5.017007|p SvREFCNT_IMMORTAL|5.017008||Viu SvREFCNT_inc|5.003007|5.003007|pn SvREFCNT_inc_NN|5.009004|5.003007|pn @@ -9631,11 +9633,13 @@ sv_vcatpvf_mg|5.006000|5.004000|p sv_vcatpvfn|5.004000|5.004000| sv_vcatpvfn_flags|5.017002|5.017002| -SvVOK|5.008001|5.008001| +SvVOK|5.008001|5.008001|p sv_vsetpvf|5.006000|5.004000|p sv_vsetpvf_mg|5.006000|5.004000|p sv_vsetpvfn|5.004000|5.004000| +sv_vstring_get|||p SvVSTRING_mg|5.009004|5.003007|p +SvVSTRING|||piu SvWEAKREF|5.006000||Viu SvWEAKREF_off|5.006000||Viu SvWEAKREF_on|5.006000||Viu @@ -12513,6 +12517,19 @@ #endif #endif + +/* work around a stack alignment bug in 32-bit GCC on Windows */ +#if defined(WIN32) && !defined(WIN64) && defined(__GNUC__) +#ifndef PERL_STACK_REALIGN +# define PERL_STACK_REALIGN __attribute__((force_align_arg_pointer)) +#endif + +#else +#ifndef PERL_STACK_REALIGN +# define PERL_STACK_REALIGN +#endif + +#endif #ifndef cBOOL # define cBOOL(cbool) ((cbool) ? (bool)1 : (bool)0) #endif @@ -15932,6 +15949,11 @@ (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0) # endif #endif + +/* not as efficient as the real thing, but it works */ +#ifndef SvREFCNT_dec_NN +# define SvREFCNT_dec_NN(sv) SvREFCNT_dec(sv) +#endif #ifndef SvREFCNT_inc_simple_void # define SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END #endif @@ -16595,6 +16617,49 @@ #endif #endif +#ifndef SvVSTRING +# define SvVSTRING(sv, len) (sv_vstring_get(sv, &(len))) +#endif + +#ifndef SvVOK +# define SvVOK(sv) (FALSE) +#endif + +#if !defined(sv_vstring_get) + +#if defined(NEED_sv_vstring_get) +static const char * DPPP_(my_sv_vstring_get)(pTHX_ SV * sv, STRLEN * lenp); +static +#else +extern const char * DPPP_(my_sv_vstring_get)(pTHX_ SV * sv, STRLEN * lenp); +#endif + +#if defined(NEED_sv_vstring_get) || defined(NEED_sv_vstring_get_GLOBAL) + +#ifdef sv_vstring_get +# undef sv_vstring_get +#endif +#define sv_vstring_get(a,b) DPPP_(my_sv_vstring_get)(aTHX_ a,b) +#define Perl_sv_vstring_get DPPP_(my_sv_vstring_get) + + +const char * +DPPP_(my_sv_vstring_get)(pTHX_ SV *sv, STRLEN *lenp) +{ +#ifdef SvVSTRING_mg + MAGIC *mg = SvVSTRING_mg(sv); + if (!mg) return NULL; + + if (lenp) *lenp = mg->mg_len; + return mg->mg_ptr; +#else + return NULL; +#endif +} + +#endif + +#endif #ifdef USE_ITHREADS #ifndef CopFILE ++++++ _scmsync.obsinfo ++++++ mtime: 1755090290 commit: 3c6f1900b25f50eb52fbf63e040865343d0042e00ecb1496d3b90e1e74c40e49 url: https://src.opensuse.org/perl/perl-Text-CSV_XS.git revision: 3c6f1900b25f50eb52fbf63e040865343d0042e00ecb1496d3b90e1e74c40e49 projectscmsync: https://src.opensuse.org/perl/_ObsPrj ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2025-08-13 16:53:35.000000000 +0200 @@ -0,0 +1 @@ +.osc