texlive[74256] Master/tlpkg/tlperl: New perl
commits+siepo at tug.org
commits+siepo at tug.org
Mon Feb 24 15:12:22 CET 2025
Revision: 74256
https://tug.org/svn/texlive?view=revision&revision=74256
Author: siepo
Date: 2025-02-24 15:12:21 +0100 (Mon, 24 Feb 2025)
Log Message:
-----------
New perl
Modified Paths:
--------------
trunk/Master/tlpkg/tlperl/bin/perl.exe
trunk/Master/tlpkg/tlperl/bin/perlglob.exe
trunk/Master/tlpkg/tlperl/bin/wperl.exe
trunk/Master/tlpkg/tlperl/lib/.packlist
trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm
trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm
trunk/Master/tlpkg/tlperl/lib/App/Prove/State.pm
trunk/Master/tlpkg/tlperl/lib/App/Prove.pm
trunk/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm
trunk/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm
trunk/Master/tlpkg/tlperl/lib/Archive/Tar.pm
trunk/Master/tlpkg/tlperl/lib/B/Deparse.pm
trunk/Master/tlpkg/tlperl/lib/B/Op_private.pm
trunk/Master/tlpkg/tlperl/lib/B.pm
trunk/Master/tlpkg/tlperl/lib/Benchmark.pm
trunk/Master/tlpkg/tlperl/lib/CORE/XSUB.h
trunk/Master/tlpkg/tlperl/lib/CORE/av.h
trunk/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h
trunk/Master/tlpkg/tlperl/lib/CORE/config.h
trunk/Master/tlpkg/tlperl/lib/CORE/cop.h
trunk/Master/tlpkg/tlperl/lib/CORE/cv.h
trunk/Master/tlpkg/tlperl/lib/CORE/embed.h
trunk/Master/tlpkg/tlperl/lib/CORE/embedvar.h
trunk/Master/tlpkg/tlperl/lib/CORE/feature.h
trunk/Master/tlpkg/tlperl/lib/CORE/gv.h
trunk/Master/tlpkg/tlperl/lib/CORE/handy.h
trunk/Master/tlpkg/tlperl/lib/CORE/inline.h
trunk/Master/tlpkg/tlperl/lib/CORE/intrpvar.h
trunk/Master/tlpkg/tlperl/lib/CORE/keywords.h
trunk/Master/tlpkg/tlperl/lib/CORE/metaconfig.h
trunk/Master/tlpkg/tlperl/lib/CORE/mg_vtable.h
trunk/Master/tlpkg/tlperl/lib/CORE/nostdio.h
trunk/Master/tlpkg/tlperl/lib/CORE/opcode.h
trunk/Master/tlpkg/tlperl/lib/CORE/opnames.h
trunk/Master/tlpkg/tlperl/lib/CORE/pad.h
trunk/Master/tlpkg/tlperl/lib/CORE/patchlevel.h
trunk/Master/tlpkg/tlperl/lib/CORE/perl.h
trunk/Master/tlpkg/tlperl/lib/CORE/perl_langinfo.h
trunk/Master/tlpkg/tlperl/lib/CORE/perlhost.h
trunk/Master/tlpkg/tlperl/lib/CORE/perlvars.h
trunk/Master/tlpkg/tlperl/lib/CORE/perly.h
trunk/Master/tlpkg/tlperl/lib/CORE/pp.h
trunk/Master/tlpkg/tlperl/lib/CORE/pp_proto.h
trunk/Master/tlpkg/tlperl/lib/CORE/proto.h
trunk/Master/tlpkg/tlperl/lib/CORE/reentr.h
trunk/Master/tlpkg/tlperl/lib/CORE/regcharclass.h
trunk/Master/tlpkg/tlperl/lib/CORE/regcomp.h
trunk/Master/tlpkg/tlperl/lib/CORE/regcomp_internal.h
trunk/Master/tlpkg/tlperl/lib/CORE/regexp.h
trunk/Master/tlpkg/tlperl/lib/CORE/scope.h
trunk/Master/tlpkg/tlperl/lib/CORE/sv.h
trunk/Master/tlpkg/tlperl/lib/CORE/sv_inline.h
trunk/Master/tlpkg/tlperl/lib/CORE/uni_keywords.h
trunk/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h
trunk/Master/tlpkg/tlperl/lib/CORE/unixish.h
trunk/Master/tlpkg/tlperl/lib/CORE/utf8.h
trunk/Master/tlpkg/tlperl/lib/CORE/warnings.h
trunk/Master/tlpkg/tlperl/lib/CORE/win32.h
trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Requirements.pm
trunk/Master/tlpkg/tlperl/lib/Compress/Raw/Bzip2.pm
trunk/Master/tlpkg/tlperl/lib/Compress/Raw/Zlib.pm
trunk/Master/tlpkg/tlperl/lib/Compress/Zlib.pm
trunk/Master/tlpkg/tlperl/lib/Config.pm
trunk/Master/tlpkg/tlperl/lib/Config.pod
trunk/Master/tlpkg/tlperl/lib/Config_heavy.pl
trunk/Master/tlpkg/tlperl/lib/Cwd.pm
trunk/Master/tlpkg/tlperl/lib/Data/Dumper.pm
trunk/Master/tlpkg/tlperl/lib/Devel/PPPort.pm
trunk/Master/tlpkg/tlperl/lib/Devel/Peek.pm
trunk/Master/tlpkg/tlperl/lib/DynaLoader.pm
trunk/Master/tlpkg/tlperl/lib/Encode/Supported.pod
trunk/Master/tlpkg/tlperl/lib/Encode.pm
trunk/Master/tlpkg/tlperl/lib/Errno.pm
trunk/Master/tlpkg/tlperl/lib/Exporter/Heavy.pm
trunk/Master/tlpkg/tlperl/lib/Exporter.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Base.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Unix.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/VMS.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/aix.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/android.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/cygwin.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/darwin.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/os2.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/MANIFEST.SKIP
trunk/Master/tlpkg/tlperl/lib/ExtUtils/Manifest.pm
trunk/Master/tlpkg/tlperl/lib/ExtUtils/Miniperl.pm
trunk/Master/tlpkg/tlperl/lib/Fatal.pm
trunk/Master/tlpkg/tlperl/lib/Fcntl.pm
trunk/Master/tlpkg/tlperl/lib/File/Compare.pm
trunk/Master/tlpkg/tlperl/lib/File/Find.pm
trunk/Master/tlpkg/tlperl/lib/File/Glob.pm
trunk/Master/tlpkg/tlperl/lib/File/GlobMapper.pm
trunk/Master/tlpkg/tlperl/lib/File/Spec/AmigaOS.pm
trunk/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm
trunk/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm
trunk/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm
trunk/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm
trunk/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm
trunk/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm
trunk/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm
trunk/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm
trunk/Master/tlpkg/tlperl/lib/File/Spec.pm
trunk/Master/tlpkg/tlperl/lib/File/stat.pm
trunk/Master/tlpkg/tlperl/lib/FindBin.pm
trunk/Master/tlpkg/tlperl/lib/Getopt/Long.pm
trunk/Master/tlpkg/tlperl/lib/Getopt/Std.pm
trunk/Master/tlpkg/tlperl/lib/HTTP/Tiny.pm
trunk/Master/tlpkg/tlperl/lib/Hash/Util/FieldHash.pm
trunk/Master/tlpkg/tlperl/lib/Hash/Util.pm
trunk/Master/tlpkg/tlperl/lib/I18N/Langinfo.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Bzip2.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Deflate.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Identity.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Base/Common.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Base.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Bzip2.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Deflate.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/FAQ.pod
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Gzip/Constants.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Gzip.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/RawDeflate.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zip/Constants.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zip.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Constants.pm
trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Extra.pm
trunk/Master/tlpkg/tlperl/lib/IO/Dir.pm
trunk/Master/tlpkg/tlperl/lib/IO/File.pm
trunk/Master/tlpkg/tlperl/lib/IO/Handle.pm
trunk/Master/tlpkg/tlperl/lib/IO/Pipe.pm
trunk/Master/tlpkg/tlperl/lib/IO/Poll.pm
trunk/Master/tlpkg/tlperl/lib/IO/Seekable.pm
trunk/Master/tlpkg/tlperl/lib/IO/Select.pm
trunk/Master/tlpkg/tlperl/lib/IO/Socket/INET.pm
trunk/Master/tlpkg/tlperl/lib/IO/Socket/IP.pm
trunk/Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm
trunk/Master/tlpkg/tlperl/lib/IO/Socket.pm
trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Bunzip2.pm
trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Identity.pm
trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Inflate.pm
trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyInflate.pm
trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyUncompress.pm
trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Base.pm
trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Bunzip2.pm
trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Gunzip.pm
trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Inflate.pm
trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/RawInflate.pm
trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Unzip.pm
trunk/Master/tlpkg/tlperl/lib/IO/Zlib.pm
trunk/Master/tlpkg/tlperl/lib/IO.pm
trunk/Master/tlpkg/tlperl/lib/Internals.pod
trunk/Master/tlpkg/tlperl/lib/Math/BigFloat/Trace.pm
trunk/Master/tlpkg/tlperl/lib/Math/BigFloat.pm
trunk/Master/tlpkg/tlperl/lib/Math/BigInt/Calc.pm
trunk/Master/tlpkg/tlperl/lib/Math/BigInt/FastCalc.pm
trunk/Master/tlpkg/tlperl/lib/Math/BigInt/Lib.pm
trunk/Master/tlpkg/tlperl/lib/Math/BigInt/Trace.pm
trunk/Master/tlpkg/tlperl/lib/Math/BigInt.pm
trunk/Master/tlpkg/tlperl/lib/Math/BigRat/Trace.pm
trunk/Master/tlpkg/tlperl/lib/Math/BigRat.pm
trunk/Master/tlpkg/tlperl/lib/Module/CoreList/Utils.pm
trunk/Master/tlpkg/tlperl/lib/Module/CoreList.pm
trunk/Master/tlpkg/tlperl/lib/Module/Metadata.pm
trunk/Master/tlpkg/tlperl/lib/Net/hostent.pm
trunk/Master/tlpkg/tlperl/lib/Net/netent.pm
trunk/Master/tlpkg/tlperl/lib/Net/protoent.pm
trunk/Master/tlpkg/tlperl/lib/Net/servent.pm
trunk/Master/tlpkg/tlperl/lib/Opcode.pm
trunk/Master/tlpkg/tlperl/lib/POSIX.pm
trunk/Master/tlpkg/tlperl/lib/POSIX.pod
trunk/Master/tlpkg/tlperl/lib/PerlIO/encoding.pm
trunk/Master/tlpkg/tlperl/lib/PerlIO/scalar.pm
trunk/Master/tlpkg/tlperl/lib/PerlIO/via.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Checker.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Functions.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Html/Util.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Html.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Man.pm
trunk/Master/tlpkg/tlperl/lib/Pod/ParseLink.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/BlackBox.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Checker.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Debug.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsText.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsXML.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/HTML.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/HTMLBatch.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/HTMLLegacy.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/JustPod.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/LinkSection.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Methody.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Progress.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/PullParser.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserEndToken.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserStartToken.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserTextToken.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserToken.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/RTF.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Search.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/SimpleTree.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Subclassing.pod
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Text.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/TextContent.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/TiedOutFH.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/Transcode.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeDumb.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeSmart.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/XHTML.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple/XMLOutStream.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Simple.pod
trunk/Master/tlpkg/tlperl/lib/Pod/Text/Color.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Text/Overstrike.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Text/Termcap.pm
trunk/Master/tlpkg/tlperl/lib/Pod/Text.pm
trunk/Master/tlpkg/tlperl/lib/Safe.pm
trunk/Master/tlpkg/tlperl/lib/SelfLoader.pm
trunk/Master/tlpkg/tlperl/lib/Socket.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Base.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Base.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Color.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/ParallelSession.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/Session.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Console.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/File/Session.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/File.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Formatter/Session.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Harness/Env.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Harness.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Object.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Aggregator.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Grammar.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Array.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Process.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Stream.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/IteratorFactory.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Multiplexer.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Bailout.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Comment.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Plan.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Pragma.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Test.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Unknown.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Version.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result/YAML.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Result.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/ResultFactory.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Job.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Spinner.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/Source.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Executable.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/File.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Handle.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Perl.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/RawTAP.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Reader.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Writer.pm
trunk/Master/tlpkg/tlperl/lib/TAP/Parser.pm
trunk/Master/tlpkg/tlperl/lib/Test/Builder/Formatter.pm
trunk/Master/tlpkg/tlperl/lib/Test/Builder/Module.pm
trunk/Master/tlpkg/tlperl/lib/Test/Builder/Tester/Color.pm
trunk/Master/tlpkg/tlperl/lib/Test/Builder/Tester.pm
trunk/Master/tlpkg/tlperl/lib/Test/Builder/TodoDiag.pm
trunk/Master/tlpkg/tlperl/lib/Test/Builder.pm
trunk/Master/tlpkg/tlperl/lib/Test/Harness.pm
trunk/Master/tlpkg/tlperl/lib/Test/More.pm
trunk/Master/tlpkg/tlperl/lib/Test/Simple.pm
trunk/Master/tlpkg/tlperl/lib/Test/Tester/Capture.pm
trunk/Master/tlpkg/tlperl/lib/Test/Tester/CaptureRunner.pm
trunk/Master/tlpkg/tlperl/lib/Test/Tester/Delegate.pm
trunk/Master/tlpkg/tlperl/lib/Test/Tester.pm
trunk/Master/tlpkg/tlperl/lib/Test/use/ok.pm
trunk/Master/tlpkg/tlperl/lib/Test2/API/Breakage.pm
trunk/Master/tlpkg/tlperl/lib/Test2/API/Context.pm
trunk/Master/tlpkg/tlperl/lib/Test2/API/Instance.pm
trunk/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Event.pm
trunk/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Facet.pm
trunk/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Hub.pm
trunk/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Squasher.pm
trunk/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult.pm
trunk/Master/tlpkg/tlperl/lib/Test2/API/Stack.pm
trunk/Master/tlpkg/tlperl/lib/Test2/API.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Bail.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Diag.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Encoding.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Exception.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Fail.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Generic.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Note.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Ok.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Pass.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Plan.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Skip.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Subtest.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/TAP/Version.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/V2.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event/Waiting.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Event.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/About.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Amnesty.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Assert.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Control.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Error.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Hub.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Info/Table.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Info.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Meta.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Parent.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Plan.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Render.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet/Trace.pm
trunk/Master/tlpkg/tlperl/lib/Test2/EventFacet.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Formatter/TAP.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Formatter.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor/Terminator.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Hub/Subtest.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Hub.pm
trunk/Master/tlpkg/tlperl/lib/Test2/IPC/Driver/Files.pm
trunk/Master/tlpkg/tlperl/lib/Test2/IPC/Driver.pm
trunk/Master/tlpkg/tlperl/lib/Test2/IPC.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Tiny.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Transition.pod
trunk/Master/tlpkg/tlperl/lib/Test2/Util/ExternalMeta.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Facets2Legacy.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/HashBase.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Trace.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util.pm
trunk/Master/tlpkg/tlperl/lib/Test2.pm
trunk/Master/tlpkg/tlperl/lib/Text/Tabs.pm
trunk/Master/tlpkg/tlperl/lib/Text/Wrap.pm
trunk/Master/tlpkg/tlperl/lib/Tie/File.pm
trunk/Master/tlpkg/tlperl/lib/Time/HiRes.pm
trunk/Master/tlpkg/tlperl/lib/Time/Local.pm
trunk/Master/tlpkg/tlperl/lib/Time/gmtime.pm
trunk/Master/tlpkg/tlperl/lib/Time/localtime.pm
trunk/Master/tlpkg/tlperl/lib/Time/tm.pm
trunk/Master/tlpkg/tlperl/lib/UNIVERSAL.pm
trunk/Master/tlpkg/tlperl/lib/User/grent.pm
trunk/Master/tlpkg/tlperl/lib/User/pwent.pm
trunk/Master/tlpkg/tlperl/lib/attributes.pm
trunk/Master/tlpkg/tlperl/lib/auto/B/B.dll
trunk/Master/tlpkg/tlperl/lib/auto/B/B.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.dll
trunk/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.dll
trunk/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.dll
trunk/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.dll
trunk/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.dll
trunk/Master/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.dll
trunk/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.dll
trunk/Master/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.dll
trunk/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Encode/CN/CN.dll
trunk/Master/tlpkg/tlperl/lib/auto/Encode/CN/CN.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.dll
trunk/Master/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Encode/Encode.dll
trunk/Master/tlpkg/tlperl/lib/auto/Encode/Encode.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Encode/JP/JP.dll
trunk/Master/tlpkg/tlperl/lib/auto/Encode/JP/JP.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Encode/KR/KR.dll
trunk/Master/tlpkg/tlperl/lib/auto/Encode/KR/KR.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.dll
trunk/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Encode/TW/TW.dll
trunk/Master/tlpkg/tlperl/lib/auto/Encode/TW/TW.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.dll
trunk/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.dll
trunk/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.pdb
trunk/Master/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.dll
trunk/Master/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.pdb
trunk/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.dll
trunk/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.dll
trunk/Master/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.dll
trunk/Master/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Hash/Util/Util.dll
trunk/Master/tlpkg/tlperl/lib/auto/Hash/Util/Util.pdb
trunk/Master/tlpkg/tlperl/lib/auto/I18N/Langinfo/Langinfo.dll
trunk/Master/tlpkg/tlperl/lib/auto/I18N/Langinfo/Langinfo.pdb
trunk/Master/tlpkg/tlperl/lib/auto/IO/IO.dll
trunk/Master/tlpkg/tlperl/lib/auto/IO/IO.pdb
trunk/Master/tlpkg/tlperl/lib/auto/List/Util/Util.dll
trunk/Master/tlpkg/tlperl/lib/auto/List/Util/Util.pdb
trunk/Master/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.dll
trunk/Master/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.dll
trunk/Master/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.dll
trunk/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.pdb
trunk/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.dll
trunk/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.pdb
trunk/Master/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.dll
trunk/Master/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.pdb
trunk/Master/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.dll
trunk/Master/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.pdb
trunk/Master/tlpkg/tlperl/lib/auto/PerlIO/via/via.dll
trunk/Master/tlpkg/tlperl/lib/auto/PerlIO/via/via.pdb
trunk/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.dll
trunk/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Socket/Socket.dll
trunk/Master/tlpkg/tlperl/lib/auto/Socket/Socket.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Storable/Storable.dll
trunk/Master/tlpkg/tlperl/lib/auto/Storable/Storable.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.dll
trunk/Master/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.dll
trunk/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Time/Piece/Piece.dll
trunk/Master/tlpkg/tlperl/lib/auto/Time/Piece/Piece.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.dll
trunk/Master/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.dll
trunk/Master/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Win32/Win32.dll
trunk/Master/tlpkg/tlperl/lib/auto/Win32/Win32.pdb
trunk/Master/tlpkg/tlperl/lib/auto/Win32API/File/File.dll
trunk/Master/tlpkg/tlperl/lib/auto/Win32API/File/File.pdb
trunk/Master/tlpkg/tlperl/lib/auto/attributes/attributes.dll
trunk/Master/tlpkg/tlperl/lib/auto/attributes/attributes.pdb
trunk/Master/tlpkg/tlperl/lib/auto/mro/mro.dll
trunk/Master/tlpkg/tlperl/lib/auto/mro/mro.pdb
trunk/Master/tlpkg/tlperl/lib/auto/re/re.dll
trunk/Master/tlpkg/tlperl/lib/auto/re/re.pdb
trunk/Master/tlpkg/tlperl/lib/auto/threads/shared/shared.dll
trunk/Master/tlpkg/tlperl/lib/auto/threads/shared/shared.pdb
trunk/Master/tlpkg/tlperl/lib/auto/threads/threads.dll
trunk/Master/tlpkg/tlperl/lib/auto/threads/threads.pdb
trunk/Master/tlpkg/tlperl/lib/autodie/Scope/Guard.pm
trunk/Master/tlpkg/tlperl/lib/autodie/Scope/GuardStack.pm
trunk/Master/tlpkg/tlperl/lib/autodie/Util.pm
trunk/Master/tlpkg/tlperl/lib/autodie/exception/system.pm
trunk/Master/tlpkg/tlperl/lib/autodie/exception.pm
trunk/Master/tlpkg/tlperl/lib/autodie/hints.pm
trunk/Master/tlpkg/tlperl/lib/autodie/skip.pm
trunk/Master/tlpkg/tlperl/lib/autodie.pm
trunk/Master/tlpkg/tlperl/lib/bigfloat.pm
trunk/Master/tlpkg/tlperl/lib/bigint.pm
trunk/Master/tlpkg/tlperl/lib/bignum.pm
trunk/Master/tlpkg/tlperl/lib/bigrat.pm
trunk/Master/tlpkg/tlperl/lib/builtin.pm
trunk/Master/tlpkg/tlperl/lib/bytes.pm
trunk/Master/tlpkg/tlperl/lib/diagnostics.pm
trunk/Master/tlpkg/tlperl/lib/experimental.pm
trunk/Master/tlpkg/tlperl/lib/feature.pm
trunk/Master/tlpkg/tlperl/lib/fields.pm
trunk/Master/tlpkg/tlperl/lib/locale.pm
trunk/Master/tlpkg/tlperl/lib/mro.pm
trunk/Master/tlpkg/tlperl/lib/ok.pm
trunk/Master/tlpkg/tlperl/lib/perl5db.pl
trunk/Master/tlpkg/tlperl/lib/perlfaq.pm
trunk/Master/tlpkg/tlperl/lib/perllocal.pod
trunk/Master/tlpkg/tlperl/lib/re.pm
trunk/Master/tlpkg/tlperl/lib/stable.pm
trunk/Master/tlpkg/tlperl/lib/strict.pm
trunk/Master/tlpkg/tlperl/lib/threads/shared.pm
trunk/Master/tlpkg/tlperl/lib/threads.pm
trunk/Master/tlpkg/tlperl/lib/unicore/uni_keywords.pl
trunk/Master/tlpkg/tlperl/lib/version/regex.pm
trunk/Master/tlpkg/tlperl/lib/version.pm
trunk/Master/tlpkg/tlperl/lib/warnings/register.pm
trunk/Master/tlpkg/tlperl/lib/warnings.pm
trunk/Master/tlpkg/tlperl/site/lib/App/Prove/State/Result/Test.pm
trunk/Master/tlpkg/tlperl/site/lib/App/Prove/State/Result.pm
trunk/Master/tlpkg/tlperl/site/lib/App/Prove/State.pm
trunk/Master/tlpkg/tlperl/site/lib/App/Prove.pm
trunk/Master/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm
trunk/Master/tlpkg/tlperl/site/lib/ExtUtils/Config.pm
trunk/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/Unix.pm
trunk/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/VMS.pm
trunk/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/Windows.pm
trunk/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers.pm
trunk/Master/tlpkg/tlperl/site/lib/HTML/Entities.pm
trunk/Master/tlpkg/tlperl/site/lib/HTML/Filter.pm
trunk/Master/tlpkg/tlperl/site/lib/HTML/HeadParser.pm
trunk/Master/tlpkg/tlperl/site/lib/HTML/LinkExtor.pm
trunk/Master/tlpkg/tlperl/site/lib/HTML/Parser.pm
trunk/Master/tlpkg/tlperl/site/lib/HTML/PullParser.pm
trunk/Master/tlpkg/tlperl/site/lib/HTML/Tagset.pm
trunk/Master/tlpkg/tlperl/site/lib/HTML/TokeParser.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/Config.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/Headers/Auth.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/Headers/ETag.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/Headers/Util.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/Headers.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/Message.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/Request/Common.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/Request.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/Response.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/Status.pm
trunk/Master/tlpkg/tlperl/site/lib/JSON/MaybeXS.pm
trunk/Master/tlpkg/tlperl/site/lib/Module/Build/Tiny.pm
trunk/Master/tlpkg/tlperl/site/lib/Mozilla/CA/cacert.pem
trunk/Master/tlpkg/tlperl/site/lib/Mozilla/CA.pm
trunk/Master/tlpkg/tlperl/site/lib/Socket.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Base.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Base.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Color.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console/ParallelSession.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console/Session.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Formatter/File/Session.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Formatter/File.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Session.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Harness/Env.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Harness.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Object.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Aggregator.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Grammar.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Array.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Process.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Stream.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/IteratorFactory.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Multiplexer.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Bailout.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Comment.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Plan.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Pragma.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Test.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Unknown.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Version.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/YAML.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/ResultFactory.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler/Job.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler/Spinner.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/Source.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Executable.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/File.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Handle.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Perl.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/RawTAP.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/YAMLish/Reader.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser/YAMLish/Writer.pm
trunk/Master/tlpkg/tlperl/site/lib/TAP/Parser.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Harness.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Warnings.pm
trunk/Master/tlpkg/tlperl/site/lib/Try/Tiny.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/Escape.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/Heuristic.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/IRI.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/QueryParam.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/Split.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/URL.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/WithBase.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/_foreign.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/_generic.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/_idna.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/_ldap.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/_login.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/_punycode.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/_query.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/_segment.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/_server.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/_userpass.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/data.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/file/Base.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/file/FAT.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/file/Mac.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/file/OS2.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/file/QNX.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/file/Unix.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/file/Win32.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/file.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/ftp.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/geo.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/gopher.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/http.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/https.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/icap.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/icaps.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/ldap.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/ldapi.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/ldaps.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/mailto.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/mms.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/news.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/nntp.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/nntps.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/pop.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/rlogin.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/rsync.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/rtsp.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/rtspu.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/sftp.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/sip.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/sips.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/snews.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/ssh.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/telnet.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/tn3270.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/urn/isbn.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/urn/oid.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/urn.pm
trunk/Master/tlpkg/tlperl/site/lib/URI.pm
trunk/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.pdb
trunk/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.pdb
trunk/Master/tlpkg/tlperl/site/lib/auto/ExtUtils/Config/.packlist
trunk/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.pdb
trunk/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.pdb
trunk/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.pdb
trunk/Master/tlpkg/tlperl/site/lib/auto/Test/Warnings/.packlist
trunk/Master/tlpkg/tlperl/site/lib/auto/URI/.packlist
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.pdb
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.pdb
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.pdb
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.pdb
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.pdb
Added Paths:
-----------
trunk/Master/tlpkg/tlperl/bin/perl.pdb
trunk/Master/tlpkg/tlperl/bin/perl5.40.1.exe
trunk/Master/tlpkg/tlperl/bin/perl540.dll
trunk/Master/tlpkg/tlperl/bin/perl540.pdb
trunk/Master/tlpkg/tlperl/bin/perlglob.pdb
trunk/Master/tlpkg/tlperl/lib/CORE/locale_table.h
trunk/Master/tlpkg/tlperl/lib/CORE/perl540.lib
trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Requirements/
trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Requirements/Range.pm
trunk/Master/tlpkg/tlperl/lib/Config.pm.orig
trunk/Master/tlpkg/tlperl/lib/Config_heavy.pl.orig
trunk/Master/tlpkg/tlperl/lib/Getopt/Long/
trunk/Master/tlpkg/tlperl/lib/Getopt/Long/Parser.pm
trunk/Master/tlpkg/tlperl/lib/Term/Table/
trunk/Master/tlpkg/tlperl/lib/Term/Table/Cell.pm
trunk/Master/tlpkg/tlperl/lib/Term/Table/CellStack.pm
trunk/Master/tlpkg/tlperl/lib/Term/Table/HashBase.pm
trunk/Master/tlpkg/tlperl/lib/Term/Table/LineBreak.pm
trunk/Master/tlpkg/tlperl/lib/Term/Table/Spacer.pm
trunk/Master/tlpkg/tlperl/lib/Term/Table/Util.pm
trunk/Master/tlpkg/tlperl/lib/Term/Table.pm
trunk/Master/tlpkg/tlperl/lib/Test2/AsyncSubtest/
trunk/Master/tlpkg/tlperl/lib/Test2/AsyncSubtest/Event/
trunk/Master/tlpkg/tlperl/lib/Test2/AsyncSubtest/Event/Attach.pm
trunk/Master/tlpkg/tlperl/lib/Test2/AsyncSubtest/Event/Detach.pm
trunk/Master/tlpkg/tlperl/lib/Test2/AsyncSubtest/Formatter.pm
trunk/Master/tlpkg/tlperl/lib/Test2/AsyncSubtest/Hub.pm
trunk/Master/tlpkg/tlperl/lib/Test2/AsyncSubtest.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Bundle/
trunk/Master/tlpkg/tlperl/lib/Test2/Bundle/Extended.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Bundle/More.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Bundle/Simple.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Bundle.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Array.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Bag.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Base.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Bool.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Custom.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/DeepRef.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Delta.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Event.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/EventMeta.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Float.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Hash.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Isa.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Meta.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Negatable.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Number.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Object.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/OrderedSubset.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Pattern.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Ref.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Regex.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Scalar.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Set.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/String.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Undef.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare/Wildcard.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Compare.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Anatomy/
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Anatomy/API.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Anatomy/Context.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Anatomy/EndToEnd.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Anatomy/Event.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Anatomy/Hubs.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Anatomy/IPC.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Anatomy/Utilities.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Anatomy.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Concurrency.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Contributing.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Testing/
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Testing/Introduction.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Testing/Migrating.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Testing/Planning.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Testing/Todo.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Testing.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/FirstTool.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/Formatter.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/Nesting.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/Plugin/
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/Plugin/TestExit.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/Plugin/TestingDone.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/Plugin/ToolCompletes.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/Plugin/ToolStarts.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/Subtest.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/TestBuilder.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling/Testing.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual/Tooling.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Manual.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Mock.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Plugin/
trunk/Master/tlpkg/tlperl/lib/Test2/Plugin/BailOnFail.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Plugin/DieOnFail.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Plugin/ExitSummary.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Plugin/SRand.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Plugin/Times.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Plugin/UTF8.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Plugin.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require/
trunk/Master/tlpkg/tlperl/lib/Test2/Require/AuthorTesting.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require/AutomatedTesting.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require/EnvVar.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require/ExtendedTesting.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require/Fork.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require/Module.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require/NonInteractiveTesting.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require/Perl.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require/RealFork.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require/ReleaseTesting.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require/Threads.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Require.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Suite.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Todo.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/AsyncSubtest.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Basic.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Class.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/ClassicCompare.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Compare.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Defer.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Encoding.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Event.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Exception.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Exports.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/GenTemp.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Grab.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Mock.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Ref.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Refcount.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Spec.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Subtest.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Target.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Tester.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools/Warnings.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Tools.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Grabber.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Guard.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Importer.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Ref.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Stash.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Sub.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Table/
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Table/Cell.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Table/LineBreak.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Table.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Term.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Util/Times.pm
trunk/Master/tlpkg/tlperl/lib/Test2/V0.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Workflow/
trunk/Master/tlpkg/tlperl/lib/Test2/Workflow/BlockBase.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Workflow/Build.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Workflow/Runner.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Workflow/Task/
trunk/Master/tlpkg/tlperl/lib/Test2/Workflow/Task/Action.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Workflow/Task/Group.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Workflow/Task.pm
trunk/Master/tlpkg/tlperl/lib/Test2/Workflow.pm
trunk/Master/tlpkg/tlperl/site/lib/B/
trunk/Master/tlpkg/tlperl/site/lib/B/COW.pm
trunk/Master/tlpkg/tlperl/site/lib/Clone.pm
trunk/Master/tlpkg/tlperl/site/lib/ExtUtils/Config/
trunk/Master/tlpkg/tlperl/site/lib/ExtUtils/Config/MakeMaker.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/CookieJar/
trunk/Master/tlpkg/tlperl/site/lib/HTTP/CookieJar/LWP.pm
trunk/Master/tlpkg/tlperl/site/lib/HTTP/CookieJar.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Authen/
trunk/Master/tlpkg/tlperl/site/lib/LWP/Authen/Basic.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Authen/Digest.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Authen/Ntlm.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/ConnCache.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Debug/
trunk/Master/tlpkg/tlperl/site/lib/LWP/Debug/TraceHTTP.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Debug.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/DebugFile.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/MemberMixin.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/cpan.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/data.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/file.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/ftp.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/gopher.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/http.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/loopback.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/mailto.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/nntp.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol/nogo.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Protocol.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/RobotUA.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/Simple.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP/UserAgent.pm
trunk/Master/tlpkg/tlperl/site/lib/LWP.pm
trunk/Master/tlpkg/tlperl/site/lib/MIME/
trunk/Master/tlpkg/tlperl/site/lib/MIME/Base32.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/All.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Any.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Array.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/ArrayEach.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/ArrayElementsOnly.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/ArrayLength.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/ArrayLengthOnly.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Blessed.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Boolean.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Cache/
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Cache/Simple.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Cache.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Class.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Cmp.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Code.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Hash.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/HashEach.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/HashElements.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/HashKeys.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/HashKeysOnly.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Ignore.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Isa.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/ListMethods.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/MM.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Methods.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/NoTest.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/None.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Number.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Obj.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Ref.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/RefType.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Regexp.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/RegexpMatches.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/RegexpOnly.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/RegexpRef.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/RegexpRefOnly.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/RegexpVersion.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/ScalarRef.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/ScalarRefOnly.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Set.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Shallow.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/Stack.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep/String.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Deep.pm
trunk/Master/tlpkg/tlperl/site/lib/Test/Requires.pm
trunk/Master/tlpkg/tlperl/site/lib/Test2/
trunk/Master/tlpkg/tlperl/site/lib/Test2/Warnings.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/ftpes.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/ftps.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/irc.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/ircs.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/otpauth.pm
trunk/Master/tlpkg/tlperl/site/lib/URI/scp.pm
trunk/Master/tlpkg/tlperl/site/lib/auto/B/
trunk/Master/tlpkg/tlperl/site/lib/auto/B/COW/
trunk/Master/tlpkg/tlperl/site/lib/auto/B/COW/.packlist
trunk/Master/tlpkg/tlperl/site/lib/auto/B/COW/COW.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/B/COW/COW.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/B/COW/COW.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/B/COW/COW.pdb
trunk/Master/tlpkg/tlperl/site/lib/auto/Clone/
trunk/Master/tlpkg/tlperl/site/lib/auto/Clone/.packlist
trunk/Master/tlpkg/tlperl/site/lib/auto/Clone/Clone.dll
trunk/Master/tlpkg/tlperl/site/lib/auto/Clone/Clone.exp
trunk/Master/tlpkg/tlperl/site/lib/auto/Clone/Clone.lib
trunk/Master/tlpkg/tlperl/site/lib/auto/Clone/Clone.pdb
trunk/Master/tlpkg/tlperl/site/lib/auto/Clone/autosplit.ix
trunk/Master/tlpkg/tlperl/site/lib/auto/HTTP/CookieJar/
trunk/Master/tlpkg/tlperl/site/lib/auto/HTTP/CookieJar/.packlist
trunk/Master/tlpkg/tlperl/site/lib/auto/LWP/.packlist
trunk/Master/tlpkg/tlperl/site/lib/auto/MIME/
trunk/Master/tlpkg/tlperl/site/lib/auto/MIME/Base32/
trunk/Master/tlpkg/tlperl/site/lib/auto/MIME/Base32/.packlist
trunk/Master/tlpkg/tlperl/site/lib/auto/Test/Deep/
trunk/Master/tlpkg/tlperl/site/lib/auto/Test/Deep/.packlist
trunk/Master/tlpkg/tlperl/site/lib/auto/Test/Requires/
trunk/Master/tlpkg/tlperl/site/lib/auto/Test/Requires/.packlist
trunk/Master/tlpkg/tlperl/site/lib/lwpcook.pod
trunk/Master/tlpkg/tlperl/site/lib/lwptut.pod
Removed Paths:
-------------
trunk/Master/tlpkg/tlperl/bin/perl5.38.2.exe
trunk/Master/tlpkg/tlperl/bin/perl538.dll
trunk/Master/tlpkg/tlperl/lib/CORE/perl538.lib
trunk/Master/tlpkg/tlperl/lib/CORE/uconfig.h
trunk/Master/tlpkg/tlperl/lib/Config.orig.pm
trunk/Master/tlpkg/tlperl/lib/Config_heavy.orig.pl
trunk/Master/tlpkg/tlperl/lib/auto/PerlIO/scalar/
trunk/Master/tlpkg/tlperl/lib/bytes_heavy.pl
Modified: trunk/Master/tlpkg/tlperl/bin/perl.exe
===================================================================
(Binary files differ)
Added: trunk/Master/tlpkg/tlperl/bin/perl.pdb
===================================================================
(Binary files differ)
Index: trunk/Master/tlpkg/tlperl/bin/perl.pdb
===================================================================
--- trunk/Master/tlpkg/tlperl/bin/perl.pdb 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/bin/perl.pdb 2025-02-24 14:12:21 UTC (rev 74256)
Property changes on: trunk/Master/tlpkg/tlperl/bin/perl.pdb
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/x-ms-pdb
\ No newline at end of property
Deleted: trunk/Master/tlpkg/tlperl/bin/perl5.38.2.exe
===================================================================
(Binary files differ)
Added: trunk/Master/tlpkg/tlperl/bin/perl5.40.1.exe
===================================================================
(Binary files differ)
Index: trunk/Master/tlpkg/tlperl/bin/perl5.40.1.exe
===================================================================
--- trunk/Master/tlpkg/tlperl/bin/perl5.40.1.exe 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/bin/perl5.40.1.exe 2025-02-24 14:12:21 UTC (rev 74256)
Property changes on: trunk/Master/tlpkg/tlperl/bin/perl5.40.1.exe
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/vnd.microsoft.portable-executable
\ No newline at end of property
Deleted: trunk/Master/tlpkg/tlperl/bin/perl538.dll
===================================================================
(Binary files differ)
Added: trunk/Master/tlpkg/tlperl/bin/perl540.dll
===================================================================
(Binary files differ)
Index: trunk/Master/tlpkg/tlperl/bin/perl540.dll
===================================================================
--- trunk/Master/tlpkg/tlperl/bin/perl540.dll 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/bin/perl540.dll 2025-02-24 14:12:21 UTC (rev 74256)
Property changes on: trunk/Master/tlpkg/tlperl/bin/perl540.dll
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/vnd.microsoft.portable-executable
\ No newline at end of property
Added: trunk/Master/tlpkg/tlperl/bin/perl540.pdb
===================================================================
(Binary files differ)
Index: trunk/Master/tlpkg/tlperl/bin/perl540.pdb
===================================================================
--- trunk/Master/tlpkg/tlperl/bin/perl540.pdb 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/bin/perl540.pdb 2025-02-24 14:12:21 UTC (rev 74256)
Property changes on: trunk/Master/tlpkg/tlperl/bin/perl540.pdb
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/x-ms-pdb
\ No newline at end of property
Modified: trunk/Master/tlpkg/tlperl/bin/perlglob.exe
===================================================================
(Binary files differ)
Added: trunk/Master/tlpkg/tlperl/bin/perlglob.pdb
===================================================================
(Binary files differ)
Index: trunk/Master/tlpkg/tlperl/bin/perlglob.pdb
===================================================================
--- trunk/Master/tlpkg/tlperl/bin/perlglob.pdb 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/bin/perlglob.pdb 2025-02-24 14:12:21 UTC (rev 74256)
Property changes on: trunk/Master/tlpkg/tlperl/bin/perlglob.pdb
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/x-ms-pdb
\ No newline at end of property
Modified: trunk/Master/tlpkg/tlperl/bin/wperl.exe
===================================================================
(Binary files differ)
Modified: trunk/Master/tlpkg/tlperl/lib/.packlist
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/.packlist 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/.packlist 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,1750 +1,1882 @@
-d:\tlperl\bin/corelist.bat type=file
-d:\tlperl\bin/cpan.bat type=file
-d:\tlperl\bin/enc2xs.bat type=file
-d:\tlperl\bin/encguess.bat type=file
-d:\tlperl\bin/h2ph.bat type=file
-d:\tlperl\bin/h2xs.bat type=file
-d:\tlperl\bin/instmodsh.bat type=file
-d:\tlperl\bin/json_pp.bat type=file
-d:\tlperl\bin/libnetcfg.bat type=file
-d:\tlperl\bin/perl.exe from=d:\tlperl\bin/perl5.38.2.exe type=link
-d:\tlperl\bin/perl5.38.2.exe type=file
-d:\tlperl\bin/perl538.dll type=file
-d:\tlperl\bin/perlbug.bat type=file
-d:\tlperl\bin/perldoc.bat type=file
-d:\tlperl\bin/perlivp.bat type=file
-d:\tlperl\bin/perlthanks.bat from=d:\tlperl\bin/perlbug.bat type=link
-d:\tlperl\bin/piconv.bat type=file
-d:\tlperl\bin/pl2pm.bat type=file
-d:\tlperl\bin/pod2html.bat type=file
-d:\tlperl\bin/pod2man.bat type=file
-d:\tlperl\bin/pod2text.bat type=file
-d:\tlperl\bin/pod2usage.bat type=file
-d:\tlperl\bin/podchecker.bat type=file
-d:\tlperl\bin/prove.bat type=file
-d:\tlperl\bin/ptar.bat type=file
-d:\tlperl\bin/ptardiff.bat type=file
-d:\tlperl\bin/ptargrep.bat type=file
-d:\tlperl\bin/shasum.bat type=file
-d:\tlperl\bin/splain.bat type=file
-d:\tlperl\bin/streamzip.bat type=file
-d:\tlperl\bin/xsubpp.bat type=file
-d:\tlperl\bin/zipdetails.bat type=file
-d:\tlperl\lib/AnyDBM_File.pm type=file
-d:\tlperl\lib/App/Cpan.pm type=file
-d:\tlperl\lib/App/Prove.pm type=file
-d:\tlperl\lib/App/Prove/State.pm type=file
-d:\tlperl\lib/App/Prove/State/Result.pm type=file
-d:\tlperl\lib/App/Prove/State/Result/Test.pm type=file
-d:\tlperl\lib/Archive/Tar.pm type=file
-d:\tlperl\lib/Archive/Tar/Constant.pm type=file
-d:\tlperl\lib/Archive/Tar/File.pm type=file
-d:\tlperl\lib/Attribute/Handlers.pm type=file
-d:\tlperl\lib/AutoLoader.pm type=file
-d:\tlperl\lib/AutoSplit.pm type=file
-d:\tlperl\lib/B.pm type=file
-d:\tlperl\lib/B/Concise.pm type=file
-d:\tlperl\lib/B/Deparse.pm type=file
-d:\tlperl\lib/B/Op_private.pm type=file
-d:\tlperl\lib/B/Showlex.pm type=file
-d:\tlperl\lib/B/Terse.pm type=file
-d:\tlperl\lib/B/Xref.pm type=file
-d:\tlperl\lib/Benchmark.pm type=file
-d:\tlperl\lib/CORE.pod type=file
-d:\tlperl\lib/CORE/EXTERN.h type=file
-d:\tlperl\lib/CORE/INTERN.h type=file
-d:\tlperl\lib/CORE/XSUB.h type=file
-d:\tlperl\lib/CORE/arpa/inet.h type=file
-d:\tlperl\lib/CORE/av.h type=file
-d:\tlperl\lib/CORE/bitcount.h type=file
-d:\tlperl\lib/CORE/charclass_invlists.h type=file
-d:\tlperl\lib/CORE/config.h type=file
-d:\tlperl\lib/CORE/cop.h type=file
-d:\tlperl\lib/CORE/cv.h type=file
-d:\tlperl\lib/CORE/dirent.h type=file
-d:\tlperl\lib/CORE/dosish.h type=file
-d:\tlperl\lib/CORE/ebcdic_tables.h type=file
-d:\tlperl\lib/CORE/embed.h type=file
-d:\tlperl\lib/CORE/embedvar.h type=file
-d:\tlperl\lib/CORE/fakesdio.h type=file
-d:\tlperl\lib/CORE/feature.h type=file
-d:\tlperl\lib/CORE/form.h type=file
-d:\tlperl\lib/CORE/git_version.h type=file
-d:\tlperl\lib/CORE/gv.h type=file
-d:\tlperl\lib/CORE/handy.h type=file
-d:\tlperl\lib/CORE/hv.h type=file
-d:\tlperl\lib/CORE/hv_func.h type=file
-d:\tlperl\lib/CORE/hv_macro.h type=file
-d:\tlperl\lib/CORE/inline.h type=file
-d:\tlperl\lib/CORE/intrpvar.h type=file
-d:\tlperl\lib/CORE/invlist_inline.h type=file
-d:\tlperl\lib/CORE/iperlsys.h type=file
-d:\tlperl\lib/CORE/keywords.h type=file
-d:\tlperl\lib/CORE/l1_char_class_tab.h type=file
-d:\tlperl\lib/CORE/malloc_ctl.h type=file
-d:\tlperl\lib/CORE/metaconfig.h type=file
-d:\tlperl\lib/CORE/mg.h type=file
-d:\tlperl\lib/CORE/mg_data.h type=file
-d:\tlperl\lib/CORE/mg_raw.h type=file
-d:\tlperl\lib/CORE/mg_vtable.h type=file
-d:\tlperl\lib/CORE/mydtrace.h type=file
-d:\tlperl\lib/CORE/netdb.h type=file
-d:\tlperl\lib/CORE/nostdio.h type=file
-d:\tlperl\lib/CORE/op.h type=file
-d:\tlperl\lib/CORE/op_reg_common.h type=file
-d:\tlperl\lib/CORE/opcode.h type=file
-d:\tlperl\lib/CORE/opnames.h type=file
-d:\tlperl\lib/CORE/overload.h type=file
-d:\tlperl\lib/CORE/pad.h type=file
-d:\tlperl\lib/CORE/parser.h type=file
-d:\tlperl\lib/CORE/patchlevel.h type=file
-d:\tlperl\lib/CORE/perl.h type=file
-d:\tlperl\lib/CORE/perl538.lib type=file
-d:\tlperl\lib/CORE/perl_inc_macro.h type=file
-d:\tlperl\lib/CORE/perl_langinfo.h type=file
-d:\tlperl\lib/CORE/perl_siphash.h type=file
-d:\tlperl\lib/CORE/perlapi.h type=file
-d:\tlperl\lib/CORE/perlhost.h type=file
-d:\tlperl\lib/CORE/perlio.h type=file
-d:\tlperl\lib/CORE/perliol.h type=file
-d:\tlperl\lib/CORE/perlsdio.h type=file
-d:\tlperl\lib/CORE/perlstatic.h type=file
-d:\tlperl\lib/CORE/perlvars.h type=file
-d:\tlperl\lib/CORE/perly.h type=file
-d:\tlperl\lib/CORE/pp.h type=file
-d:\tlperl\lib/CORE/pp_proto.h type=file
-d:\tlperl\lib/CORE/proto.h type=file
-d:\tlperl\lib/CORE/reentr.h type=file
-d:\tlperl\lib/CORE/regcharclass.h type=file
-d:\tlperl\lib/CORE/regcomp.h type=file
-d:\tlperl\lib/CORE/regcomp_internal.h type=file
-d:\tlperl\lib/CORE/regexp.h type=file
-d:\tlperl\lib/CORE/reginline.h type=file
-d:\tlperl\lib/CORE/regnodes.h type=file
-d:\tlperl\lib/CORE/sbox32_hash.h type=file
-d:\tlperl\lib/CORE/scope.h type=file
-d:\tlperl\lib/CORE/scope_types.h type=file
-d:\tlperl\lib/CORE/sv.h type=file
-d:\tlperl\lib/CORE/sv_inline.h type=file
-d:\tlperl\lib/CORE/sys/errno2.h type=file
-d:\tlperl\lib/CORE/sys/socket.h type=file
-d:\tlperl\lib/CORE/thread.h type=file
-d:\tlperl\lib/CORE/time64.h type=file
-d:\tlperl\lib/CORE/time64_config.h type=file
-d:\tlperl\lib/CORE/uconfig.h type=file
-d:\tlperl\lib/CORE/uni_keywords.h type=file
-d:\tlperl\lib/CORE/unicode_constants.h type=file
-d:\tlperl\lib/CORE/unixish.h type=file
-d:\tlperl\lib/CORE/utf8.h type=file
-d:\tlperl\lib/CORE/utfebcdic.h type=file
-d:\tlperl\lib/CORE/util.h type=file
-d:\tlperl\lib/CORE/uudmap.h type=file
-d:\tlperl\lib/CORE/vdir.h type=file
-d:\tlperl\lib/CORE/vmem.h type=file
-d:\tlperl\lib/CORE/vutil.h type=file
-d:\tlperl\lib/CORE/warnings.h type=file
-d:\tlperl\lib/CORE/win32.h type=file
-d:\tlperl\lib/CORE/win32iop.h type=file
-d:\tlperl\lib/CORE/win32thread.h type=file
-d:\tlperl\lib/CORE/zaphod32_hash.h type=file
-d:\tlperl\lib/CPAN.pm type=file
-d:\tlperl\lib/CPAN/API/HOWTO.pod type=file
-d:\tlperl\lib/CPAN/Author.pm type=file
-d:\tlperl\lib/CPAN/Bundle.pm type=file
-d:\tlperl\lib/CPAN/CacheMgr.pm type=file
-d:\tlperl\lib/CPAN/Complete.pm type=file
-d:\tlperl\lib/CPAN/Debug.pm type=file
-d:\tlperl\lib/CPAN/DeferredCode.pm type=file
-d:\tlperl\lib/CPAN/Distribution.pm type=file
-d:\tlperl\lib/CPAN/Distroprefs.pm type=file
-d:\tlperl\lib/CPAN/Distrostatus.pm type=file
-d:\tlperl\lib/CPAN/Exception/RecursiveDependency.pm type=file
-d:\tlperl\lib/CPAN/Exception/blocked_urllist.pm type=file
-d:\tlperl\lib/CPAN/Exception/yaml_not_installed.pm type=file
-d:\tlperl\lib/CPAN/Exception/yaml_process_error.pm type=file
-d:\tlperl\lib/CPAN/FTP.pm type=file
-d:\tlperl\lib/CPAN/FTP/netrc.pm type=file
-d:\tlperl\lib/CPAN/FirstTime.pm type=file
-d:\tlperl\lib/CPAN/HTTP/Client.pm type=file
-d:\tlperl\lib/CPAN/HTTP/Credentials.pm type=file
-d:\tlperl\lib/CPAN/HandleConfig.pm type=file
-d:\tlperl\lib/CPAN/Index.pm type=file
-d:\tlperl\lib/CPAN/InfoObj.pm type=file
-d:\tlperl\lib/CPAN/Kwalify.pm type=file
-d:\tlperl\lib/CPAN/Kwalify/distroprefs.dd type=file
-d:\tlperl\lib/CPAN/Kwalify/distroprefs.yml type=file
-d:\tlperl\lib/CPAN/LWP/UserAgent.pm type=file
-d:\tlperl\lib/CPAN/Meta.pm type=file
-d:\tlperl\lib/CPAN/Meta/Converter.pm type=file
-d:\tlperl\lib/CPAN/Meta/Feature.pm type=file
-d:\tlperl\lib/CPAN/Meta/History.pm type=file
-d:\tlperl\lib/CPAN/Meta/History/Meta_1_0.pod type=file
-d:\tlperl\lib/CPAN/Meta/History/Meta_1_1.pod type=file
-d:\tlperl\lib/CPAN/Meta/History/Meta_1_2.pod type=file
-d:\tlperl\lib/CPAN/Meta/History/Meta_1_3.pod type=file
-d:\tlperl\lib/CPAN/Meta/History/Meta_1_4.pod type=file
-d:\tlperl\lib/CPAN/Meta/Merge.pm type=file
-d:\tlperl\lib/CPAN/Meta/Prereqs.pm type=file
-d:\tlperl\lib/CPAN/Meta/Requirements.pm type=file
-d:\tlperl\lib/CPAN/Meta/Spec.pm type=file
-d:\tlperl\lib/CPAN/Meta/Validator.pm type=file
-d:\tlperl\lib/CPAN/Meta/YAML.pm type=file
-d:\tlperl\lib/CPAN/Mirrors.pm type=file
-d:\tlperl\lib/CPAN/Module.pm type=file
-d:\tlperl\lib/CPAN/Nox.pm type=file
-d:\tlperl\lib/CPAN/Plugin.pm type=file
-d:\tlperl\lib/CPAN/Plugin/Specfile.pm type=file
-d:\tlperl\lib/CPAN/Prompt.pm type=file
-d:\tlperl\lib/CPAN/Queue.pm type=file
-d:\tlperl\lib/CPAN/Shell.pm type=file
-d:\tlperl\lib/CPAN/Tarzip.pm type=file
-d:\tlperl\lib/CPAN/URL.pm type=file
-d:\tlperl\lib/CPAN/Version.pm type=file
-d:\tlperl\lib/Carp.pm type=file
-d:\tlperl\lib/Carp/Heavy.pm type=file
-d:\tlperl\lib/Class/Struct.pm type=file
-d:\tlperl\lib/Compress/Raw/Bzip2.pm type=file
-d:\tlperl\lib/Compress/Raw/Zlib.pm type=file
-d:\tlperl\lib/Compress/Zlib.pm type=file
-d:\tlperl\lib/Config.pm type=file
-d:\tlperl\lib/Config.pod type=file
-d:\tlperl\lib/Config/Extensions.pm type=file
-d:\tlperl\lib/Config/Perl/V.pm type=file
-d:\tlperl\lib/Config_git.pl type=file
-d:\tlperl\lib/Config_heavy.pl type=file
-d:\tlperl\lib/Cwd.pm type=file
-d:\tlperl\lib/DB.pm type=file
-d:\tlperl\lib/DBM_Filter.pm type=file
-d:\tlperl\lib/DBM_Filter/compress.pm type=file
-d:\tlperl\lib/DBM_Filter/encode.pm type=file
-d:\tlperl\lib/DBM_Filter/int32.pm type=file
-d:\tlperl\lib/DBM_Filter/null.pm type=file
-d:\tlperl\lib/DBM_Filter/utf8.pm type=file
-d:\tlperl\lib/Data/Dumper.pm type=file
-d:\tlperl\lib/Devel/PPPort.pm type=file
-d:\tlperl\lib/Devel/Peek.pm type=file
-d:\tlperl\lib/Devel/SelfStubber.pm type=file
-d:\tlperl\lib/Digest.pm type=file
-d:\tlperl\lib/Digest/MD5.pm type=file
-d:\tlperl\lib/Digest/SHA.pm type=file
-d:\tlperl\lib/Digest/base.pm type=file
-d:\tlperl\lib/Digest/file.pm type=file
-d:\tlperl\lib/DirHandle.pm type=file
-d:\tlperl\lib/Dumpvalue.pm type=file
-d:\tlperl\lib/DynaLoader.pm type=file
-d:\tlperl\lib/Encode.pm type=file
-d:\tlperl\lib/Encode/Alias.pm type=file
-d:\tlperl\lib/Encode/Byte.pm type=file
-d:\tlperl\lib/Encode/CJKConstants.pm type=file
-d:\tlperl\lib/Encode/CN.pm type=file
-d:\tlperl\lib/Encode/CN/HZ.pm type=file
-d:\tlperl\lib/Encode/Changes.e2x type=file
-d:\tlperl\lib/Encode/Config.pm type=file
-d:\tlperl\lib/Encode/ConfigLocal_PM.e2x type=file
-d:\tlperl\lib/Encode/EBCDIC.pm type=file
-d:\tlperl\lib/Encode/Encoder.pm type=file
-d:\tlperl\lib/Encode/Encoding.pm type=file
-d:\tlperl\lib/Encode/GSM0338.pm type=file
-d:\tlperl\lib/Encode/Guess.pm type=file
-d:\tlperl\lib/Encode/JP.pm type=file
-d:\tlperl\lib/Encode/JP/H2Z.pm type=file
-d:\tlperl\lib/Encode/JP/JIS7.pm type=file
-d:\tlperl\lib/Encode/KR.pm type=file
-d:\tlperl\lib/Encode/KR/2022_KR.pm type=file
-d:\tlperl\lib/Encode/MIME/Header.pm type=file
-d:\tlperl\lib/Encode/MIME/Header/ISO_2022_JP.pm type=file
-d:\tlperl\lib/Encode/MIME/Name.pm type=file
-d:\tlperl\lib/Encode/Makefile_PL.e2x type=file
-d:\tlperl\lib/Encode/PerlIO.pod type=file
-d:\tlperl\lib/Encode/README.e2x type=file
-d:\tlperl\lib/Encode/Supported.pod type=file
-d:\tlperl\lib/Encode/Symbol.pm type=file
-d:\tlperl\lib/Encode/TW.pm type=file
-d:\tlperl\lib/Encode/Unicode.pm type=file
-d:\tlperl\lib/Encode/Unicode/UTF7.pm type=file
-d:\tlperl\lib/Encode/_PM.e2x type=file
-d:\tlperl\lib/Encode/_T.e2x type=file
-d:\tlperl\lib/Encode/encode.h type=file
-d:\tlperl\lib/English.pm type=file
-d:\tlperl\lib/Env.pm type=file
-d:\tlperl\lib/Errno.pm type=file
-d:\tlperl\lib/Exporter.pm type=file
-d:\tlperl\lib/Exporter/Heavy.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Base.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/Unix.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/VMS.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/aix.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/android.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/cygwin.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/darwin.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/dec_osf.pm type=file
-d:\tlperl\lib/ExtUtils/CBuilder/Platform/os2.pm type=file
-d:\tlperl\lib/ExtUtils/Command.pm type=file
-d:\tlperl\lib/ExtUtils/Command/MM.pm type=file
-d:\tlperl\lib/ExtUtils/Constant.pm type=file
-d:\tlperl\lib/ExtUtils/Constant/Base.pm type=file
-d:\tlperl\lib/ExtUtils/Constant/ProxySubs.pm type=file
-d:\tlperl\lib/ExtUtils/Constant/Utils.pm type=file
-d:\tlperl\lib/ExtUtils/Constant/XS.pm type=file
-d:\tlperl\lib/ExtUtils/Embed.pm type=file
-d:\tlperl\lib/ExtUtils/Install.pm type=file
-d:\tlperl\lib/ExtUtils/Installed.pm type=file
-d:\tlperl\lib/ExtUtils/Liblist.pm type=file
-d:\tlperl\lib/ExtUtils/Liblist/Kid.pm type=file
-d:\tlperl\lib/ExtUtils/MANIFEST.SKIP type=file
-d:\tlperl\lib/ExtUtils/MM.pm type=file
-d:\tlperl\lib/ExtUtils/MM_AIX.pm type=file
-d:\tlperl\lib/ExtUtils/MM_Any.pm type=file
-d:\tlperl\lib/ExtUtils/MM_BeOS.pm type=file
-d:\tlperl\lib/ExtUtils/MM_Cygwin.pm type=file
-d:\tlperl\lib/ExtUtils/MM_DOS.pm type=file
-d:\tlperl\lib/ExtUtils/MM_Darwin.pm type=file
-d:\tlperl\lib/ExtUtils/MM_MacOS.pm type=file
-d:\tlperl\lib/ExtUtils/MM_NW5.pm type=file
-d:\tlperl\lib/ExtUtils/MM_OS2.pm type=file
-d:\tlperl\lib/ExtUtils/MM_OS390.pm type=file
-d:\tlperl\lib/ExtUtils/MM_QNX.pm type=file
-d:\tlperl\lib/ExtUtils/MM_UWIN.pm type=file
-d:\tlperl\lib/ExtUtils/MM_Unix.pm type=file
-d:\tlperl\lib/ExtUtils/MM_VMS.pm type=file
-d:\tlperl\lib/ExtUtils/MM_VOS.pm type=file
-d:\tlperl\lib/ExtUtils/MM_Win32.pm type=file
-d:\tlperl\lib/ExtUtils/MM_Win95.pm type=file
-d:\tlperl\lib/ExtUtils/MY.pm type=file
-d:\tlperl\lib/ExtUtils/MakeMaker.pm type=file
-d:\tlperl\lib/ExtUtils/MakeMaker/Config.pm type=file
-d:\tlperl\lib/ExtUtils/MakeMaker/FAQ.pod type=file
-d:\tlperl\lib/ExtUtils/MakeMaker/Locale.pm type=file
-d:\tlperl\lib/ExtUtils/MakeMaker/Tutorial.pod type=file
-d:\tlperl\lib/ExtUtils/MakeMaker/version.pm type=file
-d:\tlperl\lib/ExtUtils/Manifest.pm type=file
-d:\tlperl\lib/ExtUtils/Miniperl.pm type=file
-d:\tlperl\lib/ExtUtils/Mkbootstrap.pm type=file
-d:\tlperl\lib/ExtUtils/Mksymlists.pm type=file
-d:\tlperl\lib/ExtUtils/PL2Bat.pm type=file
-d:\tlperl\lib/ExtUtils/Packlist.pm type=file
-d:\tlperl\lib/ExtUtils/ParseXS.pm type=file
-d:\tlperl\lib/ExtUtils/ParseXS.pod type=file
-d:\tlperl\lib/ExtUtils/ParseXS/Constants.pm type=file
-d:\tlperl\lib/ExtUtils/ParseXS/CountLines.pm type=file
-d:\tlperl\lib/ExtUtils/ParseXS/Eval.pm type=file
-d:\tlperl\lib/ExtUtils/ParseXS/Utilities.pm type=file
-d:\tlperl\lib/ExtUtils/Typemaps.pm type=file
-d:\tlperl\lib/ExtUtils/Typemaps/Cmd.pm type=file
-d:\tlperl\lib/ExtUtils/Typemaps/InputMap.pm type=file
-d:\tlperl\lib/ExtUtils/Typemaps/OutputMap.pm type=file
-d:\tlperl\lib/ExtUtils/Typemaps/Type.pm type=file
-d:\tlperl\lib/ExtUtils/testlib.pm type=file
-d:\tlperl\lib/ExtUtils/typemap type=file
-d:\tlperl\lib/ExtUtils/xsubpp type=file
-d:\tlperl\lib/Fatal.pm type=file
-d:\tlperl\lib/Fcntl.pm type=file
-d:\tlperl\lib/File/Basename.pm type=file
-d:\tlperl\lib/File/Compare.pm type=file
-d:\tlperl\lib/File/Copy.pm type=file
-d:\tlperl\lib/File/DosGlob.pm type=file
-d:\tlperl\lib/File/Fetch.pm type=file
-d:\tlperl\lib/File/Find.pm type=file
-d:\tlperl\lib/File/Glob.pm type=file
-d:\tlperl\lib/File/GlobMapper.pm type=file
-d:\tlperl\lib/File/Path.pm type=file
-d:\tlperl\lib/File/Spec.pm type=file
-d:\tlperl\lib/File/Spec/AmigaOS.pm type=file
-d:\tlperl\lib/File/Spec/Cygwin.pm type=file
-d:\tlperl\lib/File/Spec/Epoc.pm type=file
-d:\tlperl\lib/File/Spec/Functions.pm type=file
-d:\tlperl\lib/File/Spec/Mac.pm type=file
-d:\tlperl\lib/File/Spec/OS2.pm type=file
-d:\tlperl\lib/File/Spec/Unix.pm type=file
-d:\tlperl\lib/File/Spec/VMS.pm type=file
-d:\tlperl\lib/File/Spec/Win32.pm type=file
-d:\tlperl\lib/File/Temp.pm type=file
-d:\tlperl\lib/File/stat.pm type=file
-d:\tlperl\lib/FileCache.pm type=file
-d:\tlperl\lib/FileHandle.pm type=file
-d:\tlperl\lib/Filter/Simple.pm type=file
-d:\tlperl\lib/Filter/Util/Call.pm type=file
-d:\tlperl\lib/FindBin.pm type=file
-d:\tlperl\lib/Getopt/Long.pm type=file
-d:\tlperl\lib/Getopt/Std.pm type=file
-d:\tlperl\lib/HTTP/Tiny.pm type=file
-d:\tlperl\lib/Hash/Util.pm type=file
-d:\tlperl\lib/Hash/Util/FieldHash.pm type=file
-d:\tlperl\lib/I18N/Collate.pm type=file
-d:\tlperl\lib/I18N/LangTags.pm type=file
-d:\tlperl\lib/I18N/LangTags/Detect.pm type=file
-d:\tlperl\lib/I18N/LangTags/List.pm type=file
-d:\tlperl\lib/I18N/Langinfo.pm type=file
-d:\tlperl\lib/IO.pm type=file
-d:\tlperl\lib/IO/Compress/Adapter/Bzip2.pm type=file
-d:\tlperl\lib/IO/Compress/Adapter/Deflate.pm type=file
-d:\tlperl\lib/IO/Compress/Adapter/Identity.pm type=file
-d:\tlperl\lib/IO/Compress/Base.pm type=file
-d:\tlperl\lib/IO/Compress/Base/Common.pm type=file
-d:\tlperl\lib/IO/Compress/Bzip2.pm type=file
-d:\tlperl\lib/IO/Compress/Deflate.pm type=file
-d:\tlperl\lib/IO/Compress/FAQ.pod type=file
-d:\tlperl\lib/IO/Compress/Gzip.pm type=file
-d:\tlperl\lib/IO/Compress/Gzip/Constants.pm type=file
-d:\tlperl\lib/IO/Compress/RawDeflate.pm type=file
-d:\tlperl\lib/IO/Compress/Zip.pm type=file
-d:\tlperl\lib/IO/Compress/Zip/Constants.pm type=file
-d:\tlperl\lib/IO/Compress/Zlib/Constants.pm type=file
-d:\tlperl\lib/IO/Compress/Zlib/Extra.pm type=file
-d:\tlperl\lib/IO/Dir.pm type=file
-d:\tlperl\lib/IO/File.pm type=file
-d:\tlperl\lib/IO/Handle.pm type=file
-d:\tlperl\lib/IO/Pipe.pm type=file
-d:\tlperl\lib/IO/Poll.pm type=file
-d:\tlperl\lib/IO/Seekable.pm type=file
-d:\tlperl\lib/IO/Select.pm type=file
-d:\tlperl\lib/IO/Socket.pm type=file
-d:\tlperl\lib/IO/Socket/INET.pm type=file
-d:\tlperl\lib/IO/Socket/IP.pm type=file
-d:\tlperl\lib/IO/Socket/UNIX.pm type=file
-d:\tlperl\lib/IO/Uncompress/Adapter/Bunzip2.pm type=file
-d:\tlperl\lib/IO/Uncompress/Adapter/Identity.pm type=file
-d:\tlperl\lib/IO/Uncompress/Adapter/Inflate.pm type=file
-d:\tlperl\lib/IO/Uncompress/AnyInflate.pm type=file
-d:\tlperl\lib/IO/Uncompress/AnyUncompress.pm type=file
-d:\tlperl\lib/IO/Uncompress/Base.pm type=file
-d:\tlperl\lib/IO/Uncompress/Bunzip2.pm type=file
-d:\tlperl\lib/IO/Uncompress/Gunzip.pm type=file
-d:\tlperl\lib/IO/Uncompress/Inflate.pm type=file
-d:\tlperl\lib/IO/Uncompress/RawInflate.pm type=file
-d:\tlperl\lib/IO/Uncompress/Unzip.pm type=file
-d:\tlperl\lib/IO/Zlib.pm type=file
-d:\tlperl\lib/IPC/Cmd.pm type=file
-d:\tlperl\lib/IPC/Open2.pm type=file
-d:\tlperl\lib/IPC/Open3.pm type=file
-d:\tlperl\lib/Internals.pod type=file
-d:\tlperl\lib/JSON/PP.pm type=file
-d:\tlperl\lib/JSON/PP/Boolean.pm type=file
-d:\tlperl\lib/List/Util.pm type=file
-d:\tlperl\lib/List/Util/XS.pm type=file
-d:\tlperl\lib/Locale/Maketext.pm type=file
-d:\tlperl\lib/Locale/Maketext.pod type=file
-d:\tlperl\lib/Locale/Maketext/Cookbook.pod type=file
-d:\tlperl\lib/Locale/Maketext/Guts.pm type=file
-d:\tlperl\lib/Locale/Maketext/GutsLoader.pm type=file
-d:\tlperl\lib/Locale/Maketext/Simple.pm type=file
-d:\tlperl\lib/Locale/Maketext/TPJ13.pod type=file
-d:\tlperl\lib/MIME/Base64.pm type=file
-d:\tlperl\lib/MIME/QuotedPrint.pm type=file
-d:\tlperl\lib/Math/BigFloat.pm type=file
-d:\tlperl\lib/Math/BigFloat/Trace.pm type=file
-d:\tlperl\lib/Math/BigInt.pm type=file
-d:\tlperl\lib/Math/BigInt/Calc.pm type=file
-d:\tlperl\lib/Math/BigInt/FastCalc.pm type=file
-d:\tlperl\lib/Math/BigInt/Lib.pm type=file
-d:\tlperl\lib/Math/BigInt/Trace.pm type=file
-d:\tlperl\lib/Math/BigRat.pm type=file
-d:\tlperl\lib/Math/BigRat/Trace.pm type=file
-d:\tlperl\lib/Math/Complex.pm type=file
-d:\tlperl\lib/Math/Trig.pm type=file
-d:\tlperl\lib/Memoize.pm type=file
-d:\tlperl\lib/Memoize/AnyDBM_File.pm type=file
-d:\tlperl\lib/Memoize/Expire.pm type=file
-d:\tlperl\lib/Memoize/NDBM_File.pm type=file
-d:\tlperl\lib/Memoize/SDBM_File.pm type=file
-d:\tlperl\lib/Memoize/Storable.pm type=file
-d:\tlperl\lib/Module/CoreList.pm type=file
-d:\tlperl\lib/Module/CoreList.pod type=file
-d:\tlperl\lib/Module/CoreList/Utils.pm type=file
-d:\tlperl\lib/Module/Load.pm type=file
-d:\tlperl\lib/Module/Load/Conditional.pm type=file
-d:\tlperl\lib/Module/Loaded.pm type=file
-d:\tlperl\lib/Module/Metadata.pm type=file
-d:\tlperl\lib/NEXT.pm type=file
-d:\tlperl\lib/Net/Cmd.pm type=file
-d:\tlperl\lib/Net/Config.pm type=file
-d:\tlperl\lib/Net/Domain.pm type=file
-d:\tlperl\lib/Net/FTP.pm type=file
-d:\tlperl\lib/Net/FTP/A.pm type=file
-d:\tlperl\lib/Net/FTP/E.pm type=file
-d:\tlperl\lib/Net/FTP/I.pm type=file
-d:\tlperl\lib/Net/FTP/L.pm type=file
-d:\tlperl\lib/Net/FTP/dataconn.pm type=file
-d:\tlperl\lib/Net/NNTP.pm type=file
-d:\tlperl\lib/Net/Netrc.pm type=file
-d:\tlperl\lib/Net/POP3.pm type=file
-d:\tlperl\lib/Net/Ping.pm type=file
-d:\tlperl\lib/Net/SMTP.pm type=file
-d:\tlperl\lib/Net/Time.pm type=file
-d:\tlperl\lib/Net/hostent.pm type=file
-d:\tlperl\lib/Net/libnetFAQ.pod type=file
-d:\tlperl\lib/Net/netent.pm type=file
-d:\tlperl\lib/Net/protoent.pm type=file
-d:\tlperl\lib/Net/servent.pm type=file
-d:\tlperl\lib/O.pm type=file
-d:\tlperl\lib/Opcode.pm type=file
-d:\tlperl\lib/POSIX.pm type=file
-d:\tlperl\lib/POSIX.pod type=file
-d:\tlperl\lib/Params/Check.pm type=file
-d:\tlperl\lib/Parse/CPAN/Meta.pm type=file
-d:\tlperl\lib/Perl/OSType.pm type=file
-d:\tlperl\lib/PerlIO.pm type=file
-d:\tlperl\lib/PerlIO/encoding.pm type=file
-d:\tlperl\lib/PerlIO/mmap.pm type=file
-d:\tlperl\lib/PerlIO/scalar.pm type=file
-d:\tlperl\lib/PerlIO/via.pm type=file
-d:\tlperl\lib/PerlIO/via/QuotedPrint.pm type=file
-d:\tlperl\lib/Pod/Checker.pm type=file
-d:\tlperl\lib/Pod/Escapes.pm type=file
-d:\tlperl\lib/Pod/Functions.pm type=file
-d:\tlperl\lib/Pod/Html.pm type=file
-d:\tlperl\lib/Pod/Html/Util.pm type=file
-d:\tlperl\lib/Pod/Man.pm type=file
-d:\tlperl\lib/Pod/ParseLink.pm type=file
-d:\tlperl\lib/Pod/Perldoc.pm type=file
-d:\tlperl\lib/Pod/Perldoc/BaseTo.pm type=file
-d:\tlperl\lib/Pod/Perldoc/GetOptsOO.pm type=file
-d:\tlperl\lib/Pod/Perldoc/ToANSI.pm type=file
-d:\tlperl\lib/Pod/Perldoc/ToChecker.pm type=file
-d:\tlperl\lib/Pod/Perldoc/ToMan.pm type=file
-d:\tlperl\lib/Pod/Perldoc/ToNroff.pm type=file
-d:\tlperl\lib/Pod/Perldoc/ToPod.pm type=file
-d:\tlperl\lib/Pod/Perldoc/ToRtf.pm type=file
-d:\tlperl\lib/Pod/Perldoc/ToTerm.pm type=file
-d:\tlperl\lib/Pod/Perldoc/ToText.pm type=file
-d:\tlperl\lib/Pod/Perldoc/ToTk.pm type=file
-d:\tlperl\lib/Pod/Perldoc/ToXml.pm type=file
-d:\tlperl\lib/Pod/Simple.pm type=file
-d:\tlperl\lib/Pod/Simple.pod type=file
-d:\tlperl\lib/Pod/Simple/BlackBox.pm type=file
-d:\tlperl\lib/Pod/Simple/Checker.pm type=file
-d:\tlperl\lib/Pod/Simple/Debug.pm type=file
-d:\tlperl\lib/Pod/Simple/DumpAsText.pm type=file
-d:\tlperl\lib/Pod/Simple/DumpAsXML.pm type=file
-d:\tlperl\lib/Pod/Simple/HTML.pm type=file
-d:\tlperl\lib/Pod/Simple/HTMLBatch.pm type=file
-d:\tlperl\lib/Pod/Simple/HTMLLegacy.pm type=file
-d:\tlperl\lib/Pod/Simple/JustPod.pm type=file
-d:\tlperl\lib/Pod/Simple/LinkSection.pm type=file
-d:\tlperl\lib/Pod/Simple/Methody.pm type=file
-d:\tlperl\lib/Pod/Simple/Progress.pm type=file
-d:\tlperl\lib/Pod/Simple/PullParser.pm type=file
-d:\tlperl\lib/Pod/Simple/PullParserEndToken.pm type=file
-d:\tlperl\lib/Pod/Simple/PullParserStartToken.pm type=file
-d:\tlperl\lib/Pod/Simple/PullParserTextToken.pm type=file
-d:\tlperl\lib/Pod/Simple/PullParserToken.pm type=file
-d:\tlperl\lib/Pod/Simple/RTF.pm type=file
-d:\tlperl\lib/Pod/Simple/Search.pm type=file
-d:\tlperl\lib/Pod/Simple/SimpleTree.pm type=file
-d:\tlperl\lib/Pod/Simple/Subclassing.pod type=file
-d:\tlperl\lib/Pod/Simple/Text.pm type=file
-d:\tlperl\lib/Pod/Simple/TextContent.pm type=file
-d:\tlperl\lib/Pod/Simple/TiedOutFH.pm type=file
-d:\tlperl\lib/Pod/Simple/Transcode.pm type=file
-d:\tlperl\lib/Pod/Simple/TranscodeDumb.pm type=file
-d:\tlperl\lib/Pod/Simple/TranscodeSmart.pm type=file
-d:\tlperl\lib/Pod/Simple/XHTML.pm type=file
-d:\tlperl\lib/Pod/Simple/XMLOutStream.pm type=file
-d:\tlperl\lib/Pod/Text.pm type=file
-d:\tlperl\lib/Pod/Text/Color.pm type=file
-d:\tlperl\lib/Pod/Text/Overstrike.pm type=file
-d:\tlperl\lib/Pod/Text/Termcap.pm type=file
-d:\tlperl\lib/Pod/Usage.pm type=file
-d:\tlperl\lib/SDBM_File.pm type=file
-d:\tlperl\lib/Safe.pm type=file
-d:\tlperl\lib/Scalar/Util.pm type=file
-d:\tlperl\lib/Search/Dict.pm type=file
-d:\tlperl\lib/SelectSaver.pm type=file
-d:\tlperl\lib/SelfLoader.pm type=file
-d:\tlperl\lib/Socket.pm type=file
-d:\tlperl\lib/Storable.pm type=file
-d:\tlperl\lib/Sub/Util.pm type=file
-d:\tlperl\lib/Symbol.pm type=file
-d:\tlperl\lib/Sys/Hostname.pm type=file
-d:\tlperl\lib/TAP/Base.pm type=file
-d:\tlperl\lib/TAP/Formatter/Base.pm type=file
-d:\tlperl\lib/TAP/Formatter/Color.pm type=file
-d:\tlperl\lib/TAP/Formatter/Console.pm type=file
-d:\tlperl\lib/TAP/Formatter/Console/ParallelSession.pm type=file
-d:\tlperl\lib/TAP/Formatter/Console/Session.pm type=file
-d:\tlperl\lib/TAP/Formatter/File.pm type=file
-d:\tlperl\lib/TAP/Formatter/File/Session.pm type=file
-d:\tlperl\lib/TAP/Formatter/Session.pm type=file
-d:\tlperl\lib/TAP/Harness.pm type=file
-d:\tlperl\lib/TAP/Harness/Beyond.pod type=file
-d:\tlperl\lib/TAP/Harness/Env.pm type=file
-d:\tlperl\lib/TAP/Object.pm type=file
-d:\tlperl\lib/TAP/Parser.pm type=file
-d:\tlperl\lib/TAP/Parser/Aggregator.pm type=file
-d:\tlperl\lib/TAP/Parser/Grammar.pm type=file
-d:\tlperl\lib/TAP/Parser/Iterator.pm type=file
-d:\tlperl\lib/TAP/Parser/Iterator/Array.pm type=file
-d:\tlperl\lib/TAP/Parser/Iterator/Process.pm type=file
-d:\tlperl\lib/TAP/Parser/Iterator/Stream.pm type=file
-d:\tlperl\lib/TAP/Parser/IteratorFactory.pm type=file
-d:\tlperl\lib/TAP/Parser/Multiplexer.pm type=file
-d:\tlperl\lib/TAP/Parser/Result.pm type=file
-d:\tlperl\lib/TAP/Parser/Result/Bailout.pm type=file
-d:\tlperl\lib/TAP/Parser/Result/Comment.pm type=file
-d:\tlperl\lib/TAP/Parser/Result/Plan.pm type=file
-d:\tlperl\lib/TAP/Parser/Result/Pragma.pm type=file
-d:\tlperl\lib/TAP/Parser/Result/Test.pm type=file
-d:\tlperl\lib/TAP/Parser/Result/Unknown.pm type=file
-d:\tlperl\lib/TAP/Parser/Result/Version.pm type=file
-d:\tlperl\lib/TAP/Parser/Result/YAML.pm type=file
-d:\tlperl\lib/TAP/Parser/ResultFactory.pm type=file
-d:\tlperl\lib/TAP/Parser/Scheduler.pm type=file
-d:\tlperl\lib/TAP/Parser/Scheduler/Job.pm type=file
-d:\tlperl\lib/TAP/Parser/Scheduler/Spinner.pm type=file
-d:\tlperl\lib/TAP/Parser/Source.pm type=file
-d:\tlperl\lib/TAP/Parser/SourceHandler.pm type=file
-d:\tlperl\lib/TAP/Parser/SourceHandler/Executable.pm type=file
-d:\tlperl\lib/TAP/Parser/SourceHandler/File.pm type=file
-d:\tlperl\lib/TAP/Parser/SourceHandler/Handle.pm type=file
-d:\tlperl\lib/TAP/Parser/SourceHandler/Perl.pm type=file
-d:\tlperl\lib/TAP/Parser/SourceHandler/RawTAP.pm type=file
-d:\tlperl\lib/TAP/Parser/YAMLish/Reader.pm type=file
-d:\tlperl\lib/TAP/Parser/YAMLish/Writer.pm type=file
-d:\tlperl\lib/Term/ANSIColor.pm type=file
-d:\tlperl\lib/Term/Cap.pm type=file
-d:\tlperl\lib/Term/Complete.pm type=file
-d:\tlperl\lib/Term/ReadLine.pm type=file
-d:\tlperl\lib/Test.pm type=file
-d:\tlperl\lib/Test/Builder.pm type=file
-d:\tlperl\lib/Test/Builder/Formatter.pm type=file
-d:\tlperl\lib/Test/Builder/IO/Scalar.pm type=file
-d:\tlperl\lib/Test/Builder/Module.pm type=file
-d:\tlperl\lib/Test/Builder/Tester.pm type=file
-d:\tlperl\lib/Test/Builder/Tester/Color.pm type=file
-d:\tlperl\lib/Test/Builder/TodoDiag.pm type=file
-d:\tlperl\lib/Test/Harness.pm type=file
-d:\tlperl\lib/Test/More.pm type=file
-d:\tlperl\lib/Test/Simple.pm type=file
-d:\tlperl\lib/Test/Tester.pm type=file
-d:\tlperl\lib/Test/Tester/Capture.pm type=file
-d:\tlperl\lib/Test/Tester/CaptureRunner.pm type=file
-d:\tlperl\lib/Test/Tester/Delegate.pm type=file
-d:\tlperl\lib/Test/Tutorial.pod type=file
-d:\tlperl\lib/Test/use/ok.pm type=file
-d:\tlperl\lib/Test2.pm type=file
-d:\tlperl\lib/Test2/API.pm type=file
-d:\tlperl\lib/Test2/API/Breakage.pm type=file
-d:\tlperl\lib/Test2/API/Context.pm type=file
-d:\tlperl\lib/Test2/API/Instance.pm type=file
-d:\tlperl\lib/Test2/API/InterceptResult.pm type=file
-d:\tlperl\lib/Test2/API/InterceptResult/Event.pm type=file
-d:\tlperl\lib/Test2/API/InterceptResult/Facet.pm type=file
-d:\tlperl\lib/Test2/API/InterceptResult/Hub.pm type=file
-d:\tlperl\lib/Test2/API/InterceptResult/Squasher.pm type=file
-d:\tlperl\lib/Test2/API/Stack.pm type=file
-d:\tlperl\lib/Test2/Event.pm type=file
-d:\tlperl\lib/Test2/Event/Bail.pm type=file
-d:\tlperl\lib/Test2/Event/Diag.pm type=file
-d:\tlperl\lib/Test2/Event/Encoding.pm type=file
-d:\tlperl\lib/Test2/Event/Exception.pm type=file
-d:\tlperl\lib/Test2/Event/Fail.pm type=file
-d:\tlperl\lib/Test2/Event/Generic.pm type=file
-d:\tlperl\lib/Test2/Event/Note.pm type=file
-d:\tlperl\lib/Test2/Event/Ok.pm type=file
-d:\tlperl\lib/Test2/Event/Pass.pm type=file
-d:\tlperl\lib/Test2/Event/Plan.pm type=file
-d:\tlperl\lib/Test2/Event/Skip.pm type=file
-d:\tlperl\lib/Test2/Event/Subtest.pm type=file
-d:\tlperl\lib/Test2/Event/TAP/Version.pm type=file
-d:\tlperl\lib/Test2/Event/V2.pm type=file
-d:\tlperl\lib/Test2/Event/Waiting.pm type=file
-d:\tlperl\lib/Test2/EventFacet.pm type=file
-d:\tlperl\lib/Test2/EventFacet/About.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Amnesty.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Assert.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Control.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Error.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Hub.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Info.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Info/Table.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Meta.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Parent.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Plan.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Render.pm type=file
-d:\tlperl\lib/Test2/EventFacet/Trace.pm type=file
-d:\tlperl\lib/Test2/Formatter.pm type=file
-d:\tlperl\lib/Test2/Formatter/TAP.pm type=file
-d:\tlperl\lib/Test2/Hub.pm type=file
-d:\tlperl\lib/Test2/Hub/Interceptor.pm type=file
-d:\tlperl\lib/Test2/Hub/Interceptor/Terminator.pm type=file
-d:\tlperl\lib/Test2/Hub/Subtest.pm type=file
-d:\tlperl\lib/Test2/IPC.pm type=file
-d:\tlperl\lib/Test2/IPC/Driver.pm type=file
-d:\tlperl\lib/Test2/IPC/Driver/Files.pm type=file
-d:\tlperl\lib/Test2/Tools/Tiny.pm type=file
-d:\tlperl\lib/Test2/Transition.pod type=file
-d:\tlperl\lib/Test2/Util.pm type=file
-d:\tlperl\lib/Test2/Util/ExternalMeta.pm type=file
-d:\tlperl\lib/Test2/Util/Facets2Legacy.pm type=file
-d:\tlperl\lib/Test2/Util/HashBase.pm type=file
-d:\tlperl\lib/Test2/Util/Trace.pm type=file
-d:\tlperl\lib/Text/Abbrev.pm type=file
-d:\tlperl\lib/Text/Balanced.pm type=file
-d:\tlperl\lib/Text/ParseWords.pm type=file
-d:\tlperl\lib/Text/Tabs.pm type=file
-d:\tlperl\lib/Text/Wrap.pm type=file
-d:\tlperl\lib/Thread.pm type=file
-d:\tlperl\lib/Thread/Queue.pm type=file
-d:\tlperl\lib/Thread/Semaphore.pm type=file
-d:\tlperl\lib/Tie/Array.pm type=file
-d:\tlperl\lib/Tie/File.pm type=file
-d:\tlperl\lib/Tie/Handle.pm type=file
-d:\tlperl\lib/Tie/Hash.pm type=file
-d:\tlperl\lib/Tie/Hash/NamedCapture.pm type=file
-d:\tlperl\lib/Tie/Memoize.pm type=file
-d:\tlperl\lib/Tie/RefHash.pm type=file
-d:\tlperl\lib/Tie/Scalar.pm type=file
-d:\tlperl\lib/Tie/StdHandle.pm type=file
-d:\tlperl\lib/Tie/SubstrHash.pm type=file
-d:\tlperl\lib/Time/HiRes.pm type=file
-d:\tlperl\lib/Time/Local.pm type=file
-d:\tlperl\lib/Time/Piece.pm type=file
-d:\tlperl\lib/Time/Seconds.pm type=file
-d:\tlperl\lib/Time/gmtime.pm type=file
-d:\tlperl\lib/Time/localtime.pm type=file
-d:\tlperl\lib/Time/tm.pm type=file
-d:\tlperl\lib/UNIVERSAL.pm type=file
-d:\tlperl\lib/Unicode/Collate.pm type=file
-d:\tlperl\lib/Unicode/Collate/CJK/Big5.pm type=file
-d:\tlperl\lib/Unicode/Collate/CJK/GB2312.pm type=file
-d:\tlperl\lib/Unicode/Collate/CJK/JISX0208.pm type=file
-d:\tlperl\lib/Unicode/Collate/CJK/Korean.pm type=file
-d:\tlperl\lib/Unicode/Collate/CJK/Pinyin.pm type=file
-d:\tlperl\lib/Unicode/Collate/CJK/Stroke.pm type=file
-d:\tlperl\lib/Unicode/Collate/CJK/Zhuyin.pm type=file
-d:\tlperl\lib/Unicode/Collate/Locale.pm type=file
-d:\tlperl\lib/Unicode/Collate/Locale/af.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ar.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/as.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/az.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/be.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/bn.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ca.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/cs.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/cu.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/cy.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/da.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/de_at_ph.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/de_phone.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/dsb.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ee.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/eo.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/es.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/es_trad.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/et.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/fa.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/fi.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/fi_phone.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/fil.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/fo.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/fr_ca.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/gu.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ha.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/haw.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/he.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/hi.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/hr.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/hu.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/hy.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ig.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/is.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ja.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/kk.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/kl.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/kn.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ko.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/kok.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/lkt.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ln.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/lt.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/lv.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/mk.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ml.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/mr.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/mt.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/nb.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/nn.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/nso.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/om.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/or.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/pa.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/pl.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ro.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/sa.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/se.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/si.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/si_dict.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/sk.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/sl.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/sq.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/sr.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/sv.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/sv_refo.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ta.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/te.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/th.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/tn.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/to.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/tr.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ug_cyrl.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/uk.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/ur.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/vi.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/vo.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/wae.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/wo.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/yo.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/zh.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/zh_big5.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/zh_gb.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/zh_pin.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/zh_strk.pl type=file
-d:\tlperl\lib/Unicode/Collate/Locale/zh_zhu.pl type=file
-d:\tlperl\lib/Unicode/Collate/allkeys.txt type=file
-d:\tlperl\lib/Unicode/Collate/keys.txt type=file
-d:\tlperl\lib/Unicode/Normalize.pm type=file
-d:\tlperl\lib/Unicode/UCD.pm type=file
-d:\tlperl\lib/User/grent.pm type=file
-d:\tlperl\lib/User/pwent.pm type=file
-d:\tlperl\lib/Win32.pm type=file
-d:\tlperl\lib/Win32API/File.pm type=file
-d:\tlperl\lib/Win32API/File/cFile.pc type=file
-d:\tlperl\lib/Win32CORE.pm type=file
-d:\tlperl\lib/XSLoader.pm type=file
-d:\tlperl\lib/_charnames.pm type=file
-d:\tlperl\lib/attributes.pm type=file
-d:\tlperl\lib/auto/B/B.dll type=file
-d:\tlperl\lib/auto/B/B.pdb type=file
-d:\tlperl\lib/auto/Compress/Raw/Bzip2/Bzip2.dll type=file
-d:\tlperl\lib/auto/Compress/Raw/Bzip2/Bzip2.pdb type=file
-d:\tlperl\lib/auto/Compress/Raw/Zlib/Zlib.dll type=file
-d:\tlperl\lib/auto/Compress/Raw/Zlib/Zlib.pdb type=file
-d:\tlperl\lib/auto/Cwd/Cwd.dll type=file
-d:\tlperl\lib/auto/Cwd/Cwd.pdb type=file
-d:\tlperl\lib/auto/Data/Dumper/Dumper.dll type=file
-d:\tlperl\lib/auto/Data/Dumper/Dumper.pdb type=file
-d:\tlperl\lib/auto/Devel/Peek/Peek.dll type=file
-d:\tlperl\lib/auto/Devel/Peek/Peek.pdb type=file
-d:\tlperl\lib/auto/Digest/MD5/MD5.dll type=file
-d:\tlperl\lib/auto/Digest/MD5/MD5.pdb type=file
-d:\tlperl\lib/auto/Digest/SHA/SHA.dll type=file
-d:\tlperl\lib/auto/Digest/SHA/SHA.pdb type=file
-d:\tlperl\lib/auto/Encode/Byte/Byte.dll type=file
-d:\tlperl\lib/auto/Encode/Byte/Byte.pdb type=file
-d:\tlperl\lib/auto/Encode/CN/CN.dll type=file
-d:\tlperl\lib/auto/Encode/CN/CN.pdb type=file
-d:\tlperl\lib/auto/Encode/EBCDIC/EBCDIC.dll type=file
-d:\tlperl\lib/auto/Encode/EBCDIC/EBCDIC.pdb type=file
-d:\tlperl\lib/auto/Encode/Encode.dll type=file
-d:\tlperl\lib/auto/Encode/Encode.pdb type=file
-d:\tlperl\lib/auto/Encode/JP/JP.dll type=file
-d:\tlperl\lib/auto/Encode/JP/JP.pdb type=file
-d:\tlperl\lib/auto/Encode/KR/KR.dll type=file
-d:\tlperl\lib/auto/Encode/KR/KR.pdb type=file
-d:\tlperl\lib/auto/Encode/Symbol/Symbol.dll type=file
-d:\tlperl\lib/auto/Encode/Symbol/Symbol.pdb type=file
-d:\tlperl\lib/auto/Encode/TW/TW.dll type=file
-d:\tlperl\lib/auto/Encode/TW/TW.pdb type=file
-d:\tlperl\lib/auto/Encode/Unicode/Unicode.dll type=file
-d:\tlperl\lib/auto/Encode/Unicode/Unicode.pdb type=file
-d:\tlperl\lib/auto/Fcntl/Fcntl.dll type=file
-d:\tlperl\lib/auto/Fcntl/Fcntl.pdb type=file
-d:\tlperl\lib/auto/File/DosGlob/DosGlob.dll type=file
-d:\tlperl\lib/auto/File/DosGlob/DosGlob.pdb type=file
-d:\tlperl\lib/auto/File/Glob/Glob.dll type=file
-d:\tlperl\lib/auto/File/Glob/Glob.pdb type=file
-d:\tlperl\lib/auto/Filter/Util/Call/Call.dll type=file
-d:\tlperl\lib/auto/Filter/Util/Call/Call.pdb type=file
-d:\tlperl\lib/auto/Hash/Util/FieldHash/FieldHash.dll type=file
-d:\tlperl\lib/auto/Hash/Util/FieldHash/FieldHash.pdb type=file
-d:\tlperl\lib/auto/Hash/Util/Util.dll type=file
-d:\tlperl\lib/auto/Hash/Util/Util.pdb type=file
-d:\tlperl\lib/auto/I18N/Langinfo/Langinfo.dll type=file
-d:\tlperl\lib/auto/I18N/Langinfo/Langinfo.pdb type=file
-d:\tlperl\lib/auto/IO/IO.dll type=file
-d:\tlperl\lib/auto/IO/IO.pdb type=file
-d:\tlperl\lib/auto/List/Util/Util.dll type=file
-d:\tlperl\lib/auto/List/Util/Util.pdb type=file
-d:\tlperl\lib/auto/MIME/Base64/Base64.dll type=file
-d:\tlperl\lib/auto/MIME/Base64/Base64.pdb type=file
-d:\tlperl\lib/auto/Math/BigInt/FastCalc/FastCalc.dll type=file
-d:\tlperl\lib/auto/Math/BigInt/FastCalc/FastCalc.pdb type=file
-d:\tlperl\lib/auto/Opcode/Opcode.dll type=file
-d:\tlperl\lib/auto/Opcode/Opcode.pdb type=file
-d:\tlperl\lib/auto/POSIX/POSIX.dll type=file
-d:\tlperl\lib/auto/POSIX/POSIX.pdb type=file
-d:\tlperl\lib/auto/PerlIO/encoding/encoding.dll type=file
-d:\tlperl\lib/auto/PerlIO/encoding/encoding.pdb type=file
-d:\tlperl\lib/auto/PerlIO/mmap/mmap.dll type=file
-d:\tlperl\lib/auto/PerlIO/mmap/mmap.pdb type=file
-d:\tlperl\lib/auto/PerlIO/scalar/scalar.dll type=file
-d:\tlperl\lib/auto/PerlIO/scalar/scalar.pdb type=file
-d:\tlperl\lib/auto/PerlIO/via/via.dll type=file
-d:\tlperl\lib/auto/PerlIO/via/via.pdb type=file
-d:\tlperl\lib/auto/SDBM_File/SDBM_File.dll type=file
-d:\tlperl\lib/auto/SDBM_File/SDBM_File.pdb type=file
-d:\tlperl\lib/auto/Socket/Socket.dll type=file
-d:\tlperl\lib/auto/Socket/Socket.pdb type=file
-d:\tlperl\lib/auto/Storable/Storable.dll type=file
-d:\tlperl\lib/auto/Storable/Storable.pdb type=file
-d:\tlperl\lib/auto/Sys/Hostname/Hostname.dll type=file
-d:\tlperl\lib/auto/Sys/Hostname/Hostname.pdb type=file
-d:\tlperl\lib/auto/Time/HiRes/HiRes.dll type=file
-d:\tlperl\lib/auto/Time/HiRes/HiRes.pdb type=file
-d:\tlperl\lib/auto/Time/Piece/Piece.dll type=file
-d:\tlperl\lib/auto/Time/Piece/Piece.pdb type=file
-d:\tlperl\lib/auto/Unicode/Collate/Collate.dll type=file
-d:\tlperl\lib/auto/Unicode/Collate/Collate.pdb type=file
-d:\tlperl\lib/auto/Unicode/Normalize/Normalize.dll type=file
-d:\tlperl\lib/auto/Unicode/Normalize/Normalize.pdb type=file
-d:\tlperl\lib/auto/Win32/Win32.dll type=file
-d:\tlperl\lib/auto/Win32/Win32.pdb type=file
-d:\tlperl\lib/auto/Win32API/File/File.dll type=file
-d:\tlperl\lib/auto/Win32API/File/File.pdb type=file
-d:\tlperl\lib/auto/Win32CORE/extralibs.ld type=file
-d:\tlperl\lib/auto/attributes/attributes.dll type=file
-d:\tlperl\lib/auto/attributes/attributes.pdb type=file
-d:\tlperl\lib/auto/mro/mro.dll type=file
-d:\tlperl\lib/auto/mro/mro.pdb type=file
-d:\tlperl\lib/auto/re/re.dll type=file
-d:\tlperl\lib/auto/re/re.pdb type=file
-d:\tlperl\lib/auto/threads/shared/shared.dll type=file
-d:\tlperl\lib/auto/threads/shared/shared.pdb type=file
-d:\tlperl\lib/auto/threads/threads.dll type=file
-d:\tlperl\lib/auto/threads/threads.pdb type=file
-d:\tlperl\lib/autodie.pm type=file
-d:\tlperl\lib/autodie/Scope/Guard.pm type=file
-d:\tlperl\lib/autodie/Scope/GuardStack.pm type=file
-d:\tlperl\lib/autodie/Util.pm type=file
-d:\tlperl\lib/autodie/exception.pm type=file
-d:\tlperl\lib/autodie/exception/system.pm type=file
-d:\tlperl\lib/autodie/hints.pm type=file
-d:\tlperl\lib/autodie/skip.pm type=file
-d:\tlperl\lib/autouse.pm type=file
-d:\tlperl\lib/base.pm type=file
-d:\tlperl\lib/bigfloat.pm type=file
-d:\tlperl\lib/bigint.pm type=file
-d:\tlperl\lib/bignum.pm type=file
-d:\tlperl\lib/bigrat.pm type=file
-d:\tlperl\lib/blib.pm type=file
-d:\tlperl\lib/builtin.pm type=file
-d:\tlperl\lib/bytes.pm type=file
-d:\tlperl\lib/bytes_heavy.pl type=file
-d:\tlperl\lib/charnames.pm type=file
-d:\tlperl\lib/constant.pm type=file
-d:\tlperl\lib/deprecate.pm type=file
-d:\tlperl\lib/diagnostics.pm type=file
-d:\tlperl\lib/dumpvar.pl type=file
-d:\tlperl\lib/encoding.pm type=file
-d:\tlperl\lib/encoding/warnings.pm type=file
-d:\tlperl\lib/experimental.pm type=file
-d:\tlperl\lib/feature.pm type=file
-d:\tlperl\lib/fields.pm type=file
-d:\tlperl\lib/filetest.pm type=file
-d:\tlperl\lib/if.pm type=file
-d:\tlperl\lib/integer.pm type=file
-d:\tlperl\lib/less.pm type=file
-d:\tlperl\lib/lib.pm type=file
-d:\tlperl\lib/locale.pm type=file
-d:\tlperl\lib/meta_notation.pm type=file
-d:\tlperl\lib/mro.pm type=file
-d:\tlperl\lib/ok.pm type=file
-d:\tlperl\lib/open.pm type=file
-d:\tlperl\lib/ops.pm type=file
-d:\tlperl\lib/overload.pm type=file
-d:\tlperl\lib/overload/numbers.pm type=file
-d:\tlperl\lib/overloading.pm type=file
-d:\tlperl\lib/parent.pm type=file
-d:\tlperl\lib/perl5db.pl type=file
-d:\tlperl\lib/perlfaq.pm type=file
-d:\tlperl\lib/pods/perl.pod type=file
-d:\tlperl\lib/pods/perl5004delta.pod type=file
-d:\tlperl\lib/pods/perl5005delta.pod type=file
-d:\tlperl\lib/pods/perl5100delta.pod type=file
-d:\tlperl\lib/pods/perl5101delta.pod type=file
-d:\tlperl\lib/pods/perl5120delta.pod type=file
-d:\tlperl\lib/pods/perl5121delta.pod type=file
-d:\tlperl\lib/pods/perl5122delta.pod type=file
-d:\tlperl\lib/pods/perl5123delta.pod type=file
-d:\tlperl\lib/pods/perl5124delta.pod type=file
-d:\tlperl\lib/pods/perl5125delta.pod type=file
-d:\tlperl\lib/pods/perl5140delta.pod type=file
-d:\tlperl\lib/pods/perl5141delta.pod type=file
-d:\tlperl\lib/pods/perl5142delta.pod type=file
-d:\tlperl\lib/pods/perl5143delta.pod type=file
-d:\tlperl\lib/pods/perl5144delta.pod type=file
-d:\tlperl\lib/pods/perl5160delta.pod type=file
-d:\tlperl\lib/pods/perl5161delta.pod type=file
-d:\tlperl\lib/pods/perl5162delta.pod type=file
-d:\tlperl\lib/pods/perl5163delta.pod type=file
-d:\tlperl\lib/pods/perl5180delta.pod type=file
-d:\tlperl\lib/pods/perl5181delta.pod type=file
-d:\tlperl\lib/pods/perl5182delta.pod type=file
-d:\tlperl\lib/pods/perl5184delta.pod type=file
-d:\tlperl\lib/pods/perl5200delta.pod type=file
-d:\tlperl\lib/pods/perl5201delta.pod type=file
-d:\tlperl\lib/pods/perl5202delta.pod type=file
-d:\tlperl\lib/pods/perl5203delta.pod type=file
-d:\tlperl\lib/pods/perl5220delta.pod type=file
-d:\tlperl\lib/pods/perl5221delta.pod type=file
-d:\tlperl\lib/pods/perl5222delta.pod type=file
-d:\tlperl\lib/pods/perl5223delta.pod type=file
-d:\tlperl\lib/pods/perl5224delta.pod type=file
-d:\tlperl\lib/pods/perl5240delta.pod type=file
-d:\tlperl\lib/pods/perl5241delta.pod type=file
-d:\tlperl\lib/pods/perl5242delta.pod type=file
-d:\tlperl\lib/pods/perl5243delta.pod type=file
-d:\tlperl\lib/pods/perl5244delta.pod type=file
-d:\tlperl\lib/pods/perl5260delta.pod type=file
-d:\tlperl\lib/pods/perl5261delta.pod type=file
-d:\tlperl\lib/pods/perl5262delta.pod type=file
-d:\tlperl\lib/pods/perl5263delta.pod type=file
-d:\tlperl\lib/pods/perl5280delta.pod type=file
-d:\tlperl\lib/pods/perl5281delta.pod type=file
-d:\tlperl\lib/pods/perl5282delta.pod type=file
-d:\tlperl\lib/pods/perl5283delta.pod type=file
-d:\tlperl\lib/pods/perl5300delta.pod type=file
-d:\tlperl\lib/pods/perl5301delta.pod type=file
-d:\tlperl\lib/pods/perl5302delta.pod type=file
-d:\tlperl\lib/pods/perl5303delta.pod type=file
-d:\tlperl\lib/pods/perl5320delta.pod type=file
-d:\tlperl\lib/pods/perl5321delta.pod type=file
-d:\tlperl\lib/pods/perl5340delta.pod type=file
-d:\tlperl\lib/pods/perl5341delta.pod type=file
-d:\tlperl\lib/pods/perl5342delta.pod type=file
-d:\tlperl\lib/pods/perl5343delta.pod type=file
-d:\tlperl\lib/pods/perl5360delta.pod type=file
-d:\tlperl\lib/pods/perl5361delta.pod type=file
-d:\tlperl\lib/pods/perl5362delta.pod type=file
-d:\tlperl\lib/pods/perl5363delta.pod type=file
-d:\tlperl\lib/pods/perl5380delta.pod type=file
-d:\tlperl\lib/pods/perl5381delta.pod type=file
-d:\tlperl\lib/pods/perl5382delta.pod type=file
-d:\tlperl\lib/pods/perl561delta.pod type=file
-d:\tlperl\lib/pods/perl56delta.pod type=file
-d:\tlperl\lib/pods/perl581delta.pod type=file
-d:\tlperl\lib/pods/perl582delta.pod type=file
-d:\tlperl\lib/pods/perl583delta.pod type=file
-d:\tlperl\lib/pods/perl584delta.pod type=file
-d:\tlperl\lib/pods/perl585delta.pod type=file
-d:\tlperl\lib/pods/perl586delta.pod type=file
-d:\tlperl\lib/pods/perl587delta.pod type=file
-d:\tlperl\lib/pods/perl588delta.pod type=file
-d:\tlperl\lib/pods/perl589delta.pod type=file
-d:\tlperl\lib/pods/perl58delta.pod type=file
-d:\tlperl\lib/pods/perlaix.pod type=file
-d:\tlperl\lib/pods/perlamiga.pod type=file
-d:\tlperl\lib/pods/perlandroid.pod type=file
-d:\tlperl\lib/pods/perlapi.pod type=file
-d:\tlperl\lib/pods/perlapio.pod type=file
-d:\tlperl\lib/pods/perlartistic.pod type=file
-d:\tlperl\lib/pods/perlbook.pod type=file
-d:\tlperl\lib/pods/perlboot.pod type=file
-d:\tlperl\lib/pods/perlbot.pod type=file
-d:\tlperl\lib/pods/perlbs2000.pod type=file
-d:\tlperl\lib/pods/perlcall.pod type=file
-d:\tlperl\lib/pods/perlcheat.pod type=file
-d:\tlperl\lib/pods/perlclass.pod type=file
-d:\tlperl\lib/pods/perlclassguts.pod type=file
-d:\tlperl\lib/pods/perlclib.pod type=file
-d:\tlperl\lib/pods/perlcn.pod type=file
-d:\tlperl\lib/pods/perlcommunity.pod type=file
-d:\tlperl\lib/pods/perlcygwin.pod type=file
-d:\tlperl\lib/pods/perldata.pod type=file
-d:\tlperl\lib/pods/perldbmfilter.pod type=file
-d:\tlperl\lib/pods/perldebguts.pod type=file
-d:\tlperl\lib/pods/perldebtut.pod type=file
-d:\tlperl\lib/pods/perldebug.pod type=file
-d:\tlperl\lib/pods/perldelta.pod type=file
-d:\tlperl\lib/pods/perldeprecation.pod type=file
-d:\tlperl\lib/pods/perldiag.pod type=file
-d:\tlperl\lib/pods/perldoc.pod type=file
-d:\tlperl\lib/pods/perldocstyle.pod type=file
-d:\tlperl\lib/pods/perldsc.pod type=file
-d:\tlperl\lib/pods/perldtrace.pod type=file
-d:\tlperl\lib/pods/perlebcdic.pod type=file
-d:\tlperl\lib/pods/perlembed.pod type=file
-d:\tlperl\lib/pods/perlexperiment.pod type=file
-d:\tlperl\lib/pods/perlfaq.pod type=file
-d:\tlperl\lib/pods/perlfaq1.pod type=file
-d:\tlperl\lib/pods/perlfaq2.pod type=file
-d:\tlperl\lib/pods/perlfaq3.pod type=file
-d:\tlperl\lib/pods/perlfaq4.pod type=file
-d:\tlperl\lib/pods/perlfaq5.pod type=file
-d:\tlperl\lib/pods/perlfaq6.pod type=file
-d:\tlperl\lib/pods/perlfaq7.pod type=file
-d:\tlperl\lib/pods/perlfaq8.pod type=file
-d:\tlperl\lib/pods/perlfaq9.pod type=file
-d:\tlperl\lib/pods/perlfilter.pod type=file
-d:\tlperl\lib/pods/perlfork.pod type=file
-d:\tlperl\lib/pods/perlform.pod type=file
-d:\tlperl\lib/pods/perlfreebsd.pod type=file
-d:\tlperl\lib/pods/perlfunc.pod type=file
-d:\tlperl\lib/pods/perlgit.pod type=file
-d:\tlperl\lib/pods/perlglossary.pod type=file
-d:\tlperl\lib/pods/perlgov.pod type=file
-d:\tlperl\lib/pods/perlgpl.pod type=file
-d:\tlperl\lib/pods/perlguts.pod type=file
-d:\tlperl\lib/pods/perlhack.pod type=file
-d:\tlperl\lib/pods/perlhacktips.pod type=file
-d:\tlperl\lib/pods/perlhacktut.pod type=file
-d:\tlperl\lib/pods/perlhaiku.pod type=file
-d:\tlperl\lib/pods/perlhist.pod type=file
-d:\tlperl\lib/pods/perlhpux.pod type=file
-d:\tlperl\lib/pods/perlhurd.pod type=file
-d:\tlperl\lib/pods/perlintern.pod type=file
-d:\tlperl\lib/pods/perlinterp.pod type=file
-d:\tlperl\lib/pods/perlintro.pod type=file
-d:\tlperl\lib/pods/perliol.pod type=file
-d:\tlperl\lib/pods/perlipc.pod type=file
-d:\tlperl\lib/pods/perlirix.pod type=file
-d:\tlperl\lib/pods/perljp.pod type=file
-d:\tlperl\lib/pods/perlko.pod type=file
-d:\tlperl\lib/pods/perllexwarn.pod type=file
-d:\tlperl\lib/pods/perllinux.pod type=file
-d:\tlperl\lib/pods/perllocale.pod type=file
-d:\tlperl\lib/pods/perllol.pod type=file
-d:\tlperl\lib/pods/perlmacosx.pod type=file
-d:\tlperl\lib/pods/perlmod.pod type=file
-d:\tlperl\lib/pods/perlmodinstall.pod type=file
-d:\tlperl\lib/pods/perlmodlib.pod type=file
-d:\tlperl\lib/pods/perlmodstyle.pod type=file
-d:\tlperl\lib/pods/perlmroapi.pod type=file
-d:\tlperl\lib/pods/perlnewmod.pod type=file
-d:\tlperl\lib/pods/perlnumber.pod type=file
-d:\tlperl\lib/pods/perlobj.pod type=file
-d:\tlperl\lib/pods/perlootut.pod type=file
-d:\tlperl\lib/pods/perlop.pod type=file
-d:\tlperl\lib/pods/perlopenbsd.pod type=file
-d:\tlperl\lib/pods/perlopentut.pod type=file
-d:\tlperl\lib/pods/perlos2.pod type=file
-d:\tlperl\lib/pods/perlos390.pod type=file
-d:\tlperl\lib/pods/perlos400.pod type=file
-d:\tlperl\lib/pods/perlpacktut.pod type=file
-d:\tlperl\lib/pods/perlperf.pod type=file
-d:\tlperl\lib/pods/perlplan9.pod type=file
-d:\tlperl\lib/pods/perlpod.pod type=file
-d:\tlperl\lib/pods/perlpodspec.pod type=file
-d:\tlperl\lib/pods/perlpodstyle.pod type=file
-d:\tlperl\lib/pods/perlpolicy.pod type=file
-d:\tlperl\lib/pods/perlport.pod type=file
-d:\tlperl\lib/pods/perlpragma.pod type=file
-d:\tlperl\lib/pods/perlqnx.pod type=file
-d:\tlperl\lib/pods/perlre.pod type=file
-d:\tlperl\lib/pods/perlreapi.pod type=file
-d:\tlperl\lib/pods/perlrebackslash.pod type=file
-d:\tlperl\lib/pods/perlrecharclass.pod type=file
-d:\tlperl\lib/pods/perlref.pod type=file
-d:\tlperl\lib/pods/perlreftut.pod type=file
-d:\tlperl\lib/pods/perlreguts.pod type=file
-d:\tlperl\lib/pods/perlrepository.pod type=file
-d:\tlperl\lib/pods/perlrequick.pod type=file
-d:\tlperl\lib/pods/perlreref.pod type=file
-d:\tlperl\lib/pods/perlretut.pod type=file
-d:\tlperl\lib/pods/perlriscos.pod type=file
-d:\tlperl\lib/pods/perlrun.pod type=file
-d:\tlperl\lib/pods/perlsec.pod type=file
-d:\tlperl\lib/pods/perlsecpolicy.pod type=file
-d:\tlperl\lib/pods/perlsolaris.pod type=file
-d:\tlperl\lib/pods/perlsource.pod type=file
-d:\tlperl\lib/pods/perlstyle.pod type=file
-d:\tlperl\lib/pods/perlsub.pod type=file
-d:\tlperl\lib/pods/perlsyn.pod type=file
-d:\tlperl\lib/pods/perlsynology.pod type=file
-d:\tlperl\lib/pods/perlthrtut.pod type=file
-d:\tlperl\lib/pods/perltie.pod type=file
-d:\tlperl\lib/pods/perltoc.pod type=file
-d:\tlperl\lib/pods/perltodo.pod type=file
-d:\tlperl\lib/pods/perltooc.pod type=file
-d:\tlperl\lib/pods/perltoot.pod type=file
-d:\tlperl\lib/pods/perltrap.pod type=file
-d:\tlperl\lib/pods/perltru64.pod type=file
-d:\tlperl\lib/pods/perltw.pod type=file
-d:\tlperl\lib/pods/perlunicode.pod type=file
-d:\tlperl\lib/pods/perlunicook.pod type=file
-d:\tlperl\lib/pods/perlunifaq.pod type=file
-d:\tlperl\lib/pods/perluniintro.pod type=file
-d:\tlperl\lib/pods/perluniprops.pod type=file
-d:\tlperl\lib/pods/perlunitut.pod type=file
-d:\tlperl\lib/pods/perlutil.pod type=file
-d:\tlperl\lib/pods/perlvar.pod type=file
-d:\tlperl\lib/pods/perlvms.pod type=file
-d:\tlperl\lib/pods/perlvos.pod type=file
-d:\tlperl\lib/pods/perlwin32.pod type=file
-d:\tlperl\lib/pods/perlxs.pod type=file
-d:\tlperl\lib/pods/perlxstut.pod type=file
-d:\tlperl\lib/pods/perlxstypemap.pod type=file
-d:\tlperl\lib/re.pm type=file
-d:\tlperl\lib/sigtrap.pm type=file
-d:\tlperl\lib/sort.pm type=file
-d:\tlperl\lib/stable.pm type=file
-d:\tlperl\lib/strict.pm type=file
-d:\tlperl\lib/subs.pm type=file
-d:\tlperl\lib/threads.pm type=file
-d:\tlperl\lib/threads/shared.pm type=file
-d:\tlperl\lib/unicore/Blocks.txt type=file
-d:\tlperl\lib/unicore/CombiningClass.pl type=file
-d:\tlperl\lib/unicore/Decomposition.pl type=file
-d:\tlperl\lib/unicore/Name.pl type=file
-d:\tlperl\lib/unicore/Name.pm type=file
-d:\tlperl\lib/unicore/NamedSequences.txt type=file
-d:\tlperl\lib/unicore/SpecialCasing.txt type=file
-d:\tlperl\lib/unicore/TestNorm.pl type=file
-d:\tlperl\lib/unicore/To/Age.pl type=file
-d:\tlperl\lib/unicore/To/Bc.pl type=file
-d:\tlperl\lib/unicore/To/Bmg.pl type=file
-d:\tlperl\lib/unicore/To/Bpb.pl type=file
-d:\tlperl\lib/unicore/To/Bpt.pl type=file
-d:\tlperl\lib/unicore/To/Cf.pl type=file
-d:\tlperl\lib/unicore/To/Ea.pl type=file
-d:\tlperl\lib/unicore/To/EqUIdeo.pl type=file
-d:\tlperl\lib/unicore/To/GCB.pl type=file
-d:\tlperl\lib/unicore/To/Gc.pl type=file
-d:\tlperl\lib/unicore/To/Hst.pl type=file
-d:\tlperl\lib/unicore/To/Identif2.pl type=file
-d:\tlperl\lib/unicore/To/Identifi.pl type=file
-d:\tlperl\lib/unicore/To/InPC.pl type=file
-d:\tlperl\lib/unicore/To/InSC.pl type=file
-d:\tlperl\lib/unicore/To/Isc.pl type=file
-d:\tlperl\lib/unicore/To/Jg.pl type=file
-d:\tlperl\lib/unicore/To/Jt.pl type=file
-d:\tlperl\lib/unicore/To/Lb.pl type=file
-d:\tlperl\lib/unicore/To/Lc.pl type=file
-d:\tlperl\lib/unicore/To/NFCQC.pl type=file
-d:\tlperl\lib/unicore/To/NFDQC.pl type=file
-d:\tlperl\lib/unicore/To/NFKCCF.pl type=file
-d:\tlperl\lib/unicore/To/NFKCQC.pl type=file
-d:\tlperl\lib/unicore/To/NFKDQC.pl type=file
-d:\tlperl\lib/unicore/To/Na1.pl type=file
-d:\tlperl\lib/unicore/To/NameAlia.pl type=file
-d:\tlperl\lib/unicore/To/Nt.pl type=file
-d:\tlperl\lib/unicore/To/Nv.pl type=file
-d:\tlperl\lib/unicore/To/PerlDeci.pl type=file
-d:\tlperl\lib/unicore/To/SB.pl type=file
-d:\tlperl\lib/unicore/To/Sc.pl type=file
-d:\tlperl\lib/unicore/To/Scx.pl type=file
-d:\tlperl\lib/unicore/To/Tc.pl type=file
-d:\tlperl\lib/unicore/To/Uc.pl type=file
-d:\tlperl\lib/unicore/To/Vo.pl type=file
-d:\tlperl\lib/unicore/To/WB.pl type=file
-d:\tlperl\lib/unicore/To/_PerlLB.pl type=file
-d:\tlperl\lib/unicore/To/_PerlSCX.pl type=file
-d:\tlperl\lib/unicore/UCD.pl type=file
-d:\tlperl\lib/unicore/lib/Age/NA.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V100.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V11.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V110.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V120.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V130.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V140.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V150.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V20.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V30.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V31.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V32.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V40.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V41.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V50.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V51.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V52.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V60.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V61.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V70.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V80.pl type=file
-d:\tlperl\lib/unicore/lib/Age/V90.pl type=file
-d:\tlperl\lib/unicore/lib/Alpha/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/AL.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/AN.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/B.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/BN.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/CS.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/EN.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/ES.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/ET.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/L.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/NSM.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/ON.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/R.pl type=file
-d:\tlperl\lib/unicore/lib/Bc/WS.pl type=file
-d:\tlperl\lib/unicore/lib/BidiC/Y.pl type=file
-d:\tlperl\lib/unicore/lib/BidiM/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Blk/NB.pl type=file
-d:\tlperl\lib/unicore/lib/Bpt/C.pl type=file
-d:\tlperl\lib/unicore/lib/Bpt/N.pl type=file
-d:\tlperl\lib/unicore/lib/Bpt/O.pl type=file
-d:\tlperl\lib/unicore/lib/CE/Y.pl type=file
-d:\tlperl\lib/unicore/lib/CI/Y.pl type=file
-d:\tlperl\lib/unicore/lib/CWCF/Y.pl type=file
-d:\tlperl\lib/unicore/lib/CWCM/Y.pl type=file
-d:\tlperl\lib/unicore/lib/CWKCF/Y.pl type=file
-d:\tlperl\lib/unicore/lib/CWL/Y.pl type=file
-d:\tlperl\lib/unicore/lib/CWT/Y.pl type=file
-d:\tlperl\lib/unicore/lib/CWU/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Cased/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Ccc/A.pl type=file
-d:\tlperl\lib/unicore/lib/Ccc/AL.pl type=file
-d:\tlperl\lib/unicore/lib/Ccc/AR.pl type=file
-d:\tlperl\lib/unicore/lib/Ccc/ATAR.pl type=file
-d:\tlperl\lib/unicore/lib/Ccc/B.pl type=file
-d:\tlperl\lib/unicore/lib/Ccc/BR.pl type=file
-d:\tlperl\lib/unicore/lib/Ccc/DB.pl type=file
-d:\tlperl\lib/unicore/lib/Ccc/NK.pl type=file
-d:\tlperl\lib/unicore/lib/Ccc/NR.pl type=file
-d:\tlperl\lib/unicore/lib/Ccc/OV.pl type=file
-d:\tlperl\lib/unicore/lib/Ccc/VR.pl type=file
-d:\tlperl\lib/unicore/lib/CompEx/Y.pl type=file
-d:\tlperl\lib/unicore/lib/DI/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Dash/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Dep/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Dia/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Com.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Enc.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Fin.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Font.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Init.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Iso.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Med.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Nar.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Nb.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/NonCanon.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Sqr.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Sub.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Sup.pl type=file
-d:\tlperl\lib/unicore/lib/Dt/Vert.pl type=file
-d:\tlperl\lib/unicore/lib/EBase/Y.pl type=file
-d:\tlperl\lib/unicore/lib/EComp/Y.pl type=file
-d:\tlperl\lib/unicore/lib/EPres/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Ea/A.pl type=file
-d:\tlperl\lib/unicore/lib/Ea/H.pl type=file
-d:\tlperl\lib/unicore/lib/Ea/N.pl type=file
-d:\tlperl\lib/unicore/lib/Ea/Na.pl type=file
-d:\tlperl\lib/unicore/lib/Ea/W.pl type=file
-d:\tlperl\lib/unicore/lib/Emoji/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Ext/Y.pl type=file
-d:\tlperl\lib/unicore/lib/ExtPict/Y.pl type=file
-d:\tlperl\lib/unicore/lib/GCB/CN.pl type=file
-d:\tlperl\lib/unicore/lib/GCB/EX.pl type=file
-d:\tlperl\lib/unicore/lib/GCB/LV.pl type=file
-d:\tlperl\lib/unicore/lib/GCB/LVT.pl type=file
-d:\tlperl\lib/unicore/lib/GCB/PP.pl type=file
-d:\tlperl\lib/unicore/lib/GCB/SM.pl type=file
-d:\tlperl\lib/unicore/lib/GCB/XX.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/C.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Cf.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Cn.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/L.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/LC.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Ll.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Lm.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Lo.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Lu.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/M.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Mc.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Me.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Mn.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/N.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Nd.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Nl.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/No.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/P.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Pc.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Pd.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Pe.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Pf.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Pi.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Po.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Ps.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/S.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Sc.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Sk.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Sm.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/So.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Z.pl type=file
-d:\tlperl\lib/unicore/lib/Gc/Zs.pl type=file
-d:\tlperl\lib/unicore/lib/GrBase/Y.pl type=file
-d:\tlperl\lib/unicore/lib/GrExt/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Hex/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Hst/NA.pl type=file
-d:\tlperl\lib/unicore/lib/Hyphen/T.pl type=file
-d:\tlperl\lib/unicore/lib/IDC/Y.pl type=file
-d:\tlperl\lib/unicore/lib/IDS/Y.pl type=file
-d:\tlperl\lib/unicore/lib/IdStatus/Allowed.pl type=file
-d:\tlperl\lib/unicore/lib/IdStatus/Restrict.pl type=file
-d:\tlperl\lib/unicore/lib/IdType/DefaultI.pl type=file
-d:\tlperl\lib/unicore/lib/IdType/Exclusio.pl type=file
-d:\tlperl\lib/unicore/lib/IdType/Inclusio.pl type=file
-d:\tlperl\lib/unicore/lib/IdType/LimitedU.pl type=file
-d:\tlperl\lib/unicore/lib/IdType/NotChara.pl type=file
-d:\tlperl\lib/unicore/lib/IdType/NotNFKC.pl type=file
-d:\tlperl\lib/unicore/lib/IdType/NotXID.pl type=file
-d:\tlperl\lib/unicore/lib/IdType/Obsolete.pl type=file
-d:\tlperl\lib/unicore/lib/IdType/Recommen.pl type=file
-d:\tlperl\lib/unicore/lib/IdType/Technica.pl type=file
-d:\tlperl\lib/unicore/lib/IdType/Uncommon.pl type=file
-d:\tlperl\lib/unicore/lib/Ideo/Y.pl type=file
-d:\tlperl\lib/unicore/lib/In/10_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/11_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/12_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/12_1.pl type=file
-d:\tlperl\lib/unicore/lib/In/13_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/14_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/15_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/2_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/2_1.pl type=file
-d:\tlperl\lib/unicore/lib/In/3_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/3_1.pl type=file
-d:\tlperl\lib/unicore/lib/In/3_2.pl type=file
-d:\tlperl\lib/unicore/lib/In/4_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/4_1.pl type=file
-d:\tlperl\lib/unicore/lib/In/5_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/5_1.pl type=file
-d:\tlperl\lib/unicore/lib/In/5_2.pl type=file
-d:\tlperl\lib/unicore/lib/In/6_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/6_1.pl type=file
-d:\tlperl\lib/unicore/lib/In/6_2.pl type=file
-d:\tlperl\lib/unicore/lib/In/6_3.pl type=file
-d:\tlperl\lib/unicore/lib/In/7_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/8_0.pl type=file
-d:\tlperl\lib/unicore/lib/In/9_0.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/Bottom.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/BottomAn.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/Left.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/LeftAndR.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/NA.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/Overstru.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/Right.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/Top.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/TopAndBo.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/TopAndL2.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/TopAndLe.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/TopAndRi.pl type=file
-d:\tlperl\lib/unicore/lib/InPC/VisualOr.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Avagraha.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Bindu.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Cantilla.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Consona2.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Consona3.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Consona4.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Consona5.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Consona6.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Consona7.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Consona8.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Consona9.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Consonan.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Geminati.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Invisibl.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Nukta.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Number.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Other.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/PureKill.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Syllable.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/ToneMark.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Virama.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Visarga.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/Vowel.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/VowelDep.pl type=file
-d:\tlperl\lib/unicore/lib/InSC/VowelInd.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Ain.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Alef.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Beh.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Dal.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/FarsiYeh.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Feh.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Gaf.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Hah.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/HanifiRo.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Kaf.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Lam.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/NoJoinin.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Noon.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Qaf.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Reh.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Sad.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Seen.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Tah.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Waw.pl type=file
-d:\tlperl\lib/unicore/lib/Jg/Yeh.pl type=file
-d:\tlperl\lib/unicore/lib/Jt/C.pl type=file
-d:\tlperl\lib/unicore/lib/Jt/D.pl type=file
-d:\tlperl\lib/unicore/lib/Jt/L.pl type=file
-d:\tlperl\lib/unicore/lib/Jt/R.pl type=file
-d:\tlperl\lib/unicore/lib/Jt/T.pl type=file
-d:\tlperl\lib/unicore/lib/Jt/U.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/AI.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/AL.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/BA.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/BB.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/CJ.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/CL.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/CM.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/EX.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/GL.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/ID.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/IN.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/IS.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/NS.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/NU.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/OP.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/PO.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/PR.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/QU.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/SA.pl type=file
-d:\tlperl\lib/unicore/lib/Lb/XX.pl type=file
-d:\tlperl\lib/unicore/lib/Lower/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Math/Y.pl type=file
-d:\tlperl\lib/unicore/lib/NFCQC/M.pl type=file
-d:\tlperl\lib/unicore/lib/NFCQC/Y.pl type=file
-d:\tlperl\lib/unicore/lib/NFDQC/N.pl type=file
-d:\tlperl\lib/unicore/lib/NFDQC/Y.pl type=file
-d:\tlperl\lib/unicore/lib/NFKCQC/N.pl type=file
-d:\tlperl\lib/unicore/lib/NFKCQC/Y.pl type=file
-d:\tlperl\lib/unicore/lib/NFKDQC/N.pl type=file
-d:\tlperl\lib/unicore/lib/NFKDQC/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Nt/Di.pl type=file
-d:\tlperl\lib/unicore/lib/Nt/None.pl type=file
-d:\tlperl\lib/unicore/lib/Nt/Nu.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/0.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/1.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/10.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/100.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/1000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/10000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/100000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/11.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/12.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/13.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/14.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/15.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/16.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/17.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/18.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/19.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/1_16.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/1_2.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/1_3.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/1_4.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/1_6.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/1_8.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/2.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/20.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/200.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/2000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/20000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/2_3.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/3.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/30.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/300.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/3000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/30000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/3_16.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/3_4.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/4.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/40.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/400.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/4000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/40000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/5.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/50.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/500.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/5000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/50000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/6.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/60.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/600.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/6000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/60000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/7.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/70.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/700.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/7000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/70000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/8.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/80.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/800.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/8000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/80000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/9.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/90.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/900.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/9000.pl type=file
-d:\tlperl\lib/unicore/lib/Nv/90000.pl type=file
-d:\tlperl\lib/unicore/lib/PCM/Y.pl type=file
-d:\tlperl\lib/unicore/lib/PatSyn/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/Alnum.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/Assigned.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/Blank.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/Graph.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/PerlWord.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/PosixPun.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/Print.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/SpacePer.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/Title.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/Word.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/XPosixPu.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlAny.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlCh2.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlCha.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlFol.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlIDC.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlIDS.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlIsI.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlNch.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlPat.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlPr2.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlPro.pl type=file
-d:\tlperl\lib/unicore/lib/Perl/_PerlQuo.pl type=file
-d:\tlperl\lib/unicore/lib/QMark/Y.pl type=file
-d:\tlperl\lib/unicore/lib/SB/AT.pl type=file
-d:\tlperl\lib/unicore/lib/SB/CL.pl type=file
-d:\tlperl\lib/unicore/lib/SB/EX.pl type=file
-d:\tlperl\lib/unicore/lib/SB/FO.pl type=file
-d:\tlperl\lib/unicore/lib/SB/LE.pl type=file
-d:\tlperl\lib/unicore/lib/SB/LO.pl type=file
-d:\tlperl\lib/unicore/lib/SB/NU.pl type=file
-d:\tlperl\lib/unicore/lib/SB/SC.pl type=file
-d:\tlperl\lib/unicore/lib/SB/ST.pl type=file
-d:\tlperl\lib/unicore/lib/SB/Sp.pl type=file
-d:\tlperl\lib/unicore/lib/SB/UP.pl type=file
-d:\tlperl\lib/unicore/lib/SB/XX.pl type=file
-d:\tlperl\lib/unicore/lib/SD/Y.pl type=file
-d:\tlperl\lib/unicore/lib/STerm/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Arab.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Beng.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Cprt.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Cyrl.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Deva.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Dupl.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Geor.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Glag.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Gong.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Gonm.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Gran.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Grek.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Gujr.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Guru.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Han.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Hang.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Hira.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Kana.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Knda.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Latn.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Limb.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Linb.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Mlym.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Mong.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Mult.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Orya.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Sinh.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Syrc.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Taml.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Telu.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Zinh.pl type=file
-d:\tlperl\lib/unicore/lib/Sc/Zyyy.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Adlm.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Arab.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Armn.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Beng.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Bhks.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Bopo.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Cakm.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Cham.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Copt.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Cprt.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Cyrl.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Deva.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Diak.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Dupl.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Ethi.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Geor.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Glag.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Gong.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Gonm.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Gran.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Grek.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Gujr.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Guru.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Han.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Hang.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Hebr.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Hira.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Hmng.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Hmnp.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Kana.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Khar.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Khmr.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Khoj.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Knda.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Kthi.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Lana.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Lao.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Latn.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Limb.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Lina.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Linb.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Mlym.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Mong.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Mult.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Mymr.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Nand.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Nko.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Orya.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Phlp.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Rohg.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Shrd.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Sind.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Sinh.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Syrc.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Tagb.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Takr.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Talu.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Taml.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Tang.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Telu.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Thaa.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Tibt.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Tirh.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Vith.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Xsux.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Yezi.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Yi.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Zinh.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Zyyy.pl type=file
-d:\tlperl\lib/unicore/lib/Scx/Zzzz.pl type=file
-d:\tlperl\lib/unicore/lib/Term/Y.pl type=file
-d:\tlperl\lib/unicore/lib/UIdeo/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Upper/Y.pl type=file
-d:\tlperl\lib/unicore/lib/VS/Y.pl type=file
-d:\tlperl\lib/unicore/lib/Vo/R.pl type=file
-d:\tlperl\lib/unicore/lib/Vo/Tr.pl type=file
-d:\tlperl\lib/unicore/lib/Vo/Tu.pl type=file
-d:\tlperl\lib/unicore/lib/Vo/U.pl type=file
-d:\tlperl\lib/unicore/lib/WB/EX.pl type=file
-d:\tlperl\lib/unicore/lib/WB/Extend.pl type=file
-d:\tlperl\lib/unicore/lib/WB/FO.pl type=file
-d:\tlperl\lib/unicore/lib/WB/HL.pl type=file
-d:\tlperl\lib/unicore/lib/WB/KA.pl type=file
-d:\tlperl\lib/unicore/lib/WB/LE.pl type=file
-d:\tlperl\lib/unicore/lib/WB/MB.pl type=file
-d:\tlperl\lib/unicore/lib/WB/ML.pl type=file
-d:\tlperl\lib/unicore/lib/WB/MN.pl type=file
-d:\tlperl\lib/unicore/lib/WB/NU.pl type=file
-d:\tlperl\lib/unicore/lib/WB/WSegSpac.pl type=file
-d:\tlperl\lib/unicore/lib/WB/XX.pl type=file
-d:\tlperl\lib/unicore/lib/XIDC/Y.pl type=file
-d:\tlperl\lib/unicore/lib/XIDS/Y.pl type=file
-d:\tlperl\lib/unicore/uni_keywords.pl type=file
-d:\tlperl\lib/unicore/version type=file
-d:\tlperl\lib/utf8.pm type=file
-d:\tlperl\lib/vars.pm type=file
-d:\tlperl\lib/version.pm type=file
-d:\tlperl\lib/version.pod type=file
-d:\tlperl\lib/version/Internals.pod type=file
-d:\tlperl\lib/version/regex.pm type=file
-d:\tlperl\lib/vmsish.pm type=file
-d:\tlperl\lib/warnings.pm type=file
-d:\tlperl\lib/warnings/register.pm type=file
+D:\tlperl\bin/corelist.bat type=file
+D:\tlperl\bin/cpan.bat type=file
+D:\tlperl\bin/enc2xs.bat type=file
+D:\tlperl\bin/encguess.bat type=file
+D:\tlperl\bin/h2ph.bat type=file
+D:\tlperl\bin/h2xs.bat type=file
+D:\tlperl\bin/instmodsh.bat type=file
+D:\tlperl\bin/json_pp.bat type=file
+D:\tlperl\bin/libnetcfg.bat type=file
+D:\tlperl\bin/perl.exe from=D:\tlperl\bin/perl5.40.1.exe type=link
+D:\tlperl\bin/perl5.40.1.exe type=file
+D:\tlperl\bin/perl540.dll type=file
+D:\tlperl\bin/perlbug.bat type=file
+D:\tlperl\bin/perldoc.bat type=file
+D:\tlperl\bin/perlivp.bat type=file
+D:\tlperl\bin/perlthanks.bat from=D:\tlperl\bin/perlbug.bat type=link
+D:\tlperl\bin/piconv.bat type=file
+D:\tlperl\bin/pl2pm.bat type=file
+D:\tlperl\bin/pod2html.bat type=file
+D:\tlperl\bin/pod2man.bat type=file
+D:\tlperl\bin/pod2text.bat type=file
+D:\tlperl\bin/pod2usage.bat type=file
+D:\tlperl\bin/podchecker.bat type=file
+D:\tlperl\bin/prove.bat type=file
+D:\tlperl\bin/ptar.bat type=file
+D:\tlperl\bin/ptardiff.bat type=file
+D:\tlperl\bin/ptargrep.bat type=file
+D:\tlperl\bin/shasum.bat type=file
+D:\tlperl\bin/splain.bat type=file
+D:\tlperl\bin/streamzip.bat type=file
+D:\tlperl\bin/xsubpp.bat type=file
+D:\tlperl\bin/zipdetails.bat type=file
+D:\tlperl\lib/AnyDBM_File.pm type=file
+D:\tlperl\lib/App/Cpan.pm type=file
+D:\tlperl\lib/App/Prove.pm type=file
+D:\tlperl\lib/App/Prove/State.pm type=file
+D:\tlperl\lib/App/Prove/State/Result.pm type=file
+D:\tlperl\lib/App/Prove/State/Result/Test.pm type=file
+D:\tlperl\lib/Archive/Tar.pm type=file
+D:\tlperl\lib/Archive/Tar/Constant.pm type=file
+D:\tlperl\lib/Archive/Tar/File.pm type=file
+D:\tlperl\lib/Attribute/Handlers.pm type=file
+D:\tlperl\lib/AutoLoader.pm type=file
+D:\tlperl\lib/AutoSplit.pm type=file
+D:\tlperl\lib/B.pm type=file
+D:\tlperl\lib/B/Concise.pm type=file
+D:\tlperl\lib/B/Deparse.pm type=file
+D:\tlperl\lib/B/Op_private.pm type=file
+D:\tlperl\lib/B/Showlex.pm type=file
+D:\tlperl\lib/B/Terse.pm type=file
+D:\tlperl\lib/B/Xref.pm type=file
+D:\tlperl\lib/Benchmark.pm type=file
+D:\tlperl\lib/CORE.pod type=file
+D:\tlperl\lib/CORE/EXTERN.h type=file
+D:\tlperl\lib/CORE/INTERN.h type=file
+D:\tlperl\lib/CORE/XSUB.h type=file
+D:\tlperl\lib/CORE/arpa/inet.h type=file
+D:\tlperl\lib/CORE/av.h type=file
+D:\tlperl\lib/CORE/bitcount.h type=file
+D:\tlperl\lib/CORE/charclass_invlists.h type=file
+D:\tlperl\lib/CORE/config.h type=file
+D:\tlperl\lib/CORE/cop.h type=file
+D:\tlperl\lib/CORE/cv.h type=file
+D:\tlperl\lib/CORE/dirent.h type=file
+D:\tlperl\lib/CORE/dosish.h type=file
+D:\tlperl\lib/CORE/ebcdic_tables.h type=file
+D:\tlperl\lib/CORE/embed.h type=file
+D:\tlperl\lib/CORE/embedvar.h type=file
+D:\tlperl\lib/CORE/fakesdio.h type=file
+D:\tlperl\lib/CORE/feature.h type=file
+D:\tlperl\lib/CORE/form.h type=file
+D:\tlperl\lib/CORE/git_version.h type=file
+D:\tlperl\lib/CORE/gv.h type=file
+D:\tlperl\lib/CORE/handy.h type=file
+D:\tlperl\lib/CORE/hv.h type=file
+D:\tlperl\lib/CORE/hv_func.h type=file
+D:\tlperl\lib/CORE/hv_macro.h type=file
+D:\tlperl\lib/CORE/inline.h type=file
+D:\tlperl\lib/CORE/intrpvar.h type=file
+D:\tlperl\lib/CORE/invlist_inline.h type=file
+D:\tlperl\lib/CORE/iperlsys.h type=file
+D:\tlperl\lib/CORE/keywords.h type=file
+D:\tlperl\lib/CORE/l1_char_class_tab.h type=file
+D:\tlperl\lib/CORE/locale_table.h type=file
+D:\tlperl\lib/CORE/malloc_ctl.h type=file
+D:\tlperl\lib/CORE/metaconfig.h type=file
+D:\tlperl\lib/CORE/mg.h type=file
+D:\tlperl\lib/CORE/mg_data.h type=file
+D:\tlperl\lib/CORE/mg_raw.h type=file
+D:\tlperl\lib/CORE/mg_vtable.h type=file
+D:\tlperl\lib/CORE/mydtrace.h type=file
+D:\tlperl\lib/CORE/netdb.h type=file
+D:\tlperl\lib/CORE/nostdio.h type=file
+D:\tlperl\lib/CORE/op.h type=file
+D:\tlperl\lib/CORE/op_reg_common.h type=file
+D:\tlperl\lib/CORE/opcode.h type=file
+D:\tlperl\lib/CORE/opnames.h type=file
+D:\tlperl\lib/CORE/overload.h type=file
+D:\tlperl\lib/CORE/pad.h type=file
+D:\tlperl\lib/CORE/parser.h type=file
+D:\tlperl\lib/CORE/patchlevel.h type=file
+D:\tlperl\lib/CORE/perl.h type=file
+D:\tlperl\lib/CORE/perl540.lib type=file
+D:\tlperl\lib/CORE/perl_inc_macro.h type=file
+D:\tlperl\lib/CORE/perl_langinfo.h type=file
+D:\tlperl\lib/CORE/perl_siphash.h type=file
+D:\tlperl\lib/CORE/perlapi.h type=file
+D:\tlperl\lib/CORE/perlhost.h type=file
+D:\tlperl\lib/CORE/perlio.h type=file
+D:\tlperl\lib/CORE/perliol.h type=file
+D:\tlperl\lib/CORE/perlsdio.h type=file
+D:\tlperl\lib/CORE/perlstatic.h type=file
+D:\tlperl\lib/CORE/perlvars.h type=file
+D:\tlperl\lib/CORE/perly.h type=file
+D:\tlperl\lib/CORE/pp.h type=file
+D:\tlperl\lib/CORE/pp_proto.h type=file
+D:\tlperl\lib/CORE/proto.h type=file
+D:\tlperl\lib/CORE/reentr.h type=file
+D:\tlperl\lib/CORE/regcharclass.h type=file
+D:\tlperl\lib/CORE/regcomp.h type=file
+D:\tlperl\lib/CORE/regcomp_internal.h type=file
+D:\tlperl\lib/CORE/regexp.h type=file
+D:\tlperl\lib/CORE/reginline.h type=file
+D:\tlperl\lib/CORE/regnodes.h type=file
+D:\tlperl\lib/CORE/sbox32_hash.h type=file
+D:\tlperl\lib/CORE/scope.h type=file
+D:\tlperl\lib/CORE/scope_types.h type=file
+D:\tlperl\lib/CORE/sv.h type=file
+D:\tlperl\lib/CORE/sv_inline.h type=file
+D:\tlperl\lib/CORE/sys/errno2.h type=file
+D:\tlperl\lib/CORE/sys/socket.h type=file
+D:\tlperl\lib/CORE/thread.h type=file
+D:\tlperl\lib/CORE/time64.h type=file
+D:\tlperl\lib/CORE/time64_config.h type=file
+D:\tlperl\lib/CORE/uni_keywords.h type=file
+D:\tlperl\lib/CORE/unicode_constants.h type=file
+D:\tlperl\lib/CORE/unixish.h type=file
+D:\tlperl\lib/CORE/utf8.h type=file
+D:\tlperl\lib/CORE/utfebcdic.h type=file
+D:\tlperl\lib/CORE/util.h type=file
+D:\tlperl\lib/CORE/uudmap.h type=file
+D:\tlperl\lib/CORE/vdir.h type=file
+D:\tlperl\lib/CORE/vmem.h type=file
+D:\tlperl\lib/CORE/vutil.h type=file
+D:\tlperl\lib/CORE/warnings.h type=file
+D:\tlperl\lib/CORE/win32.h type=file
+D:\tlperl\lib/CORE/win32iop.h type=file
+D:\tlperl\lib/CORE/win32thread.h type=file
+D:\tlperl\lib/CORE/zaphod32_hash.h type=file
+D:\tlperl\lib/CPAN.pm type=file
+D:\tlperl\lib/CPAN/API/HOWTO.pod type=file
+D:\tlperl\lib/CPAN/Author.pm type=file
+D:\tlperl\lib/CPAN/Bundle.pm type=file
+D:\tlperl\lib/CPAN/CacheMgr.pm type=file
+D:\tlperl\lib/CPAN/Complete.pm type=file
+D:\tlperl\lib/CPAN/Debug.pm type=file
+D:\tlperl\lib/CPAN/DeferredCode.pm type=file
+D:\tlperl\lib/CPAN/Distribution.pm type=file
+D:\tlperl\lib/CPAN/Distroprefs.pm type=file
+D:\tlperl\lib/CPAN/Distrostatus.pm type=file
+D:\tlperl\lib/CPAN/Exception/RecursiveDependency.pm type=file
+D:\tlperl\lib/CPAN/Exception/blocked_urllist.pm type=file
+D:\tlperl\lib/CPAN/Exception/yaml_not_installed.pm type=file
+D:\tlperl\lib/CPAN/Exception/yaml_process_error.pm type=file
+D:\tlperl\lib/CPAN/FTP.pm type=file
+D:\tlperl\lib/CPAN/FTP/netrc.pm type=file
+D:\tlperl\lib/CPAN/FirstTime.pm type=file
+D:\tlperl\lib/CPAN/HTTP/Client.pm type=file
+D:\tlperl\lib/CPAN/HTTP/Credentials.pm type=file
+D:\tlperl\lib/CPAN/HandleConfig.pm type=file
+D:\tlperl\lib/CPAN/Index.pm type=file
+D:\tlperl\lib/CPAN/InfoObj.pm type=file
+D:\tlperl\lib/CPAN/Kwalify.pm type=file
+D:\tlperl\lib/CPAN/Kwalify/distroprefs.dd type=file
+D:\tlperl\lib/CPAN/Kwalify/distroprefs.yml type=file
+D:\tlperl\lib/CPAN/LWP/UserAgent.pm type=file
+D:\tlperl\lib/CPAN/Meta.pm type=file
+D:\tlperl\lib/CPAN/Meta/Converter.pm type=file
+D:\tlperl\lib/CPAN/Meta/Feature.pm type=file
+D:\tlperl\lib/CPAN/Meta/History.pm type=file
+D:\tlperl\lib/CPAN/Meta/History/Meta_1_0.pod type=file
+D:\tlperl\lib/CPAN/Meta/History/Meta_1_1.pod type=file
+D:\tlperl\lib/CPAN/Meta/History/Meta_1_2.pod type=file
+D:\tlperl\lib/CPAN/Meta/History/Meta_1_3.pod type=file
+D:\tlperl\lib/CPAN/Meta/History/Meta_1_4.pod type=file
+D:\tlperl\lib/CPAN/Meta/Merge.pm type=file
+D:\tlperl\lib/CPAN/Meta/Prereqs.pm type=file
+D:\tlperl\lib/CPAN/Meta/Requirements.pm type=file
+D:\tlperl\lib/CPAN/Meta/Requirements/Range.pm type=file
+D:\tlperl\lib/CPAN/Meta/Spec.pm type=file
+D:\tlperl\lib/CPAN/Meta/Validator.pm type=file
+D:\tlperl\lib/CPAN/Meta/YAML.pm type=file
+D:\tlperl\lib/CPAN/Mirrors.pm type=file
+D:\tlperl\lib/CPAN/Module.pm type=file
+D:\tlperl\lib/CPAN/Nox.pm type=file
+D:\tlperl\lib/CPAN/Plugin.pm type=file
+D:\tlperl\lib/CPAN/Plugin/Specfile.pm type=file
+D:\tlperl\lib/CPAN/Prompt.pm type=file
+D:\tlperl\lib/CPAN/Queue.pm type=file
+D:\tlperl\lib/CPAN/Shell.pm type=file
+D:\tlperl\lib/CPAN/Tarzip.pm type=file
+D:\tlperl\lib/CPAN/URL.pm type=file
+D:\tlperl\lib/CPAN/Version.pm type=file
+D:\tlperl\lib/Carp.pm type=file
+D:\tlperl\lib/Carp/Heavy.pm type=file
+D:\tlperl\lib/Class/Struct.pm type=file
+D:\tlperl\lib/Compress/Raw/Bzip2.pm type=file
+D:\tlperl\lib/Compress/Raw/Zlib.pm type=file
+D:\tlperl\lib/Compress/Zlib.pm type=file
+D:\tlperl\lib/Config.pm type=file
+D:\tlperl\lib/Config.pod type=file
+D:\tlperl\lib/Config/Extensions.pm type=file
+D:\tlperl\lib/Config/Perl/V.pm type=file
+D:\tlperl\lib/Config_git.pl type=file
+D:\tlperl\lib/Config_heavy.pl type=file
+D:\tlperl\lib/Cwd.pm type=file
+D:\tlperl\lib/DB.pm type=file
+D:\tlperl\lib/DBM_Filter.pm type=file
+D:\tlperl\lib/DBM_Filter/compress.pm type=file
+D:\tlperl\lib/DBM_Filter/encode.pm type=file
+D:\tlperl\lib/DBM_Filter/int32.pm type=file
+D:\tlperl\lib/DBM_Filter/null.pm type=file
+D:\tlperl\lib/DBM_Filter/utf8.pm type=file
+D:\tlperl\lib/Data/Dumper.pm type=file
+D:\tlperl\lib/Devel/PPPort.pm type=file
+D:\tlperl\lib/Devel/Peek.pm type=file
+D:\tlperl\lib/Devel/SelfStubber.pm type=file
+D:\tlperl\lib/Digest.pm type=file
+D:\tlperl\lib/Digest/MD5.pm type=file
+D:\tlperl\lib/Digest/SHA.pm type=file
+D:\tlperl\lib/Digest/base.pm type=file
+D:\tlperl\lib/Digest/file.pm type=file
+D:\tlperl\lib/DirHandle.pm type=file
+D:\tlperl\lib/Dumpvalue.pm type=file
+D:\tlperl\lib/DynaLoader.pm type=file
+D:\tlperl\lib/Encode.pm type=file
+D:\tlperl\lib/Encode/Alias.pm type=file
+D:\tlperl\lib/Encode/Byte.pm type=file
+D:\tlperl\lib/Encode/CJKConstants.pm type=file
+D:\tlperl\lib/Encode/CN.pm type=file
+D:\tlperl\lib/Encode/CN/HZ.pm type=file
+D:\tlperl\lib/Encode/Changes.e2x type=file
+D:\tlperl\lib/Encode/Config.pm type=file
+D:\tlperl\lib/Encode/ConfigLocal_PM.e2x type=file
+D:\tlperl\lib/Encode/EBCDIC.pm type=file
+D:\tlperl\lib/Encode/Encoder.pm type=file
+D:\tlperl\lib/Encode/Encoding.pm type=file
+D:\tlperl\lib/Encode/GSM0338.pm type=file
+D:\tlperl\lib/Encode/Guess.pm type=file
+D:\tlperl\lib/Encode/JP.pm type=file
+D:\tlperl\lib/Encode/JP/H2Z.pm type=file
+D:\tlperl\lib/Encode/JP/JIS7.pm type=file
+D:\tlperl\lib/Encode/KR.pm type=file
+D:\tlperl\lib/Encode/KR/2022_KR.pm type=file
+D:\tlperl\lib/Encode/MIME/Header.pm type=file
+D:\tlperl\lib/Encode/MIME/Header/ISO_2022_JP.pm type=file
+D:\tlperl\lib/Encode/MIME/Name.pm type=file
+D:\tlperl\lib/Encode/Makefile_PL.e2x type=file
+D:\tlperl\lib/Encode/PerlIO.pod type=file
+D:\tlperl\lib/Encode/README.e2x type=file
+D:\tlperl\lib/Encode/Supported.pod type=file
+D:\tlperl\lib/Encode/Symbol.pm type=file
+D:\tlperl\lib/Encode/TW.pm type=file
+D:\tlperl\lib/Encode/Unicode.pm type=file
+D:\tlperl\lib/Encode/Unicode/UTF7.pm type=file
+D:\tlperl\lib/Encode/_PM.e2x type=file
+D:\tlperl\lib/Encode/_T.e2x type=file
+D:\tlperl\lib/Encode/encode.h type=file
+D:\tlperl\lib/English.pm type=file
+D:\tlperl\lib/Env.pm type=file
+D:\tlperl\lib/Errno.pm type=file
+D:\tlperl\lib/Exporter.pm type=file
+D:\tlperl\lib/Exporter/Heavy.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Base.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/Unix.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/VMS.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/aix.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/android.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/cygwin.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/darwin.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/dec_osf.pm type=file
+D:\tlperl\lib/ExtUtils/CBuilder/Platform/os2.pm type=file
+D:\tlperl\lib/ExtUtils/Command.pm type=file
+D:\tlperl\lib/ExtUtils/Command/MM.pm type=file
+D:\tlperl\lib/ExtUtils/Constant.pm type=file
+D:\tlperl\lib/ExtUtils/Constant/Base.pm type=file
+D:\tlperl\lib/ExtUtils/Constant/ProxySubs.pm type=file
+D:\tlperl\lib/ExtUtils/Constant/Utils.pm type=file
+D:\tlperl\lib/ExtUtils/Constant/XS.pm type=file
+D:\tlperl\lib/ExtUtils/Embed.pm type=file
+D:\tlperl\lib/ExtUtils/Install.pm type=file
+D:\tlperl\lib/ExtUtils/Installed.pm type=file
+D:\tlperl\lib/ExtUtils/Liblist.pm type=file
+D:\tlperl\lib/ExtUtils/Liblist/Kid.pm type=file
+D:\tlperl\lib/ExtUtils/MANIFEST.SKIP type=file
+D:\tlperl\lib/ExtUtils/MM.pm type=file
+D:\tlperl\lib/ExtUtils/MM_AIX.pm type=file
+D:\tlperl\lib/ExtUtils/MM_Any.pm type=file
+D:\tlperl\lib/ExtUtils/MM_BeOS.pm type=file
+D:\tlperl\lib/ExtUtils/MM_Cygwin.pm type=file
+D:\tlperl\lib/ExtUtils/MM_DOS.pm type=file
+D:\tlperl\lib/ExtUtils/MM_Darwin.pm type=file
+D:\tlperl\lib/ExtUtils/MM_MacOS.pm type=file
+D:\tlperl\lib/ExtUtils/MM_NW5.pm type=file
+D:\tlperl\lib/ExtUtils/MM_OS2.pm type=file
+D:\tlperl\lib/ExtUtils/MM_OS390.pm type=file
+D:\tlperl\lib/ExtUtils/MM_QNX.pm type=file
+D:\tlperl\lib/ExtUtils/MM_UWIN.pm type=file
+D:\tlperl\lib/ExtUtils/MM_Unix.pm type=file
+D:\tlperl\lib/ExtUtils/MM_VMS.pm type=file
+D:\tlperl\lib/ExtUtils/MM_VOS.pm type=file
+D:\tlperl\lib/ExtUtils/MM_Win32.pm type=file
+D:\tlperl\lib/ExtUtils/MM_Win95.pm type=file
+D:\tlperl\lib/ExtUtils/MY.pm type=file
+D:\tlperl\lib/ExtUtils/MakeMaker.pm type=file
+D:\tlperl\lib/ExtUtils/MakeMaker/Config.pm type=file
+D:\tlperl\lib/ExtUtils/MakeMaker/FAQ.pod type=file
+D:\tlperl\lib/ExtUtils/MakeMaker/Locale.pm type=file
+D:\tlperl\lib/ExtUtils/MakeMaker/Tutorial.pod type=file
+D:\tlperl\lib/ExtUtils/MakeMaker/version.pm type=file
+D:\tlperl\lib/ExtUtils/Manifest.pm type=file
+D:\tlperl\lib/ExtUtils/Miniperl.pm type=file
+D:\tlperl\lib/ExtUtils/Mkbootstrap.pm type=file
+D:\tlperl\lib/ExtUtils/Mksymlists.pm type=file
+D:\tlperl\lib/ExtUtils/PL2Bat.pm type=file
+D:\tlperl\lib/ExtUtils/Packlist.pm type=file
+D:\tlperl\lib/ExtUtils/ParseXS.pm type=file
+D:\tlperl\lib/ExtUtils/ParseXS.pod type=file
+D:\tlperl\lib/ExtUtils/ParseXS/Constants.pm type=file
+D:\tlperl\lib/ExtUtils/ParseXS/CountLines.pm type=file
+D:\tlperl\lib/ExtUtils/ParseXS/Eval.pm type=file
+D:\tlperl\lib/ExtUtils/ParseXS/Utilities.pm type=file
+D:\tlperl\lib/ExtUtils/Typemaps.pm type=file
+D:\tlperl\lib/ExtUtils/Typemaps/Cmd.pm type=file
+D:\tlperl\lib/ExtUtils/Typemaps/InputMap.pm type=file
+D:\tlperl\lib/ExtUtils/Typemaps/OutputMap.pm type=file
+D:\tlperl\lib/ExtUtils/Typemaps/Type.pm type=file
+D:\tlperl\lib/ExtUtils/testlib.pm type=file
+D:\tlperl\lib/ExtUtils/typemap type=file
+D:\tlperl\lib/ExtUtils/xsubpp type=file
+D:\tlperl\lib/Fatal.pm type=file
+D:\tlperl\lib/Fcntl.pm type=file
+D:\tlperl\lib/File/Basename.pm type=file
+D:\tlperl\lib/File/Compare.pm type=file
+D:\tlperl\lib/File/Copy.pm type=file
+D:\tlperl\lib/File/DosGlob.pm type=file
+D:\tlperl\lib/File/Fetch.pm type=file
+D:\tlperl\lib/File/Find.pm type=file
+D:\tlperl\lib/File/Glob.pm type=file
+D:\tlperl\lib/File/GlobMapper.pm type=file
+D:\tlperl\lib/File/Path.pm type=file
+D:\tlperl\lib/File/Spec.pm type=file
+D:\tlperl\lib/File/Spec/AmigaOS.pm type=file
+D:\tlperl\lib/File/Spec/Cygwin.pm type=file
+D:\tlperl\lib/File/Spec/Epoc.pm type=file
+D:\tlperl\lib/File/Spec/Functions.pm type=file
+D:\tlperl\lib/File/Spec/Mac.pm type=file
+D:\tlperl\lib/File/Spec/OS2.pm type=file
+D:\tlperl\lib/File/Spec/Unix.pm type=file
+D:\tlperl\lib/File/Spec/VMS.pm type=file
+D:\tlperl\lib/File/Spec/Win32.pm type=file
+D:\tlperl\lib/File/Temp.pm type=file
+D:\tlperl\lib/File/stat.pm type=file
+D:\tlperl\lib/FileCache.pm type=file
+D:\tlperl\lib/FileHandle.pm type=file
+D:\tlperl\lib/Filter/Simple.pm type=file
+D:\tlperl\lib/Filter/Util/Call.pm type=file
+D:\tlperl\lib/FindBin.pm type=file
+D:\tlperl\lib/Getopt/Long.pm type=file
+D:\tlperl\lib/Getopt/Long/Parser.pm type=file
+D:\tlperl\lib/Getopt/Std.pm type=file
+D:\tlperl\lib/HTTP/Tiny.pm type=file
+D:\tlperl\lib/Hash/Util.pm type=file
+D:\tlperl\lib/Hash/Util/FieldHash.pm type=file
+D:\tlperl\lib/I18N/Collate.pm type=file
+D:\tlperl\lib/I18N/LangTags.pm type=file
+D:\tlperl\lib/I18N/LangTags/Detect.pm type=file
+D:\tlperl\lib/I18N/LangTags/List.pm type=file
+D:\tlperl\lib/I18N/Langinfo.pm type=file
+D:\tlperl\lib/IO.pm type=file
+D:\tlperl\lib/IO/Compress/Adapter/Bzip2.pm type=file
+D:\tlperl\lib/IO/Compress/Adapter/Deflate.pm type=file
+D:\tlperl\lib/IO/Compress/Adapter/Identity.pm type=file
+D:\tlperl\lib/IO/Compress/Base.pm type=file
+D:\tlperl\lib/IO/Compress/Base/Common.pm type=file
+D:\tlperl\lib/IO/Compress/Bzip2.pm type=file
+D:\tlperl\lib/IO/Compress/Deflate.pm type=file
+D:\tlperl\lib/IO/Compress/FAQ.pod type=file
+D:\tlperl\lib/IO/Compress/Gzip.pm type=file
+D:\tlperl\lib/IO/Compress/Gzip/Constants.pm type=file
+D:\tlperl\lib/IO/Compress/RawDeflate.pm type=file
+D:\tlperl\lib/IO/Compress/Zip.pm type=file
+D:\tlperl\lib/IO/Compress/Zip/Constants.pm type=file
+D:\tlperl\lib/IO/Compress/Zlib/Constants.pm type=file
+D:\tlperl\lib/IO/Compress/Zlib/Extra.pm type=file
+D:\tlperl\lib/IO/Dir.pm type=file
+D:\tlperl\lib/IO/File.pm type=file
+D:\tlperl\lib/IO/Handle.pm type=file
+D:\tlperl\lib/IO/Pipe.pm type=file
+D:\tlperl\lib/IO/Poll.pm type=file
+D:\tlperl\lib/IO/Seekable.pm type=file
+D:\tlperl\lib/IO/Select.pm type=file
+D:\tlperl\lib/IO/Socket.pm type=file
+D:\tlperl\lib/IO/Socket/INET.pm type=file
+D:\tlperl\lib/IO/Socket/IP.pm type=file
+D:\tlperl\lib/IO/Socket/UNIX.pm type=file
+D:\tlperl\lib/IO/Uncompress/Adapter/Bunzip2.pm type=file
+D:\tlperl\lib/IO/Uncompress/Adapter/Identity.pm type=file
+D:\tlperl\lib/IO/Uncompress/Adapter/Inflate.pm type=file
+D:\tlperl\lib/IO/Uncompress/AnyInflate.pm type=file
+D:\tlperl\lib/IO/Uncompress/AnyUncompress.pm type=file
+D:\tlperl\lib/IO/Uncompress/Base.pm type=file
+D:\tlperl\lib/IO/Uncompress/Bunzip2.pm type=file
+D:\tlperl\lib/IO/Uncompress/Gunzip.pm type=file
+D:\tlperl\lib/IO/Uncompress/Inflate.pm type=file
+D:\tlperl\lib/IO/Uncompress/RawInflate.pm type=file
+D:\tlperl\lib/IO/Uncompress/Unzip.pm type=file
+D:\tlperl\lib/IO/Zlib.pm type=file
+D:\tlperl\lib/IPC/Cmd.pm type=file
+D:\tlperl\lib/IPC/Open2.pm type=file
+D:\tlperl\lib/IPC/Open3.pm type=file
+D:\tlperl\lib/Internals.pod type=file
+D:\tlperl\lib/JSON/PP.pm type=file
+D:\tlperl\lib/JSON/PP/Boolean.pm type=file
+D:\tlperl\lib/List/Util.pm type=file
+D:\tlperl\lib/List/Util/XS.pm type=file
+D:\tlperl\lib/Locale/Maketext.pm type=file
+D:\tlperl\lib/Locale/Maketext.pod type=file
+D:\tlperl\lib/Locale/Maketext/Cookbook.pod type=file
+D:\tlperl\lib/Locale/Maketext/Guts.pm type=file
+D:\tlperl\lib/Locale/Maketext/GutsLoader.pm type=file
+D:\tlperl\lib/Locale/Maketext/Simple.pm type=file
+D:\tlperl\lib/Locale/Maketext/TPJ13.pod type=file
+D:\tlperl\lib/MIME/Base64.pm type=file
+D:\tlperl\lib/MIME/QuotedPrint.pm type=file
+D:\tlperl\lib/Math/BigFloat.pm type=file
+D:\tlperl\lib/Math/BigFloat/Trace.pm type=file
+D:\tlperl\lib/Math/BigInt.pm type=file
+D:\tlperl\lib/Math/BigInt/Calc.pm type=file
+D:\tlperl\lib/Math/BigInt/FastCalc.pm type=file
+D:\tlperl\lib/Math/BigInt/Lib.pm type=file
+D:\tlperl\lib/Math/BigInt/Trace.pm type=file
+D:\tlperl\lib/Math/BigRat.pm type=file
+D:\tlperl\lib/Math/BigRat/Trace.pm type=file
+D:\tlperl\lib/Math/Complex.pm type=file
+D:\tlperl\lib/Math/Trig.pm type=file
+D:\tlperl\lib/Memoize.pm type=file
+D:\tlperl\lib/Memoize/AnyDBM_File.pm type=file
+D:\tlperl\lib/Memoize/Expire.pm type=file
+D:\tlperl\lib/Memoize/NDBM_File.pm type=file
+D:\tlperl\lib/Memoize/SDBM_File.pm type=file
+D:\tlperl\lib/Memoize/Storable.pm type=file
+D:\tlperl\lib/Module/CoreList.pm type=file
+D:\tlperl\lib/Module/CoreList.pod type=file
+D:\tlperl\lib/Module/CoreList/Utils.pm type=file
+D:\tlperl\lib/Module/Load.pm type=file
+D:\tlperl\lib/Module/Load/Conditional.pm type=file
+D:\tlperl\lib/Module/Loaded.pm type=file
+D:\tlperl\lib/Module/Metadata.pm type=file
+D:\tlperl\lib/NEXT.pm type=file
+D:\tlperl\lib/Net/Cmd.pm type=file
+D:\tlperl\lib/Net/Config.pm type=file
+D:\tlperl\lib/Net/Domain.pm type=file
+D:\tlperl\lib/Net/FTP.pm type=file
+D:\tlperl\lib/Net/FTP/A.pm type=file
+D:\tlperl\lib/Net/FTP/E.pm type=file
+D:\tlperl\lib/Net/FTP/I.pm type=file
+D:\tlperl\lib/Net/FTP/L.pm type=file
+D:\tlperl\lib/Net/FTP/dataconn.pm type=file
+D:\tlperl\lib/Net/NNTP.pm type=file
+D:\tlperl\lib/Net/Netrc.pm type=file
+D:\tlperl\lib/Net/POP3.pm type=file
+D:\tlperl\lib/Net/Ping.pm type=file
+D:\tlperl\lib/Net/SMTP.pm type=file
+D:\tlperl\lib/Net/Time.pm type=file
+D:\tlperl\lib/Net/hostent.pm type=file
+D:\tlperl\lib/Net/libnetFAQ.pod type=file
+D:\tlperl\lib/Net/netent.pm type=file
+D:\tlperl\lib/Net/protoent.pm type=file
+D:\tlperl\lib/Net/servent.pm type=file
+D:\tlperl\lib/O.pm type=file
+D:\tlperl\lib/Opcode.pm type=file
+D:\tlperl\lib/POSIX.pm type=file
+D:\tlperl\lib/POSIX.pod type=file
+D:\tlperl\lib/Params/Check.pm type=file
+D:\tlperl\lib/Parse/CPAN/Meta.pm type=file
+D:\tlperl\lib/Perl/OSType.pm type=file
+D:\tlperl\lib/PerlIO.pm type=file
+D:\tlperl\lib/PerlIO/encoding.pm type=file
+D:\tlperl\lib/PerlIO/mmap.pm type=file
+D:\tlperl\lib/PerlIO/scalar.pm type=file
+D:\tlperl\lib/PerlIO/via.pm type=file
+D:\tlperl\lib/PerlIO/via/QuotedPrint.pm type=file
+D:\tlperl\lib/Pod/Checker.pm type=file
+D:\tlperl\lib/Pod/Escapes.pm type=file
+D:\tlperl\lib/Pod/Functions.pm type=file
+D:\tlperl\lib/Pod/Html.pm type=file
+D:\tlperl\lib/Pod/Html/Util.pm type=file
+D:\tlperl\lib/Pod/Man.pm type=file
+D:\tlperl\lib/Pod/ParseLink.pm type=file
+D:\tlperl\lib/Pod/Perldoc.pm type=file
+D:\tlperl\lib/Pod/Perldoc/BaseTo.pm type=file
+D:\tlperl\lib/Pod/Perldoc/GetOptsOO.pm type=file
+D:\tlperl\lib/Pod/Perldoc/ToANSI.pm type=file
+D:\tlperl\lib/Pod/Perldoc/ToChecker.pm type=file
+D:\tlperl\lib/Pod/Perldoc/ToMan.pm type=file
+D:\tlperl\lib/Pod/Perldoc/ToNroff.pm type=file
+D:\tlperl\lib/Pod/Perldoc/ToPod.pm type=file
+D:\tlperl\lib/Pod/Perldoc/ToRtf.pm type=file
+D:\tlperl\lib/Pod/Perldoc/ToTerm.pm type=file
+D:\tlperl\lib/Pod/Perldoc/ToText.pm type=file
+D:\tlperl\lib/Pod/Perldoc/ToTk.pm type=file
+D:\tlperl\lib/Pod/Perldoc/ToXml.pm type=file
+D:\tlperl\lib/Pod/Simple.pm type=file
+D:\tlperl\lib/Pod/Simple.pod type=file
+D:\tlperl\lib/Pod/Simple/BlackBox.pm type=file
+D:\tlperl\lib/Pod/Simple/Checker.pm type=file
+D:\tlperl\lib/Pod/Simple/Debug.pm type=file
+D:\tlperl\lib/Pod/Simple/DumpAsText.pm type=file
+D:\tlperl\lib/Pod/Simple/DumpAsXML.pm type=file
+D:\tlperl\lib/Pod/Simple/HTML.pm type=file
+D:\tlperl\lib/Pod/Simple/HTMLBatch.pm type=file
+D:\tlperl\lib/Pod/Simple/HTMLLegacy.pm type=file
+D:\tlperl\lib/Pod/Simple/JustPod.pm type=file
+D:\tlperl\lib/Pod/Simple/LinkSection.pm type=file
+D:\tlperl\lib/Pod/Simple/Methody.pm type=file
+D:\tlperl\lib/Pod/Simple/Progress.pm type=file
+D:\tlperl\lib/Pod/Simple/PullParser.pm type=file
+D:\tlperl\lib/Pod/Simple/PullParserEndToken.pm type=file
+D:\tlperl\lib/Pod/Simple/PullParserStartToken.pm type=file
+D:\tlperl\lib/Pod/Simple/PullParserTextToken.pm type=file
+D:\tlperl\lib/Pod/Simple/PullParserToken.pm type=file
+D:\tlperl\lib/Pod/Simple/RTF.pm type=file
+D:\tlperl\lib/Pod/Simple/Search.pm type=file
+D:\tlperl\lib/Pod/Simple/SimpleTree.pm type=file
+D:\tlperl\lib/Pod/Simple/Subclassing.pod type=file
+D:\tlperl\lib/Pod/Simple/Text.pm type=file
+D:\tlperl\lib/Pod/Simple/TextContent.pm type=file
+D:\tlperl\lib/Pod/Simple/TiedOutFH.pm type=file
+D:\tlperl\lib/Pod/Simple/Transcode.pm type=file
+D:\tlperl\lib/Pod/Simple/TranscodeDumb.pm type=file
+D:\tlperl\lib/Pod/Simple/TranscodeSmart.pm type=file
+D:\tlperl\lib/Pod/Simple/XHTML.pm type=file
+D:\tlperl\lib/Pod/Simple/XMLOutStream.pm type=file
+D:\tlperl\lib/Pod/Text.pm type=file
+D:\tlperl\lib/Pod/Text/Color.pm type=file
+D:\tlperl\lib/Pod/Text/Overstrike.pm type=file
+D:\tlperl\lib/Pod/Text/Termcap.pm type=file
+D:\tlperl\lib/Pod/Usage.pm type=file
+D:\tlperl\lib/SDBM_File.pm type=file
+D:\tlperl\lib/Safe.pm type=file
+D:\tlperl\lib/Scalar/Util.pm type=file
+D:\tlperl\lib/Search/Dict.pm type=file
+D:\tlperl\lib/SelectSaver.pm type=file
+D:\tlperl\lib/SelfLoader.pm type=file
+D:\tlperl\lib/Socket.pm type=file
+D:\tlperl\lib/Storable.pm type=file
+D:\tlperl\lib/Sub/Util.pm type=file
+D:\tlperl\lib/Symbol.pm type=file
+D:\tlperl\lib/Sys/Hostname.pm type=file
+D:\tlperl\lib/TAP/Base.pm type=file
+D:\tlperl\lib/TAP/Formatter/Base.pm type=file
+D:\tlperl\lib/TAP/Formatter/Color.pm type=file
+D:\tlperl\lib/TAP/Formatter/Console.pm type=file
+D:\tlperl\lib/TAP/Formatter/Console/ParallelSession.pm type=file
+D:\tlperl\lib/TAP/Formatter/Console/Session.pm type=file
+D:\tlperl\lib/TAP/Formatter/File.pm type=file
+D:\tlperl\lib/TAP/Formatter/File/Session.pm type=file
+D:\tlperl\lib/TAP/Formatter/Session.pm type=file
+D:\tlperl\lib/TAP/Harness.pm type=file
+D:\tlperl\lib/TAP/Harness/Beyond.pod type=file
+D:\tlperl\lib/TAP/Harness/Env.pm type=file
+D:\tlperl\lib/TAP/Object.pm type=file
+D:\tlperl\lib/TAP/Parser.pm type=file
+D:\tlperl\lib/TAP/Parser/Aggregator.pm type=file
+D:\tlperl\lib/TAP/Parser/Grammar.pm type=file
+D:\tlperl\lib/TAP/Parser/Iterator.pm type=file
+D:\tlperl\lib/TAP/Parser/Iterator/Array.pm type=file
+D:\tlperl\lib/TAP/Parser/Iterator/Process.pm type=file
+D:\tlperl\lib/TAP/Parser/Iterator/Stream.pm type=file
+D:\tlperl\lib/TAP/Parser/IteratorFactory.pm type=file
+D:\tlperl\lib/TAP/Parser/Multiplexer.pm type=file
+D:\tlperl\lib/TAP/Parser/Result.pm type=file
+D:\tlperl\lib/TAP/Parser/Result/Bailout.pm type=file
+D:\tlperl\lib/TAP/Parser/Result/Comment.pm type=file
+D:\tlperl\lib/TAP/Parser/Result/Plan.pm type=file
+D:\tlperl\lib/TAP/Parser/Result/Pragma.pm type=file
+D:\tlperl\lib/TAP/Parser/Result/Test.pm type=file
+D:\tlperl\lib/TAP/Parser/Result/Unknown.pm type=file
+D:\tlperl\lib/TAP/Parser/Result/Version.pm type=file
+D:\tlperl\lib/TAP/Parser/Result/YAML.pm type=file
+D:\tlperl\lib/TAP/Parser/ResultFactory.pm type=file
+D:\tlperl\lib/TAP/Parser/Scheduler.pm type=file
+D:\tlperl\lib/TAP/Parser/Scheduler/Job.pm type=file
+D:\tlperl\lib/TAP/Parser/Scheduler/Spinner.pm type=file
+D:\tlperl\lib/TAP/Parser/Source.pm type=file
+D:\tlperl\lib/TAP/Parser/SourceHandler.pm type=file
+D:\tlperl\lib/TAP/Parser/SourceHandler/Executable.pm type=file
+D:\tlperl\lib/TAP/Parser/SourceHandler/File.pm type=file
+D:\tlperl\lib/TAP/Parser/SourceHandler/Handle.pm type=file
+D:\tlperl\lib/TAP/Parser/SourceHandler/Perl.pm type=file
+D:\tlperl\lib/TAP/Parser/SourceHandler/RawTAP.pm type=file
+D:\tlperl\lib/TAP/Parser/YAMLish/Reader.pm type=file
+D:\tlperl\lib/TAP/Parser/YAMLish/Writer.pm type=file
+D:\tlperl\lib/Term/ANSIColor.pm type=file
+D:\tlperl\lib/Term/Cap.pm type=file
+D:\tlperl\lib/Term/Complete.pm type=file
+D:\tlperl\lib/Term/ReadLine.pm type=file
+D:\tlperl\lib/Term/Table.pm type=file
+D:\tlperl\lib/Term/Table/Cell.pm type=file
+D:\tlperl\lib/Term/Table/CellStack.pm type=file
+D:\tlperl\lib/Term/Table/HashBase.pm type=file
+D:\tlperl\lib/Term/Table/LineBreak.pm type=file
+D:\tlperl\lib/Term/Table/Spacer.pm type=file
+D:\tlperl\lib/Term/Table/Util.pm type=file
+D:\tlperl\lib/Test.pm type=file
+D:\tlperl\lib/Test/Builder.pm type=file
+D:\tlperl\lib/Test/Builder/Formatter.pm type=file
+D:\tlperl\lib/Test/Builder/IO/Scalar.pm type=file
+D:\tlperl\lib/Test/Builder/Module.pm type=file
+D:\tlperl\lib/Test/Builder/Tester.pm type=file
+D:\tlperl\lib/Test/Builder/Tester/Color.pm type=file
+D:\tlperl\lib/Test/Builder/TodoDiag.pm type=file
+D:\tlperl\lib/Test/Harness.pm type=file
+D:\tlperl\lib/Test/More.pm type=file
+D:\tlperl\lib/Test/Simple.pm type=file
+D:\tlperl\lib/Test/Tester.pm type=file
+D:\tlperl\lib/Test/Tester/Capture.pm type=file
+D:\tlperl\lib/Test/Tester/CaptureRunner.pm type=file
+D:\tlperl\lib/Test/Tester/Delegate.pm type=file
+D:\tlperl\lib/Test/Tutorial.pod type=file
+D:\tlperl\lib/Test/use/ok.pm type=file
+D:\tlperl\lib/Test2.pm type=file
+D:\tlperl\lib/Test2/API.pm type=file
+D:\tlperl\lib/Test2/API/Breakage.pm type=file
+D:\tlperl\lib/Test2/API/Context.pm type=file
+D:\tlperl\lib/Test2/API/Instance.pm type=file
+D:\tlperl\lib/Test2/API/InterceptResult.pm type=file
+D:\tlperl\lib/Test2/API/InterceptResult/Event.pm type=file
+D:\tlperl\lib/Test2/API/InterceptResult/Facet.pm type=file
+D:\tlperl\lib/Test2/API/InterceptResult/Hub.pm type=file
+D:\tlperl\lib/Test2/API/InterceptResult/Squasher.pm type=file
+D:\tlperl\lib/Test2/API/Stack.pm type=file
+D:\tlperl\lib/Test2/AsyncSubtest.pm type=file
+D:\tlperl\lib/Test2/AsyncSubtest/Event/Attach.pm type=file
+D:\tlperl\lib/Test2/AsyncSubtest/Event/Detach.pm type=file
+D:\tlperl\lib/Test2/AsyncSubtest/Formatter.pm type=file
+D:\tlperl\lib/Test2/AsyncSubtest/Hub.pm type=file
+D:\tlperl\lib/Test2/Bundle.pm type=file
+D:\tlperl\lib/Test2/Bundle/Extended.pm type=file
+D:\tlperl\lib/Test2/Bundle/More.pm type=file
+D:\tlperl\lib/Test2/Bundle/Simple.pm type=file
+D:\tlperl\lib/Test2/Compare.pm type=file
+D:\tlperl\lib/Test2/Compare/Array.pm type=file
+D:\tlperl\lib/Test2/Compare/Bag.pm type=file
+D:\tlperl\lib/Test2/Compare/Base.pm type=file
+D:\tlperl\lib/Test2/Compare/Bool.pm type=file
+D:\tlperl\lib/Test2/Compare/Custom.pm type=file
+D:\tlperl\lib/Test2/Compare/DeepRef.pm type=file
+D:\tlperl\lib/Test2/Compare/Delta.pm type=file
+D:\tlperl\lib/Test2/Compare/Event.pm type=file
+D:\tlperl\lib/Test2/Compare/EventMeta.pm type=file
+D:\tlperl\lib/Test2/Compare/Float.pm type=file
+D:\tlperl\lib/Test2/Compare/Hash.pm type=file
+D:\tlperl\lib/Test2/Compare/Isa.pm type=file
+D:\tlperl\lib/Test2/Compare/Meta.pm type=file
+D:\tlperl\lib/Test2/Compare/Negatable.pm type=file
+D:\tlperl\lib/Test2/Compare/Number.pm type=file
+D:\tlperl\lib/Test2/Compare/Object.pm type=file
+D:\tlperl\lib/Test2/Compare/OrderedSubset.pm type=file
+D:\tlperl\lib/Test2/Compare/Pattern.pm type=file
+D:\tlperl\lib/Test2/Compare/Ref.pm type=file
+D:\tlperl\lib/Test2/Compare/Regex.pm type=file
+D:\tlperl\lib/Test2/Compare/Scalar.pm type=file
+D:\tlperl\lib/Test2/Compare/Set.pm type=file
+D:\tlperl\lib/Test2/Compare/String.pm type=file
+D:\tlperl\lib/Test2/Compare/Undef.pm type=file
+D:\tlperl\lib/Test2/Compare/Wildcard.pm type=file
+D:\tlperl\lib/Test2/Event.pm type=file
+D:\tlperl\lib/Test2/Event/Bail.pm type=file
+D:\tlperl\lib/Test2/Event/Diag.pm type=file
+D:\tlperl\lib/Test2/Event/Encoding.pm type=file
+D:\tlperl\lib/Test2/Event/Exception.pm type=file
+D:\tlperl\lib/Test2/Event/Fail.pm type=file
+D:\tlperl\lib/Test2/Event/Generic.pm type=file
+D:\tlperl\lib/Test2/Event/Note.pm type=file
+D:\tlperl\lib/Test2/Event/Ok.pm type=file
+D:\tlperl\lib/Test2/Event/Pass.pm type=file
+D:\tlperl\lib/Test2/Event/Plan.pm type=file
+D:\tlperl\lib/Test2/Event/Skip.pm type=file
+D:\tlperl\lib/Test2/Event/Subtest.pm type=file
+D:\tlperl\lib/Test2/Event/TAP/Version.pm type=file
+D:\tlperl\lib/Test2/Event/V2.pm type=file
+D:\tlperl\lib/Test2/Event/Waiting.pm type=file
+D:\tlperl\lib/Test2/EventFacet.pm type=file
+D:\tlperl\lib/Test2/EventFacet/About.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Amnesty.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Assert.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Control.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Error.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Hub.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Info.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Info/Table.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Meta.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Parent.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Plan.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Render.pm type=file
+D:\tlperl\lib/Test2/EventFacet/Trace.pm type=file
+D:\tlperl\lib/Test2/Formatter.pm type=file
+D:\tlperl\lib/Test2/Formatter/TAP.pm type=file
+D:\tlperl\lib/Test2/Hub.pm type=file
+D:\tlperl\lib/Test2/Hub/Interceptor.pm type=file
+D:\tlperl\lib/Test2/Hub/Interceptor/Terminator.pm type=file
+D:\tlperl\lib/Test2/Hub/Subtest.pm type=file
+D:\tlperl\lib/Test2/IPC.pm type=file
+D:\tlperl\lib/Test2/IPC/Driver.pm type=file
+D:\tlperl\lib/Test2/IPC/Driver/Files.pm type=file
+D:\tlperl\lib/Test2/Manual.pm type=file
+D:\tlperl\lib/Test2/Manual/Anatomy.pm type=file
+D:\tlperl\lib/Test2/Manual/Anatomy/API.pm type=file
+D:\tlperl\lib/Test2/Manual/Anatomy/Context.pm type=file
+D:\tlperl\lib/Test2/Manual/Anatomy/EndToEnd.pm type=file
+D:\tlperl\lib/Test2/Manual/Anatomy/Event.pm type=file
+D:\tlperl\lib/Test2/Manual/Anatomy/Hubs.pm type=file
+D:\tlperl\lib/Test2/Manual/Anatomy/IPC.pm type=file
+D:\tlperl\lib/Test2/Manual/Anatomy/Utilities.pm type=file
+D:\tlperl\lib/Test2/Manual/Concurrency.pm type=file
+D:\tlperl\lib/Test2/Manual/Contributing.pm type=file
+D:\tlperl\lib/Test2/Manual/Testing.pm type=file
+D:\tlperl\lib/Test2/Manual/Testing/Introduction.pm type=file
+D:\tlperl\lib/Test2/Manual/Testing/Migrating.pm type=file
+D:\tlperl\lib/Test2/Manual/Testing/Planning.pm type=file
+D:\tlperl\lib/Test2/Manual/Testing/Todo.pm type=file
+D:\tlperl\lib/Test2/Manual/Tooling.pm type=file
+D:\tlperl\lib/Test2/Manual/Tooling/FirstTool.pm type=file
+D:\tlperl\lib/Test2/Manual/Tooling/Formatter.pm type=file
+D:\tlperl\lib/Test2/Manual/Tooling/Nesting.pm type=file
+D:\tlperl\lib/Test2/Manual/Tooling/Plugin/TestExit.pm type=file
+D:\tlperl\lib/Test2/Manual/Tooling/Plugin/TestingDone.pm type=file
+D:\tlperl\lib/Test2/Manual/Tooling/Plugin/ToolCompletes.pm type=file
+D:\tlperl\lib/Test2/Manual/Tooling/Plugin/ToolStarts.pm type=file
+D:\tlperl\lib/Test2/Manual/Tooling/Subtest.pm type=file
+D:\tlperl\lib/Test2/Manual/Tooling/TestBuilder.pm type=file
+D:\tlperl\lib/Test2/Manual/Tooling/Testing.pm type=file
+D:\tlperl\lib/Test2/Mock.pm type=file
+D:\tlperl\lib/Test2/Plugin.pm type=file
+D:\tlperl\lib/Test2/Plugin/BailOnFail.pm type=file
+D:\tlperl\lib/Test2/Plugin/DieOnFail.pm type=file
+D:\tlperl\lib/Test2/Plugin/ExitSummary.pm type=file
+D:\tlperl\lib/Test2/Plugin/SRand.pm type=file
+D:\tlperl\lib/Test2/Plugin/Times.pm type=file
+D:\tlperl\lib/Test2/Plugin/UTF8.pm type=file
+D:\tlperl\lib/Test2/Require.pm type=file
+D:\tlperl\lib/Test2/Require/AuthorTesting.pm type=file
+D:\tlperl\lib/Test2/Require/AutomatedTesting.pm type=file
+D:\tlperl\lib/Test2/Require/EnvVar.pm type=file
+D:\tlperl\lib/Test2/Require/ExtendedTesting.pm type=file
+D:\tlperl\lib/Test2/Require/Fork.pm type=file
+D:\tlperl\lib/Test2/Require/Module.pm type=file
+D:\tlperl\lib/Test2/Require/NonInteractiveTesting.pm type=file
+D:\tlperl\lib/Test2/Require/Perl.pm type=file
+D:\tlperl\lib/Test2/Require/RealFork.pm type=file
+D:\tlperl\lib/Test2/Require/ReleaseTesting.pm type=file
+D:\tlperl\lib/Test2/Require/Threads.pm type=file
+D:\tlperl\lib/Test2/Suite.pm type=file
+D:\tlperl\lib/Test2/Todo.pm type=file
+D:\tlperl\lib/Test2/Tools.pm type=file
+D:\tlperl\lib/Test2/Tools/AsyncSubtest.pm type=file
+D:\tlperl\lib/Test2/Tools/Basic.pm type=file
+D:\tlperl\lib/Test2/Tools/Class.pm type=file
+D:\tlperl\lib/Test2/Tools/ClassicCompare.pm type=file
+D:\tlperl\lib/Test2/Tools/Compare.pm type=file
+D:\tlperl\lib/Test2/Tools/Defer.pm type=file
+D:\tlperl\lib/Test2/Tools/Encoding.pm type=file
+D:\tlperl\lib/Test2/Tools/Event.pm type=file
+D:\tlperl\lib/Test2/Tools/Exception.pm type=file
+D:\tlperl\lib/Test2/Tools/Exports.pm type=file
+D:\tlperl\lib/Test2/Tools/GenTemp.pm type=file
+D:\tlperl\lib/Test2/Tools/Grab.pm type=file
+D:\tlperl\lib/Test2/Tools/Mock.pm type=file
+D:\tlperl\lib/Test2/Tools/Ref.pm type=file
+D:\tlperl\lib/Test2/Tools/Refcount.pm type=file
+D:\tlperl\lib/Test2/Tools/Spec.pm type=file
+D:\tlperl\lib/Test2/Tools/Subtest.pm type=file
+D:\tlperl\lib/Test2/Tools/Target.pm type=file
+D:\tlperl\lib/Test2/Tools/Tester.pm type=file
+D:\tlperl\lib/Test2/Tools/Tiny.pm type=file
+D:\tlperl\lib/Test2/Tools/Warnings.pm type=file
+D:\tlperl\lib/Test2/Transition.pod type=file
+D:\tlperl\lib/Test2/Util.pm type=file
+D:\tlperl\lib/Test2/Util/ExternalMeta.pm type=file
+D:\tlperl\lib/Test2/Util/Facets2Legacy.pm type=file
+D:\tlperl\lib/Test2/Util/Grabber.pm type=file
+D:\tlperl\lib/Test2/Util/Guard.pm type=file
+D:\tlperl\lib/Test2/Util/HashBase.pm type=file
+D:\tlperl\lib/Test2/Util/Importer.pm type=file
+D:\tlperl\lib/Test2/Util/Ref.pm type=file
+D:\tlperl\lib/Test2/Util/Stash.pm type=file
+D:\tlperl\lib/Test2/Util/Sub.pm type=file
+D:\tlperl\lib/Test2/Util/Table.pm type=file
+D:\tlperl\lib/Test2/Util/Table/Cell.pm type=file
+D:\tlperl\lib/Test2/Util/Table/LineBreak.pm type=file
+D:\tlperl\lib/Test2/Util/Term.pm type=file
+D:\tlperl\lib/Test2/Util/Times.pm type=file
+D:\tlperl\lib/Test2/Util/Trace.pm type=file
+D:\tlperl\lib/Test2/V0.pm type=file
+D:\tlperl\lib/Test2/Workflow.pm type=file
+D:\tlperl\lib/Test2/Workflow/BlockBase.pm type=file
+D:\tlperl\lib/Test2/Workflow/Build.pm type=file
+D:\tlperl\lib/Test2/Workflow/Runner.pm type=file
+D:\tlperl\lib/Test2/Workflow/Task.pm type=file
+D:\tlperl\lib/Test2/Workflow/Task/Action.pm type=file
+D:\tlperl\lib/Test2/Workflow/Task/Group.pm type=file
+D:\tlperl\lib/Text/Abbrev.pm type=file
+D:\tlperl\lib/Text/Balanced.pm type=file
+D:\tlperl\lib/Text/ParseWords.pm type=file
+D:\tlperl\lib/Text/Tabs.pm type=file
+D:\tlperl\lib/Text/Wrap.pm type=file
+D:\tlperl\lib/Thread.pm type=file
+D:\tlperl\lib/Thread/Queue.pm type=file
+D:\tlperl\lib/Thread/Semaphore.pm type=file
+D:\tlperl\lib/Tie/Array.pm type=file
+D:\tlperl\lib/Tie/File.pm type=file
+D:\tlperl\lib/Tie/Handle.pm type=file
+D:\tlperl\lib/Tie/Hash.pm type=file
+D:\tlperl\lib/Tie/Hash/NamedCapture.pm type=file
+D:\tlperl\lib/Tie/Memoize.pm type=file
+D:\tlperl\lib/Tie/RefHash.pm type=file
+D:\tlperl\lib/Tie/Scalar.pm type=file
+D:\tlperl\lib/Tie/StdHandle.pm type=file
+D:\tlperl\lib/Tie/SubstrHash.pm type=file
+D:\tlperl\lib/Time/HiRes.pm type=file
+D:\tlperl\lib/Time/Local.pm type=file
+D:\tlperl\lib/Time/Piece.pm type=file
+D:\tlperl\lib/Time/Seconds.pm type=file
+D:\tlperl\lib/Time/gmtime.pm type=file
+D:\tlperl\lib/Time/localtime.pm type=file
+D:\tlperl\lib/Time/tm.pm type=file
+D:\tlperl\lib/UNIVERSAL.pm type=file
+D:\tlperl\lib/Unicode/Collate.pm type=file
+D:\tlperl\lib/Unicode/Collate/CJK/Big5.pm type=file
+D:\tlperl\lib/Unicode/Collate/CJK/GB2312.pm type=file
+D:\tlperl\lib/Unicode/Collate/CJK/JISX0208.pm type=file
+D:\tlperl\lib/Unicode/Collate/CJK/Korean.pm type=file
+D:\tlperl\lib/Unicode/Collate/CJK/Pinyin.pm type=file
+D:\tlperl\lib/Unicode/Collate/CJK/Stroke.pm type=file
+D:\tlperl\lib/Unicode/Collate/CJK/Zhuyin.pm type=file
+D:\tlperl\lib/Unicode/Collate/Locale.pm type=file
+D:\tlperl\lib/Unicode/Collate/Locale/af.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ar.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/as.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/az.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/be.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/bn.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ca.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/cs.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/cu.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/cy.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/da.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/de_at_ph.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/de_phone.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/dsb.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ee.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/eo.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/es.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/es_trad.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/et.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/fa.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/fi.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/fi_phone.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/fil.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/fo.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/fr_ca.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/gu.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ha.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/haw.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/he.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/hi.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/hr.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/hu.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/hy.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ig.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/is.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ja.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/kk.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/kl.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/kn.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ko.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/kok.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/lkt.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ln.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/lt.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/lv.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/mk.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ml.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/mr.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/mt.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/nb.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/nn.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/nso.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/om.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/or.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/pa.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/pl.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ro.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/sa.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/se.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/si.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/si_dict.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/sk.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/sl.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/sq.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/sr.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/sv.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/sv_refo.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ta.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/te.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/th.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/tn.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/to.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/tr.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ug_cyrl.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/uk.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/ur.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/vi.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/vo.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/wae.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/wo.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/yo.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/zh.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/zh_big5.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/zh_gb.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/zh_pin.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/zh_strk.pl type=file
+D:\tlperl\lib/Unicode/Collate/Locale/zh_zhu.pl type=file
+D:\tlperl\lib/Unicode/Collate/allkeys.txt type=file
+D:\tlperl\lib/Unicode/Collate/keys.txt type=file
+D:\tlperl\lib/Unicode/Normalize.pm type=file
+D:\tlperl\lib/Unicode/UCD.pm type=file
+D:\tlperl\lib/User/grent.pm type=file
+D:\tlperl\lib/User/pwent.pm type=file
+D:\tlperl\lib/Win32.pm type=file
+D:\tlperl\lib/Win32API/File.pm type=file
+D:\tlperl\lib/Win32API/File/cFile.pc type=file
+D:\tlperl\lib/Win32CORE.pm type=file
+D:\tlperl\lib/XSLoader.pm type=file
+D:\tlperl\lib/_charnames.pm type=file
+D:\tlperl\lib/attributes.pm type=file
+D:\tlperl\lib/auto/B/B.dll type=file
+D:\tlperl\lib/auto/B/B.pdb type=file
+D:\tlperl\lib/auto/Compress/Raw/Bzip2/Bzip2.dll type=file
+D:\tlperl\lib/auto/Compress/Raw/Bzip2/Bzip2.pdb type=file
+D:\tlperl\lib/auto/Compress/Raw/Zlib/Zlib.dll type=file
+D:\tlperl\lib/auto/Compress/Raw/Zlib/Zlib.pdb type=file
+D:\tlperl\lib/auto/Cwd/Cwd.dll type=file
+D:\tlperl\lib/auto/Cwd/Cwd.pdb type=file
+D:\tlperl\lib/auto/Data/Dumper/Dumper.dll type=file
+D:\tlperl\lib/auto/Data/Dumper/Dumper.pdb type=file
+D:\tlperl\lib/auto/Devel/Peek/Peek.dll type=file
+D:\tlperl\lib/auto/Devel/Peek/Peek.pdb type=file
+D:\tlperl\lib/auto/Digest/MD5/MD5.dll type=file
+D:\tlperl\lib/auto/Digest/MD5/MD5.pdb type=file
+D:\tlperl\lib/auto/Digest/SHA/SHA.dll type=file
+D:\tlperl\lib/auto/Digest/SHA/SHA.pdb type=file
+D:\tlperl\lib/auto/Encode/Byte/Byte.dll type=file
+D:\tlperl\lib/auto/Encode/Byte/Byte.pdb type=file
+D:\tlperl\lib/auto/Encode/CN/CN.dll type=file
+D:\tlperl\lib/auto/Encode/CN/CN.pdb type=file
+D:\tlperl\lib/auto/Encode/EBCDIC/EBCDIC.dll type=file
+D:\tlperl\lib/auto/Encode/EBCDIC/EBCDIC.pdb type=file
+D:\tlperl\lib/auto/Encode/Encode.dll type=file
+D:\tlperl\lib/auto/Encode/Encode.pdb type=file
+D:\tlperl\lib/auto/Encode/JP/JP.dll type=file
+D:\tlperl\lib/auto/Encode/JP/JP.pdb type=file
+D:\tlperl\lib/auto/Encode/KR/KR.dll type=file
+D:\tlperl\lib/auto/Encode/KR/KR.pdb type=file
+D:\tlperl\lib/auto/Encode/Symbol/Symbol.dll type=file
+D:\tlperl\lib/auto/Encode/Symbol/Symbol.pdb type=file
+D:\tlperl\lib/auto/Encode/TW/TW.dll type=file
+D:\tlperl\lib/auto/Encode/TW/TW.pdb type=file
+D:\tlperl\lib/auto/Encode/Unicode/Unicode.dll type=file
+D:\tlperl\lib/auto/Encode/Unicode/Unicode.pdb type=file
+D:\tlperl\lib/auto/Fcntl/Fcntl.dll type=file
+D:\tlperl\lib/auto/Fcntl/Fcntl.pdb type=file
+D:\tlperl\lib/auto/File/DosGlob/DosGlob.dll type=file
+D:\tlperl\lib/auto/File/DosGlob/DosGlob.pdb type=file
+D:\tlperl\lib/auto/File/Glob/Glob.dll type=file
+D:\tlperl\lib/auto/File/Glob/Glob.pdb type=file
+D:\tlperl\lib/auto/Filter/Util/Call/Call.dll type=file
+D:\tlperl\lib/auto/Filter/Util/Call/Call.pdb type=file
+D:\tlperl\lib/auto/Hash/Util/FieldHash/FieldHash.dll type=file
+D:\tlperl\lib/auto/Hash/Util/FieldHash/FieldHash.pdb type=file
+D:\tlperl\lib/auto/Hash/Util/Util.dll type=file
+D:\tlperl\lib/auto/Hash/Util/Util.pdb type=file
+D:\tlperl\lib/auto/I18N/Langinfo/Langinfo.dll type=file
+D:\tlperl\lib/auto/I18N/Langinfo/Langinfo.pdb type=file
+D:\tlperl\lib/auto/IO/IO.dll type=file
+D:\tlperl\lib/auto/IO/IO.pdb type=file
+D:\tlperl\lib/auto/List/Util/Util.dll type=file
+D:\tlperl\lib/auto/List/Util/Util.pdb type=file
+D:\tlperl\lib/auto/MIME/Base64/Base64.dll type=file
+D:\tlperl\lib/auto/MIME/Base64/Base64.pdb type=file
+D:\tlperl\lib/auto/Math/BigInt/FastCalc/FastCalc.dll type=file
+D:\tlperl\lib/auto/Math/BigInt/FastCalc/FastCalc.pdb type=file
+D:\tlperl\lib/auto/Opcode/Opcode.dll type=file
+D:\tlperl\lib/auto/Opcode/Opcode.pdb type=file
+D:\tlperl\lib/auto/POSIX/POSIX.dll type=file
+D:\tlperl\lib/auto/POSIX/POSIX.pdb type=file
+D:\tlperl\lib/auto/PerlIO/encoding/encoding.dll type=file
+D:\tlperl\lib/auto/PerlIO/encoding/encoding.pdb type=file
+D:\tlperl\lib/auto/PerlIO/mmap/mmap.dll type=file
+D:\tlperl\lib/auto/PerlIO/mmap/mmap.pdb type=file
+D:\tlperl\lib/auto/PerlIO/via/via.dll type=file
+D:\tlperl\lib/auto/PerlIO/via/via.pdb type=file
+D:\tlperl\lib/auto/SDBM_File/SDBM_File.dll type=file
+D:\tlperl\lib/auto/SDBM_File/SDBM_File.pdb type=file
+D:\tlperl\lib/auto/Socket/Socket.dll type=file
+D:\tlperl\lib/auto/Socket/Socket.pdb type=file
+D:\tlperl\lib/auto/Storable/Storable.dll type=file
+D:\tlperl\lib/auto/Storable/Storable.pdb type=file
+D:\tlperl\lib/auto/Sys/Hostname/Hostname.dll type=file
+D:\tlperl\lib/auto/Sys/Hostname/Hostname.pdb type=file
+D:\tlperl\lib/auto/Time/HiRes/HiRes.dll type=file
+D:\tlperl\lib/auto/Time/HiRes/HiRes.pdb type=file
+D:\tlperl\lib/auto/Time/Piece/Piece.dll type=file
+D:\tlperl\lib/auto/Time/Piece/Piece.pdb type=file
+D:\tlperl\lib/auto/Unicode/Collate/Collate.dll type=file
+D:\tlperl\lib/auto/Unicode/Collate/Collate.pdb type=file
+D:\tlperl\lib/auto/Unicode/Normalize/Normalize.dll type=file
+D:\tlperl\lib/auto/Unicode/Normalize/Normalize.pdb type=file
+D:\tlperl\lib/auto/Win32/Win32.dll type=file
+D:\tlperl\lib/auto/Win32/Win32.pdb type=file
+D:\tlperl\lib/auto/Win32API/File/File.dll type=file
+D:\tlperl\lib/auto/Win32API/File/File.pdb type=file
+D:\tlperl\lib/auto/Win32CORE/extralibs.ld type=file
+D:\tlperl\lib/auto/attributes/attributes.dll type=file
+D:\tlperl\lib/auto/attributes/attributes.pdb type=file
+D:\tlperl\lib/auto/mro/mro.dll type=file
+D:\tlperl\lib/auto/mro/mro.pdb type=file
+D:\tlperl\lib/auto/re/re.dll type=file
+D:\tlperl\lib/auto/re/re.pdb type=file
+D:\tlperl\lib/auto/threads/shared/shared.dll type=file
+D:\tlperl\lib/auto/threads/shared/shared.pdb type=file
+D:\tlperl\lib/auto/threads/threads.dll type=file
+D:\tlperl\lib/auto/threads/threads.pdb type=file
+D:\tlperl\lib/autodie.pm type=file
+D:\tlperl\lib/autodie/Scope/Guard.pm type=file
+D:\tlperl\lib/autodie/Scope/GuardStack.pm type=file
+D:\tlperl\lib/autodie/Util.pm type=file
+D:\tlperl\lib/autodie/exception.pm type=file
+D:\tlperl\lib/autodie/exception/system.pm type=file
+D:\tlperl\lib/autodie/hints.pm type=file
+D:\tlperl\lib/autodie/skip.pm type=file
+D:\tlperl\lib/autouse.pm type=file
+D:\tlperl\lib/base.pm type=file
+D:\tlperl\lib/bigfloat.pm type=file
+D:\tlperl\lib/bigint.pm type=file
+D:\tlperl\lib/bignum.pm type=file
+D:\tlperl\lib/bigrat.pm type=file
+D:\tlperl\lib/blib.pm type=file
+D:\tlperl\lib/builtin.pm type=file
+D:\tlperl\lib/bytes.pm type=file
+D:\tlperl\lib/charnames.pm type=file
+D:\tlperl\lib/constant.pm type=file
+D:\tlperl\lib/deprecate.pm type=file
+D:\tlperl\lib/diagnostics.pm type=file
+D:\tlperl\lib/dumpvar.pl type=file
+D:\tlperl\lib/encoding.pm type=file
+D:\tlperl\lib/encoding/warnings.pm type=file
+D:\tlperl\lib/experimental.pm type=file
+D:\tlperl\lib/feature.pm type=file
+D:\tlperl\lib/fields.pm type=file
+D:\tlperl\lib/filetest.pm type=file
+D:\tlperl\lib/if.pm type=file
+D:\tlperl\lib/integer.pm type=file
+D:\tlperl\lib/less.pm type=file
+D:\tlperl\lib/lib.pm type=file
+D:\tlperl\lib/locale.pm type=file
+D:\tlperl\lib/meta_notation.pm type=file
+D:\tlperl\lib/mro.pm type=file
+D:\tlperl\lib/ok.pm type=file
+D:\tlperl\lib/open.pm type=file
+D:\tlperl\lib/ops.pm type=file
+D:\tlperl\lib/overload.pm type=file
+D:\tlperl\lib/overload/numbers.pm type=file
+D:\tlperl\lib/overloading.pm type=file
+D:\tlperl\lib/parent.pm type=file
+D:\tlperl\lib/perl5db.pl type=file
+D:\tlperl\lib/perlfaq.pm type=file
+D:\tlperl\lib/pods/perl.pod type=file
+D:\tlperl\lib/pods/perl5004delta.pod type=file
+D:\tlperl\lib/pods/perl5005delta.pod type=file
+D:\tlperl\lib/pods/perl5100delta.pod type=file
+D:\tlperl\lib/pods/perl5101delta.pod type=file
+D:\tlperl\lib/pods/perl5120delta.pod type=file
+D:\tlperl\lib/pods/perl5121delta.pod type=file
+D:\tlperl\lib/pods/perl5122delta.pod type=file
+D:\tlperl\lib/pods/perl5123delta.pod type=file
+D:\tlperl\lib/pods/perl5124delta.pod type=file
+D:\tlperl\lib/pods/perl5125delta.pod type=file
+D:\tlperl\lib/pods/perl5140delta.pod type=file
+D:\tlperl\lib/pods/perl5141delta.pod type=file
+D:\tlperl\lib/pods/perl5142delta.pod type=file
+D:\tlperl\lib/pods/perl5143delta.pod type=file
+D:\tlperl\lib/pods/perl5144delta.pod type=file
+D:\tlperl\lib/pods/perl5160delta.pod type=file
+D:\tlperl\lib/pods/perl5161delta.pod type=file
+D:\tlperl\lib/pods/perl5162delta.pod type=file
+D:\tlperl\lib/pods/perl5163delta.pod type=file
+D:\tlperl\lib/pods/perl5180delta.pod type=file
+D:\tlperl\lib/pods/perl5181delta.pod type=file
+D:\tlperl\lib/pods/perl5182delta.pod type=file
+D:\tlperl\lib/pods/perl5184delta.pod type=file
+D:\tlperl\lib/pods/perl5200delta.pod type=file
+D:\tlperl\lib/pods/perl5201delta.pod type=file
+D:\tlperl\lib/pods/perl5202delta.pod type=file
+D:\tlperl\lib/pods/perl5203delta.pod type=file
+D:\tlperl\lib/pods/perl5220delta.pod type=file
+D:\tlperl\lib/pods/perl5221delta.pod type=file
+D:\tlperl\lib/pods/perl5222delta.pod type=file
+D:\tlperl\lib/pods/perl5223delta.pod type=file
+D:\tlperl\lib/pods/perl5224delta.pod type=file
+D:\tlperl\lib/pods/perl5240delta.pod type=file
+D:\tlperl\lib/pods/perl5241delta.pod type=file
+D:\tlperl\lib/pods/perl5242delta.pod type=file
+D:\tlperl\lib/pods/perl5243delta.pod type=file
+D:\tlperl\lib/pods/perl5244delta.pod type=file
+D:\tlperl\lib/pods/perl5260delta.pod type=file
+D:\tlperl\lib/pods/perl5261delta.pod type=file
+D:\tlperl\lib/pods/perl5262delta.pod type=file
+D:\tlperl\lib/pods/perl5263delta.pod type=file
+D:\tlperl\lib/pods/perl5280delta.pod type=file
+D:\tlperl\lib/pods/perl5281delta.pod type=file
+D:\tlperl\lib/pods/perl5282delta.pod type=file
+D:\tlperl\lib/pods/perl5283delta.pod type=file
+D:\tlperl\lib/pods/perl5300delta.pod type=file
+D:\tlperl\lib/pods/perl5301delta.pod type=file
+D:\tlperl\lib/pods/perl5302delta.pod type=file
+D:\tlperl\lib/pods/perl5303delta.pod type=file
+D:\tlperl\lib/pods/perl5320delta.pod type=file
+D:\tlperl\lib/pods/perl5321delta.pod type=file
+D:\tlperl\lib/pods/perl5340delta.pod type=file
+D:\tlperl\lib/pods/perl5341delta.pod type=file
+D:\tlperl\lib/pods/perl5342delta.pod type=file
+D:\tlperl\lib/pods/perl5343delta.pod type=file
+D:\tlperl\lib/pods/perl5360delta.pod type=file
+D:\tlperl\lib/pods/perl5361delta.pod type=file
+D:\tlperl\lib/pods/perl5362delta.pod type=file
+D:\tlperl\lib/pods/perl5363delta.pod type=file
+D:\tlperl\lib/pods/perl5380delta.pod type=file
+D:\tlperl\lib/pods/perl5381delta.pod type=file
+D:\tlperl\lib/pods/perl5382delta.pod type=file
+D:\tlperl\lib/pods/perl5400delta.pod type=file
+D:\tlperl\lib/pods/perl5401delta.pod type=file
+D:\tlperl\lib/pods/perl561delta.pod type=file
+D:\tlperl\lib/pods/perl56delta.pod type=file
+D:\tlperl\lib/pods/perl581delta.pod type=file
+D:\tlperl\lib/pods/perl582delta.pod type=file
+D:\tlperl\lib/pods/perl583delta.pod type=file
+D:\tlperl\lib/pods/perl584delta.pod type=file
+D:\tlperl\lib/pods/perl585delta.pod type=file
+D:\tlperl\lib/pods/perl586delta.pod type=file
+D:\tlperl\lib/pods/perl587delta.pod type=file
+D:\tlperl\lib/pods/perl588delta.pod type=file
+D:\tlperl\lib/pods/perl589delta.pod type=file
+D:\tlperl\lib/pods/perl58delta.pod type=file
+D:\tlperl\lib/pods/perlaix.pod type=file
+D:\tlperl\lib/pods/perlamiga.pod type=file
+D:\tlperl\lib/pods/perlandroid.pod type=file
+D:\tlperl\lib/pods/perlapi.pod type=file
+D:\tlperl\lib/pods/perlapio.pod type=file
+D:\tlperl\lib/pods/perlartistic.pod type=file
+D:\tlperl\lib/pods/perlbook.pod type=file
+D:\tlperl\lib/pods/perlboot.pod type=file
+D:\tlperl\lib/pods/perlbot.pod type=file
+D:\tlperl\lib/pods/perlbs2000.pod type=file
+D:\tlperl\lib/pods/perlcall.pod type=file
+D:\tlperl\lib/pods/perlcheat.pod type=file
+D:\tlperl\lib/pods/perlclass.pod type=file
+D:\tlperl\lib/pods/perlclassguts.pod type=file
+D:\tlperl\lib/pods/perlclib.pod type=file
+D:\tlperl\lib/pods/perlcn.pod type=file
+D:\tlperl\lib/pods/perlcommunity.pod type=file
+D:\tlperl\lib/pods/perlcygwin.pod type=file
+D:\tlperl\lib/pods/perldata.pod type=file
+D:\tlperl\lib/pods/perldbmfilter.pod type=file
+D:\tlperl\lib/pods/perldebguts.pod type=file
+D:\tlperl\lib/pods/perldebtut.pod type=file
+D:\tlperl\lib/pods/perldebug.pod type=file
+D:\tlperl\lib/pods/perldelta.pod type=file
+D:\tlperl\lib/pods/perldeprecation.pod type=file
+D:\tlperl\lib/pods/perldiag.pod type=file
+D:\tlperl\lib/pods/perldoc.pod type=file
+D:\tlperl\lib/pods/perldocstyle.pod type=file
+D:\tlperl\lib/pods/perldsc.pod type=file
+D:\tlperl\lib/pods/perldtrace.pod type=file
+D:\tlperl\lib/pods/perlebcdic.pod type=file
+D:\tlperl\lib/pods/perlembed.pod type=file
+D:\tlperl\lib/pods/perlexperiment.pod type=file
+D:\tlperl\lib/pods/perlfaq.pod type=file
+D:\tlperl\lib/pods/perlfaq1.pod type=file
+D:\tlperl\lib/pods/perlfaq2.pod type=file
+D:\tlperl\lib/pods/perlfaq3.pod type=file
+D:\tlperl\lib/pods/perlfaq4.pod type=file
+D:\tlperl\lib/pods/perlfaq5.pod type=file
+D:\tlperl\lib/pods/perlfaq6.pod type=file
+D:\tlperl\lib/pods/perlfaq7.pod type=file
+D:\tlperl\lib/pods/perlfaq8.pod type=file
+D:\tlperl\lib/pods/perlfaq9.pod type=file
+D:\tlperl\lib/pods/perlfilter.pod type=file
+D:\tlperl\lib/pods/perlfork.pod type=file
+D:\tlperl\lib/pods/perlform.pod type=file
+D:\tlperl\lib/pods/perlfreebsd.pod type=file
+D:\tlperl\lib/pods/perlfunc.pod type=file
+D:\tlperl\lib/pods/perlgit.pod type=file
+D:\tlperl\lib/pods/perlglossary.pod type=file
+D:\tlperl\lib/pods/perlgov.pod type=file
+D:\tlperl\lib/pods/perlgpl.pod type=file
+D:\tlperl\lib/pods/perlguts.pod type=file
+D:\tlperl\lib/pods/perlhack.pod type=file
+D:\tlperl\lib/pods/perlhacktips.pod type=file
+D:\tlperl\lib/pods/perlhacktut.pod type=file
+D:\tlperl\lib/pods/perlhaiku.pod type=file
+D:\tlperl\lib/pods/perlhist.pod type=file
+D:\tlperl\lib/pods/perlhpux.pod type=file
+D:\tlperl\lib/pods/perlhurd.pod type=file
+D:\tlperl\lib/pods/perlintern.pod type=file
+D:\tlperl\lib/pods/perlinterp.pod type=file
+D:\tlperl\lib/pods/perlintro.pod type=file
+D:\tlperl\lib/pods/perliol.pod type=file
+D:\tlperl\lib/pods/perlipc.pod type=file
+D:\tlperl\lib/pods/perlirix.pod type=file
+D:\tlperl\lib/pods/perljp.pod type=file
+D:\tlperl\lib/pods/perlko.pod type=file
+D:\tlperl\lib/pods/perllexwarn.pod type=file
+D:\tlperl\lib/pods/perllinux.pod type=file
+D:\tlperl\lib/pods/perllocale.pod type=file
+D:\tlperl\lib/pods/perllol.pod type=file
+D:\tlperl\lib/pods/perlmacosx.pod type=file
+D:\tlperl\lib/pods/perlmod.pod type=file
+D:\tlperl\lib/pods/perlmodinstall.pod type=file
+D:\tlperl\lib/pods/perlmodlib.pod type=file
+D:\tlperl\lib/pods/perlmodstyle.pod type=file
+D:\tlperl\lib/pods/perlmroapi.pod type=file
+D:\tlperl\lib/pods/perlnewmod.pod type=file
+D:\tlperl\lib/pods/perlnumber.pod type=file
+D:\tlperl\lib/pods/perlobj.pod type=file
+D:\tlperl\lib/pods/perlootut.pod type=file
+D:\tlperl\lib/pods/perlop.pod type=file
+D:\tlperl\lib/pods/perlopenbsd.pod type=file
+D:\tlperl\lib/pods/perlopentut.pod type=file
+D:\tlperl\lib/pods/perlos2.pod type=file
+D:\tlperl\lib/pods/perlos390.pod type=file
+D:\tlperl\lib/pods/perlos400.pod type=file
+D:\tlperl\lib/pods/perlpacktut.pod type=file
+D:\tlperl\lib/pods/perlperf.pod type=file
+D:\tlperl\lib/pods/perlplan9.pod type=file
+D:\tlperl\lib/pods/perlpod.pod type=file
+D:\tlperl\lib/pods/perlpodspec.pod type=file
+D:\tlperl\lib/pods/perlpodstyle.pod type=file
+D:\tlperl\lib/pods/perlpolicy.pod type=file
+D:\tlperl\lib/pods/perlport.pod type=file
+D:\tlperl\lib/pods/perlpragma.pod type=file
+D:\tlperl\lib/pods/perlqnx.pod type=file
+D:\tlperl\lib/pods/perlre.pod type=file
+D:\tlperl\lib/pods/perlreapi.pod type=file
+D:\tlperl\lib/pods/perlrebackslash.pod type=file
+D:\tlperl\lib/pods/perlrecharclass.pod type=file
+D:\tlperl\lib/pods/perlref.pod type=file
+D:\tlperl\lib/pods/perlreftut.pod type=file
+D:\tlperl\lib/pods/perlreguts.pod type=file
+D:\tlperl\lib/pods/perlrepository.pod type=file
+D:\tlperl\lib/pods/perlrequick.pod type=file
+D:\tlperl\lib/pods/perlreref.pod type=file
+D:\tlperl\lib/pods/perlretut.pod type=file
+D:\tlperl\lib/pods/perlriscos.pod type=file
+D:\tlperl\lib/pods/perlrun.pod type=file
+D:\tlperl\lib/pods/perlsec.pod type=file
+D:\tlperl\lib/pods/perlsecpolicy.pod type=file
+D:\tlperl\lib/pods/perlsolaris.pod type=file
+D:\tlperl\lib/pods/perlsource.pod type=file
+D:\tlperl\lib/pods/perlstyle.pod type=file
+D:\tlperl\lib/pods/perlsub.pod type=file
+D:\tlperl\lib/pods/perlsyn.pod type=file
+D:\tlperl\lib/pods/perlsynology.pod type=file
+D:\tlperl\lib/pods/perlthrtut.pod type=file
+D:\tlperl\lib/pods/perltie.pod type=file
+D:\tlperl\lib/pods/perltoc.pod type=file
+D:\tlperl\lib/pods/perltodo.pod type=file
+D:\tlperl\lib/pods/perltooc.pod type=file
+D:\tlperl\lib/pods/perltoot.pod type=file
+D:\tlperl\lib/pods/perltrap.pod type=file
+D:\tlperl\lib/pods/perltru64.pod type=file
+D:\tlperl\lib/pods/perltw.pod type=file
+D:\tlperl\lib/pods/perlunicode.pod type=file
+D:\tlperl\lib/pods/perlunicook.pod type=file
+D:\tlperl\lib/pods/perlunifaq.pod type=file
+D:\tlperl\lib/pods/perluniintro.pod type=file
+D:\tlperl\lib/pods/perluniprops.pod type=file
+D:\tlperl\lib/pods/perlunitut.pod type=file
+D:\tlperl\lib/pods/perlutil.pod type=file
+D:\tlperl\lib/pods/perlvar.pod type=file
+D:\tlperl\lib/pods/perlvms.pod type=file
+D:\tlperl\lib/pods/perlvos.pod type=file
+D:\tlperl\lib/pods/perlwin32.pod type=file
+D:\tlperl\lib/pods/perlxs.pod type=file
+D:\tlperl\lib/pods/perlxstut.pod type=file
+D:\tlperl\lib/pods/perlxstypemap.pod type=file
+D:\tlperl\lib/re.pm type=file
+D:\tlperl\lib/sigtrap.pm type=file
+D:\tlperl\lib/sort.pm type=file
+D:\tlperl\lib/stable.pm type=file
+D:\tlperl\lib/strict.pm type=file
+D:\tlperl\lib/subs.pm type=file
+D:\tlperl\lib/threads.pm type=file
+D:\tlperl\lib/threads/shared.pm type=file
+D:\tlperl\lib/unicore/Blocks.txt type=file
+D:\tlperl\lib/unicore/CombiningClass.pl type=file
+D:\tlperl\lib/unicore/Decomposition.pl type=file
+D:\tlperl\lib/unicore/Name.pl type=file
+D:\tlperl\lib/unicore/Name.pm type=file
+D:\tlperl\lib/unicore/NamedSequences.txt type=file
+D:\tlperl\lib/unicore/SpecialCasing.txt type=file
+D:\tlperl\lib/unicore/TestNorm.pl type=file
+D:\tlperl\lib/unicore/To/Age.pl type=file
+D:\tlperl\lib/unicore/To/Bc.pl type=file
+D:\tlperl\lib/unicore/To/Bmg.pl type=file
+D:\tlperl\lib/unicore/To/Bpb.pl type=file
+D:\tlperl\lib/unicore/To/Bpt.pl type=file
+D:\tlperl\lib/unicore/To/Cf.pl type=file
+D:\tlperl\lib/unicore/To/Ea.pl type=file
+D:\tlperl\lib/unicore/To/EqUIdeo.pl type=file
+D:\tlperl\lib/unicore/To/GCB.pl type=file
+D:\tlperl\lib/unicore/To/Gc.pl type=file
+D:\tlperl\lib/unicore/To/Hst.pl type=file
+D:\tlperl\lib/unicore/To/Identif2.pl type=file
+D:\tlperl\lib/unicore/To/Identifi.pl type=file
+D:\tlperl\lib/unicore/To/InPC.pl type=file
+D:\tlperl\lib/unicore/To/InSC.pl type=file
+D:\tlperl\lib/unicore/To/Isc.pl type=file
+D:\tlperl\lib/unicore/To/Jg.pl type=file
+D:\tlperl\lib/unicore/To/Jt.pl type=file
+D:\tlperl\lib/unicore/To/Lb.pl type=file
+D:\tlperl\lib/unicore/To/Lc.pl type=file
+D:\tlperl\lib/unicore/To/NFCQC.pl type=file
+D:\tlperl\lib/unicore/To/NFDQC.pl type=file
+D:\tlperl\lib/unicore/To/NFKCCF.pl type=file
+D:\tlperl\lib/unicore/To/NFKCQC.pl type=file
+D:\tlperl\lib/unicore/To/NFKDQC.pl type=file
+D:\tlperl\lib/unicore/To/Na1.pl type=file
+D:\tlperl\lib/unicore/To/NameAlia.pl type=file
+D:\tlperl\lib/unicore/To/Nt.pl type=file
+D:\tlperl\lib/unicore/To/Nv.pl type=file
+D:\tlperl\lib/unicore/To/PerlDeci.pl type=file
+D:\tlperl\lib/unicore/To/SB.pl type=file
+D:\tlperl\lib/unicore/To/Sc.pl type=file
+D:\tlperl\lib/unicore/To/Scx.pl type=file
+D:\tlperl\lib/unicore/To/Tc.pl type=file
+D:\tlperl\lib/unicore/To/Uc.pl type=file
+D:\tlperl\lib/unicore/To/Vo.pl type=file
+D:\tlperl\lib/unicore/To/WB.pl type=file
+D:\tlperl\lib/unicore/To/_PerlLB.pl type=file
+D:\tlperl\lib/unicore/To/_PerlSCX.pl type=file
+D:\tlperl\lib/unicore/UCD.pl type=file
+D:\tlperl\lib/unicore/lib/Age/NA.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V100.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V11.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V110.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V120.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V130.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V140.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V150.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V20.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V30.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V31.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V32.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V40.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V41.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V50.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V51.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V52.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V60.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V61.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V70.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V80.pl type=file
+D:\tlperl\lib/unicore/lib/Age/V90.pl type=file
+D:\tlperl\lib/unicore/lib/Alpha/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/AL.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/AN.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/B.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/BN.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/CS.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/EN.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/ES.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/ET.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/L.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/NSM.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/ON.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/R.pl type=file
+D:\tlperl\lib/unicore/lib/Bc/WS.pl type=file
+D:\tlperl\lib/unicore/lib/BidiC/Y.pl type=file
+D:\tlperl\lib/unicore/lib/BidiM/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Blk/NB.pl type=file
+D:\tlperl\lib/unicore/lib/Bpt/C.pl type=file
+D:\tlperl\lib/unicore/lib/Bpt/N.pl type=file
+D:\tlperl\lib/unicore/lib/Bpt/O.pl type=file
+D:\tlperl\lib/unicore/lib/CE/Y.pl type=file
+D:\tlperl\lib/unicore/lib/CI/Y.pl type=file
+D:\tlperl\lib/unicore/lib/CWCF/Y.pl type=file
+D:\tlperl\lib/unicore/lib/CWCM/Y.pl type=file
+D:\tlperl\lib/unicore/lib/CWKCF/Y.pl type=file
+D:\tlperl\lib/unicore/lib/CWL/Y.pl type=file
+D:\tlperl\lib/unicore/lib/CWT/Y.pl type=file
+D:\tlperl\lib/unicore/lib/CWU/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Cased/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Ccc/A.pl type=file
+D:\tlperl\lib/unicore/lib/Ccc/AL.pl type=file
+D:\tlperl\lib/unicore/lib/Ccc/AR.pl type=file
+D:\tlperl\lib/unicore/lib/Ccc/ATAR.pl type=file
+D:\tlperl\lib/unicore/lib/Ccc/B.pl type=file
+D:\tlperl\lib/unicore/lib/Ccc/BR.pl type=file
+D:\tlperl\lib/unicore/lib/Ccc/DB.pl type=file
+D:\tlperl\lib/unicore/lib/Ccc/NK.pl type=file
+D:\tlperl\lib/unicore/lib/Ccc/NR.pl type=file
+D:\tlperl\lib/unicore/lib/Ccc/OV.pl type=file
+D:\tlperl\lib/unicore/lib/Ccc/VR.pl type=file
+D:\tlperl\lib/unicore/lib/CompEx/Y.pl type=file
+D:\tlperl\lib/unicore/lib/DI/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Dash/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Dep/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Dia/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Com.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Enc.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Fin.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Font.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Init.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Iso.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Med.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Nar.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Nb.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/NonCanon.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Sqr.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Sub.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Sup.pl type=file
+D:\tlperl\lib/unicore/lib/Dt/Vert.pl type=file
+D:\tlperl\lib/unicore/lib/EBase/Y.pl type=file
+D:\tlperl\lib/unicore/lib/EComp/Y.pl type=file
+D:\tlperl\lib/unicore/lib/EPres/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Ea/A.pl type=file
+D:\tlperl\lib/unicore/lib/Ea/H.pl type=file
+D:\tlperl\lib/unicore/lib/Ea/N.pl type=file
+D:\tlperl\lib/unicore/lib/Ea/Na.pl type=file
+D:\tlperl\lib/unicore/lib/Ea/W.pl type=file
+D:\tlperl\lib/unicore/lib/Emoji/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Ext/Y.pl type=file
+D:\tlperl\lib/unicore/lib/ExtPict/Y.pl type=file
+D:\tlperl\lib/unicore/lib/GCB/CN.pl type=file
+D:\tlperl\lib/unicore/lib/GCB/EX.pl type=file
+D:\tlperl\lib/unicore/lib/GCB/LV.pl type=file
+D:\tlperl\lib/unicore/lib/GCB/LVT.pl type=file
+D:\tlperl\lib/unicore/lib/GCB/PP.pl type=file
+D:\tlperl\lib/unicore/lib/GCB/SM.pl type=file
+D:\tlperl\lib/unicore/lib/GCB/XX.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/C.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Cf.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Cn.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/L.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/LC.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Ll.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Lm.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Lo.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Lu.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/M.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Mc.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Me.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Mn.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/N.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Nd.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Nl.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/No.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/P.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Pc.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Pd.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Pe.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Pf.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Pi.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Po.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Ps.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/S.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Sc.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Sk.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Sm.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/So.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Z.pl type=file
+D:\tlperl\lib/unicore/lib/Gc/Zs.pl type=file
+D:\tlperl\lib/unicore/lib/GrBase/Y.pl type=file
+D:\tlperl\lib/unicore/lib/GrExt/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Hex/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Hst/NA.pl type=file
+D:\tlperl\lib/unicore/lib/Hyphen/T.pl type=file
+D:\tlperl\lib/unicore/lib/IDC/Y.pl type=file
+D:\tlperl\lib/unicore/lib/IDS/Y.pl type=file
+D:\tlperl\lib/unicore/lib/IdStatus/Allowed.pl type=file
+D:\tlperl\lib/unicore/lib/IdStatus/Restrict.pl type=file
+D:\tlperl\lib/unicore/lib/IdType/DefaultI.pl type=file
+D:\tlperl\lib/unicore/lib/IdType/Exclusio.pl type=file
+D:\tlperl\lib/unicore/lib/IdType/Inclusio.pl type=file
+D:\tlperl\lib/unicore/lib/IdType/LimitedU.pl type=file
+D:\tlperl\lib/unicore/lib/IdType/NotChara.pl type=file
+D:\tlperl\lib/unicore/lib/IdType/NotNFKC.pl type=file
+D:\tlperl\lib/unicore/lib/IdType/NotXID.pl type=file
+D:\tlperl\lib/unicore/lib/IdType/Obsolete.pl type=file
+D:\tlperl\lib/unicore/lib/IdType/Recommen.pl type=file
+D:\tlperl\lib/unicore/lib/IdType/Technica.pl type=file
+D:\tlperl\lib/unicore/lib/IdType/Uncommon.pl type=file
+D:\tlperl\lib/unicore/lib/Ideo/Y.pl type=file
+D:\tlperl\lib/unicore/lib/In/10_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/11_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/12_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/12_1.pl type=file
+D:\tlperl\lib/unicore/lib/In/13_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/14_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/15_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/2_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/2_1.pl type=file
+D:\tlperl\lib/unicore/lib/In/3_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/3_1.pl type=file
+D:\tlperl\lib/unicore/lib/In/3_2.pl type=file
+D:\tlperl\lib/unicore/lib/In/4_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/4_1.pl type=file
+D:\tlperl\lib/unicore/lib/In/5_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/5_1.pl type=file
+D:\tlperl\lib/unicore/lib/In/5_2.pl type=file
+D:\tlperl\lib/unicore/lib/In/6_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/6_1.pl type=file
+D:\tlperl\lib/unicore/lib/In/6_2.pl type=file
+D:\tlperl\lib/unicore/lib/In/6_3.pl type=file
+D:\tlperl\lib/unicore/lib/In/7_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/8_0.pl type=file
+D:\tlperl\lib/unicore/lib/In/9_0.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/Bottom.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/BottomAn.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/Left.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/LeftAndR.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/NA.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/Overstru.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/Right.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/Top.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/TopAndBo.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/TopAndL2.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/TopAndLe.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/TopAndRi.pl type=file
+D:\tlperl\lib/unicore/lib/InPC/VisualOr.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Avagraha.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Bindu.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Cantilla.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Consona2.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Consona3.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Consona4.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Consona5.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Consona6.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Consona7.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Consona8.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Consona9.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Consonan.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Geminati.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Invisibl.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Nukta.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Number.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Other.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/PureKill.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Syllable.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/ToneMark.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Virama.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Visarga.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/Vowel.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/VowelDep.pl type=file
+D:\tlperl\lib/unicore/lib/InSC/VowelInd.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Ain.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Alef.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Beh.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Dal.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/FarsiYeh.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Feh.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Gaf.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Hah.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/HanifiRo.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Kaf.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Lam.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/NoJoinin.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Noon.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Qaf.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Reh.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Sad.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Seen.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Tah.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Waw.pl type=file
+D:\tlperl\lib/unicore/lib/Jg/Yeh.pl type=file
+D:\tlperl\lib/unicore/lib/Jt/C.pl type=file
+D:\tlperl\lib/unicore/lib/Jt/D.pl type=file
+D:\tlperl\lib/unicore/lib/Jt/L.pl type=file
+D:\tlperl\lib/unicore/lib/Jt/R.pl type=file
+D:\tlperl\lib/unicore/lib/Jt/T.pl type=file
+D:\tlperl\lib/unicore/lib/Jt/U.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/AI.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/AL.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/BA.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/BB.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/CJ.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/CL.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/CM.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/EX.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/GL.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/ID.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/IN.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/IS.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/NS.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/NU.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/OP.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/PO.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/PR.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/QU.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/SA.pl type=file
+D:\tlperl\lib/unicore/lib/Lb/XX.pl type=file
+D:\tlperl\lib/unicore/lib/Lower/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Math/Y.pl type=file
+D:\tlperl\lib/unicore/lib/NFCQC/M.pl type=file
+D:\tlperl\lib/unicore/lib/NFCQC/Y.pl type=file
+D:\tlperl\lib/unicore/lib/NFDQC/N.pl type=file
+D:\tlperl\lib/unicore/lib/NFDQC/Y.pl type=file
+D:\tlperl\lib/unicore/lib/NFKCQC/N.pl type=file
+D:\tlperl\lib/unicore/lib/NFKCQC/Y.pl type=file
+D:\tlperl\lib/unicore/lib/NFKDQC/N.pl type=file
+D:\tlperl\lib/unicore/lib/NFKDQC/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Nt/Di.pl type=file
+D:\tlperl\lib/unicore/lib/Nt/None.pl type=file
+D:\tlperl\lib/unicore/lib/Nt/Nu.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/0.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/1.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/10.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/100.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/1000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/10000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/100000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/11.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/12.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/13.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/14.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/15.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/16.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/17.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/18.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/19.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/1_16.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/1_2.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/1_3.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/1_4.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/1_6.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/1_8.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/2.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/20.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/200.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/2000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/20000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/2_3.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/3.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/30.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/300.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/3000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/30000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/3_16.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/3_4.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/4.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/40.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/400.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/4000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/40000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/5.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/50.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/500.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/5000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/50000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/6.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/60.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/600.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/6000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/60000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/7.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/70.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/700.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/7000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/70000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/8.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/80.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/800.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/8000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/80000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/9.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/90.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/900.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/9000.pl type=file
+D:\tlperl\lib/unicore/lib/Nv/90000.pl type=file
+D:\tlperl\lib/unicore/lib/PCM/Y.pl type=file
+D:\tlperl\lib/unicore/lib/PatSyn/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/Alnum.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/Assigned.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/Blank.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/Graph.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/PerlWord.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/PosixPun.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/Print.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/SpacePer.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/Title.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/Word.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/XPosixPu.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlAny.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlCh2.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlCha.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlFol.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlIDC.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlIDS.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlIsI.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlNch.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlPat.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlPr2.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlPro.pl type=file
+D:\tlperl\lib/unicore/lib/Perl/_PerlQuo.pl type=file
+D:\tlperl\lib/unicore/lib/QMark/Y.pl type=file
+D:\tlperl\lib/unicore/lib/SB/AT.pl type=file
+D:\tlperl\lib/unicore/lib/SB/CL.pl type=file
+D:\tlperl\lib/unicore/lib/SB/EX.pl type=file
+D:\tlperl\lib/unicore/lib/SB/FO.pl type=file
+D:\tlperl\lib/unicore/lib/SB/LE.pl type=file
+D:\tlperl\lib/unicore/lib/SB/LO.pl type=file
+D:\tlperl\lib/unicore/lib/SB/NU.pl type=file
+D:\tlperl\lib/unicore/lib/SB/SC.pl type=file
+D:\tlperl\lib/unicore/lib/SB/ST.pl type=file
+D:\tlperl\lib/unicore/lib/SB/Sp.pl type=file
+D:\tlperl\lib/unicore/lib/SB/UP.pl type=file
+D:\tlperl\lib/unicore/lib/SB/XX.pl type=file
+D:\tlperl\lib/unicore/lib/SD/Y.pl type=file
+D:\tlperl\lib/unicore/lib/STerm/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Arab.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Beng.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Cprt.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Cyrl.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Deva.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Dupl.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Geor.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Glag.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Gong.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Gonm.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Gran.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Grek.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Gujr.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Guru.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Han.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Hang.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Hira.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Kana.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Knda.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Latn.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Limb.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Linb.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Mlym.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Mong.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Mult.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Orya.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Sinh.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Syrc.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Taml.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Telu.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Zinh.pl type=file
+D:\tlperl\lib/unicore/lib/Sc/Zyyy.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Adlm.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Arab.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Armn.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Beng.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Bhks.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Bopo.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Cakm.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Cham.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Copt.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Cprt.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Cyrl.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Deva.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Diak.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Dupl.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Ethi.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Geor.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Glag.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Gong.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Gonm.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Gran.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Grek.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Gujr.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Guru.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Han.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Hang.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Hebr.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Hira.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Hmng.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Hmnp.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Kana.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Khar.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Khmr.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Khoj.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Knda.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Kthi.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Lana.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Lao.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Latn.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Limb.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Lina.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Linb.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Mlym.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Mong.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Mult.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Mymr.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Nand.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Nko.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Orya.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Phlp.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Rohg.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Shrd.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Sind.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Sinh.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Syrc.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Tagb.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Takr.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Talu.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Taml.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Tang.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Telu.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Thaa.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Tibt.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Tirh.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Vith.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Xsux.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Yezi.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Yi.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Zinh.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Zyyy.pl type=file
+D:\tlperl\lib/unicore/lib/Scx/Zzzz.pl type=file
+D:\tlperl\lib/unicore/lib/Term/Y.pl type=file
+D:\tlperl\lib/unicore/lib/UIdeo/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Upper/Y.pl type=file
+D:\tlperl\lib/unicore/lib/VS/Y.pl type=file
+D:\tlperl\lib/unicore/lib/Vo/R.pl type=file
+D:\tlperl\lib/unicore/lib/Vo/Tr.pl type=file
+D:\tlperl\lib/unicore/lib/Vo/Tu.pl type=file
+D:\tlperl\lib/unicore/lib/Vo/U.pl type=file
+D:\tlperl\lib/unicore/lib/WB/EX.pl type=file
+D:\tlperl\lib/unicore/lib/WB/Extend.pl type=file
+D:\tlperl\lib/unicore/lib/WB/FO.pl type=file
+D:\tlperl\lib/unicore/lib/WB/HL.pl type=file
+D:\tlperl\lib/unicore/lib/WB/KA.pl type=file
+D:\tlperl\lib/unicore/lib/WB/LE.pl type=file
+D:\tlperl\lib/unicore/lib/WB/MB.pl type=file
+D:\tlperl\lib/unicore/lib/WB/ML.pl type=file
+D:\tlperl\lib/unicore/lib/WB/MN.pl type=file
+D:\tlperl\lib/unicore/lib/WB/NU.pl type=file
+D:\tlperl\lib/unicore/lib/WB/WSegSpac.pl type=file
+D:\tlperl\lib/unicore/lib/WB/XX.pl type=file
+D:\tlperl\lib/unicore/lib/XIDC/Y.pl type=file
+D:\tlperl\lib/unicore/lib/XIDS/Y.pl type=file
+D:\tlperl\lib/unicore/uni_keywords.pl type=file
+D:\tlperl\lib/unicore/version type=file
+D:\tlperl\lib/utf8.pm type=file
+D:\tlperl\lib/vars.pm type=file
+D:\tlperl\lib/version.pm type=file
+D:\tlperl\lib/version.pod type=file
+D:\tlperl\lib/version/Internals.pod type=file
+D:\tlperl\lib/version/regex.pm type=file
+D:\tlperl\lib/vmsish.pm type=file
+D:\tlperl\lib/warnings.pm type=file
+D:\tlperl\lib/warnings/register.pm type=file
Modified: trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -9,11 +9,11 @@
=head1 VERSION
-Version 3.44
+Version 3.48
=cut
-our $VERSION = '3.44';
+our $VERSION = '3.48';
=head1 DESCRIPTION
Modified: trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -14,11 +14,11 @@
=head1 VERSION
-Version 3.44
+Version 3.48
=cut
-our $VERSION = '3.44';
+our $VERSION = '3.48';
=head1 DESCRIPTION
Modified: trunk/Master/tlpkg/tlperl/lib/App/Prove/State.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/App/Prove/State.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/App/Prove/State.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -25,11 +25,11 @@
=head1 VERSION
-Version 3.44
+Version 3.48
=cut
-our $VERSION = '3.44';
+our $VERSION = '3.48';
=head1 DESCRIPTION
Modified: trunk/Master/tlpkg/tlperl/lib/App/Prove.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/App/Prove.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/App/Prove.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -18,11 +18,11 @@
=head1 VERSION
-Version 3.44
+Version 3.48
=cut
-our $VERSION = '3.44';
+our $VERSION = '3.48';
=head1 DESCRIPTION
@@ -412,7 +412,6 @@
}
if ( my $class = $self->_find_module( $name, @search ) ) {
- $class->import(@args);
if ( $class->can('load') ) {
$class->load( { app_prove => $self, args => [@args] } );
}
@@ -772,17 +771,6 @@
...
}
-Note that the user's arguments are also passed to your plugin's C<import()>
-function as a list, eg:
-
- sub import {
- my ($class, @args) = @_;
- # @args will contain ( 'foo', 'bar', 'baz' )
- ...
- }
-
-This is for backwards compatibility, and may be deprecated in the future.
-
=head2 Sample Plugin
Here's a sample plugin, for your reference:
Modified: trunk/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -8,7 +8,7 @@
BEGIN {
require Exporter;
- $VERSION = '2.40';
+ $VERSION = '3.02_001';
@ISA = qw[Exporter];
require Time::Local if $^O eq "MacOS";
Modified: trunk/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -11,7 +11,7 @@
use vars qw[@ISA $VERSION];
#@ISA = qw[Archive::Tar];
-$VERSION = '2.40';
+$VERSION = '3.02_001';
### set value to 1 to oct() it during the unpack ###
@@ -71,7 +71,7 @@
=head1 DESCRIPTION
-Archive::Tar::Files provides a neat little object layer for in-memory
+Archive::Tar::File provides a neat little object layer for in-memory
extracted files. It's mostly used internally in Archive::Tar to tidy
up the code, but there's no reason users shouldn't use this API as
well.
@@ -486,7 +486,9 @@
return $self->name unless defined $self->prefix and length $self->prefix;
### or otherwise, catfile'd
- return File::Spec::Unix->catfile( $self->prefix, $self->name );
+ my $path = File::Spec::Unix->catfile( $self->prefix, $self->name );
+ $path .= "/" if $self->name =~ m{/$}; # Re-add trailing slash if necessary, as catfile() strips them off.
+ return $path;
}
@@ -601,7 +603,7 @@
return 1;
}
-=head2 $bool = $file->chmod $mode)
+=head2 $bool = $file->chmod( $mode )
Change mode of $file to $mode. The mode can be a string or a number
which is interpreted as octal whether or not a leading 0 is given.
Modified: trunk/Master/tlpkg/tlperl/lib/Archive/Tar.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Archive/Tar.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Archive/Tar.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,8 +1,8 @@
### the gnu tar specification:
-### http://www.gnu.org/software/tar/manual/tar.html
+### https://www.gnu.org/software/tar/manual/tar.html
###
### and the pax format spec, which tar derives from:
-### http://www.opengroup.org/onlinepubs/007904975/utilities/pax.html
+### https://www.opengroup.org/onlinepubs/007904975/utilities/pax.html
package Archive::Tar;
require 5.005_03;
@@ -24,6 +24,7 @@
use vars qw[$DEBUG $error $VERSION $WARN $FOLLOW_SYMLINK $CHOWN $CHMOD
$DO_NOT_USE_PREFIX $HAS_PERLIO $HAS_IO_STRING $SAME_PERMISSIONS
$INSECURE_EXTRACT_MODE $ZERO_PAD_NUMBERS @ISA @EXPORT $RESOLVE_SYMLINK
+ $EXTRACT_BLOCK_SIZE
];
@ISA = qw[Exporter];
@@ -31,7 +32,7 @@
$DEBUG = 0;
$WARN = 1;
$FOLLOW_SYMLINK = 0;
-$VERSION = "2.40";
+$VERSION = "3.02_001";
$CHOWN = 1;
$CHMOD = 1;
$SAME_PERMISSIONS = $> == 0 ? 1 : 0;
@@ -39,6 +40,7 @@
$INSECURE_EXTRACT_MODE = 0;
$ZERO_PAD_NUMBERS = 0;
$RESOLVE_SYMLINK = $ENV{'PERL5_AT_RESOLVE_SYMLINK'} || 'speed';
+$EXTRACT_BLOCK_SIZE = 1024 * 1024 * 1024;
BEGIN {
use Config;
@@ -423,7 +425,7 @@
}
### ignore labels:
- ### http://www.gnu.org/software/tar/manual/html_chapter/Media.html#SEC159
+ ### https://www.gnu.org/software/tar/manual/html_chapter/Media.html#SEC159
next if $entry->is_label;
if( length $entry->type and ($entry->is_file || $entry->is_longlink) ) {
@@ -894,10 +896,18 @@
if( $entry->size ) {
binmode $fh;
- syswrite $fh, $entry->data or (
- $self->_error( qq[Could not write data to '$full'] ),
- return
- );
+ my $offset = 0;
+ my $content = $entry->get_content_by_ref();
+ while ($offset < $entry->size) {
+ my $written
+ = syswrite $fh, $$content, $EXTRACT_BLOCK_SIZE, $offset;
+ if (defined $written) {
+ $offset += $written;
+ } else {
+ $self->_error( qq[Could not write data to '$full': $!] );
+ return;
+ }
+ }
}
close $fh or (
@@ -2143,26 +2153,40 @@
=head2 Tuning the way RESOLVE_SYMLINK will works
- You can tune the behaviour by setting the $Archive::Tar::RESOLVE_SYMLINK variable,
- or $ENV{PERL5_AT_RESOLVE_SYMLINK} before loading the module Archive::Tar.
+You can tune the behaviour by setting the $Archive::Tar::RESOLVE_SYMLINK variable,
+or $ENV{PERL5_AT_RESOLVE_SYMLINK} before loading the module Archive::Tar.
- Values can be one of the following:
+Values can be one of the following:
- none
- Disable this mechanism and failed as it was in previous version (<1.88)
+=over 4
- speed (default)
- If you prefer speed
- this will read again the whole archive using read() so all entries
- will be available
+=item none
- memory
- If you prefer memory
+Disable this mechanism and failed as it was in previous version (<1.88)
- Limitation
+=item speed (default)
- It won't work for terminal, pipe or sockets or every non seekable source.
+If you prefer speed
+this will read again the whole archive using read() so all entries
+will be available
+=item memory
+
+If you prefer memory
+
+=back
+
+Limitation: It won't work for terminal, pipe or sockets or every non seekable
+source.
+
+=head2 $Archive::Tar::EXTRACT_BLOCK_SIZE
+
+This variable holds an integer with the block size that should be used when
+writing files during extraction. It defaults to 1 GiB. Please note that this
+cannot be arbitrarily large since some operating systems limit the number of
+bytes that can be written in one call to C<write(2)>, so if this is too large,
+extraction may fail with an error.
+
=cut
=head1 FAQ
@@ -2396,23 +2420,12 @@
=item The GNU tar specification
-C<http://www.gnu.org/software/tar/manual/tar.html>
+L<https://www.gnu.org/software/tar/manual/tar.html>
=item The PAX format specification
-The specification which tar derives from; C< http://www.opengroup.org/onlinepubs/007904975/utilities/pax.html>
+The specification which tar derives from; L<https://pubs.opengroup.org/onlinepubs/007904975/utilities/pax.html>
-=item A comparison of GNU and POSIX tar standards; C<http://www.delorie.com/gnu/docs/tar/tar_114.html>
-
-=item GNU tar intends to switch to POSIX compatibility
-
-GNU Tar authors have expressed their intention to become completely
-POSIX-compatible; C<http://www.gnu.org/software/tar/manual/html_node/Formats.html>
-
-=item A Comparison between various tar implementations
-
-Lists known issues and incompatibilities; C<http://gd.tuwien.ac.at/utils/archivers/star/README.otherbugs>
-
=back
=head1 AUTHOR
Modified: trunk/Master/tlpkg/tlperl/lib/B/Deparse.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/B/Deparse.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/B/Deparse.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -7,7 +7,7 @@
# This is based on the module of the same name by Malcolm Beattie,
# but essentially none of his code remains.
-package B::Deparse 1.74;
+package B::Deparse 1.76;
use strict;
use Carp;
use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
@@ -15,6 +15,8 @@
OPf_KIDS OPf_REF OPf_STACKED OPf_SPECIAL OPf_MOD OPf_PARENS
OPpLVAL_INTRO OPpOUR_INTRO OPpENTERSUB_AMPER OPpSLICE OPpKVSLICE
OPpCONST_BARE OPpEMPTYAVHV_IS_HV
+ OPpCONST_TOKEN_MASK
+ OPpCONST_TOKEN_LINE OPpCONST_TOKEN_FILE OPpCONST_TOKEN_PACKAGE
OPpTRANS_SQUASH OPpTRANS_DELETE OPpTRANS_COMPLEMENT OPpTARGET_MY
OPpEXISTS_SUB OPpSORT_NUMERIC OPpSORT_INTEGER OPpREPEAT_DOLIST
OPpSORT_REVERSE OPpMULTIDEREF_EXISTS OPpMULTIDEREF_DELETE
@@ -464,7 +466,7 @@
my $globname;
my $gv = $cv->GV;
if (
- $gv
+ $gv && $gv->isa('B::GV')
&& defined (($globname = $gv->object_2svref))
&& $$globname =~ /^\*builtin::/
) {
@@ -5721,6 +5723,20 @@
# return $self->const_sv($op)->PV;
# }
my $sv = $self->const_sv($op);
+
+ my $token = ($op->private & OPpCONST_TOKEN_MASK);
+ if ($token) { # handle __LINE__ etc
+ if ($token == OPpCONST_TOKEN_LINE) {
+ return "__LINE__";
+ }
+ elsif ($token == OPpCONST_TOKEN_FILE) {
+ return "__FILE__";
+ }
+ elsif ($token == OPpCONST_TOKEN_PACKAGE) {
+ return "__PACKAGE__";
+ }
+ }
+
return $self->const($sv, $cx);
}
Modified: trunk/Master/tlpkg/tlperl/lib/B/Op_private.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/B/Op_private.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/B/Op_private.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -118,11 +118,11 @@
our %bits;
-our $VERSION = "5.038002";
+our $VERSION = "5.040001";
$bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv);
$bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv);
-$bits{$_}{2} = 'OPpENTERSUB_HASTARG' for qw(entersub rv2cv);
+$bits{$_}{2} = 'OPpENTERSUB_HASTARG' for qw(ceil entersub floor goto refaddr reftype rv2cv);
$bits{$_}{6} = 'OPpFLIP_LINENUM' for qw(flip flop);
$bits{$_}{1} = 'OPpFT_ACCESS' for qw(fteexec fteread ftewrite ftrexec ftrread ftrwrite);
$bits{$_}{4} = 'OPpFT_AFTER_t' for qw(ftatime ftbinary ftblk ftchr ftctime ftdir fteexec fteowned fteread ftewrite ftfile ftis ftlink ftmtime ftpipe ftrexec ftrowned ftrread ftrwrite ftsgid ftsize ftsock ftsuid ftsvtx fttext fttty ftzero);
@@ -139,6 +139,7 @@
$bits{$_}{3} = 'OPpLVREF_ITER' for qw(lvref refassign);
$bits{$_}{3} = 'OPpMAYBE_LVSUB' for qw(aassign aelem akeys aslice av2arylen avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr values vec);
$bits{$_}{4} = 'OPpMAYBE_TRUEBOOL' for qw(blessed padhv ref rv2hv);
+$bits{$_}{1} = 'OPpMETH_NO_BAREWORD_IO' for qw(method method_named method_redir method_redir_super method_super);
$bits{$_}{7} = 'OPpOFFBYONE' for qw(caller runcv wantarray);
$bits{$_}{5} = 'OPpOPEN_IN_CRLF' for qw(backtick open);
$bits{$_}{4} = 'OPpOPEN_IN_RAW' for qw(backtick open);
@@ -149,7 +150,7 @@
$bits{$_}{7} = 'OPpPV_IS_UTF8' for qw(dump goto last next redo);
$bits{$_}{6} = 'OPpREFCOUNTED' for qw(leave leaveeval leavesub leavesublv leavewrite);
$bits{$_}{2} = 'OPpSLICEWARNING' for qw(aslice hslice padav padhv rv2av rv2hv);
-$bits{$_}{4} = 'OPpTARGET_MY' for qw(abs add atan2 ceil chdir chmod chomp chown chr chroot concat cos crypt divide emptyavhv exec exp flock floor getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand refaddr reftype rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time undef unlink unshift utime wait waitpid);
+$bits{$_}{4} = 'OPpTARGET_MY' for qw(abs add atan2 ceil chdir chmod chomp chown chr chroot concat cos crypt divide emptyavhv exec exp flock floor getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_negate i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement negate oct ord pow push rand refaddr reftype rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time undef unlink unshift utime wait waitpid);
$bits{$_}{0} = 'OPpTRANS_CAN_FORCE_UTF8' for qw(trans transr);
$bits{$_}{5} = 'OPpTRANS_COMPLEMENT' for qw(trans transr);
$bits{$_}{7} = 'OPpTRANS_DELETE' for qw(trans transr);
@@ -244,6 +245,20 @@
3, 'OPpLVREF_CV', 'CV',
],
},
+ {
+ label => 'TOKEN',
+ mask_def => 'OPpCONST_TOKEN_MASK',
+ baseshift_def => 'OPpCONST_TOKEN_SHIFT',
+ bitcount_def => 'OPpCONST_TOKEN_BITS',
+ bitmin => 6,
+ bitmax => 7,
+ bitmask => 192,
+ enum => [
+ 1, 'OPpCONST_TOKEN_LINE', 'LINE',
+ 2, 'OPpCONST_TOKEN_FILE', 'FILE',
+ 3, 'OPpCONST_TOKEN_PACKAGE', 'PACKAGE',
+ ],
+ },
);
@{$bits{aassign}}{6,5,4,2,1,0} = ('OPpASSIGN_COMMON_SCALAR', 'OPpASSIGN_COMMON_RC1', 'OPpASSIGN_COMMON_AGG', 'OPpASSIGN_TRUEBOOL', $bf[1], $bf[1]);
@@ -291,7 +306,7 @@
@{$bits{concat}}{6,1,0} = ('OPpCONCAT_NESTED', $bf[1], $bf[1]);
$bits{cond_expr}{0} = $bf[0];
@{$bits{connect}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
-@{$bits{const}}{6,4,3,2,1} = ('OPpCONST_BARE', 'OPpCONST_ENTERED', 'OPpCONST_STRICT', 'OPpCONST_SHORTCIRCUIT', 'OPpCONST_NOVER');
+@{$bits{const}}{7,6,5,4,3,2,1} = ($bf[10], $bf[10], 'OPpCONST_BARE', 'OPpCONST_ENTERED', 'OPpCONST_STRICT', 'OPpCONST_SHORTCIRCUIT', 'OPpCONST_NOVER');
@{$bits{coreargs}}{7,6,1,0} = ('OPpCOREARGS_PUSHMARK', 'OPpCOREARGS_SCALARMOD', 'OPpCOREARGS_DEREF2', 'OPpCOREARGS_DEREF1');
$bits{cos}{0} = $bf[0];
@{$bits{crypt}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@@ -613,11 +628,17 @@
OPpASSIGN_TRUEBOOL => 4,
OPpAVHVSWITCH_MASK => 3,
OPpCONCAT_NESTED => 64,
- OPpCONST_BARE => 64,
+ OPpCONST_BARE => 32,
OPpCONST_ENTERED => 16,
OPpCONST_NOVER => 2,
OPpCONST_SHORTCIRCUIT => 4,
OPpCONST_STRICT => 8,
+ OPpCONST_TOKEN_BITS => 2,
+ OPpCONST_TOKEN_FILE => 128,
+ OPpCONST_TOKEN_LINE => 64,
+ OPpCONST_TOKEN_MASK => 192,
+ OPpCONST_TOKEN_PACKAGE => 192,
+ OPpCONST_TOKEN_SHIFT => 6,
OPpCOREARGS_DEREF1 => 1,
OPpCOREARGS_DEREF2 => 2,
OPpCOREARGS_PUSHMARK => 128,
@@ -671,6 +692,7 @@
OPpMAYBE_LVSUB => 8,
OPpMAYBE_TRUEBOOL => 16,
OPpMAY_RETURN_CONSTANT => 32,
+ OPpMETH_NO_BAREWORD_IO => 2,
OPpMULTICONCAT_APPEND => 64,
OPpMULTICONCAT_FAKE => 32,
OPpMULTICONCAT_STRINGIFY => 8,
@@ -734,6 +756,9 @@
OPpCONST_NOVER => 'NOVER',
OPpCONST_SHORTCIRCUIT => 'SHORT',
OPpCONST_STRICT => 'STRICT',
+ OPpCONST_TOKEN_FILE => 'FILE',
+ OPpCONST_TOKEN_LINE => 'LINE',
+ OPpCONST_TOKEN_PACKAGE => 'PACKAGE',
OPpCOREARGS_DEREF1 => 'DEREF1',
OPpCOREARGS_DEREF2 => 'DEREF2',
OPpCOREARGS_PUSHMARK => 'MARK',
@@ -785,6 +810,7 @@
OPpMAYBE_LVSUB => 'LVSUB',
OPpMAYBE_TRUEBOOL => 'BOOL?',
OPpMAY_RETURN_CONSTANT => 'CONST',
+ OPpMETH_NO_BAREWORD_IO => 'NO_BAREWORD_IO',
OPpMULTICONCAT_APPEND => 'APPEND',
OPpMULTICONCAT_FAKE => 'FAKE',
OPpMULTICONCAT_STRINGIFY => 'STRINGIFY',
@@ -840,6 +866,7 @@
OPpEARLY_CV => [qw(gv)],
OPpEMPTYAVHV_IS_HV => [qw(emptyavhv)],
OPpENTERSUB_AMPER => [qw(entersub rv2cv)],
+ OPpENTERSUB_HASTARG => [qw(ceil entersub floor goto refaddr reftype rv2cv)],
OPpENTERSUB_INARGS => [qw(entersub)],
OPpENTERSUB_NOPAREN => [qw(rv2cv)],
OPpEVAL_BYTES => [qw(entereval)],
@@ -863,6 +890,7 @@
OPpLVREF_ELEM => [qw(lvref refassign)],
OPpMAYBE_LVSUB => [qw(aassign aelem akeys aslice av2arylen avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr values vec)],
OPpMAYBE_TRUEBOOL => [qw(blessed padhv ref rv2hv)],
+ OPpMETH_NO_BAREWORD_IO => [qw(method method_named method_redir method_redir_super method_super)],
OPpMULTICONCAT_APPEND => [qw(multiconcat)],
OPpMULTIDEREF_DELETE => [qw(multideref)],
OPpOFFBYONE => [qw(caller runcv wantarray)],
@@ -879,7 +907,7 @@
OPpSORT_DESCEND => [qw(sort)],
OPpSPLIT_ASSIGN => [qw(split)],
OPpSUBSTR_REPL_FIRST => [qw(substr)],
- OPpTARGET_MY => [qw(abs add atan2 ceil chdir chmod chomp chown chr chroot concat cos crypt divide emptyavhv exec exp flock floor getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand refaddr reftype rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time undef unlink unshift utime wait waitpid)],
+ OPpTARGET_MY => [qw(abs add atan2 ceil chdir chmod chomp chown chr chroot concat cos crypt divide emptyavhv exec exp flock floor getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_negate i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement negate oct ord pow push rand refaddr reftype rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time undef unlink unshift utime wait waitpid)],
OPpTRANS_CAN_FORCE_UTF8 => [qw(trans transr)],
OPpTRUEBOOL => [qw(blessed grepwhile index length padav padhv pos ref rindex rv2av rv2hv subst)],
OPpUNDEF_KEEP_PV => [qw(undef)],
@@ -900,7 +928,6 @@
$ops_using{OPpCOREARGS_SCALARMOD} = $ops_using{OPpCOREARGS_DEREF1};
$ops_using{OPpDONT_INIT_GV} = $ops_using{OPpALLOW_FAKE};
$ops_using{OPpENTERSUB_DB} = $ops_using{OPpENTERSUB_AMPER};
-$ops_using{OPpENTERSUB_HASTARG} = $ops_using{OPpENTERSUB_AMPER};
$ops_using{OPpEVAL_COPHH} = $ops_using{OPpEVAL_BYTES};
$ops_using{OPpEVAL_EVALSV} = $ops_using{OPpEVAL_BYTES};
$ops_using{OPpEVAL_HAS_HH} = $ops_using{OPpEVAL_BYTES};
Modified: trunk/Master/tlpkg/tlperl/lib/B.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/B.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/B.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -20,7 +20,7 @@
# walkoptree comes from B.xs
BEGIN {
- $B::VERSION = '1.88';
+ $B::VERSION = '1.89';
@B::EXPORT_OK = ();
# Our BOOT code needs $VERSION set, and will append to @EXPORT_OK.
Modified: trunk/Master/tlpkg/tlperl/lib/Benchmark.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Benchmark.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Benchmark.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -482,7 +482,7 @@
clearcache clearallcache disablecache enablecache);
%EXPORT_TAGS=( all => [ @EXPORT, @EXPORT_OK ] ) ;
-$VERSION = 1.24;
+$VERSION = 1.25;
# --- ':hireswallclock' special handling
@@ -494,7 +494,7 @@
sub BEGIN {
if (eval 'require Time::HiRes') {
- import Time::HiRes qw(time);
+ Time::HiRes->import('time');
$hirestime = \&Time::HiRes::time;
}
}
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/XSUB.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/XSUB.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/XSUB.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -37,12 +37,12 @@
XSUB. This is always the proper type for the C++ object. See C<L</CLASS>> and
L<perlxs/"Using XS With C++">.
-=for apidoc Amn|I32|ax
+=for apidoc Amn|Stack_off_t|ax
Variable which is setup by C<xsubpp> to indicate the stack base offset,
used by the C<ST>, C<XSprePUSH> and C<XSRETURN> macros. The C<dMARK> macro
must be called prior to setup the C<MARK> variable.
-=for apidoc Amn|I32|items
+=for apidoc Amn|Stack_off_t|items
Variable which is setup by C<xsubpp> to indicate the number of
items on the stack. See L<perlxs/"Variable-length Parameter Lists">.
@@ -157,13 +157,13 @@
* Try explicitly using XS_INTERNAL/XS_EXTERNAL instead, please. */
#define XS(name) XS_EXTERNAL(name)
-#define dAX const I32 ax = (I32)(MARK - PL_stack_base + 1)
+#define dAX const Stack_off_t ax = (Stack_off_t)(MARK - PL_stack_base + 1)
#define dAXMARK \
- I32 ax = POPMARK; \
+ Stack_off_t ax = POPMARK; \
SV **mark = PL_stack_base + ax++
-#define dITEMS I32 items = (I32)(SP - MARK)
+#define dITEMS Stack_off_t items = (Stack_off_t)(SP - MARK)
#define dXSARGS \
dSP; dAXMARK; dITEMS
@@ -174,16 +174,16 @@
Note these macros are not drop in replacements for dXSARGS since they set
PL_xsubfilename. */
#define dXSBOOTARGSXSAPIVERCHK \
- I32 ax = XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
+ Stack_off_t ax = XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
#define dXSBOOTARGSAPIVERCHK \
- I32 ax = XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
+ Stack_off_t ax = XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
/* dXSBOOTARGSNOVERCHK has no API in xsubpp to choose it so do
#undef dXSBOOTARGSXSAPIVERCHK
#define dXSBOOTARGSXSAPIVERCHK dXSBOOTARGSNOVERCHK */
#define dXSBOOTARGSNOVERCHK \
- I32 ax = XS_SETXSUBFN_POPMARK; \
+ Stack_off_t ax = XS_SETXSUBFN_POPMARK; \
SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
#define dXSTARG SV * const targ = ((PL_op->op_private & OPpENTERSUB_HASTARG) \
@@ -504,7 +504,6 @@
# undef fgetpos
# undef ioctl
# undef getlogin
-# undef setjmp
# undef getc
# undef ungetc
# undef fileno
@@ -609,8 +608,6 @@
# define sleep PerlProc_sleep
# define times PerlProc_times
# define wait PerlProc_wait
-# define setjmp PerlProc_setjmp
-# define longjmp PerlProc_longjmp
# define signal PerlProc_signal
# define getpid PerlProc_getpid
# define gettimeofday PerlProc_gettimeofday
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/av.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/av.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/av.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -113,6 +113,7 @@
'av.c'
=for apidoc newAV
+=for apidoc_item newAV_mortal
=for apidoc_item newAV_alloc_x
=for apidoc_item newAV_alloc_xz
@@ -169,6 +170,11 @@
Unused array elements are typically initialized by C<av_extend>.
+=item C<newAV_mortal> form
+
+This also creates the whole-array data structure, but also mortalises it.
+(That is to say, a reference to the AV is added to the C<temps> stack.)
+
=item C<newAV_alloc_x> form
This effectively does a C<newAV> followed by also allocating (uninitialized)
@@ -210,6 +216,7 @@
*/
#define newAV() MUTABLE_AV(newSV_type(SVt_PVAV))
+#define newAV_mortal() MUTABLE_AV(newSV_type_mortal(SVt_PVAV))
#define newAV_alloc_x(size) av_new_alloc(size,0)
#define newAV_alloc_xz(size) av_new_alloc(size,1)
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -436078,7 +436078,7 @@
* 3f4f32ed2a577344a508114527e721d7a8b633d32f38945d47fe0c743650c585 lib/unicore/extracted/DLineBreak.txt
* 710abf2d581ac9c57f244c0834f9d9969d9781e0396adccd330eaae658ac7d6b lib/unicore/extracted/DNumType.txt
* 6bd30f385f3baf3ab5d5308c111a81de87bea5f494ba0ba69e8ab45263b8c34d lib/unicore/extracted/DNumValues.txt
- * f7265069b38ba9a0675a18600e241b1ec6fc8c55fd806fe4c13bc5d8cb0dc508 lib/unicore/mktables
+ * 8968a5ee00063fa31ff15474b95ccb6b9c228e3ebad6c20bc77f4225187e2023 lib/unicore/mktables
* 55d90fdc3f902e5c0b16b3378f9eaa36e970a1c09723c33de7d47d0370044012 lib/unicore/version
* 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
* c7ff8e0d207d3538c7feb4a1a152b159e5e902d20293b303569ea8323e84633e regen/mk_PL_charclass.pl
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/config.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/config.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/config.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -9,7 +9,7 @@
/* Package name : perl5
* Source directory :
- * Configuration time: Mon Feb 12 11:14:47 2024
+ * Configuration time: Sat Feb 15 21:04:51 2025
* Configured by : siepo
* Target system :
*/
@@ -1229,7 +1229,7 @@
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define ARCHLIB "d:\\tlperl\\lib" /**/
+#define ARCHLIB "D:\\tlperl\\lib" /**/
/*#define ARCHLIB_EXP "" / **/
/* BIN:
@@ -1244,8 +1244,8 @@
* This symbol, if defined, indicates that we'd like to relocate entries
* in @INC at run time based on the location of the perl binary.
*/
-#define BIN "d:\\tlperl\\bin" /**/
-#define BIN_EXP "d:\\tlperl\\bin" /**/
+#define BIN "D:\\tlperl\\bin" /**/
+#define BIN_EXP "D:\\tlperl\\bin" /**/
#define PERL_RELOCATABLE_INC "undef" /**/
/* PERL_INC_VERSION_LIST:
@@ -1283,7 +1283,7 @@
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "d:\\tlperl\\lib" /**/
+#define PRIVLIB "D:\\tlperl\\lib" /**/
#define PRIVLIB_EXP (PerlEnv_lib_path(PERL_VERSION_STRING, NULL)) /**/
/* SITEARCH:
@@ -1301,7 +1301,7 @@
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITEARCH "d:\\tlperl\\site\\lib" /**/
+#define SITEARCH "D:\\tlperl\\site\\lib" /**/
/*#define SITEARCH_EXP "" / **/
/* SITELIB:
@@ -1324,7 +1324,7 @@
* removed. The elements in inc_version_list (inc_version_list.U) can
* be tacked onto this variable to generate a list of directories to search.
*/
-#define SITELIB "d:\\tlperl\\site\\lib" /**/
+#define SITELIB "D:\\tlperl\\site\\lib" /**/
#define SITELIB_EXP (PerlEnv_sitelib_path(PERL_VERSION_STRING, NULL)) /**/
#define SITELIB_STEM "" /**/
@@ -1369,7 +1369,7 @@
* feature tests from Configure are generally more reliable.
*/
#define OSNAME "MSWin32" /**/
-#define OSVERS "10.0.22631.3085" /**/
+#define OSVERS "10.0.26100.3194" /**/
/* CAT2:
* This macro concatenates 2 tokens together.
@@ -2289,7 +2289,7 @@
* This symbol, if defined, indicates that the acosh routine is
* available to do the inverse hyperbolic cosine function.
*/
-/*#define HAS_ACOSH / **/
+#define HAS_ACOSH /**/
/* HAS_AINTL:
* This symbol, if defined, indicates that the aintl routine is
@@ -2301,13 +2301,13 @@
* This symbol, if defined, indicates that the asinh routine is
* available to do the inverse hyperbolic sine function.
*/
-/*#define HAS_ASINH / **/
+#define HAS_ASINH /**/
/* HAS_ATANH:
* This symbol, if defined, indicates that the atanh routine is
* available to do the inverse hyperbolic tangent function.
*/
-/*#define HAS_ATANH / **/
+#define HAS_ATANH /**/
/* HAS_NON_INT_BITFIELDS:
* This symbol, if defined, indicates that the C compiler accepts, without
@@ -2381,13 +2381,13 @@
* This symbol, if defined, indicates that the copysign routine is
* available to do the copysign function.
*/
-/*#define HAS_COPYSIGN / **/
+#define HAS_COPYSIGN /**/
/* HAS_COPYSIGNL:
* This symbol, if defined, indicates that the copysignl routine is
* available. If aintl is also present we can emulate modfl.
*/
-/*#define HAS_COPYSIGNL / **/
+#define HAS_COPYSIGNL /**/
/* USE_CPLUSPLUS:
* This symbol, if defined, indicates that a C++ compiler was
@@ -2445,7 +2445,7 @@
* This symbol, if defined, indicates that the exp2 routine is
* available to do the 2**x function.
*/
-/*#define HAS_EXP2 / **/
+#define HAS_EXP2 /**/
/* HAS_EXPM1:
* This symbol, if defined, indicates that the expm1 routine is
@@ -3143,10 +3143,16 @@
/* HAS_NL_LANGINFO:
* This symbol, if defined, indicates that the nl_langinfo routine is
- * available to return local data. You will also need <langinfo.h>
+ * available to return locale data. You will also need <langinfo.h>
* and therefore I_LANGINFO.
*/
+/* HAS_NL_LANGINFO_L:
+ * This symbol, if defined, indicates that the nl_langinfo_l routine is
+ * available to return locale data. You will also need <langinfo.h>
+ * and therefore I_LANGINFO.
+ */
/*#define HAS_NL_LANGINFO / **/
+/*#define HAS_NL_LANGINFO_L / **/
/* HAS_OFF64_T:
* This symbol will be defined if the C compiler supports off64_t.
@@ -3301,7 +3307,7 @@
* in perl. Users should call Perl_signbit(), which will be #defined to
* the system's signbit() function or macro if this symbol is defined.
*/
-/*#define HAS_SIGNBIT / **/
+#define HAS_SIGNBIT /**/
/* HAS_SIGPROCMASK:
* This symbol, if defined, indicates that the sigprocmask
@@ -3482,7 +3488,7 @@
* This symbol, if defined, indicates that the tgamma routine is
* available to do the gamma function. See also HAS_LGAMMA.
*/
-/*#define HAS_TGAMMA / **/
+#define HAS_TGAMMA /**/
/* HAS_CTIME64:
* This symbol, if defined, indicates that the ctime64 () routine is
@@ -3537,7 +3543,7 @@
* This symbol, if defined, indicates that the trunc routine is
* available to round doubles towards zero.
*/
-/*#define HAS_TRUNC / **/
+#define HAS_TRUNC /**/
/* HAS_TRUNCL:
* This symbol, if defined, indicates that the truncl routine is
@@ -3610,6 +3616,31 @@
*/
#define DEFAULT_INC_EXCLUDES_DOT /**/
+/* PERL_LC_ALL_USES_NAME_VALUE_PAIRS:
+ * This symbol, if defined, indicates to the C program that the string
+ * returned by setlocale(LC_ALL, NULL) uses 'name=value;' pairs to
+ * indicate what each category's locale is when they aren't all set to the
+ * same locale. For example, "LC_NUMERIC=C;LC_CTYPE=de_DE;..."
+ * When not defined, the system uses positional notation.
+ */
+/* PERL_LC_ALL_SEPARATOR:
+ * This symbol, if defined, gives the string returned by
+ * setlocale(LC_ALL, NULL) to separate categories that are in different
+ * locales on systems that use a positional notation as opposed to
+ * 'name=value' pairs. An example on some platforms could be the '/' in
+ * "C/de_DE/C/en_UK/C/C"
+ */
+/* PERL_LC_ALL_CATEGORY_POSITIONS_INIT:
+ * This symbol, when defined, gives the C initializer for an array whose
+ * element [0] is the first category in the string returned by
+ * setlocale(LC_ALL, NULL) when not all categories are the same, on
+ * systems that use a positional notation. After element [0] is
+ * LC_ALL_SEPARATOR, then the category given by element [1] and so on.
+ */
+#define PERL_LC_ALL_USES_NAME_VALUE_PAIRS /**/
+/*#define PERL_LC_ALL_SEPARATOR undef / **/
+/*#define PERL_LC_ALL_CATEGORY_POSITIONS_INIT undef / **/
+
/* USE_DYNAMIC_LOADING:
* This symbol, if defined, indicates that dynamic loading of
* some sort is available.
@@ -4956,17 +4987,6 @@
*/
/*#define HAS_MBRTOWC / **/
-/* HAS_NL_LANGINFO_L:
- * This symbol, when defined, indicates presence of the nl_langinfo_l()
- * function
- */
-/* HAS_THREAD_SAFE_NL_LANGINFO_L:
- * This symbol, when defined, indicates presence of the nl_langinfo_l()
- * function, and that it is thread-safe.
- */
-/*#define HAS_NL_LANGINFO_L / **/
-/*#define HAS_THREAD_SAFE_NL_LANGINFO_L / **/
-
/* OLD_PTHREAD_CREATE_JOINABLE:
* This symbol, if defined, indicates how to create pthread
* in joinable (aka undetached) state. NOTE: not defined
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/cop.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/cop.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/cop.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -29,6 +29,8 @@
* GSAR 97-03-27
*/
+MSVC_DIAG_IGNORE(4324)
+
struct jmpenv {
struct jmpenv * je_prev;
Sigjmp_buf je_buf; /* uninit if je_prev is NULL */
@@ -38,9 +40,11 @@
SSize_t je_old_stack_hwm;
};
+MSVC_DIAG_RESTORE
+
typedef struct jmpenv JMPENV;
-#if defined DEBUGGING && !defined DEBUGGING_RE_ONLY
+#if defined PERL_USE_HWM
# define JE_OLD_STACK_HWM_zero PL_start_env.je_old_stack_hwm = 0
# define JE_OLD_STACK_HWM_save(je) \
(je).je_old_stack_hwm = PL_curstackinfo->si_stack_hwm
@@ -885,12 +889,14 @@
} STMT_END
/* junk in @_ spells trouble when cloning CVs and in pp_caller(), so don't
- * leave any (a fast av_clear(ary), basically) */
+ * leave any (a fast av_clear(ary), basically).
+ * New code should probably be using Perl_clear_defarray_simple()
+ * and/or Perl_clear_defarray()
+ */
#define CLEAR_ARGARRAY(ary) \
STMT_START { \
- AvMAX(ary) += AvARRAY(ary) - AvALLOC(ary); \
- AvARRAY(ary) = AvALLOC(ary); \
AvFILLp(ary) = -1; \
+ av_remove_offset(ary); \
} STMT_END
@@ -930,7 +936,7 @@
IV ix; /* index relative to base of array */
} ary;
struct { /* CXt_LOOP_LIST, C<for (list)> */
- I32 basesp; /* first element of list on stack */
+ SSize_t basesp; /* first element of list on stack */
IV ix; /* index relative to basesp */
} stack;
struct { /* CXt_LOOP_LAZYIV, C<for (1..9)> */
@@ -989,12 +995,12 @@
U16 blku_u16; /* used by block_sub and block_eval (so far) */
I32 blku_oldsaveix; /* saved PL_savestack_ix */
/* all the fields above must be aligned with same-sized fields as sbu */
- I32 blku_oldsp; /* current sp floor: where nextstate pops to */
- I32 blku_oldmarksp; /* mark stack index */
+ SSize_t blku_oldsp; /* current sp floor: where nextstate pops to */
COP * blku_oldcop; /* old curcop pointer */
PMOP * blku_oldpm; /* values of pattern match vars */
SSize_t blku_old_tmpsfloor; /* saved PL_tmps_floor */
I32 blku_oldscopesp; /* scope stack index */
+ I32 blku_oldmarksp; /* mark stack index */
union {
struct block_sub blku_sub;
@@ -1213,6 +1219,7 @@
#define G_RE_REPARSING 0x800 /* compiling a run-time /(?{..})/ */
#define G_METHOD_NAMED 0x1000 /* calling named method, eg without :: or ' */
#define G_RETHROW 0x2000 /* eval_sv(): re-throw any error */
+#define G_USEHINTS 0x4000 /* eval_sv(): use current hints/features */
/* flag bits for PL_in_eval */
#define EVAL_NULL 0 /* not in an eval */
@@ -1255,7 +1262,16 @@
I32 si_markoff; /* offset where markstack begins for us.
* currently used only with DEBUGGING,
* but not #ifdef-ed for bincompat */
-#if defined DEBUGGING && !defined DEBUGGING_RE_ONLY
+
+#ifdef PERL_RC_STACK
+ /* index of first entry in the argument
+ stack which is not ref-counted. If
+ set to 0 (default), all stack
+ elements are ref-counted */
+ I32 si_stack_nonrc_base;
+#endif
+
+#ifdef PERL_USE_HWM
/* high water mark: for checking if the stack was correctly extended /
* tested for extension by each pp function */
SSize_t si_stack_hwm;
@@ -1282,60 +1298,37 @@
# define SET_MARK_OFFSET NOOP
#endif
-#if defined DEBUGGING && !defined DEBUGGING_RE_ONLY
+#ifdef PERL_USE_HWM
# define PUSHSTACK_INIT_HWM(si) ((si)->si_stack_hwm = 0)
#else
# define PUSHSTACK_INIT_HWM(si) NOOP
#endif
+/* for backcompat; use push_stackinfo() instead */
+
#define PUSHSTACKi(type) \
- STMT_START { \
- PERL_SI *next = PL_curstackinfo->si_next; \
- DEBUG_l({ \
- int i = 0; PERL_SI *p = PL_curstackinfo; \
- while (p) { i++; p = p->si_prev; } \
- Perl_deb(aTHX_ "push STACKINFO %d in %s at %s:%d\n", \
- i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \
- if (!next) { \
- next = new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); \
- next->si_prev = PL_curstackinfo; \
- PL_curstackinfo->si_next = next; \
- } \
- next->si_type = type; \
- next->si_cxix = -1; \
- next->si_cxsubix = -1; \
- PUSHSTACK_INIT_HWM(next); \
- AvFILLp(next->si_stack) = 0; \
- SWITCHSTACK(PL_curstack,next->si_stack); \
- PL_curstackinfo = next; \
- SET_MARK_OFFSET; \
+ STMT_START { \
+ PL_stack_sp = sp; \
+ push_stackinfo(type, 0);\
+ sp = PL_stack_sp ; \
} STMT_END
#define PUSHSTACK PUSHSTACKi(PERLSI_UNKNOWN)
-/* POPSTACK works with PL_stack_sp, so it may need to be bracketed by
+
+/* for backcompat; use pop_stackinfo() instead.
+ *
+ * POPSTACK works with PL_stack_sp, so it may need to be bracketed by
* PUTBACK/SPAGAIN to flush/refresh any local SP that may be active */
-#define POPSTACK \
- STMT_START { \
- dSP; \
- PERL_SI * const prev = PL_curstackinfo->si_prev; \
- DEBUG_l({ \
- int i = -1; PERL_SI *p = PL_curstackinfo; \
- while (p) { i++; p = p->si_prev; } \
- Perl_deb(aTHX_ "pop STACKINFO %d in %s at %s:%d\n", \
- i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \
- if (!prev) { \
- Perl_croak_popstack(); \
- } \
- SWITCHSTACK(PL_curstack,prev->si_stack); \
- /* don't free prev here, free them all at the END{} */ \
- PL_curstackinfo = prev; \
- } STMT_END
+#define POPSTACK pop_stackinfo()
+
+
#define POPSTACK_TO(s) \
STMT_START { \
while (PL_curstack != s) { \
dounwind(-1); \
+ rpp_obliterate_stack_to(0); \
POPSTACK; \
} \
} STMT_END
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/cv.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/cv.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/cv.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -129,7 +129,7 @@
#endif
#define CVf_DYNFILE 0x1000 /* The filename is malloced */
#define CVf_AUTOLOAD 0x2000 /* SvPVX contains AUTOLOADed sub name */
-#define CVf_HASEVAL 0x4000 /* contains string eval */
+/* 0x4000 previously CVf_HASEVAL */
#define CVf_NAMED 0x8000 /* Has a name HEK */
#define CVf_LEXICAL 0x10000 /* Omit package from name */
#define CVf_ANONCONST 0x20000 /* :const - create anonconst op */
@@ -138,6 +138,8 @@
#define CVf_IsMETHOD 0x100000 /* CV is a (real) method of a real class. Not
to be confused with what used to be called
CVf_METHOD; now CVf_NOWARN_AMBIGUOUS */
+#define CVf_XS_RCSTACK 0x200000 /* the XS function understands a
+ reference-counted stack */
/* This symbol for optimised communication between toke.c and op.c: */
#define CVf_BUILTIN_ATTRS (CVf_NOWARN_AMBIGUOUS|CVf_LVALUE|CVf_ANONCONST)
@@ -211,10 +213,6 @@
#define CvAUTOLOAD_on(cv) (CvFLAGS(cv) |= CVf_AUTOLOAD)
#define CvAUTOLOAD_off(cv) (CvFLAGS(cv) &= ~CVf_AUTOLOAD)
-#define CvHASEVAL(cv) (CvFLAGS(cv) & CVf_HASEVAL)
-#define CvHASEVAL_on(cv) (CvFLAGS(cv) |= CVf_HASEVAL)
-#define CvHASEVAL_off(cv) (CvFLAGS(cv) &= ~CVf_HASEVAL)
-
#define CvNAMED(cv) (CvFLAGS(cv) & CVf_NAMED)
#define CvNAMED_on(cv) (CvFLAGS(cv) |= CVf_NAMED)
#define CvNAMED_off(cv) (CvFLAGS(cv) &= ~CVf_NAMED)
@@ -264,6 +262,10 @@
#define CvIsMETHOD_on(cv) (CvFLAGS(cv) |= CVf_IsMETHOD)
#define CvIsMETHOD_off(cv) (CvFLAGS(cv) &= ~CVf_IsMETHOD)
+#define CvXS_RCSTACK(cv) (CvFLAGS(cv) & CVf_XS_RCSTACK)
+#define CvXS_RCSTACK_on(cv) (CvFLAGS(cv) |= CVf_XS_RCSTACK)
+#define CvXS_RCSTACK_off(cv) (CvFLAGS(cv) &= ~CVf_XS_RCSTACK)
+
/* Back-compat */
#ifndef PERL_CORE
# define CVf_METHOD CVf_NOWARN_AMBIGUOUS
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/embed.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/embed.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/embed.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -71,10 +71,9 @@
# define perl_init_i18nl10n(a) init_i18nl10n(a)
# define perl_require_pv(a) require_pv(a)
-/* varargs functions can't be handled with CPP macros. :-(
- This provides a set of compatibility functions that don't take
- an extra argument but grab the context pointer using the macro
- dTHX.
+/* Before C99, macros could not wrap varargs functions. This
+ provides a set of compatibility functions that don't take an
+ extra argument but grab the context pointer using the macro dTHX.
*/
# if defined(MULTIPLICITY) && !defined(PERL_NO_SHORT_NAMES)
@@ -175,6 +174,7 @@
# define ck_entersub_args_proto(a,b,c) Perl_ck_entersub_args_proto(aTHX_ a,b,c)
# define ck_entersub_args_proto_or_list(a,b,c) Perl_ck_entersub_args_proto_or_list(aTHX_ a,b,c)
# define clear_defarray(a,b) Perl_clear_defarray(aTHX_ a,b)
+# define clear_defarray_simple(a) Perl_clear_defarray_simple(aTHX_ a)
# define cop_fetch_label(a,b,c) Perl_cop_fetch_label(aTHX_ a,b,c)
# define cop_store_label(a,b,c,d) Perl_cop_store_label(aTHX_ a,b,c,d)
# define croak_memory_wrap Perl_croak_memory_wrap
@@ -402,6 +402,7 @@
# define newHVREF(a) Perl_newHVREF(aTHX_ a)
# define newHVhv(a) Perl_newHVhv(aTHX_ a)
# define newLISTOP(a,b,c,d) Perl_newLISTOP(aTHX_ a,b,c,d)
+# define newLISTOPn(a,...) Perl_newLISTOPn(aTHX_ a,__VA_ARGS__)
# define newLOGOP(a,b,c,d) Perl_newLOGOP(aTHX_ a,b,c,d)
# define newLOOPEX(a,b) Perl_newLOOPEX(aTHX_ a,b)
# define newLOOPOP(a,b,c,d) Perl_newLOOPOP(aTHX_ a,b,c,d)
@@ -450,6 +451,7 @@
# define newXS(a,b,c) Perl_newXS(aTHX_ a,b,c)
# define newXS_flags(a,b,c,d,e) Perl_newXS_flags(aTHX_ a,b,c,d,e)
# define new_stackinfo(a,b) Perl_new_stackinfo(aTHX_ a,b)
+# define new_stackinfo_flags(a,b,c) Perl_new_stackinfo_flags(aTHX_ a,b,c)
# define new_version(a) Perl_new_version(aTHX_ a)
# define nothreadhook() Perl_nothreadhook(aTHX)
# define op_append_elem(a,b,c) Perl_op_append_elem(aTHX_ a,b,c)
@@ -495,6 +497,7 @@
# define perly_sighandler Perl_perly_sighandler
# define pmop_dump(a) Perl_pmop_dump(aTHX_ a)
# define pop_scope() Perl_pop_scope(aTHX)
+# define pop_stackinfo() Perl_pop_stackinfo(aTHX)
# define pregcomp(a,b) Perl_pregcomp(aTHX_ a,b)
# define pregexec(a,b,c,d,e,f,g) Perl_pregexec(aTHX_ a,b,c,d,e,f,g)
# define pregfree(a) Perl_pregfree(aTHX_ a)
@@ -506,6 +509,7 @@
# define ptr_table_split(a) Perl_ptr_table_split(aTHX_ a)
# define ptr_table_store(a,b,c) Perl_ptr_table_store(aTHX_ a,b,c)
# define push_scope() Perl_push_scope(aTHX)
+# define push_stackinfo(a,b) Perl_push_stackinfo(aTHX_ a,b)
# define pv_display(a,b,c,d,e) Perl_pv_display(aTHX_ a,b,c,d,e)
# define pv_escape(a,b,c,d,e,f) Perl_pv_escape(aTHX_ a,b,c,d,e,f)
# define pv_pretty(a,b,c,d,e,f,g) Perl_pv_pretty(aTHX_ a,b,c,d,e,f,g)
@@ -533,6 +537,39 @@
# define repeatcpy Perl_repeatcpy
# define require_pv(a) Perl_require_pv(aTHX_ a)
# define rninstr Perl_rninstr
+# define rpp_context(a,b,c) Perl_rpp_context(aTHX_ a,b,c)
+# define rpp_extend(a) Perl_rpp_extend(aTHX_ a)
+# define rpp_invoke_xs(a) Perl_rpp_invoke_xs(aTHX_ a)
+# define rpp_is_lone(a) Perl_rpp_is_lone(aTHX_ a)
+# define rpp_obliterate_stack_to(a) Perl_rpp_obliterate_stack_to(aTHX_ a)
+# define rpp_pop_1_norc() Perl_rpp_pop_1_norc(aTHX)
+# define rpp_popfree_1() Perl_rpp_popfree_1(aTHX)
+# define rpp_popfree_1_NN() Perl_rpp_popfree_1_NN(aTHX)
+# define rpp_popfree_2() Perl_rpp_popfree_2(aTHX)
+# define rpp_popfree_2_NN() Perl_rpp_popfree_2_NN(aTHX)
+# define rpp_popfree_to(a) Perl_rpp_popfree_to(aTHX_ a)
+# define rpp_popfree_to_NN(a) Perl_rpp_popfree_to_NN(aTHX_ a)
+# define rpp_push_1(a) Perl_rpp_push_1(aTHX_ a)
+# define rpp_push_1_norc(a) Perl_rpp_push_1_norc(aTHX_ a)
+# define rpp_push_2(a,b) Perl_rpp_push_2(aTHX_ a,b)
+# define rpp_push_IMM(a) Perl_rpp_push_IMM(aTHX_ a)
+# define rpp_replace_1_1(a) Perl_rpp_replace_1_1(aTHX_ a)
+# define rpp_replace_1_1_NN(a) Perl_rpp_replace_1_1_NN(aTHX_ a)
+# define rpp_replace_1_IMM_NN(a) Perl_rpp_replace_1_IMM_NN(aTHX_ a)
+# define rpp_replace_2_1(a) Perl_rpp_replace_2_1(aTHX_ a)
+# define rpp_replace_2_1_COMMON(a) Perl_rpp_replace_2_1_COMMON(aTHX_ a)
+# define rpp_replace_2_1_NN(a) Perl_rpp_replace_2_1_NN(aTHX_ a)
+# define rpp_replace_2_IMM_NN(a) Perl_rpp_replace_2_IMM_NN(aTHX_ a)
+# define rpp_replace_at(a,b) Perl_rpp_replace_at(aTHX_ a,b)
+# define rpp_replace_at_NN(a,b) Perl_rpp_replace_at_NN(aTHX_ a,b)
+# define rpp_replace_at_norc(a,b) Perl_rpp_replace_at_norc(aTHX_ a,b)
+# define rpp_replace_at_norc_NN(a,b) Perl_rpp_replace_at_norc_NN(aTHX_ a,b)
+# define rpp_stack_is_rc() Perl_rpp_stack_is_rc(aTHX)
+# define rpp_try_AMAGIC_1(a,b) Perl_rpp_try_AMAGIC_1(aTHX_ a,b)
+# define rpp_try_AMAGIC_2(a,b) Perl_rpp_try_AMAGIC_2(aTHX_ a,b)
+# define rpp_xpush_1(a) Perl_rpp_xpush_1(aTHX_ a)
+# define rpp_xpush_2(a,b) Perl_rpp_xpush_2(aTHX_ a,b)
+# define rpp_xpush_IMM(a) Perl_rpp_xpush_IMM(aTHX_ a)
# define rsignal(a,b) Perl_rsignal(aTHX_ a,b)
# define rsignal_state(a) Perl_rsignal_state(aTHX_ a)
# define runops_debug() Perl_runops_debug(aTHX)
@@ -655,6 +692,7 @@
# define sv_isa(a,b) Perl_sv_isa(aTHX_ a,b)
# define sv_isa_sv(a,b) Perl_sv_isa_sv(aTHX_ a,b)
# define sv_isobject(a) Perl_sv_isobject(aTHX_ a)
+# define sv_langinfo(a) Perl_sv_langinfo(aTHX_ a)
# define sv_len(a) Perl_sv_len(aTHX_ a)
# define sv_len_utf8(a) Perl_sv_len_utf8(aTHX_ a)
# define sv_len_utf8_nomg(a) Perl_sv_len_utf8_nomg(aTHX_ a)
@@ -710,6 +748,7 @@
# define sv_setuv(a,b) Perl_sv_setuv(aTHX_ a,b)
# define sv_setuv_mg(a,b) Perl_sv_setuv_mg(aTHX_ a,b)
# define sv_streq_flags(a,b,c) Perl_sv_streq_flags(aTHX_ a,b,c)
+# define sv_strftime_tm(a,b) Perl_sv_strftime_tm(aTHX_ a,b)
# define sv_string_from_errnum(a,b) Perl_sv_string_from_errnum(aTHX_ a,b)
# define sv_tainted(a) Perl_sv_tainted(aTHX_ a)
# define sv_true(a) Perl_sv_true(aTHX_ a)
@@ -731,12 +770,11 @@
# define sv_vsetpvf(a,b,c) Perl_sv_vsetpvf(aTHX_ a,b,c)
# define sv_vsetpvf_mg(a,b,c) Perl_sv_vsetpvf_mg(aTHX_ a,b,c)
# define sv_vsetpvfn(a,b,c,d,e,f,g) Perl_sv_vsetpvfn(aTHX_ a,b,c,d,e,f,g)
+# define switch_argstack(a) Perl_switch_argstack(aTHX_ a)
# define switch_to_global_locale() Perl_switch_to_global_locale(aTHX)
# define sync_locale() Perl_sync_locale(aTHX)
# define taint_env() Perl_taint_env(aTHX)
# define taint_proper(a,b) Perl_taint_proper(aTHX_ a,b)
-# define thread_locale_init() Perl_thread_locale_init(aTHX)
-# define thread_locale_term() Perl_thread_locale_term(aTHX)
# define to_uni_lower(a,b,c) Perl_to_uni_lower(aTHX_ a,b,c)
# define to_uni_title(a,b,c) Perl_to_uni_title(aTHX_ a,b,c)
# define to_uni_upper(a,b,c) Perl_to_uni_upper(aTHX_ a,b,c)
@@ -754,11 +792,11 @@
# define utf8_to_uvchr_buf_helper(a,b,c) Perl_utf8_to_uvchr_buf_helper(aTHX_ a,b,c)
# define utf8n_to_uvchr_msgs Perl_utf8n_to_uvchr_msgs
# define uvoffuni_to_utf8_flags_msgs(a,b,c,d) Perl_uvoffuni_to_utf8_flags_msgs(aTHX_ a,b,c,d)
-# define uvuni_to_utf8(a,b) Perl_uvuni_to_utf8(aTHX_ a,b)
# define valid_utf8_to_uvchr Perl_valid_utf8_to_uvchr
# define vcmp(a,b) Perl_vcmp(aTHX_ a,b)
# define vcroak(a,b) Perl_vcroak(aTHX_ a,b)
# define vdeb(a,b) Perl_vdeb(aTHX_ a,b)
+# define vfatal_warner(a,b,c) Perl_vfatal_warner(aTHX_ a,b,c)
# define vform(a,b) Perl_vform(aTHX_ a,b)
# define vload_module(a,b,c,d) Perl_vload_module(aTHX_ a,b,c,d)
# define vmess(a,b) Perl_vmess(aTHX_ a,b)
@@ -818,7 +856,8 @@
# define warn_nocontext Perl_warn_nocontext
# define warner_nocontext Perl_warner_nocontext
# endif /* defined(MULTIPLICITY) */
-# if !defined(MULTIPLICITY) || defined(PERL_CORE)
+# if !defined(MULTIPLICITY) || defined(PERL_CORE) || \
+ defined(PERL_WANT_VARARGS)
# define ck_warner(a,...) Perl_ck_warner(aTHX_ a,__VA_ARGS__)
# define ck_warner_d(a,...) Perl_ck_warner_d(aTHX_ a,__VA_ARGS__)
# define croak(...) Perl_croak(aTHX_ __VA_ARGS__)
@@ -825,6 +864,7 @@
# define deb(...) Perl_deb(aTHX_ __VA_ARGS__)
# define die(...) Perl_die(aTHX_ __VA_ARGS__)
# define dump_indent(a,b,...) Perl_dump_indent(aTHX_ a,b,__VA_ARGS__)
+# define fatal_warner(a,...) Perl_fatal_warner(aTHX_ a,__VA_ARGS__)
# define form(...) Perl_form(aTHX_ __VA_ARGS__)
# define load_module(a,b,...) Perl_load_module(aTHX_ a,b,__VA_ARGS__)
# define mess(...) Perl_mess(aTHX_ __VA_ARGS__)
@@ -835,7 +875,8 @@
# define sv_setpvf_mg(a,...) Perl_sv_setpvf_mg(aTHX_ a,__VA_ARGS__)
# define warn(...) Perl_warn(aTHX_ __VA_ARGS__)
# define warner(a,...) Perl_warner(aTHX_ a,__VA_ARGS__)
-# endif /* !defined(MULTIPLICITY) || defined(PERL_CORE) */
+# endif /* !defined(MULTIPLICITY) || defined(PERL_CORE) ||
+ defined(PERL_WANT_VARARGS) */
# if defined(MYMALLOC)
# define dump_mstats(a) Perl_dump_mstats(aTHX_ a)
# define get_mstats(a,b,c) Perl_get_mstats(aTHX_ a,b,c)
@@ -850,6 +891,7 @@
# define utf8_to_uvchr(a,b) Perl_utf8_to_uvchr(aTHX_ a,b)
# define utf8_to_uvuni(a,b) Perl_utf8_to_uvuni(aTHX_ a,b)
# define utf8n_to_uvuni(a,b,c,d) Perl_utf8n_to_uvuni(aTHX_ a,b,c,d)
+# define uvuni_to_utf8(a,b) Perl_uvuni_to_utf8(aTHX_ a,b)
# endif
# if defined(PERL_CORE)
# define PerlLIO_dup2_cloexec(a,b) Perl_PerlLIO_dup2_cloexec(aTHX_ a,b)
@@ -858,7 +900,6 @@
# define PerlLIO_open_cloexec(a,b) Perl_PerlLIO_open_cloexec(aTHX_ a,b)
# define Slab_Alloc(a) Perl_Slab_Alloc(aTHX_ a)
# define Slab_Free(a) Perl_Slab_Free(aTHX_ a)
-# define _warn_problematic_locale Perl__warn_problematic_locale
# define abort_execution(a,b) Perl_abort_execution(aTHX_ a,b)
# define alloc_LOGOP(a,b,c) Perl_alloc_LOGOP(aTHX_ a,b,c)
# define allocmy(a,b,c) Perl_allocmy(aTHX_ a,b,c)
@@ -867,6 +908,7 @@
# define apply(a,b,c) Perl_apply(aTHX_ a,b,c)
# define av_extend_guts(a,b,c,d,e) Perl_av_extend_guts(aTHX_ a,b,c,d,e)
# define av_nonelem(a,b) Perl_av_nonelem(aTHX_ a,b)
+# define av_remove_offset(a) Perl_av_remove_offset(aTHX_ a)
# define bind_match(a,b,c) Perl_bind_match(aTHX_ a,b,c)
# define boot_core_PerlIO() Perl_boot_core_PerlIO(aTHX)
# define boot_core_UNIVERSAL() Perl_boot_core_UNIVERSAL(aTHX)
@@ -881,9 +923,10 @@
# define cmpchain_start(a,b,c) Perl_cmpchain_start(aTHX_ a,b,c)
# define core_prototype(a,b,c,d) Perl_core_prototype(aTHX_ a,b,c,d)
# define coresub_op(a,b,c) Perl_coresub_op(aTHX_ a,b,c)
-# define create_eval_scope(a,b) Perl_create_eval_scope(aTHX_ a,b)
+# define create_eval_scope(a,b,c) Perl_create_eval_scope(aTHX_ a,b,c)
# define croak_caller Perl_croak_caller
# define croak_no_mem Perl_croak_no_mem
+# define croak_no_mem_ext Perl_croak_no_mem_ext
# define croak_popstack Perl_croak_popstack
# define custom_op_get_field(a,b) Perl_custom_op_get_field(aTHX_ a,b)
# define cv_clone_into(a,b) Perl_cv_clone_into(aTHX_ a,b)
@@ -919,9 +962,8 @@
# define find_lexical_cv(a) Perl_find_lexical_cv(aTHX_ a)
# define find_runcv_where(a,b,c) Perl_find_runcv_where(aTHX_ a,b,c)
# define find_script(a,b,c,d) Perl_find_script(aTHX_ a,b,c,d)
-# define force_locale_unlock Perl_force_locale_unlock
+# define force_locale_unlock() Perl_force_locale_unlock(aTHX)
# define free_tied_hv_pool() Perl_free_tied_hv_pool(aTHX)
-# define get_extended_os_errno Perl_get_extended_os_errno
# define get_hash_seed(a) Perl_get_hash_seed(aTHX_ a)
# define get_no_modify() Perl_get_no_modify(aTHX)
# define get_opargs() Perl_get_opargs(aTHX)
@@ -1062,8 +1104,8 @@
# define scalar(a) Perl_scalar(aTHX_ a)
# define scalarvoid(a) Perl_scalarvoid(aTHX_ a)
# define set_caret_X() Perl_set_caret_X(aTHX)
-# define set_numeric_standard() Perl_set_numeric_standard(aTHX)
-# define set_numeric_underlying() Perl_set_numeric_underlying(aTHX)
+# define set_numeric_standard(a,b) Perl_set_numeric_standard(aTHX_ a,b)
+# define set_numeric_underlying(a,b) Perl_set_numeric_underlying(aTHX_ a,b)
# define setfd_cloexec Perl_setfd_cloexec
# define setfd_cloexec_for_nonsysfd(a) Perl_setfd_cloexec_for_nonsysfd(aTHX_ a)
# define setfd_cloexec_or_inhexec_by_sysfdness(a) Perl_setfd_cloexec_or_inhexec_by_sysfdness(aTHX_ a)
@@ -1137,7 +1179,8 @@
# else
# define magic_regdatum_set(a,b) Perl_magic_regdatum_set(aTHX_ a,b)
# endif
-# if !defined(MULTIPLICITY) || defined(PERL_CORE)
+# if !defined(MULTIPLICITY) || defined(PERL_CORE) || \
+ defined(PERL_WANT_VARARGS)
# define tied_method(a,b,c,d,e,...) Perl_tied_method(aTHX_ a,b,c,d,e,__VA_ARGS__)
# if defined(PERL_IN_REGCOMP_C)
# define re_croak(a,...) S_re_croak(aTHX_ a,__VA_ARGS__)
@@ -1156,34 +1199,17 @@
# if defined(PERL_IN_AV_C)
# define get_aux_mg(a) S_get_aux_mg(aTHX_ a)
# endif
-# if defined(PERL_IN_DEB_C)
-# define deb_stack_n(a,b,c,d,e) S_deb_stack_n(aTHX_ a,b,c,d,e)
+# if defined(PERL_IN_BUILTIN_C) || defined(PERL_IN_OP_C)
+# define finish_export_lexical() Perl_finish_export_lexical(aTHX)
+# define import_builtin_bundle(a) Perl_import_builtin_bundle(aTHX_ a)
+# define prepare_export_lexical() Perl_prepare_export_lexical(aTHX)
# endif
-# if defined(PERL_IN_DOIO_C)
-# define argvout_final(a,b,c) S_argvout_final(aTHX_ a,b,c)
-# define exec_failed(a,b,c) S_exec_failed(aTHX_ a,b,c)
-# define ingroup(a,b) S_ingroup(aTHX_ a,b)
-# define openn_cleanup(a,b,c,d,e,f,g,h,i,j,k,l,m) S_openn_cleanup(aTHX_ a,b,c,d,e,f,g,h,i,j,k,l,m)
-# define openn_setup(a,b,c,d,e,f) S_openn_setup(aTHX_ a,b,c,d,e,f)
-# endif
-# if defined(PERL_IN_DOOP_C)
-# define do_trans_complex(a,b) S_do_trans_complex(aTHX_ a,b)
-# define do_trans_count(a,b) S_do_trans_count(aTHX_ a,b)
-# define do_trans_count_invmap(a,b) S_do_trans_count_invmap(aTHX_ a,b)
-# define do_trans_invmap(a,b) S_do_trans_invmap(aTHX_ a,b)
-# define do_trans_simple(a,b) S_do_trans_simple(aTHX_ a,b)
-# endif
-# if defined(PERL_IN_DUMP_C)
-# define deb_curcv(a) S_deb_curcv(aTHX_ a)
-# define debprof(a) S_debprof(aTHX_ a)
-# define pm_description(a) S_pm_description(aTHX_ a)
-# define sequence_num(a) S_sequence_num(aTHX_ a)
-# endif
-# if defined(PERL_IN_GLOBALS_C) || defined(PERL_IN_OP_C) || \
- defined(PERL_IN_PEEP_C)
+# if defined(PERL_IN_CLASS_C) || defined(PERL_IN_GLOBALS_C) || \
+ defined(PERL_IN_OP_C) || defined(PERL_IN_PEEP_C)
# define ck_anoncode(a) Perl_ck_anoncode(aTHX_ a)
# define ck_backtick(a) Perl_ck_backtick(aTHX_ a)
# define ck_bitop(a) Perl_ck_bitop(aTHX_ a)
+# define ck_classname(a) Perl_ck_classname(aTHX_ a)
# define ck_cmp(a) Perl_ck_cmp(aTHX_ a)
# define ck_concat(a) Perl_ck_concat(aTHX_ a)
# define ck_defined(a) Perl_ck_defined(aTHX_ a)
@@ -1230,8 +1256,34 @@
# define ck_tell(a) Perl_ck_tell(aTHX_ a)
# define ck_trunc(a) Perl_ck_trunc(aTHX_ a)
# define ck_trycatch(a) Perl_ck_trycatch(aTHX_ a)
-# endif /* defined(PERL_IN_GLOBALS_C) || defined(PERL_IN_OP_C) ||
- defined(PERL_IN_PEEP_C) */
+# endif /* defined(PERL_IN_CLASS_C) || defined(PERL_IN_GLOBALS_C) ||
+ defined(PERL_IN_OP_C) || defined(PERL_IN_PEEP_C) */
+# if defined(PERL_IN_DEB_C)
+# define deb_stack_n(a,b,c,d,e,f) S_deb_stack_n(aTHX_ a,b,c,d,e,f)
+# endif
+# if defined(PERL_IN_DOIO_C)
+# define argvout_final(a,b,c) S_argvout_final(aTHX_ a,b,c)
+# define exec_failed(a,b,c) S_exec_failed(aTHX_ a,b,c)
+# define is_fork_open S_is_fork_open
+# define openn_cleanup(a,b,c,d,e,f,g,h,i,j,k,l,m) S_openn_cleanup(aTHX_ a,b,c,d,e,f,g,h,i,j,k,l,m)
+# define openn_setup(a,b,c,d,e,f) S_openn_setup(aTHX_ a,b,c,d,e,f)
+# if !defined(DOSISH)
+# define ingroup(a,b) S_ingroup(aTHX_ a,b)
+# endif
+# endif
+# if defined(PERL_IN_DOOP_C)
+# define do_trans_complex(a,b) S_do_trans_complex(aTHX_ a,b)
+# define do_trans_count(a,b) S_do_trans_count(aTHX_ a,b)
+# define do_trans_count_invmap(a,b) S_do_trans_count_invmap(aTHX_ a,b)
+# define do_trans_invmap(a,b) S_do_trans_invmap(aTHX_ a,b)
+# define do_trans_simple(a,b) S_do_trans_simple(aTHX_ a,b)
+# endif
+# if defined(PERL_IN_DUMP_C)
+# define deb_curcv(a) S_deb_curcv(aTHX_ a)
+# define debprof(a) S_debprof(aTHX_ a)
+# define pm_description(a) S_pm_description(aTHX_ a)
+# define sequence_num(a) S_sequence_num(aTHX_ a)
+# endif
# if defined(PERL_IN_GV_C)
# define find_default_stash(a,b,c,d,e,f) S_find_default_stash(aTHX_ a,b,c,d,e,f)
# define gv_fetchmeth_internal(a,b,c,d,e,f) S_gv_fetchmeth_internal(aTHX_ a,b,c,d,e,f)
@@ -1263,26 +1315,42 @@
# endif /* defined(PERL_IN_HV_C) */
# if defined(PERL_IN_LOCALE_C)
# define get_locale_string_utf8ness_i(a,b,c,d) S_get_locale_string_utf8ness_i(aTHX_ a,b,c,d)
+# define ints_to_tm(a,b,c,d,e,f,g,h,i,j,k) S_ints_to_tm(aTHX_ a,b,c,d,e,f,g,h,i,j,k)
# define is_locale_utf8(a) S_is_locale_utf8(aTHX_ a)
-# if defined(HAS_LOCALECONV)
-# define my_localeconv(a) S_my_localeconv(aTHX_ a)
-# define populate_hash_from_localeconv(a,b,c,d,e) S_populate_hash_from_localeconv(aTHX_ a,b,c,d,e)
+# define my_localeconv(a) S_my_localeconv(aTHX_ a)
+# define populate_hash_from_C_localeconv(a,b,c,d,e) S_populate_hash_from_C_localeconv(aTHX_ a,b,c,d,e)
+# define strftime8(a,b,c,d,e,f,g) S_strftime8(aTHX_ a,b,c,d,e,f,g)
+# define strftime_tm(a,b,c,d) S_strftime_tm(aTHX_ a,b,c,d)
+# define sv_strftime_common(a,b,c) S_sv_strftime_common(aTHX_ a,b,c)
+# if defined(HAS_MISSING_LANGINFO_ITEM_) || !defined(HAS_NL_LANGINFO)
+# define emulate_langinfo(a,b,c,d) S_emulate_langinfo(aTHX_ a,b,c,d)
# endif
# if defined(USE_LOCALE)
-# define get_category_index S_get_category_index
-# define get_category_index_nowarn S_get_category_index_nowarn
+# define calculate_LC_ALL_string(a,b,c,d) S_calculate_LC_ALL_string(aTHX_ a,b,c,d)
+# define external_call_langinfo(a,b,c) S_external_call_langinfo(aTHX_ a,b,c)
+# define get_category_index_helper(a,b,c) S_get_category_index_helper(aTHX_ a,b,c)
# define mortalized_pv_copy(a) S_mortalized_pv_copy(aTHX_ a)
+# define native_querylocale_i(a) S_native_querylocale_i(aTHX_ a)
# define new_LC_ALL(a,b) S_new_LC_ALL(aTHX_ a,b)
-# define save_to_buffer S_save_to_buffer
-# define setlocale_failure_panic_i(a,b,c,d,e) S_setlocale_failure_panic_i(aTHX_ a,b,c,d,e)
-# define stdize_locale(a,b,c,d,e) S_stdize_locale(aTHX_ a,b,c,d,e)
+# define output_check_environment_warning(a,b,c) S_output_check_environment_warning(aTHX_ a,b,c)
+# define parse_LC_ALL_string(a,b,c,d,e,f) S_parse_LC_ALL_string(aTHX_ a,b,c,d,e,f)
+# define save_to_buffer(a,b,c) S_save_to_buffer(aTHX_ a,b,c)
+# define set_save_buffer_min_size(a,b,c) S_set_save_buffer_min_size(aTHX_ a,b,c)
+# define setlocale_failure_panic_via_i(a,b,c,d,e,f,g) S_setlocale_failure_panic_via_i(aTHX_ a,b,c,d,e,f,g)
# if defined(DEBUGGING)
# define my_setlocale_debug_string_i(a,b,c,d) S_my_setlocale_debug_string_i(aTHX_ a,b,c,d)
# endif
-# if defined(HAS_NL_LANGINFO) || defined(HAS_NL_LANGINFO_L)
-# define my_langinfo_i(a,b,c,d,e,f) S_my_langinfo_i(aTHX_ a,b,c,d,e,f)
+# if defined(HAS_LOCALECONV) && \
+ ( defined(USE_LOCALE_MONETARY) || defined(USE_LOCALE_NUMERIC) )
+# define populate_hash_from_localeconv(a,b,c,d,e) S_populate_hash_from_localeconv(aTHX_ a,b,c,d,e)
+# endif
+# if defined(HAS_NL_LANGINFO)
+# define langinfo_sv_i(a,b,c,d,e) S_langinfo_sv_i(aTHX_ a,b,c,d,e)
+# endif
+# if defined(LC_ALL)
+# define give_perl_locale_control(a,b) S_give_perl_locale_control(aTHX_ a,b)
# else
-# define my_langinfo_i(a,b,c,d,e,f) S_my_langinfo_i(aTHX_ a,b,c,d,e,f)
+# define give_perl_locale_control(a,b) S_give_perl_locale_control(aTHX_ a,b)
# endif
# if defined(USE_LOCALE_COLLATE)
# define new_collate(a,b) S_new_collate(aTHX_ a,b)
@@ -1301,42 +1369,30 @@
# define get_LC_ALL_display() S_get_LC_ALL_display(aTHX)
# endif
# if defined(USE_POSIX_2008_LOCALE)
-# define emulate_setlocale_i(a,b,c,d) S_emulate_setlocale_i(aTHX_ a,b,c,d)
-# define my_querylocale_i(a) S_my_querylocale_i(aTHX_ a)
-# define setlocale_from_aggregate_LC_ALL(a,b) S_setlocale_from_aggregate_LC_ALL(aTHX_ a,b)
+# define bool_setlocale_2008_i(a,b,c) S_bool_setlocale_2008_i(aTHX_ a,b,c)
+# define querylocale_2008_i(a,b) S_querylocale_2008_i(aTHX_ a,b)
# define use_curlocale_scratch() S_use_curlocale_scratch(aTHX)
-# if defined(USE_QUERYLOCALE)
-# define calculate_LC_ALL(a) S_calculate_LC_ALL(aTHX_ a)
-# else
+# if !defined(USE_QUERYLOCALE)
# define update_PL_curlocales_i(a,b,c) S_update_PL_curlocales_i(aTHX_ a,b,c)
# endif
-# elif defined(USE_LOCALE_THREADS) && \
- !defined(USE_THREAD_SAFE_LOCALE) && \
- !defined(USE_THREAD_SAFE_LOCALE_EMULATION) /* &&
- !defined(USE_POSIX_2008_LOCALE) */
+# elif defined(USE_LOCALE_THREADS) && \
+ !defined(USE_THREAD_SAFE_LOCALE) && \
+ !defined(USE_THREAD_SAFE_LOCALE_EMULATION)
+# define less_dicey_bool_setlocale_r(a,b) S_less_dicey_bool_setlocale_r(aTHX_ a,b)
# define less_dicey_setlocale_r(a,b) S_less_dicey_setlocale_r(aTHX_ a,b)
-# define less_dicey_void_setlocale_i(a,b,c) S_less_dicey_void_setlocale_i(aTHX_ a,b,c)
-# if 0
-# define less_dicey_bool_setlocale_r(a,b) S_less_dicey_bool_setlocale_r(aTHX_ a,b)
-# endif
# endif
-# if !( defined(USE_POSIX_2008_LOCALE) && defined(USE_QUERYLOCALE) ) && \
- ( !defined(LC_ALL) || defined(USE_POSIX_2008_LOCALE) || \
- defined(WIN32) )
-# define calculate_LC_ALL(a) S_calculate_LC_ALL(aTHX_ a)
-# endif
-# if defined(WIN32)
+# if defined(WIN32) || defined(WIN32_USE_FAKE_OLD_MINGW_LOCALES)
# define Win_byte_string_to_wstring S_Win_byte_string_to_wstring
# define Win_wstring_to_byte_string S_Win_wstring_to_byte_string
# define win32_setlocale(a,b) S_win32_setlocale(aTHX_ a,b)
# define wrap_wsetlocale(a,b) S_wrap_wsetlocale(aTHX_ a,b)
# endif
-# if defined(WIN32) || \
+# if defined(WIN32) || defined(WIN32_USE_FAKE_OLD_MINGW_LOCALES) || \
( defined(USE_POSIX_2008_LOCALE) && !defined(USE_QUERYLOCALE) )
# define find_locale_from_environment(a) S_find_locale_from_environment(aTHX_ a)
# endif
# endif /* defined(USE_LOCALE) */
-# if defined(USE_POSIX_2008_LOCALE) || defined(DEBUGGING)
+# if defined(USE_LOCALE) || defined(DEBUGGING)
# define get_displayable_string(a,b,c) S_get_displayable_string(aTHX_ a,b,c)
# endif
# endif /* defined(PERL_IN_LOCALE_C) */
@@ -1378,6 +1434,7 @@
# define gen_constant_list(a) S_gen_constant_list(aTHX_ a)
# define inplace_aassign(a) S_inplace_aassign(aTHX_ a)
# define is_handle_constructor S_is_handle_constructor
+# define is_standard_filehandle_name S_is_standard_filehandle_name
# define listkids(a) S_listkids(aTHX_ a)
# define looks_like_bool(a) S_looks_like_bool(aTHX_ a)
# define modkids(a,b) S_modkids(aTHX_ a,b)
@@ -1690,7 +1747,6 @@
# define mg_find_mglob(a) Perl_mg_find_mglob(aTHX_ a)
# define multiconcat_stringify(a) Perl_multiconcat_stringify(aTHX_ a)
# define multideref_stringify(a,b) Perl_multideref_stringify(aTHX_ a,b)
-# define my_strftime8_temp(a,b,c,d,e,f,g,h,i,j,k) Perl_my_strftime8_temp(aTHX_ a,b,c,d,e,f,g,h,i,j,k)
# define op_clear(a) Perl_op_clear(aTHX_ a)
# define qerror(a) Perl_qerror(aTHX_ a)
# define reg_named_buff(a,b,c,d) Perl_reg_named_buff(aTHX_ a,b,c,d)
@@ -1708,6 +1764,7 @@
# define skipspace_flags(a,b) Perl_skipspace_flags(aTHX_ a,b)
# define sv_magicext_mglob(a) Perl_sv_magicext_mglob(aTHX_ a)
# define sv_only_taint_gmagic Perl_sv_only_taint_gmagic
+# define sv_strftime_ints(a,b,c,d,e,f,g,h,i,j) Perl_sv_strftime_ints(aTHX_ a,b,c,d,e,f,g,h,i,j)
# define utf16_to_utf8_base(a,b,c,d,e,f) Perl_utf16_to_utf8_base(aTHX_ a,b,c,d,e,f)
# define utf8_to_utf16_base(a,b,c,d,e,f) Perl_utf8_to_utf16_base(aTHX_ a,b,c,d,e,f)
# define validate_proto(a,b,c,d) Perl_validate_proto(aTHX_ a,b,c,d)
@@ -1792,7 +1849,6 @@
# define invlist_highest_range_start S_invlist_highest_range_start
# define invlist_is_iterating S_invlist_is_iterating
# define invlist_lowest S_invlist_lowest
-# define is_ssc_worth_it Perl_is_ssc_worth_it
# define join_exact(a,b,c,d,e,f,g) Perl_join_exact(aTHX_ a,b,c,d,e,f,g)
# define make_trie(a,b,c,d,e,f,g,h) Perl_make_trie(aTHX_ a,b,c,d,e,f,g,h)
# define populate_anyof_bitmap_from_invlist(a,b) Perl_populate_anyof_bitmap_from_invlist(aTHX_ a,b)
@@ -1799,7 +1855,6 @@
# define reg_add_data Perl_reg_add_data
# define scan_commit(a,b,c,d) Perl_scan_commit(aTHX_ a,b,c,d)
# define set_ANYOF_arg(a,b,c,d,e) Perl_set_ANYOF_arg(aTHX_ a,b,c,d,e)
-# define ssc_finalize(a,b) Perl_ssc_finalize(aTHX_ a,b)
# define ssc_init(a,b) Perl_ssc_init(aTHX_ a,b)
# define study_chunk(a,b,c,d,e,f,g,h,i,j,k,l) Perl_study_chunk(aTHX_ a,b,c,d,e,f,g,h,i,j,k,l)
# if defined(PERL_IN_REGCOMP_TRIE_C) && defined(DEBUGGING)
@@ -1826,6 +1881,7 @@
# define handle_possible_posix(a,b,c,d,e) S_handle_possible_posix(aTHX_ a,b,c,d,e)
# define handle_regex_sets(a,b,c,d) S_handle_regex_sets(aTHX_ a,b,c,d)
# define handle_user_defined_property(a,b,c,d,e,f,g,h,i,j) S_handle_user_defined_property(aTHX_ a,b,c,d,e,f,g,h,i,j)
+# define is_ssc_worth_it S_is_ssc_worth_it
# define nextchar(a) S_nextchar(aTHX_ a)
# define optimize_regclass(a,b,c,d,e,f,g,h,i,j) S_optimize_regclass(aTHX_ a,b,c,d,e,f,g,h,i,j)
# define output_posix_warnings(a,b) S_output_posix_warnings(aTHX_ a,b)
@@ -1850,6 +1906,7 @@
# define regtail(a,b,c,d) S_regtail(aTHX_ a,b,c,d)
# define set_regex_pv(a,b) S_set_regex_pv(aTHX_ a,b)
# define skip_to_be_ignored_text(a,b,c) S_skip_to_be_ignored_text(aTHX_ a,b,c)
+# define ssc_finalize(a,b) S_ssc_finalize(aTHX_ a,b)
# if defined(DEBUGGING)
# define regnode_guts_debug(a,b,c) S_regnode_guts_debug(aTHX_ a,b,c)
# define regtail_study(a,b,c,d) S_regtail_study(aTHX_ a,b,c,d)
@@ -1947,7 +2004,8 @@
# if defined(DEBUGGING)
# define debug_start_match(a,b,c,d,e) S_debug_start_match(aTHX_ a,b,c,d,e)
# define dump_exec_pos(a,b,c,d,e,f,g) S_dump_exec_pos(aTHX_ a,b,c,d,e,f,g)
-# if !defined(MULTIPLICITY) || defined(PERL_CORE)
+# if !defined(MULTIPLICITY) || defined(PERL_CORE) || \
+ defined(PERL_WANT_VARARGS)
# define re_exec_indentf(a,...) Perl_re_exec_indentf(aTHX_ a,__VA_ARGS__)
# endif
# endif
@@ -1982,20 +2040,19 @@
# define check_regnode_after(a,b) Perl_check_regnode_after(aTHX_ a,b)
# define regnext(a) Perl_regnext(aTHX_ a)
# define regnode_after(a,b) Perl_regnode_after(aTHX_ a,b)
-# if defined(DEBUGGING)
-# if ( !defined(MULTIPLICITY) || defined(PERL_CORE) ) && \
- ( defined(PERL_CORE) || defined(PERL_EXT) )
+# if defined(DEBUGGING) && ( defined(PERL_CORE) || defined(PERL_EXT) )
+# define debug_peep(a,b,c,d,e) Perl_debug_peep(aTHX_ a,b,c,d,e)
+# define debug_show_study_flags(a,b,c) Perl_debug_show_study_flags(aTHX_ a,b,c)
+# define debug_studydata(a,b,c,d,e,f,g) Perl_debug_studydata(aTHX_ a,b,c,d,e,f,g)
+# define dumpuntil(a,b,c,d,e,f,g,h) Perl_dumpuntil(aTHX_ a,b,c,d,e,f,g,h)
+# define regprop(a,b,c,d,e) Perl_regprop(aTHX_ a,b,c,d,e)
+# if !defined(MULTIPLICITY) || defined(PERL_CORE) || \
+ defined(PERL_WANT_VARARGS)
# define re_indentf(a,...) Perl_re_indentf(aTHX_ a,__VA_ARGS__)
# define re_printf(...) Perl_re_printf(aTHX_ __VA_ARGS__)
# endif
-# if defined(PERL_CORE) || defined(PERL_EXT)
-# define debug_peep(a,b,c,d,e) Perl_debug_peep(aTHX_ a,b,c,d,e)
-# define debug_show_study_flags(a,b,c) Perl_debug_show_study_flags(aTHX_ a,b,c)
-# define debug_studydata(a,b,c,d,e,f,g) Perl_debug_studydata(aTHX_ a,b,c,d,e,f,g)
-# define dumpuntil(a,b,c,d,e,f,g,h) Perl_dumpuntil(aTHX_ a,b,c,d,e,f,g,h)
-# define regprop(a,b,c,d,e) Perl_regprop(aTHX_ a,b,c,d,e)
-# endif
-# endif /* defined(DEBUGGING) */
+# endif /* defined(DEBUGGING) &&
+ ( defined(PERL_CORE) || defined(PERL_EXT) ) */
# if defined(PERL_EXT_RE_BUILD)
# if defined(PERL_CORE) || defined(PERL_EXT)
# define get_re_gclass_aux_data(a,b,c,d,e,f) Perl_get_re_gclass_aux_data(aTHX_ a,b,c,d,e,f)
@@ -2034,6 +2091,8 @@
# define visit(a,b,c) S_visit(aTHX_ a,b,c)
# if defined(DEBUGGING)
# define del_sv(a) S_del_sv(aTHX_ a)
+# define sv_mark_arenas() Perl_sv_mark_arenas(aTHX)
+# define sv_sweep_arenas() Perl_sv_sweep_arenas(aTHX)
# endif
# if !defined(NV_PRESERVES_UV)
# if defined(DEBUGGING)
@@ -2082,6 +2141,9 @@
# define cx_topblock(a) Perl_cx_topblock(aTHX_ a)
# define gimme_V() Perl_gimme_V(aTHX)
# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+# if defined(PERL_RC_STACK)
+# define runops_wrap() Perl_runops_wrap(aTHX)
+# endif
# if defined(PERL_USE_3ARG_SIGHANDLER)
# define csighandler Perl_csighandler
# else
@@ -2152,6 +2214,10 @@
# define PerlIO_unread(a,b,c) Perl_PerlIO_unread(aTHX_ a,b,c)
# define PerlIO_write(a,b,c) Perl_PerlIO_write(aTHX_ a,b,c)
# endif /* defined(USE_PERLIO) */
+# if defined(USE_THREADS)
+# define thread_locale_init() Perl_thread_locale_init(aTHX)
+# define thread_locale_term() Perl_thread_locale_term(aTHX)
+# endif
# if defined(VMS) || defined(WIN32)
# define do_aspawn(a,b,c) Perl_do_aspawn(aTHX_ a,b,c)
# define do_spawn(a) Perl_do_spawn(aTHX_ a)
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/embedvar.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/embedvar.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/embedvar.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -150,8 +150,7 @@
# define PL_internal_random_state (vTHX->Iinternal_random_state)
# define PL_isarev (vTHX->Iisarev)
# define PL_known_layers (vTHX->Iknown_layers)
-# define PL_langinfo_buf (vTHX->Ilanginfo_buf)
-# define PL_langinfo_bufsize (vTHX->Ilanginfo_bufsize)
+# define PL_langinfo_sv (vTHX->Ilanginfo_sv)
# define PL_last_in_gv (vTHX->Ilast_in_gv)
# define PL_lastfd (vTHX->Ilastfd)
# define PL_lastgotoprobe (vTHX->Ilastgotoprobe)
@@ -159,6 +158,8 @@
# define PL_laststype (vTHX->Ilaststype)
# define PL_Latin1 (vTHX->ILatin1)
# define PL_LB_invlist (vTHX->ILB_invlist)
+# define PL_less_dicey_locale_buf (vTHX->Iless_dicey_locale_buf)
+# define PL_less_dicey_locale_bufsize (vTHX->Iless_dicey_locale_bufsize)
# define PL_LIO (vTHX->ILIO)
# define PL_locale_mutex_depth (vTHX->Ilocale_mutex_depth)
# define PL_localizing (vTHX->Ilocalizing)
@@ -261,6 +262,7 @@
# define PL_scopestack_ix (vTHX->Iscopestack_ix)
# define PL_scopestack_max (vTHX->Iscopestack_max)
# define PL_scopestack_name (vTHX->Iscopestack_name)
+# define PL_scratch_langinfo (vTHX->Iscratch_langinfo)
# define PL_scratch_locale_obj (vTHX->Iscratch_locale_obj)
# define PL_SCX_invlist (vTHX->ISCX_invlist)
# define PL_secondgv (vTHX->Isecondgv)
@@ -297,8 +299,6 @@
# define PL_stderrgv (vTHX->Istderrgv)
# define PL_stdingv (vTHX->Istdingv)
# define PL_StdIO (vTHX->IStdIO)
-# define PL_stdize_locale_buf (vTHX->Istdize_locale_buf)
-# define PL_stdize_locale_bufsize (vTHX->Istdize_locale_bufsize)
# define PL_strtab (vTHX->Istrtab)
# define PL_strxfrm_is_behaved (vTHX->Istrxfrm_is_behaved)
# define PL_strxfrm_max_cp (vTHX->Istrxfrm_max_cp)
@@ -329,7 +329,6 @@
# define PL_top_env (vTHX->Itop_env)
# define PL_toptarget (vTHX->Itoptarget)
# define PL_TR_SPECIAL_HANDLING_UTF8 (vTHX->ITR_SPECIAL_HANDLING_UTF8)
-# define PL_underlying_numeric_obj (vTHX->Iunderlying_numeric_obj)
# define PL_underlying_radix_sv (vTHX->Iunderlying_radix_sv)
# define PL_unicode (vTHX->Iunicode)
# define PL_unitcheckav (vTHX->Iunitcheckav)
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/feature.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/feature.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/feature.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -43,6 +43,7 @@
#define FEATURE_BUNDLE_527 5
#define FEATURE_BUNDLE_535 6
#define FEATURE_BUNDLE_537 7
+#define FEATURE_BUNDLE_539 8
#define FEATURE_BUNDLE_CUSTOM (HINT_FEATURE_MASK >> HINT_FEATURE_SHIFT)
/* this is preserved for testing and asserts */
@@ -65,7 +66,7 @@
#define FEATURE_FC_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_FC_BIT)) \
)
@@ -73,7 +74,7 @@
#define FEATURE_ISA_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_535 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_ISA_BIT)) \
)
@@ -81,7 +82,7 @@
#define FEATURE_SAY_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_SAY_BIT)) \
)
@@ -88,8 +89,9 @@
#define FEATURE_TRY_IS_ENABLED \
( \
- CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
- FEATURE_IS_ENABLED_MASK(FEATURE_TRY_BIT) \
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_539 \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED_MASK(FEATURE_TRY_BIT)) \
)
#define FEATURE_CLASS_IS_ENABLED \
@@ -107,7 +109,7 @@
#define FEATURE_STATE_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_STATE_BIT)) \
)
@@ -123,7 +125,7 @@
#define FEATURE_BITWISE_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_527 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_BITWISE_BIT)) \
)
@@ -138,7 +140,7 @@
#define FEATURE_EVALBYTES_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_EVALBYTES_BIT)) \
)
@@ -146,7 +148,7 @@
#define FEATURE_SIGNATURES_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_535 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_SIGNATURES_BIT)) \
)
@@ -154,7 +156,7 @@
#define FEATURE___SUB___IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE___SUB___BIT)) \
)
@@ -161,7 +163,8 @@
#define FEATURE_MODULE_TRUE_IS_ENABLED \
( \
- CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_537 \
+ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_537 && \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_MODULE_TRUE_BIT)) \
)
@@ -175,7 +178,7 @@
#define FEATURE_POSTDEREF_QQ_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_523 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_POSTDEREF_QQ_BIT)) \
)
@@ -183,7 +186,7 @@
#define FEATURE_UNIEVAL_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_UNIEVAL_BIT)) \
)
@@ -197,7 +200,7 @@
#define FEATURE_UNICODE_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_511 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_UNICODE_BIT)) \
)
@@ -227,15 +230,8 @@
#define CLEARFEATUREBITS() (PL_compiling.cop_features = 0)
-#define STOREFEATUREBITSHH(hh) \
- (hv_stores((hh), "feature/bits", newSVuv(PL_compiling.cop_features)))
+#define FETCHFEATUREBITSHH(hh) S_fetch_feature_bits_hh(aTHX_ (hh))
-#define FETCHFEATUREBITSHH(hh) \
- STMT_START { \
- SV **fbsv = hv_fetchs((hh), "feature/bits", FALSE); \
- PL_compiling.cop_features = fbsv ? SvUV(*fbsv) : 0; \
- } STMT_END
-
#endif /* PERL_CORE or PERL_EXT */
#ifdef PERL_IN_OP_C
@@ -245,6 +241,9 @@
SV *comp_ver = sv_newmortal();
PL_hints = (PL_hints &~ HINT_FEATURE_MASK)
| (
+ (sv_setnv(comp_ver, 5.039),
+ vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
+ ? FEATURE_BUNDLE_539 :
(sv_setnv(comp_ver, 5.037),
vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
? FEATURE_BUNDLE_537 :
@@ -275,7 +274,7 @@
}
#endif /* PERL_IN_OP_C */
-#ifdef PERL_IN_MG_C
+#if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_CTL_C)
#define magic_sethint_feature(keysv, keypv, keylen, valsv, valbool) \
S_magic_sethint_feature(aTHX_ (keysv), (keypv), (keylen), (valsv), (valbool))
@@ -449,6 +448,167 @@
}
#endif /* PERL_IN_MG_C */
+/* subject to change */
+struct perl_feature_bit {
+ const char *name;
+ STRLEN namelen;
+ U32 mask;
+};
+
+#ifdef PERL_IN_PP_CTL_C
+
+static const struct perl_feature_bit
+PL_feature_bits[] = {
+ {
+ /* feature bareword_filehandles */
+ "feature_bareword_filehandles",
+ STRLENs("feature_bareword_filehandles"),
+ FEATURE_BAREWORD_FILEHANDLES_BIT
+ },
+ {
+ /* feature bitwise */
+ "feature_bitwise",
+ STRLENs("feature_bitwise"),
+ FEATURE_BITWISE_BIT
+ },
+ {
+ /* feature class */
+ "feature_class",
+ STRLENs("feature_class"),
+ FEATURE_CLASS_BIT
+ },
+ {
+ /* feature current_sub */
+ "feature___SUB__",
+ STRLENs("feature___SUB__"),
+ FEATURE___SUB___BIT
+ },
+ {
+ /* feature declared_refs */
+ "feature_myref",
+ STRLENs("feature_myref"),
+ FEATURE_MYREF_BIT
+ },
+ {
+ /* feature defer */
+ "feature_defer",
+ STRLENs("feature_defer"),
+ FEATURE_DEFER_BIT
+ },
+ {
+ /* feature evalbytes */
+ "feature_evalbytes",
+ STRLENs("feature_evalbytes"),
+ FEATURE_EVALBYTES_BIT
+ },
+ {
+ /* feature extra_paired_delimiters */
+ "feature_more_delims",
+ STRLENs("feature_more_delims"),
+ FEATURE_MORE_DELIMS_BIT
+ },
+ {
+ /* feature fc */
+ "feature_fc",
+ STRLENs("feature_fc"),
+ FEATURE_FC_BIT
+ },
+ {
+ /* feature indirect */
+ "feature_indirect",
+ STRLENs("feature_indirect"),
+ FEATURE_INDIRECT_BIT
+ },
+ {
+ /* feature isa */
+ "feature_isa",
+ STRLENs("feature_isa"),
+ FEATURE_ISA_BIT
+ },
+ {
+ /* feature module_true */
+ "feature_module_true",
+ STRLENs("feature_module_true"),
+ FEATURE_MODULE_TRUE_BIT
+ },
+ {
+ /* feature multidimensional */
+ "feature_multidimensional",
+ STRLENs("feature_multidimensional"),
+ FEATURE_MULTIDIMENSIONAL_BIT
+ },
+ {
+ /* feature postderef_qq */
+ "feature_postderef_qq",
+ STRLENs("feature_postderef_qq"),
+ FEATURE_POSTDEREF_QQ_BIT
+ },
+ {
+ /* feature refaliasing */
+ "feature_refaliasing",
+ STRLENs("feature_refaliasing"),
+ FEATURE_REFALIASING_BIT
+ },
+ {
+ /* feature say */
+ "feature_say",
+ STRLENs("feature_say"),
+ FEATURE_SAY_BIT
+ },
+ {
+ /* feature signatures */
+ "feature_signatures",
+ STRLENs("feature_signatures"),
+ FEATURE_SIGNATURES_BIT
+ },
+ {
+ /* feature state */
+ "feature_state",
+ STRLENs("feature_state"),
+ FEATURE_STATE_BIT
+ },
+ {
+ /* feature switch */
+ "feature_switch",
+ STRLENs("feature_switch"),
+ FEATURE_SWITCH_BIT
+ },
+ {
+ /* feature try */
+ "feature_try",
+ STRLENs("feature_try"),
+ FEATURE_TRY_BIT
+ },
+ {
+ /* feature unicode_eval */
+ "feature_unieval",
+ STRLENs("feature_unieval"),
+ FEATURE_UNIEVAL_BIT
+ },
+ {
+ /* feature unicode_strings */
+ "feature_unicode",
+ STRLENs("feature_unicode"),
+ FEATURE_UNICODE_BIT
+ },
+ { NULL, 0, 0U }
+};
+
+PERL_STATIC_INLINE void
+S_fetch_feature_bits_hh(pTHX_ HV *hh) {
+ PL_compiling.cop_features = 0;
+
+ const struct perl_feature_bit *fb = PL_feature_bits;
+ while (fb->name) {
+ SV **svp = hv_fetch(hh, fb->name, (I32)fb->namelen, 0);
+ if (svp && SvTRUE(*svp))
+ PL_compiling.cop_features |= fb->mask;
+ ++fb;
+ }
+}
+
+#endif
+
#endif /* PERL_FEATURE_H_ */
/* ex: set ro ft=c: */
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/gv.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/gv.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/gv.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -158,6 +158,15 @@
/* GVf_INTRO is one-shot flag which indicates that the next assignment
of a reference to the glob is to be localised; it distinguishes
'local *g = $ref' from '*g = $ref'.
+
+ GVf_MULTI is used to implement the "used only once" warning. It is
+ always set on a glob when an existing name is referenced, and when
+ a name is created when the warning is disabled. A post parse scan
+ in gv_check() then reports any names where this isn't set.
+
+ GVf_ONCE_FATAL is set on a glob when it is created and fatal "used
+ only once" warnings are enabled, since PL_curcop no longer has the
+ fatal flag set at the point where the warnings are reported.
*/
#define GVf_INTRO 0x01
#define GVf_MULTI 0x02
@@ -168,6 +177,7 @@
#define GVf_IMPORTED_AV 0x20
#define GVf_IMPORTED_HV 0x40
#define GVf_IMPORTED_CV 0x80
+#define GVf_ONCE_FATAL 0x100
#define GvINTRO(gv) (GvFLAGS(gv) & GVf_INTRO)
#define GvINTRO_on(gv) (GvFLAGS(gv) |= GVf_INTRO)
@@ -201,6 +211,10 @@
#define GvIMPORTED_CV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_CV)
#define GvIMPORTED_CV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_CV)
+#define GvONCE_FATAL(gv) (GvFLAGS(gv) & GVf_ONCE_FATAL)
+#define GvONCE_FATAL_on(gv) (GvFLAGS(gv) |= GVf_ONCE_FATAL)
+#define GvONCE_FATAL_off(gv) (GvFLAGS(gv) &= ~GVf_ONCE_FATAL)
+
#ifndef PERL_CORE
# define GvIN_PAD(gv) 0
# define GvIN_PAD_on(gv) NOOP
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/handy.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/handy.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/handy.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -507,8 +507,8 @@
#endif
#define PERL_JNP_TO_DECIMAL_(maJor,miNor,Patch) \
- /* '10*' leaves room for things like alpha, beta, releases */ \
- (10 * ((maJor) * 1000000) + ((miNor) * 1000) + (Patch))
+ /* '10*' leaves room for things like alpha, beta, releases */ \
+ (10 * (((maJor) * 1000000) + ((miNor) * 1000) + (Patch)))
#define PERL_DECIMAL_VERSION_ \
PERL_JNP_TO_DECIMAL_(PERL_VERSION_MAJOR, PERL_VERSION_MINOR, \
PERL_VERSION_PATCH)
@@ -574,13 +574,13 @@
# define PERL_VERSION_LT(j,n,p) /* < '*' effectively means < 0 */ \
(PERL_DECIMAL_VERSION_ < PERL_JNP_TO_DECIMAL_( (j), \
(n), \
- (((p) == '*') ? 0 : p)))
+ (((p) == '*') ? 0 : (p))))
# define PERL_VERSION_GE(j,n,p) (! PERL_VERSION_LT(j,n,p))
-# define PERL_VERSION_LE(j,n,p) /* <= '*' effectively means < n+1 */ \
- (PERL_DECIMAL_VERSION_ < PERL_JNP_TO_DECIMAL_( (j), \
- (((p) == '*') ? ((n)+1) : (n)), \
- (((p) == '*') ? 0 : p)))
+# define PERL_VERSION_LE(j,n,p) /* <= '*' effectively means <= 999 */ \
+ (PERL_DECIMAL_VERSION_ <= PERL_JNP_TO_DECIMAL_( (j), \
+ (n), \
+ (((p) == '*') ? 999 : (p))))
# define PERL_VERSION_GT(j,n,p) (! PERL_VERSION_LE(j,n,p))
/*
@@ -2628,7 +2628,7 @@
=for apidoc Am|void|Newxz|void* ptr|int nitems|type
=for apidoc_item |void*|safecalloc|size_t nitems|size_t item_size
-The XSUB-writer's interface to the C C<malloc> function. The allocated
+The XSUB-writer's interface to the C C<calloc> function. The allocated
memory is zeroed with C<memzero>. See also C<L</Newx>>.
Memory obtained by this should B<ONLY> be freed with L</"Safefree">.
@@ -2688,7 +2688,8 @@
=for apidoc_section $utility
=for apidoc Amu|void|StructCopy|type *src|type *dest|type
-This is an architecture-independent macro to copy one structure to another.
+This is an architecture-independent macro that does a shallow copy of one
+structure to another.
=for apidoc Am|void|PoisonWith|void* dest|int nitems|type|U8 byte
@@ -3110,7 +3111,36 @@
(x) ^= ((x) << 26); \
} STMT_END
+#ifdef PERL_CORE
+/* Convenience macros for dealing with IV_MIN:
+ In two's complement system, the absolute value of IV_MIN (i.e. -IV_MIN)
+ cannot be represented in IV. Thus we cannot use simple negation
+ (like "-iv") if "iv" might be IV_MIN or -IV_MIN.
+ Note that expressions like "iv = -(UV)iv;" is also not portable
+ as "-(UV)iv" may not fit in IV range and attempt to convert such value
+ to IV might get implementation-defined result or raise a signal. */
+/* Negate IV in the range [IV_MIN, 0) to positive (absolute) UV value.
+ Written this way to avoid every subexpression never cause signed integer
+ overflow (even for two's complement), and make it possible to be compiled
+ into single negation by optimizing compilers. */
+# define NEGATE_2UV(iv) (ASSUME((iv) < 0), (UV)-((iv) + 1) + 1U)
+
+/* Absolute value of IV_MIN as UV. */
+# define ABS_IV_MIN NEGATE_2UV(IV_MIN)
+
+/* Negate UV in the range [0, abs(IV_MIN)] to zero or negative IV value
+ in the range [IV_MIN, 0]. Written this way to avoid casting non-IV value
+ into IV (which is either the result is implementation-defined or an
+ implementation-defined signal is raised). Note that "8" below is an
+ arbitrary value to force both branches of conditional operator to be
+ non-constant and eventually make it possible to be compiled into
+ single negation by optimizing compilers. */
+# define NEGATE_2IV(uv) (ASSUME((uv) <= ABS_IV_MIN), \
+ (uv) < 8U ? -(IV)(uv) : -(IV)((uv) - 8U) - 8)
+
+#endif /* PERL_CORE */
+
#endif /* PERL_HANDY_H_ */
/*
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/inline.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/inline.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/inline.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -216,6 +216,24 @@
}
+/* remove (AvARRAY(av) - AvALLOC(av)) offset from empty array */
+
+PERL_STATIC_INLINE void
+Perl_av_remove_offset(pTHX_ AV *av)
+{
+ PERL_ARGS_ASSERT_AV_REMOVE_OFFSET;
+ assert(AvFILLp(av) == -1);
+ SSize_t i = AvARRAY(av) - AvALLOC(av);
+ if (i) {
+ AvARRAY(av) = AvALLOC(av);
+ AvMAX(av) += i;
+#ifdef PERL_RC_STACK
+ Zero(AvALLOC(av), i, SV*);
+#endif
+ }
+}
+
+
/* ------------------------------- cv.h ------------------------------- */
/*
@@ -359,7 +377,7 @@
/* ------------------------------- pp.h ------------------------------- */
-PERL_STATIC_INLINE I32
+PERL_STATIC_INLINE Stack_off_t
Perl_TOPMARK(pTHX)
{
DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,
@@ -369,7 +387,7 @@
return *PL_markstack_ptr;
}
-PERL_STATIC_INLINE I32
+PERL_STATIC_INLINE Stack_off_t
Perl_POPMARK(pTHX)
{
DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,
@@ -380,6 +398,804 @@
return *PL_markstack_ptr--;
}
+/*
+=for apidoc_section $rpp
+
+=for apidoc rpp_extend
+Ensures that there is space on the stack to push C<n> items, extending it
+if necessary.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_extend(pTHX_ SSize_t n)
+{
+ PERL_ARGS_ASSERT_RPP_EXTEND;
+
+ EXTEND_HWM_SET(PL_stack_sp, n);
+#ifndef STRESS_REALLOC
+ if (UNLIKELY(_EXTEND_NEEDS_GROW(PL_stack_sp, n)))
+#endif
+ {
+ (void)stack_grow(PL_stack_sp, PL_stack_sp, n);
+ }
+}
+
+
+/*
+=for apidoc rpp_popfree_to
+
+Pop and free all items on the argument stack above C<sp>. On return,
+C<PL_stack_sp> will be equal to C<sp>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_to(pTHX_ SV **sp)
+{
+ PERL_ARGS_ASSERT_RPP_POPFREE_TO;
+
+ assert(sp <= PL_stack_sp);
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ while (PL_stack_sp > sp) {
+ SV *sv = *PL_stack_sp--;
+ SvREFCNT_dec(sv);
+ }
+#else
+ PL_stack_sp = sp;
+#endif
+}
+
+
+/*
+=for apidoc rpp_popfree_to_NN
+
+A variant of rpp_popfree_to() which assumes that all the pointers being
+popped off the stack are non-NULL.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_to_NN(pTHX_ SV **sp)
+{
+ PERL_ARGS_ASSERT_RPP_POPFREE_TO_NN;
+
+ assert(sp <= PL_stack_sp);
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ while (PL_stack_sp > sp) {
+ SV *sv = *PL_stack_sp--;
+ assert(sv);
+ SvREFCNT_dec_NN(sv);
+ }
+#else
+ PL_stack_sp = sp;
+#endif
+}
+
+
+/*
+=for apidoc rpp_popfree_1
+
+Pop and free the top item on the argument stack and update C<PL_stack_sp>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_1(pTHX)
+{
+ PERL_ARGS_ASSERT_RPP_POPFREE_1;
+
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ SV *sv = *PL_stack_sp--;
+ SvREFCNT_dec(sv);
+#else
+ PL_stack_sp--;
+#endif
+}
+
+
+/*
+=for apidoc rpp_popfree_1_NN
+
+A variant of rpp_popfree_1() which assumes that the pointer being popped
+off the stack is non-NULL.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_1_NN(pTHX)
+{
+ PERL_ARGS_ASSERT_RPP_POPFREE_1_NN;
+
+ assert(*PL_stack_sp);
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ SV *sv = *PL_stack_sp--;
+ SvREFCNT_dec_NN(sv);
+#else
+ PL_stack_sp--;
+#endif
+}
+
+
+/*
+=for apidoc rpp_popfree_2
+
+Pop and free the top two items on the argument stack and update
+C<PL_stack_sp>.
+
+=cut
+*/
+
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_2(pTHX)
+{
+ PERL_ARGS_ASSERT_RPP_POPFREE_2;
+
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ for (int i = 0; i < 2; i++) {
+ SV *sv = *PL_stack_sp--;
+ SvREFCNT_dec(sv);
+ }
+#else
+ PL_stack_sp -= 2;
+#endif
+}
+
+
+/*
+=for apidoc rpp_popfree_2_NN
+
+A variant of rpp_popfree_2() which assumes that the two pointers being
+popped off the stack are non-NULL.
+
+=cut
+*/
+
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_2_NN(pTHX)
+{
+ PERL_ARGS_ASSERT_RPP_POPFREE_2_NN;
+#ifdef PERL_RC_STACK
+ SV *sv2 = *PL_stack_sp--;
+ assert(sv2);
+ SV *sv1 = *PL_stack_sp;
+ assert(sv1);
+
+ assert(rpp_stack_is_rc());
+ U32 rc1 = SvREFCNT(sv1);
+ U32 rc2 = SvREFCNT(sv2);
+ /* This expression is intended to be true if either of rc1 or rc2 has
+ * the value 0 or 1, but using only a single branch test, rather
+ * than the two branches that a compiler would plant for a boolean
+ * expression. We are working on the assumption that, most of the
+ * time, neither of the args to a binary function will need to be
+ * freed - they're likely to lex vars, or PADTMPs or whatever.
+ * So give the CPU a single branch that is rarely taken. */
+ if (UNLIKELY( !(rc1>>1) + !(rc2>>1) ))
+ /* at least one of the old SVs needs freeing. Do it the long way */
+ Perl_rpp_free_2_(aTHX_ sv1, sv2, rc1, rc2);
+ else {
+ SvREFCNT(sv1) = rc1 - 1;
+ SvREFCNT(sv2) = rc2 - 1;
+ }
+ PL_stack_sp--;
+#else
+ PL_stack_sp -= 2;
+#endif
+}
+
+
+/*
+=for apidoc rpp_pop_1_norc
+
+Pop and return the top item off the argument stack and update
+C<PL_stack_sp>. It's similar to rpp_popfree_1(), except that it actually
+returns a value, and it I<doesn't> decrement the SV's reference count.
+On non-C<PERL_RC_STACK> builds it actually increments the SV's reference
+count.
+
+This is useful in cases where the popped value is immediately embedded
+somewhere e.g. via av_store(), allowing you skip decrementing and then
+immediately incrementing the reference count again (and risk prematurely
+freeing the SV if it had a RC of 1). On non-RC builds, the reference count
+bookkeeping still works too, which is why it should be used rather than
+a simple C<*PL_stack_sp-->.
+
+=cut
+*/
+
+PERL_STATIC_INLINE SV*
+Perl_rpp_pop_1_norc(pTHX)
+{
+ PERL_ARGS_ASSERT_RPP_POP_1_NORC
+
+ SV *sv = *PL_stack_sp--;
+
+#ifndef PERL_RC_STACK
+ SvREFCNT_inc(sv);
+#else
+ assert(rpp_stack_is_rc());
+#endif
+ return sv;
+}
+
+
+
+/*
+=for apidoc rpp_push_1
+=for apidoc_item rpp_push_IMM
+=for apidoc_item rpp_push_2
+=for apidoc_item rpp_xpush_1
+=for apidoc_item rpp_xpush_IMM
+=for apidoc_item rpp_xpush_2
+
+Push one or two SVs onto the stack, incrementing their reference counts
+and updating C<PL_stack_sp>. With the C<x> variants, it extends the stack
+first. The C<IMM> variants assume that the single argument is an immortal
+such as <&PL_sv_undef> and, for efficiency, will skip incrementing its
+reference count.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_push_1(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_PUSH_1;
+
+ *++PL_stack_sp = sv;
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ SvREFCNT_inc_simple_void_NN(sv);
+#endif
+}
+
+PERL_STATIC_INLINE void
+Perl_rpp_push_IMM(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_PUSH_IMM;
+
+ assert(SvIMMORTAL(sv));
+ *++PL_stack_sp = sv;
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+#endif
+}
+
+PERL_STATIC_INLINE void
+Perl_rpp_push_2(pTHX_ SV *sv1, SV *sv2)
+{
+ PERL_ARGS_ASSERT_RPP_PUSH_2;
+
+ *++PL_stack_sp = sv1;
+ *++PL_stack_sp = sv2;
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ SvREFCNT_inc_simple_void_NN(sv1);
+ SvREFCNT_inc_simple_void_NN(sv2);
+#endif
+}
+
+PERL_STATIC_INLINE void
+Perl_rpp_xpush_1(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_XPUSH_1;
+
+ rpp_extend(1);
+ rpp_push_1(sv);
+}
+
+PERL_STATIC_INLINE void
+Perl_rpp_xpush_IMM(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_XPUSH_IMM;
+
+ rpp_extend(1);
+ rpp_push_IMM(sv);
+}
+
+PERL_STATIC_INLINE void
+Perl_rpp_xpush_2(pTHX_ SV *sv1, SV *sv2)
+{
+ PERL_ARGS_ASSERT_RPP_XPUSH_2;
+
+ rpp_extend(2);
+ rpp_push_2(sv1, sv2);
+}
+
+
+/*
+=for apidoc rpp_push_1_norc
+
+Push C<sv> onto the stack without incrementing its reference count, and
+update C<PL_stack_sp>. On non-PERL_RC_STACK builds, mortalise too.
+
+This is most useful where an SV has just been created and already has a
+reference count of 1, but has not yet been anchored anywhere.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_push_1_norc(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_PUSH_1;
+
+ *++PL_stack_sp = sv;
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+#else
+ sv_2mortal(sv);
+#endif
+}
+
+
+/*
+=for apidoc rpp_replace_1_1
+=for apidoc_item rpp_replace_1_1_NN
+=for apidoc_item rpp_replace_1_IMM_NN
+
+Replace the current top stack item with C<sv>, while suitably adjusting
+reference counts. Equivalent to rpp_popfree_1(); rpp_push_1(sv), but
+is more efficient and handles both SVs being the same.
+
+The C<_NN> variant assumes that the pointer on the stack to the SV being
+freed is non-NULL.
+
+The C<IMM_NN> variant is like the C<_NN> variant, but in addition, assumes
+that the single argument is an immortal such as <&PL_sv_undef> and, for
+efficiency, will skip incrementing its reference count.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_1_1(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_REPLACE_1_1;
+
+ assert(sv);
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ SV *oldsv = *PL_stack_sp;
+ *PL_stack_sp = sv;
+ SvREFCNT_inc_simple_void_NN(sv);
+ SvREFCNT_dec(oldsv);
+#else
+ *PL_stack_sp = sv;
+#endif
+}
+
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_1_1_NN(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_REPLACE_1_1_NN;
+
+ assert(sv);
+ assert(*PL_stack_sp);
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ SV *oldsv = *PL_stack_sp;
+ *PL_stack_sp = sv;
+ SvREFCNT_inc_simple_void_NN(sv);
+ SvREFCNT_dec_NN(oldsv);
+#else
+ *PL_stack_sp = sv;
+#endif
+}
+
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_1_IMM_NN(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_REPLACE_1_IMM_NN;
+
+ assert(sv);
+ assert(SvIMMORTAL(sv));
+ assert(*PL_stack_sp);
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ SV *oldsv = *PL_stack_sp;
+ *PL_stack_sp = sv;
+ SvREFCNT_dec_NN(oldsv);
+#else
+ *PL_stack_sp = sv;
+#endif
+}
+
+
+/*
+=for apidoc rpp_replace_2_1
+=for apidoc_item rpp_replace_2_1_NN
+=for apidoc_item rpp_replace_2_IMM_NN
+
+Replace the current top to stacks item with C<sv>, while suitably
+adjusting reference counts. Equivalent to rpp_popfree_2(); rpp_push_1(sv),
+but is more efficient and handles SVs being the same.
+
+The C<_NN> variant assumes that the pointers on the stack to the SVs being
+freed are non-NULL.
+
+The C<IMM_NN> variant is like the C<_NN> variant, but in addition, assumes
+that the single argument is an immortal such as <&PL_sv_undef> and, for
+efficiency, will skip incrementing its reference count.
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_2_1(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_REPLACE_2_1;
+
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ /* replace PL_stack_sp[-1] first; leave PL_stack_sp[0] in place while
+ * we free [-1], so if an exception occurs, [0] will still be freed.
+ */
+ SV *oldsv = PL_stack_sp[-1];
+ PL_stack_sp[-1] = sv;
+ SvREFCNT_inc_simple_void_NN(sv);
+ SvREFCNT_dec(oldsv);
+ oldsv = *PL_stack_sp--;
+ SvREFCNT_dec(oldsv);
+#else
+ *--PL_stack_sp = sv;
+#endif
+}
+
+
+/* Private helper function for _NN and _IMM_NN variants.
+ * Assumes sv has already had its ref count incremented,
+ * ready for being put on the stack.
+ * Intended to be small and fast, since it's inlined into many hot parts of
+ * code.
+ */
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_2_1_COMMON(pTHX_ SV *sv)
+{
+
+ assert(sv);
+#ifdef PERL_RC_STACK
+ SV *sv2 = *PL_stack_sp--;
+ assert(sv2);
+ SV *sv1 = *PL_stack_sp;
+ assert(sv1);
+
+ *PL_stack_sp = sv;
+ assert(rpp_stack_is_rc());
+ U32 rc1 = SvREFCNT(sv1);
+ U32 rc2 = SvREFCNT(sv2);
+ /* This expression is intended to be true if either of rc1 or rc2 has
+ * the value 0 or 1, but using only a single branch test, rather
+ * than the two branches that a compiler would plant for a boolean
+ * expression. We are working on the assumption that, most of the
+ * time, neither of the args to a binary function will need to be
+ * freed - they're likely to lex vars, or PADTMPs or whatever.
+ * So give the CPU a single branch that is rarely taken. */
+ if (UNLIKELY( !(rc1>>1) + !(rc2>>1) ))
+ /* at least one of the old SVs needs freeing. Do it the long way */
+ Perl_rpp_free_2_(aTHX_ sv1, sv2, rc1, rc2);
+ else {
+ SvREFCNT(sv1) = rc1 - 1;
+ SvREFCNT(sv2) = rc2 - 1;
+ }
+#else
+ *--PL_stack_sp = sv;
+#endif
+}
+
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_2_1_NN(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_REPLACE_2_1_NN;
+
+ assert(sv);
+#ifdef PERL_RC_STACK
+ SvREFCNT_inc_simple_void_NN(sv);
+#endif
+ rpp_replace_2_1_COMMON(sv);
+}
+
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_2_IMM_NN(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_REPLACE_2_IMM_NN;
+
+ assert(sv);
+ assert(SvIMMORTAL(sv));
+ rpp_replace_2_1_COMMON(sv);
+}
+
+
+/*
+=for apidoc rpp_replace_at
+
+Replace the SV at address sp within the stack with C<sv>, while suitably
+adjusting reference counts. Equivalent to C<*sp = sv>, except with proper
+reference count handling.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_at(pTHX_ SV **sp, SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_REPLACE_AT;
+
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ SV *oldsv = *sp;
+ *sp = sv;
+ SvREFCNT_inc_simple_void_NN(sv);
+ SvREFCNT_dec(oldsv);
+#else
+ *sp = sv;
+#endif
+}
+
+
+/*
+=for apidoc rpp_replace_at_NN
+
+A variant of rpp_replace_at() which assumes that the SV pointer on the
+stack is non-NULL.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_at_NN(pTHX_ SV **sp, SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_REPLACE_AT_NN;
+
+ assert(sv);
+ assert(*sp);
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ SV *oldsv = *sp;
+ *sp = sv;
+ SvREFCNT_inc_simple_void_NN(sv);
+ SvREFCNT_dec_NN(oldsv);
+#else
+ *sp = sv;
+#endif
+}
+
+
+/*
+=for apidoc rpp_replace_at_norc
+
+Replace the SV at address sp within the stack with C<sv>, while suitably
+adjusting the reference count of the old SV. Equivalent to C<*sp = sv>,
+except with proper reference count handling.
+
+C<sv>'s reference count doesn't get incremented. On non-C<PERL_RC_STACK>
+builds, it gets mortalised too.
+
+This is most useful where an SV has just been created and already has a
+reference count of 1, but has not yet been anchored anywhere.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_at_norc(pTHX_ SV **sp, SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_REPLACE_AT_NORC;
+
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ SV *oldsv = *sp;
+ *sp = sv;
+ SvREFCNT_dec(oldsv);
+#else
+ *sp = sv;
+ sv_2mortal(sv);
+#endif
+}
+
+
+/*
+=for apidoc rpp_replace_at_norc_NN
+
+A variant of rpp_replace_at_norc() which assumes that the SV pointer on the
+stack is non-NULL.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_at_norc_NN(pTHX_ SV **sp, SV *sv)
+{
+ PERL_ARGS_ASSERT_RPP_REPLACE_AT_NORC_NN;
+
+ assert(*sp);
+#ifdef PERL_RC_STACK
+ assert(rpp_stack_is_rc());
+ SV *oldsv = *sp;
+ *sp = sv;
+ SvREFCNT_dec_NN(oldsv);
+#else
+ *sp = sv;
+ sv_2mortal(sv);
+#endif
+}
+
+
+/*
+=for apidoc rpp_context
+
+Impose void, scalar or list context on the stack.
+First, pop C<extra> items off the stack, then when C<gimme> is:
+C<G_LIST>: return as-is.
+C<G_VOID>: pop everything back to C<mark>
+C<G_SCALAR>: move the top stack item (or C<&PL_sv_undef> if none) to
+C<mark+1> and free everything above it.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_rpp_context(pTHX_ SV **mark, U8 gimme, SSize_t extra)
+{
+ PERL_ARGS_ASSERT_RPP_CONTEXT;
+ assert(extra >= 0);
+ assert(mark <= PL_stack_sp - extra);
+
+ if (gimme == G_LIST)
+ mark = PL_stack_sp - extra;
+ else if (gimme == G_SCALAR) {
+ SV **svp = PL_stack_sp - extra;
+ mark++;
+ if (mark > svp) {
+ /* empty list (plus extra) */
+ rpp_popfree_to(svp);
+ rpp_extend(1);
+ *++PL_stack_sp = &PL_sv_undef;
+ return;
+ }
+ /* swap top and bottom list items */
+ SV *top = *svp;
+ *svp = *mark;
+ *mark = top;
+ }
+ rpp_popfree_to(mark);
+}
+
+
+
+
+/*
+=for apidoc rpp_try_AMAGIC_1
+=for apidoc_item rpp_try_AMAGIC_2
+
+Check whether either of the one or two SVs at the top of the stack is
+magical or a ref, and in either case handle it specially: invoke get
+magic, call an overload method, or replace a ref with a temporary numeric
+value, as appropriate. If this function returns true, it indicates that
+the correct return value is already on the stack. Intended to be used at
+the beginning of the PP function for unary or binary ops.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+Perl_rpp_try_AMAGIC_1(pTHX_ int method, int flags)
+{
+ return UNLIKELY((SvFLAGS(*PL_stack_sp) & (SVf_ROK|SVs_GMG)))
+ && Perl_try_amagic_un(aTHX_ method, flags);
+}
+
+PERL_STATIC_INLINE bool
+Perl_rpp_try_AMAGIC_2(pTHX_ int method, int flags)
+{
+ return UNLIKELY(((SvFLAGS(PL_stack_sp[-1])|SvFLAGS(PL_stack_sp[0]))
+ & (SVf_ROK|SVs_GMG)))
+ && Perl_try_amagic_bin(aTHX_ method, flags);
+}
+
+
+/*
+=for apidoc rpp_stack_is_rc
+
+Returns a boolean value indicating whether the stack is currently
+reference-counted. Note that if the stack is split (bottom half RC, top
+half non-RC), this function returns false, even if the top half currently
+contains zero items.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+Perl_rpp_stack_is_rc(pTHX)
+{
+#ifdef PERL_RC_STACK
+ return AvREAL(PL_curstack) && !PL_curstackinfo->si_stack_nonrc_base;
+#else
+ return 0;
+#endif
+
+}
+
+
+/*
+=for apidoc rpp_is_lone
+
+Indicates whether the stacked SV C<sv> (assumed to be not yet popped off
+the stack) is only kept alive due to a single reference from the argument
+stack and/or and the temps stack.
+
+This can used for example to decide whether the copying of return values
+in rvalue context can be skipped, or whether it shouldn't be assigned to
+in lvalue context.
+
+=cut
+*/
+
+
+PERL_STATIC_INLINE bool
+Perl_rpp_is_lone(pTHX_ SV *sv)
+{
+#ifdef PERL_RC_STACK
+ /* note that rpp_is_lone() can be used in wrapped pp functions,
+ * where technically the stack is no longer ref-counted; but because
+ * the args are non-RC copies of RC args further down the stack, we
+ * can't be in a *completely* non-ref stack.
+ */
+ assert(AvREAL(PL_curstack));
+#endif
+
+ return SvREFCNT(sv) <= cBOOL(SvTEMP(sv))
+#ifdef PERL_RC_STACK
+ + 1
+ && !SvIMMORTAL(sv) /* PL_sv_undef etc are never stealable */
+#endif
+ ;
+}
+
+
+/*
+=for apidoc rpp_invoke_xs
+
+Call the XS function associated with C<cv>. Wraps the call if necessary to
+handle XS functions which are not aware of reference-counted stacks.
+
+=cut
+*/
+
+
+PERL_STATIC_INLINE void
+Perl_rpp_invoke_xs(pTHX_ CV *cv)
+{
+ PERL_ARGS_ASSERT_RPP_INVOKE_XS;
+
+#ifdef PERL_RC_STACK
+ if (!CvXS_RCSTACK(cv))
+ Perl_xs_wrap(aTHX_ CvXSUB(cv), cv);
+ else
+#endif
+ CvXSUB(cv)(aTHX_ cv);
+}
+
+
+
+
/* ----------------------------- regexp.h ----------------------------- */
/* PVLVs need to act as a superset of all scalar types - they are basically
@@ -686,13 +1502,16 @@
# endif
#endif
-#if defined(_MSC_VER)
+#if defined(WIN32)
# include <intrin.h>
-# pragma intrinsic(_BitScanForward)
-# pragma intrinsic(_BitScanReverse)
-# ifdef _WIN64
-# pragma intrinsic(_BitScanForward64)
-# pragma intrinsic(_BitScanReverse64)
+ /* MinGW warns that it ignores "pragma intrinsic". */
+# if defined(_MSC_VER)
+# pragma intrinsic(_BitScanForward)
+# pragma intrinsic(_BitScanReverse)
+# if defined(_WIN64)
+# pragma intrinsic(_BitScanForward64)
+# pragma intrinsic(_BitScanReverse64)
+# endif
# endif
#endif
@@ -728,7 +1547,7 @@
return (unsigned) PERL_CTZ_64(word);
-# elif U64SIZE == 8 && defined(_WIN64) && defined(_MSC_VER)
+# elif U64SIZE == 8 && defined(_WIN64)
# define PERL_HAS_FAST_GET_LSB_POS64
{
@@ -782,7 +1601,7 @@
return (unsigned) PERL_CTZ_32(word);
-#elif U32SIZE == 4 && defined(_MSC_VER)
+#elif U32SIZE == 4 && defined(WIN32)
# define PERL_HAS_FAST_GET_LSB_POS32
{
@@ -791,6 +1610,14 @@
return (unsigned)index;
}
+#elif defined(PERL_HAS_FAST_GET_LSB_POS64)
+# define PERL_HAS_FAST_GET_LSB_POS32
+
+ /* Unlikely, but possible for the platform to have a wider fast operation
+ * but not a narrower one. But easy enough to handle the case by widening
+ * the parameter size. */
+ return lsbit_pos64(word);
+
#else
return single_1bit_pos32(word & (~word + 1));
@@ -828,7 +1655,7 @@
return (unsigned) LZC_TO_MSBIT_POS_(U64, PERL_CLZ_64(word));
-# elif U64SIZE == 8 && defined(_WIN64) && defined(_MSC_VER)
+# elif U64SIZE == 8 && defined(_WIN64)
# define PERL_HAS_FAST_GET_MSB_POS64
{
@@ -884,8 +1711,7 @@
# define PERL_HAS_FAST_GET_MSB_POS32
return (unsigned) LZC_TO_MSBIT_POS_(U32, PERL_CLZ_32(word));
-
-#elif U32SIZE == 4 && defined(_MSC_VER)
+#elif U32SIZE == 4 && defined(WIN32)
# define PERL_HAS_FAST_GET_MSB_POS32
{
@@ -894,6 +1720,11 @@
return (unsigned)index;
}
+#elif defined(PERL_HAS_FAST_GET_MSB_POS64)
+# define PERL_HAS_FAST_GET_MSB_POS32
+
+ return msbit_pos64(word); /* Let compiler widen parameter */
+
#else
word |= (word >> 1);
@@ -908,6 +1739,13 @@
}
+/* Note that if you are working through all the 1 bits in a word, and don't
+ * care which order you process them in, it is better to use lsbit_pos. This
+ * is because some platforms have a fast way to find the msb but not the lsb,
+ * and others vice versa. The code above falls back to use the single
+ * available fast method when the desired one is missing, and it is cheaper to
+ * fall back from lsb to msb than the other way around */
+
#if UVSIZE == U64SIZE
# define msbit_pos(word) msbit_pos64(word)
# define lsbit_pos(word) lsbit_pos64(word)
@@ -976,18 +1814,6 @@
return lsbit_pos32(word);
-/* Unlikely, but possible for the platform to have a wider fast operation but
- * not a narrower one. But easy enough to handle the case by widening the
- * parameter size. (Going the other way, emulating 64 bit by two 32 bit ops
- * would be slower than the deBruijn method.) */
-#elif defined(PERL_HAS_FAST_GET_MSB_POS64)
-
- return msbit_pos64(word);
-
-#elif defined(PERL_HAS_FAST_GET_LSB_POS64)
-
- return lsbit_pos64(word);
-
#else
return PL_deBruijn_bitpos_tab32[(word * PERL_deBruijnMagic32_)
@@ -1924,10 +2750,6 @@
assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE
|UTF8_DISALLOW_PERL_EXTENDED)));
- if (len == 0) {
- len = strlen((const char *) s);
- }
-
if (flags == 0) {
return is_utf8_string_loclen(s, len, ep, el);
}
@@ -1944,6 +2766,10 @@
return is_c9strict_utf8_string_loclen(s, len, ep, el);
}
+ if (len == 0) {
+ len = strlen((const char *) s);
+ }
+
if (is_utf8_invariant_string_loc(s, len, &first_variant)) {
if (el)
*el = len;
@@ -2150,7 +2976,7 @@
while (off++ && s > start) {
do {
s--;
- } while (UTF8_IS_CONTINUATION(*s) && s > start);
+ } while (s > start && UTF8_IS_CONTINUATION(*s));
}
GCC_DIAG_IGNORE(-Wcast-qual)
@@ -2481,7 +3307,7 @@
UV state = PL_strict_utf8_dfa_tab[256 + type];
uv = (0xff >> type) & NATIVE_UTF8_TO_I8(*s);
- while (++s < send) {
+ while (LIKELY(state != 1) && ++s < send) {
type = PL_strict_utf8_dfa_tab[*s];
state = PL_strict_utf8_dfa_tab[256 + state + type];
@@ -2493,10 +3319,6 @@
#endif
goto success;
}
-
- if (UNLIKELY(state == 1)) {
- break;
- }
}
/* Here is potentially problematic. Use the full mechanism */
@@ -2640,18 +3462,27 @@
}
# endif
+# ifndef NV_PRESERVES_UV
+ STATIC_ASSERT_STMT(((UV)1 << NV_PRESERVES_UV_BITS) - 1 <= (UV)IV_MAX);
+# endif
+
/* Written this way so that with an always-false NaN comparison we
* return false */
- if (!(LIKELY(nv >= (NV) IV_MIN) && LIKELY(nv < IV_MAX_P1))) {
- return FALSE;
+ if (
+# ifdef NV_PRESERVES_UV
+ LIKELY(nv >= (NV) IV_MIN) && LIKELY(nv < IV_MAX_P1) &&
+# else
+ /* If the condition below is not satisfied, lower bits of nv's
+ * integral part is already lost and accurate conversion to integer
+ * is impossible.
+ * Note this should be consistent with S_sv_2iuv_common in sv.c. */
+ Perl_fabs(nv) < (NV) ((UV)1 << NV_PRESERVES_UV_BITS) &&
+# endif
+ (IV) nv == nv) {
+ *ivp = (IV) nv;
+ return TRUE;
}
-
- if ((IV) nv != nv) {
- return FALSE;
- }
-
- *ivp = (IV) nv;
- return TRUE;
+ return FALSE;
}
#endif
@@ -2748,7 +3579,10 @@
cx->cx_type = type;
cx->blk_gimme = gimme;
cx->blk_oldsaveix = saveix;
- cx->blk_oldsp = (I32)(sp - PL_stack_base);
+ cx->blk_oldsp = (Stack_off_t)(sp - PL_stack_base);
+ assert(cxstack_ix <= 0
+ || CxTYPE(cx-1) == CXt_SUBST
+ || cx->blk_oldsp >= (cx-1)->blk_oldsp);
cx->blk_oldcop = PL_curcop;
cx->blk_oldmarksp = (I32)(PL_markstack_ptr - PL_markstack);
cx->blk_oldscopesp = PL_scopestack_ix;
@@ -2798,8 +3632,7 @@
PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp;
PL_scopestack_ix = cx->blk_oldscopesp;
PL_curpm = cx->blk_oldpm;
-
- PL_stack_sp = PL_stack_base + cx->blk_oldsp;
+ Perl_rpp_popfree_to(aTHX_ PL_stack_base + cx->blk_oldsp);
}
@@ -2812,7 +3645,7 @@
PERL_DTRACE_PROBE_ENTRY(cv);
cx->blk_sub.old_cxsubix = PL_curstackinfo->si_cxsubix;
- PL_curstackinfo->si_cxsubix = cx - PL_curstackinfo->si_cxstack;
+ PL_curstackinfo->si_cxsubix = (I32)(cx - PL_curstackinfo->si_cxstack);
cx->blk_sub.cv = cv;
cx->blk_sub.olddepth = CvDEPTH(cv);
cx->blk_sub.prevcomppad = PL_comppad;
@@ -2834,7 +3667,7 @@
assert(CxTYPE(cx) == CXt_SUB);
PL_comppad = cx->blk_sub.prevcomppad;
- PL_curpad = LIKELY(PL_comppad) ? AvARRAY(PL_comppad) : NULL;
+ PL_curpad = LIKELY(PL_comppad != NULL) ? AvARRAY(PL_comppad) : NULL;
cv = cx->blk_sub.cv;
CvDEPTH(cv) = cx->blk_sub.olddepth;
cx->blk_sub.cv = NULL;
@@ -2858,12 +3691,15 @@
CX_POP_SAVEARRAY(cx);
av = MUTABLE_AV(PAD_SVl(0));
- if (UNLIKELY(AvREAL(av)))
+ if (!SvMAGICAL(av) && SvREFCNT(av) == 1
+#ifndef PERL_RC_STACK
+ && !AvREAL(av)
+#endif
+ )
+ clear_defarray_simple(av);
+ else
/* abandon @_ if it got reified */
clear_defarray(av, 0);
- else {
- CLEAR_ARGARRAY(av);
- }
}
@@ -2887,7 +3723,7 @@
PERL_ARGS_ASSERT_CX_PUSHFORMAT;
cx->blk_format.old_cxsubix = PL_curstackinfo->si_cxsubix;
- PL_curstackinfo->si_cxsubix= cx - PL_curstackinfo->si_cxstack;
+ PL_curstackinfo->si_cxsubix= (I32)(cx - PL_curstackinfo->si_cxstack);
cx->blk_format.cv = cv;
cx->blk_format.retop = retop;
cx->blk_format.gv = gv;
@@ -2916,7 +3752,7 @@
SvREFCNT_dec_NN(dfout);
PL_comppad = cx->blk_format.prevcomppad;
- PL_curpad = LIKELY(PL_comppad) ? AvARRAY(PL_comppad) : NULL;
+ PL_curpad = LIKELY(PL_comppad != NULL) ? AvARRAY(PL_comppad) : NULL;
cv = cx->blk_format.cv;
cx->blk_format.cv = NULL;
--CvDEPTH(cv);
@@ -2948,7 +3784,7 @@
Perl_push_evalortry_common(aTHX_ cx, retop, namesv);
cx->blk_eval.old_cxsubix = PL_curstackinfo->si_cxsubix;
- PL_curstackinfo->si_cxsubix = cx - PL_curstackinfo->si_cxstack;
+ PL_curstackinfo->si_cxsubix = (I32)(cx - PL_curstackinfo->si_cxstack);
}
PERL_STATIC_INLINE void
@@ -3107,6 +3943,129 @@
SvREFCNT_dec(sv);
}
+
+/* Make @_ empty in-place in simple cases: a cheap av_clear().
+ * See Perl_clear_defarray() for non-simple cases */
+
+
+PERL_STATIC_INLINE void
+Perl_clear_defarray_simple(pTHX_ AV *av)
+{
+ PERL_ARGS_ASSERT_CLEAR_DEFARRAY_SIMPLE;
+
+ assert(SvTYPE(av) == SVt_PVAV);
+ assert(!SvREADONLY(av));
+ assert(!SvMAGICAL(av));
+ assert(SvREFCNT(av) == 1);
+
+#ifdef PERL_RC_STACK
+ assert(AvREAL(av));
+ /* this code assumes that destructors called here can't free av
+ * itself, because pad[0] and/or CX pointers will keep it alive */
+ SSize_t i = AvFILLp(av);
+ while (i >= 0) {
+ SV *sv = AvARRAY(av)[i];
+ AvARRAY(av)[i--] = NULL;
+ SvREFCNT_dec(sv);
+ }
+#else
+ assert(!AvREAL(av));
+#endif
+ AvFILLp(av) = -1;
+ Perl_av_remove_offset(aTHX_ av);
+}
+
+/* Switch to a different argument stack.
+ *
+ * Note that it doesn't update PL_curstackinfo->si_stack_nonrc_base,
+ * so this should only be used as part of a general switching between
+ * stackinfos.
+ */
+
+PERL_STATIC_INLINE void
+Perl_switch_argstack(pTHX_ AV *to)
+{
+ PERL_ARGS_ASSERT_SWITCH_ARGSTACK;
+
+ AvFILLp(PL_curstack) = PL_stack_sp - PL_stack_base;
+ PL_stack_base = AvARRAY(to);
+ PL_stack_max = PL_stack_base + AvMAX(to);
+ PL_stack_sp = PL_stack_base + AvFILLp(to);
+ PL_curstack = to;
+}
+
+
+/* Push, and switch to a new stackinfo, allocating one if none are spare,
+ * to get a fresh set of stacks.
+ * Update all the interpreter variables like PL_curstackinfo,
+ * PL_stack_sp, etc.
+ * current flag meanings:
+ * 1 make the new arg stack AvREAL
+ */
+
+
+PERL_STATIC_INLINE void
+Perl_push_stackinfo(pTHX_ I32 type, UV flags)
+{
+ PERL_ARGS_ASSERT_PUSH_STACKINFO;
+
+ PERL_SI *next = PL_curstackinfo->si_next;
+ DEBUG_l({
+ int i = 0; PERL_SI *p = PL_curstackinfo;
+ while (p) { i++; p = p->si_prev; }
+ Perl_deb(aTHX_ "push STACKINFO %d in %s at %s:%d\n",
+ i, SAFE_FUNCTION__, __FILE__, __LINE__);
+ })
+
+ if (!next) {
+ next = new_stackinfo_flags(32, 2048/sizeof(PERL_CONTEXT) - 1, flags);
+ next->si_prev = PL_curstackinfo;
+ PL_curstackinfo->si_next = next;
+ }
+ next->si_type = type;
+ next->si_cxix = -1;
+ next->si_cxsubix = -1;
+ PUSHSTACK_INIT_HWM(next);
+#ifdef PERL_RC_STACK
+ next->si_stack_nonrc_base = 0;
+#endif
+ if (flags & 1)
+ AvREAL_on(next->si_stack);
+ else
+ AvREAL_off(next->si_stack);
+ AvFILLp(next->si_stack) = 0;
+ switch_argstack(next->si_stack);
+ PL_curstackinfo = next;
+ SET_MARK_OFFSET;
+}
+
+
+/* Pop, then switch to the previous stackinfo and set of stacks.
+ * Update all the interpreter variables like PL_curstackinfo,
+ * PL_stack_sp, etc. */
+
+PERL_STATIC_INLINE void
+Perl_pop_stackinfo(pTHX)
+{
+ PERL_ARGS_ASSERT_POP_STACKINFO;
+
+ PERL_SI * const prev = PL_curstackinfo->si_prev;
+ DEBUG_l({
+ int i = -1; PERL_SI *p = PL_curstackinfo;
+ while (p) { i++; p = p->si_prev; }
+ Perl_deb(aTHX_ "pop STACKINFO %d in %s at %s:%d\n",
+ i, SAFE_FUNCTION__, __FILE__, __LINE__);})
+ if (!prev) {
+ Perl_croak_popstack();
+ }
+
+ switch_argstack(prev->si_stack);
+ /* don't free prev here, free them all at the END{} */
+ PL_curstackinfo = prev;
+}
+
+
+
/*
=for apidoc newPADxVOP
@@ -3156,6 +4115,8 @@
PERL_STATIC_INLINE I32
Perl_foldEQ(pTHX_ const char *s1, const char *s2, I32 len)
{
+ PERL_UNUSED_CONTEXT;
+
const U8 *a = (const U8 *)s1;
const U8 *b = (const U8 *)s2;
@@ -3179,6 +4140,8 @@
* does not check for this. Nor does it check that the strings each have
* at least 'len' characters. */
+ PERL_UNUSED_CONTEXT;
+
const U8 *a = (const U8 *)s1;
const U8 *b = (const U8 *)s2;
@@ -3236,8 +4199,8 @@
The C library C<strnlen> if available, or a Perl implementation of it.
C<my_strnlen()> computes the length of the string, up to C<maxlen>
-characters. It will never attempt to address more than C<maxlen>
-characters, making it suitable for use with strings that are not
+bytes. It will never attempt to address more than C<maxlen>
+bytes, making it suitable for use with strings that are not
guaranteed to be NUL-terminated.
=cut
@@ -3487,6 +4450,7 @@
PERL_STATIC_INLINE bool
Perl_sv_isbool(pTHX_ const SV *sv)
{
+ PERL_UNUSED_CONTEXT;
return SvBoolFlagsOK(sv) && BOOL_INTERNALS_sv_isbool(sv);
}
@@ -3693,7 +4657,7 @@
This operates on C C<NUL>-terminated strings.
C<my_strlcat()> appends string C<src> to the end of C<dst>. It will append at
-most S<C<size - strlen(dst) - 1>> characters. It will then C<NUL>-terminate,
+most S<C<size - strlen(dst) - 1>> bytes. It will then C<NUL>-terminate,
unless C<size> is 0 or the original C<dst> string was longer than C<size> (in
practice this should not happen as it means that either C<size> is incorrect or
that C<dst> is not a proper C<NUL>-terminated string).
@@ -3734,7 +4698,7 @@
The C library C<strlcpy> if available, or a Perl implementation of it.
This operates on C C<NUL>-terminated strings.
-C<my_strlcpy()> copies up to S<C<size - 1>> characters from the string C<src>
+C<my_strlcpy()> copies up to S<C<size - 1>> bytes from the string C<src>
to C<dst>, C<NUL>-terminating the result if C<size> is not 0.
The return value is the total length C<src> would be if the copy completely
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/intrpvar.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/intrpvar.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/intrpvar.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -49,10 +49,10 @@
PERLVARI(I, tmps_floor, SSize_t, -1)
PERLVAR(I, tmps_max, SSize_t) /* first unalloced slot in tmps stack */
-PERLVAR(I, markstack, I32 *) /* stack_sp locations we're
+PERLVAR(I, markstack, Stack_off_t *) /* stack_sp locations we're
remembering */
-PERLVAR(I, markstack_ptr, I32 *)
-PERLVAR(I, markstack_max, I32 *)
+PERLVAR(I, markstack_ptr, Stack_off_t *)
+PERLVAR(I, markstack_max, Stack_off_t *)
PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */
@@ -395,8 +395,8 @@
#ifdef USE_LOCALE_CTYPE
PERLVAR(I, warn_locale, SV *)
-PERLVAR(I, in_utf8_CTYPE_locale, bool)
-PERLVAR(I, in_utf8_turkic_locale, bool)
+PERLVARI(I, in_utf8_CTYPE_locale, bool, false)
+PERLVARI(I, in_utf8_turkic_locale, bool, false)
#endif
PERLVARA(I, colors,6, char *) /* values from PERL_RE_COLORS env var */
@@ -746,23 +746,25 @@
PERLVAR(I, padix_floor, PADOFFSET) /* how low may inner block reset padix */
#if defined(USE_POSIX_2008_LOCALE) && defined(MULTIPLICITY)
-PERLVARI(I, cur_locale_obj, locale_t, NULL)
+PERLVARI(I, cur_locale_obj, locale_t, LC_GLOBAL_LOCALE)
#endif
#ifdef USE_PL_CURLOCALES
-/* This is the most number of categories we've encountered so far on any
- * platform, doesn't include LC_ALL */
-PERLVARA(I, curlocales, 12, const char *)
+/* Some configurations do not allow perl to query libc to find out what the
+ * locale for a given category is. On such platforms this array contains that
+ * information, indexed by the perl-defined category index.
+ * Note that this array keeps the actual locale for each category. LC_NUMERIC
+ * is almost always toggled into the C locale, and the locale it nominally is
+ * is stored as PL_numeric_name. */
+PERLVARA(I, curlocales, LOCALE_CATEGORIES_COUNT_ + 1, const char *)
#endif
#ifdef USE_PL_CUR_LC_ALL
-
PERLVARI(I, cur_LC_ALL, const char *, NULL)
-
#endif
#ifdef USE_LOCALE_COLLATE
-/* The emory needed to store the collxfrm transformation of a string with
+/* The memory needed to store the collxfrm transformation of a string with
* length 'x' is predicted by the linear equation mx+b; m=mult, b=base */
PERLVARI(I, collxfrm_mult,Size_t, 0) /* Expansion factor in *xfrm();
0 => unknown or bad, depending on
@@ -772,7 +774,7 @@
mult == 0, base != 0 => ill-formed;
*/
PERLVAR(I, collation_name, char *) /* Name of current collation */
-PERLVARI(I, collation_ix, U32, 0) /* Collation generation index */
+PERLVARI(I, collation_ix, PERL_UINTMAX_T, 0) /* Collation generation index */
PERLVARI(I, strxfrm_NUL_replacement, U8, 0) /* Code point to replace NULs */
PERLVARI(I, strxfrm_is_behaved, bool, TRUE)
/* Assume until proven otherwise that it works */
@@ -782,13 +784,16 @@
PERLVAR(I, in_utf8_COLLATE_locale, bool)
#endif /* USE_LOCALE_COLLATE */
-PERLVARI(I, langinfo_buf, const char *, NULL)
-PERLVARI(I, langinfo_bufsize, Size_t, 0)
-PERLVARI(I, setlocale_buf, const char *, NULL)
+PERLVARI(I, langinfo_sv, SV *, NULL) /* For Perl_langinfo8? */
+PERLVARI(I, scratch_langinfo, SV *, NULL) /* For internal use */
+PERLVARI(I, setlocale_buf, char *, NULL)
PERLVARI(I, setlocale_bufsize, Size_t, 0)
-PERLVARI(I, stdize_locale_buf, const char *, NULL)
-PERLVARI(I, stdize_locale_bufsize, Size_t, 0)
+#if defined(USE_LOCALE_THREADS) && ! defined(USE_THREAD_SAFE_LOCALE)
+PERLVARI(I, less_dicey_locale_buf, char *, NULL)
+PERLVARI(I, less_dicey_locale_bufsize, Size_t, 0)
+#endif
+
#ifdef PERL_SAWAMPERSAND
PERLVAR(I, sawampersand, U8) /* must save all match strings */
#endif
@@ -850,11 +855,6 @@
PERLVAR(I, numeric_radix_sv, SV *) /* The radix separator */
PERLVAR(I, underlying_radix_sv, SV *) /* The radix in the program's current underlying locale */
-#if defined(USE_LOCALE_NUMERIC) && defined(USE_POSIX_2008_LOCALE)
-
-PERLVARI(I, underlying_numeric_obj, locale_t, NULL)
-
-#endif
#ifdef USE_POSIX_2008_LOCALE
PERLVARI(I, scratch_locale_obj, locale_t, 0)
#endif
@@ -952,9 +952,7 @@
/* Can shared object be destroyed */
PERLVARI(I, destroyhook, destroyable_proc_t, Perl_sv_destroyable)
-#ifndef PERL_MICRO
PERLVARI(I, signalhook, despatch_signals_proc_t, Perl_despatch_signals)
-#endif
PERLVARI(I, isarev, HV *, NULL) /* Reverse map of @ISA dependencies */
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/keywords.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/keywords.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/keywords.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
*
* keywords.h
*
@@ -17,267 +17,268 @@
#define KEY___FILE__ 1
#define KEY___LINE__ 2
#define KEY___PACKAGE__ 3
-#define KEY___DATA__ 4
-#define KEY___END__ 5
-#define KEY___SUB__ 6
-#define KEY_ADJUST 7
-#define KEY_AUTOLOAD 8
-#define KEY_BEGIN 9
-#define KEY_UNITCHECK 10
-#define KEY_DESTROY 11
-#define KEY_END 12
-#define KEY_INIT 13
-#define KEY_CHECK 14
-#define KEY_abs 15
-#define KEY_accept 16
-#define KEY_alarm 17
-#define KEY_and 18
-#define KEY_atan2 19
-#define KEY_bind 20
-#define KEY_binmode 21
-#define KEY_bless 22
-#define KEY_break 23
-#define KEY_caller 24
-#define KEY_catch 25
-#define KEY_chdir 26
-#define KEY_chmod 27
-#define KEY_chomp 28
-#define KEY_chop 29
-#define KEY_chown 30
-#define KEY_chr 31
-#define KEY_chroot 32
-#define KEY_class 33
-#define KEY_close 34
-#define KEY_closedir 35
-#define KEY_cmp 36
-#define KEY_connect 37
-#define KEY_continue 38
-#define KEY_cos 39
-#define KEY_crypt 40
-#define KEY_dbmclose 41
-#define KEY_dbmopen 42
-#define KEY_default 43
-#define KEY_defer 44
-#define KEY_defined 45
-#define KEY_delete 46
-#define KEY_die 47
-#define KEY_do 48
-#define KEY_dump 49
-#define KEY_each 50
-#define KEY_else 51
-#define KEY_elsif 52
-#define KEY_endgrent 53
-#define KEY_endhostent 54
-#define KEY_endnetent 55
-#define KEY_endprotoent 56
-#define KEY_endpwent 57
-#define KEY_endservent 58
-#define KEY_eof 59
-#define KEY_eq 60
-#define KEY_eval 61
-#define KEY_evalbytes 62
-#define KEY_exec 63
-#define KEY_exists 64
-#define KEY_exit 65
-#define KEY_exp 66
-#define KEY_fc 67
-#define KEY_fcntl 68
-#define KEY_field 69
-#define KEY_fileno 70
-#define KEY_finally 71
-#define KEY_flock 72
-#define KEY_for 73
-#define KEY_foreach 74
-#define KEY_fork 75
-#define KEY_format 76
-#define KEY_formline 77
-#define KEY_ge 78
-#define KEY_getc 79
-#define KEY_getgrent 80
-#define KEY_getgrgid 81
-#define KEY_getgrnam 82
-#define KEY_gethostbyaddr 83
-#define KEY_gethostbyname 84
-#define KEY_gethostent 85
-#define KEY_getlogin 86
-#define KEY_getnetbyaddr 87
-#define KEY_getnetbyname 88
-#define KEY_getnetent 89
-#define KEY_getpeername 90
-#define KEY_getpgrp 91
-#define KEY_getppid 92
-#define KEY_getpriority 93
-#define KEY_getprotobyname 94
-#define KEY_getprotobynumber 95
-#define KEY_getprotoent 96
-#define KEY_getpwent 97
-#define KEY_getpwnam 98
-#define KEY_getpwuid 99
-#define KEY_getservbyname 100
-#define KEY_getservbyport 101
-#define KEY_getservent 102
-#define KEY_getsockname 103
-#define KEY_getsockopt 104
-#define KEY_given 105
-#define KEY_glob 106
-#define KEY_gmtime 107
-#define KEY_goto 108
-#define KEY_grep 109
-#define KEY_gt 110
-#define KEY_hex 111
-#define KEY_if 112
-#define KEY_index 113
-#define KEY_int 114
-#define KEY_ioctl 115
-#define KEY_isa 116
-#define KEY_join 117
-#define KEY_keys 118
-#define KEY_kill 119
-#define KEY_last 120
-#define KEY_lc 121
-#define KEY_lcfirst 122
-#define KEY_le 123
-#define KEY_length 124
-#define KEY_link 125
-#define KEY_listen 126
-#define KEY_local 127
-#define KEY_localtime 128
-#define KEY_lock 129
-#define KEY_log 130
-#define KEY_lstat 131
-#define KEY_lt 132
-#define KEY_m 133
-#define KEY_map 134
-#define KEY_method 135
-#define KEY_mkdir 136
-#define KEY_msgctl 137
-#define KEY_msgget 138
-#define KEY_msgrcv 139
-#define KEY_msgsnd 140
-#define KEY_my 141
-#define KEY_ne 142
-#define KEY_next 143
-#define KEY_no 144
-#define KEY_not 145
-#define KEY_oct 146
-#define KEY_open 147
-#define KEY_opendir 148
-#define KEY_or 149
-#define KEY_ord 150
-#define KEY_our 151
-#define KEY_pack 152
-#define KEY_package 153
-#define KEY_pipe 154
-#define KEY_pop 155
-#define KEY_pos 156
-#define KEY_print 157
-#define KEY_printf 158
-#define KEY_prototype 159
-#define KEY_push 160
-#define KEY_q 161
-#define KEY_qq 162
-#define KEY_qr 163
-#define KEY_quotemeta 164
-#define KEY_qw 165
-#define KEY_qx 166
-#define KEY_rand 167
-#define KEY_read 168
-#define KEY_readdir 169
-#define KEY_readline 170
-#define KEY_readlink 171
-#define KEY_readpipe 172
-#define KEY_recv 173
-#define KEY_redo 174
-#define KEY_ref 175
-#define KEY_rename 176
-#define KEY_require 177
-#define KEY_reset 178
-#define KEY_return 179
-#define KEY_reverse 180
-#define KEY_rewinddir 181
-#define KEY_rindex 182
-#define KEY_rmdir 183
-#define KEY_s 184
-#define KEY_say 185
-#define KEY_scalar 186
-#define KEY_seek 187
-#define KEY_seekdir 188
-#define KEY_select 189
-#define KEY_semctl 190
-#define KEY_semget 191
-#define KEY_semop 192
-#define KEY_send 193
-#define KEY_setgrent 194
-#define KEY_sethostent 195
-#define KEY_setnetent 196
-#define KEY_setpgrp 197
-#define KEY_setpriority 198
-#define KEY_setprotoent 199
-#define KEY_setpwent 200
-#define KEY_setservent 201
-#define KEY_setsockopt 202
-#define KEY_shift 203
-#define KEY_shmctl 204
-#define KEY_shmget 205
-#define KEY_shmread 206
-#define KEY_shmwrite 207
-#define KEY_shutdown 208
-#define KEY_sin 209
-#define KEY_sleep 210
-#define KEY_socket 211
-#define KEY_socketpair 212
-#define KEY_sort 213
-#define KEY_splice 214
-#define KEY_split 215
-#define KEY_sprintf 216
-#define KEY_sqrt 217
-#define KEY_srand 218
-#define KEY_stat 219
-#define KEY_state 220
-#define KEY_study 221
-#define KEY_sub 222
-#define KEY_substr 223
-#define KEY_symlink 224
-#define KEY_syscall 225
-#define KEY_sysopen 226
-#define KEY_sysread 227
-#define KEY_sysseek 228
-#define KEY_system 229
-#define KEY_syswrite 230
-#define KEY_tell 231
-#define KEY_telldir 232
-#define KEY_tie 233
-#define KEY_tied 234
-#define KEY_time 235
-#define KEY_times 236
-#define KEY_tr 237
-#define KEY_try 238
-#define KEY_truncate 239
-#define KEY_uc 240
-#define KEY_ucfirst 241
-#define KEY_umask 242
-#define KEY_undef 243
-#define KEY_unless 244
-#define KEY_unlink 245
-#define KEY_unpack 246
-#define KEY_unshift 247
-#define KEY_untie 248
-#define KEY_until 249
-#define KEY_use 250
-#define KEY_utime 251
-#define KEY_values 252
-#define KEY_vec 253
-#define KEY_wait 254
-#define KEY_waitpid 255
-#define KEY_wantarray 256
-#define KEY_warn 257
-#define KEY_when 258
-#define KEY_while 259
-#define KEY_write 260
-#define KEY_x 261
-#define KEY_xor 262
-#define KEY_y 263
+#define KEY___CLASS__ 4
+#define KEY___DATA__ 5
+#define KEY___END__ 6
+#define KEY___SUB__ 7
+#define KEY_ADJUST 8
+#define KEY_AUTOLOAD 9
+#define KEY_BEGIN 10
+#define KEY_UNITCHECK 11
+#define KEY_DESTROY 12
+#define KEY_END 13
+#define KEY_INIT 14
+#define KEY_CHECK 15
+#define KEY_abs 16
+#define KEY_accept 17
+#define KEY_alarm 18
+#define KEY_and 19
+#define KEY_atan2 20
+#define KEY_bind 21
+#define KEY_binmode 22
+#define KEY_bless 23
+#define KEY_break 24
+#define KEY_caller 25
+#define KEY_catch 26
+#define KEY_chdir 27
+#define KEY_chmod 28
+#define KEY_chomp 29
+#define KEY_chop 30
+#define KEY_chown 31
+#define KEY_chr 32
+#define KEY_chroot 33
+#define KEY_class 34
+#define KEY_close 35
+#define KEY_closedir 36
+#define KEY_cmp 37
+#define KEY_connect 38
+#define KEY_continue 39
+#define KEY_cos 40
+#define KEY_crypt 41
+#define KEY_dbmclose 42
+#define KEY_dbmopen 43
+#define KEY_default 44
+#define KEY_defer 45
+#define KEY_defined 46
+#define KEY_delete 47
+#define KEY_die 48
+#define KEY_do 49
+#define KEY_dump 50
+#define KEY_each 51
+#define KEY_else 52
+#define KEY_elsif 53
+#define KEY_endgrent 54
+#define KEY_endhostent 55
+#define KEY_endnetent 56
+#define KEY_endprotoent 57
+#define KEY_endpwent 58
+#define KEY_endservent 59
+#define KEY_eof 60
+#define KEY_eq 61
+#define KEY_eval 62
+#define KEY_evalbytes 63
+#define KEY_exec 64
+#define KEY_exists 65
+#define KEY_exit 66
+#define KEY_exp 67
+#define KEY_fc 68
+#define KEY_fcntl 69
+#define KEY_field 70
+#define KEY_fileno 71
+#define KEY_finally 72
+#define KEY_flock 73
+#define KEY_for 74
+#define KEY_foreach 75
+#define KEY_fork 76
+#define KEY_format 77
+#define KEY_formline 78
+#define KEY_ge 79
+#define KEY_getc 80
+#define KEY_getgrent 81
+#define KEY_getgrgid 82
+#define KEY_getgrnam 83
+#define KEY_gethostbyaddr 84
+#define KEY_gethostbyname 85
+#define KEY_gethostent 86
+#define KEY_getlogin 87
+#define KEY_getnetbyaddr 88
+#define KEY_getnetbyname 89
+#define KEY_getnetent 90
+#define KEY_getpeername 91
+#define KEY_getpgrp 92
+#define KEY_getppid 93
+#define KEY_getpriority 94
+#define KEY_getprotobyname 95
+#define KEY_getprotobynumber 96
+#define KEY_getprotoent 97
+#define KEY_getpwent 98
+#define KEY_getpwnam 99
+#define KEY_getpwuid 100
+#define KEY_getservbyname 101
+#define KEY_getservbyport 102
+#define KEY_getservent 103
+#define KEY_getsockname 104
+#define KEY_getsockopt 105
+#define KEY_given 106
+#define KEY_glob 107
+#define KEY_gmtime 108
+#define KEY_goto 109
+#define KEY_grep 110
+#define KEY_gt 111
+#define KEY_hex 112
+#define KEY_if 113
+#define KEY_index 114
+#define KEY_int 115
+#define KEY_ioctl 116
+#define KEY_isa 117
+#define KEY_join 118
+#define KEY_keys 119
+#define KEY_kill 120
+#define KEY_last 121
+#define KEY_lc 122
+#define KEY_lcfirst 123
+#define KEY_le 124
+#define KEY_length 125
+#define KEY_link 126
+#define KEY_listen 127
+#define KEY_local 128
+#define KEY_localtime 129
+#define KEY_lock 130
+#define KEY_log 131
+#define KEY_lstat 132
+#define KEY_lt 133
+#define KEY_m 134
+#define KEY_map 135
+#define KEY_method 136
+#define KEY_mkdir 137
+#define KEY_msgctl 138
+#define KEY_msgget 139
+#define KEY_msgrcv 140
+#define KEY_msgsnd 141
+#define KEY_my 142
+#define KEY_ne 143
+#define KEY_next 144
+#define KEY_no 145
+#define KEY_not 146
+#define KEY_oct 147
+#define KEY_open 148
+#define KEY_opendir 149
+#define KEY_or 150
+#define KEY_ord 151
+#define KEY_our 152
+#define KEY_pack 153
+#define KEY_package 154
+#define KEY_pipe 155
+#define KEY_pop 156
+#define KEY_pos 157
+#define KEY_print 158
+#define KEY_printf 159
+#define KEY_prototype 160
+#define KEY_push 161
+#define KEY_q 162
+#define KEY_qq 163
+#define KEY_qr 164
+#define KEY_quotemeta 165
+#define KEY_qw 166
+#define KEY_qx 167
+#define KEY_rand 168
+#define KEY_read 169
+#define KEY_readdir 170
+#define KEY_readline 171
+#define KEY_readlink 172
+#define KEY_readpipe 173
+#define KEY_recv 174
+#define KEY_redo 175
+#define KEY_ref 176
+#define KEY_rename 177
+#define KEY_require 178
+#define KEY_reset 179
+#define KEY_return 180
+#define KEY_reverse 181
+#define KEY_rewinddir 182
+#define KEY_rindex 183
+#define KEY_rmdir 184
+#define KEY_s 185
+#define KEY_say 186
+#define KEY_scalar 187
+#define KEY_seek 188
+#define KEY_seekdir 189
+#define KEY_select 190
+#define KEY_semctl 191
+#define KEY_semget 192
+#define KEY_semop 193
+#define KEY_send 194
+#define KEY_setgrent 195
+#define KEY_sethostent 196
+#define KEY_setnetent 197
+#define KEY_setpgrp 198
+#define KEY_setpriority 199
+#define KEY_setprotoent 200
+#define KEY_setpwent 201
+#define KEY_setservent 202
+#define KEY_setsockopt 203
+#define KEY_shift 204
+#define KEY_shmctl 205
+#define KEY_shmget 206
+#define KEY_shmread 207
+#define KEY_shmwrite 208
+#define KEY_shutdown 209
+#define KEY_sin 210
+#define KEY_sleep 211
+#define KEY_socket 212
+#define KEY_socketpair 213
+#define KEY_sort 214
+#define KEY_splice 215
+#define KEY_split 216
+#define KEY_sprintf 217
+#define KEY_sqrt 218
+#define KEY_srand 219
+#define KEY_stat 220
+#define KEY_state 221
+#define KEY_study 222
+#define KEY_sub 223
+#define KEY_substr 224
+#define KEY_symlink 225
+#define KEY_syscall 226
+#define KEY_sysopen 227
+#define KEY_sysread 228
+#define KEY_sysseek 229
+#define KEY_system 230
+#define KEY_syswrite 231
+#define KEY_tell 232
+#define KEY_telldir 233
+#define KEY_tie 234
+#define KEY_tied 235
+#define KEY_time 236
+#define KEY_times 237
+#define KEY_tr 238
+#define KEY_try 239
+#define KEY_truncate 240
+#define KEY_uc 241
+#define KEY_ucfirst 242
+#define KEY_umask 243
+#define KEY_undef 244
+#define KEY_unless 245
+#define KEY_unlink 246
+#define KEY_unpack 247
+#define KEY_unshift 248
+#define KEY_untie 249
+#define KEY_until 250
+#define KEY_use 251
+#define KEY_utime 252
+#define KEY_values 253
+#define KEY_vec 254
+#define KEY_wait 255
+#define KEY_waitpid 256
+#define KEY_wantarray 257
+#define KEY_warn 258
+#define KEY_when 259
+#define KEY_while 260
+#define KEY_write 261
+#define KEY_x 262
+#define KEY_xor 263
+#define KEY_y 264
/* Generated from:
- * eb67e851da14ede1aad67aec4a387fa250c1345407fad0a02988d2d8d3cc27f2 regen/keywords.pl
- * ex: set ro: */
+ * c8b75109fa56ce3ea3f30503a3b398f02e49036dc60d5fb36ea5ba9ffd6c596e regen/keywords.pl
+ * ex: set ro ft=c: */
Added: trunk/Master/tlpkg/tlperl/lib/CORE/locale_table.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/locale_table.h (rev 0)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/locale_table.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -0,0 +1,242 @@
+/* -*- mode: C; buffer-read-only: t -*-
+ *
+ * locale_table.h
+ *
+ * Copyright (C) 2023, 2024 by Larry Wall and others
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
+ *
+ * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+ * This file is built by regen/locale.pl from data in regen/locale.pl.
+ * Any changes made here will be lost!
+ */
+
+/* This defines a macro for each individual locale category used on the this
+ * system. (The congomerate category LC_ALL is not included.) This
+ * file will be #included as the interior of various parallel arrays and in
+ * other constructs; each usage will re-#define the macro to generate its
+ * appropriate data.
+ *
+ * This guarantees the arrays will be parallel, and populated in the order
+ * given here. That order is mostly arbitrary. LC_CTYPE is first because when
+ * we are setting multiple categories, CTYPE often needs to match the other(s),
+ * and the way the code is constructed, if we set the other category first, we
+ * might otherwise have to set CTYPE twice.
+ *
+ * Each entry takes the token giving the category name, and either the name of
+ * a function to call that does specialized set up for this category when it is
+ * changed into, or NULL if no such set up is needed
+ */
+
+#ifdef LC_CTYPE
+# if defined(NO_LOCALE) || defined(NO_LOCALE_CTYPE)
+
+ PERL_LOCALE_TABLE_ENTRY(CTYPE, NULL)
+
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_CTYPE_AVAIL_ 0
+# else
+
+ PERL_LOCALE_TABLE_ENTRY(CTYPE, S_new_ctype)
+
+# define LC_CTYPE_AVAIL_ 1
+# define USE_LOCALE_CTYPE
+# endif
+#else
+# define LC_CTYPE_AVAIL_ 0
+#endif
+#ifdef LC_NUMERIC
+# if defined(NO_LOCALE) || defined(NO_LOCALE_NUMERIC)
+
+ PERL_LOCALE_TABLE_ENTRY(NUMERIC, NULL)
+
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_NUMERIC_AVAIL_ 0
+# else
+
+ PERL_LOCALE_TABLE_ENTRY(NUMERIC, S_new_numeric)
+
+# define LC_NUMERIC_AVAIL_ 1
+# define USE_LOCALE_NUMERIC
+# endif
+#else
+# define LC_NUMERIC_AVAIL_ 0
+#endif
+#ifdef LC_COLLATE
+
+ /* Perl outsources all its collation efforts to the libc strxfrm(), so
+ * if it isn't available on the system, default "C" locale collation
+ * gets used */
+# if defined(NO_LOCALE) || defined(NO_LOCALE_COLLATE) || ! defined(HAS_STRXFRM)
+
+ PERL_LOCALE_TABLE_ENTRY(COLLATE, NULL)
+
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_COLLATE_AVAIL_ 0
+# else
+
+ PERL_LOCALE_TABLE_ENTRY(COLLATE, S_new_collate)
+
+# define LC_COLLATE_AVAIL_ 1
+# define USE_LOCALE_COLLATE
+# endif
+#else
+# define LC_COLLATE_AVAIL_ 0
+#endif
+#ifdef LC_TIME
+
+ PERL_LOCALE_TABLE_ENTRY(TIME, NULL)
+
+# if defined(NO_LOCALE) || defined(NO_LOCALE_TIME)
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_TIME_AVAIL_ 0
+# else
+# define LC_TIME_AVAIL_ 1
+# define USE_LOCALE_TIME
+# endif
+#else
+# define LC_TIME_AVAIL_ 0
+#endif
+#ifdef LC_MESSAGES
+
+ PERL_LOCALE_TABLE_ENTRY(MESSAGES, NULL)
+
+# if defined(NO_LOCALE) || defined(NO_LOCALE_MESSAGES)
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_MESSAGES_AVAIL_ 0
+# else
+# define LC_MESSAGES_AVAIL_ 1
+# define USE_LOCALE_MESSAGES
+# endif
+#else
+# define LC_MESSAGES_AVAIL_ 0
+#endif
+#ifdef LC_MONETARY
+
+ PERL_LOCALE_TABLE_ENTRY(MONETARY, NULL)
+
+# if defined(NO_LOCALE) || defined(NO_LOCALE_MONETARY)
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_MONETARY_AVAIL_ 0
+# else
+# define LC_MONETARY_AVAIL_ 1
+# define USE_LOCALE_MONETARY
+# endif
+#else
+# define LC_MONETARY_AVAIL_ 0
+#endif
+#ifdef LC_ADDRESS
+
+ PERL_LOCALE_TABLE_ENTRY(ADDRESS, NULL)
+
+# if defined(NO_LOCALE) || defined(NO_LOCALE_ADDRESS)
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_ADDRESS_AVAIL_ 0
+# else
+# define LC_ADDRESS_AVAIL_ 1
+# define USE_LOCALE_ADDRESS
+# endif
+#else
+# define LC_ADDRESS_AVAIL_ 0
+#endif
+#ifdef LC_IDENTIFICATION
+
+ PERL_LOCALE_TABLE_ENTRY(IDENTIFICATION, NULL)
+
+# if defined(NO_LOCALE) || defined(NO_LOCALE_IDENTIFICATION)
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_IDENTIFICATION_AVAIL_ 0
+# else
+# define LC_IDENTIFICATION_AVAIL_ 1
+# define USE_LOCALE_IDENTIFICATION
+# endif
+#else
+# define LC_IDENTIFICATION_AVAIL_ 0
+#endif
+#ifdef LC_MEASUREMENT
+
+ PERL_LOCALE_TABLE_ENTRY(MEASUREMENT, NULL)
+
+# if defined(NO_LOCALE) || defined(NO_LOCALE_MEASUREMENT)
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_MEASUREMENT_AVAIL_ 0
+# else
+# define LC_MEASUREMENT_AVAIL_ 1
+# define USE_LOCALE_MEASUREMENT
+# endif
+#else
+# define LC_MEASUREMENT_AVAIL_ 0
+#endif
+#ifdef LC_PAPER
+
+ PERL_LOCALE_TABLE_ENTRY(PAPER, NULL)
+
+# if defined(NO_LOCALE) || defined(NO_LOCALE_PAPER)
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_PAPER_AVAIL_ 0
+# else
+# define LC_PAPER_AVAIL_ 1
+# define USE_LOCALE_PAPER
+# endif
+#else
+# define LC_PAPER_AVAIL_ 0
+#endif
+#ifdef LC_TELEPHONE
+
+ PERL_LOCALE_TABLE_ENTRY(TELEPHONE, NULL)
+
+# if defined(NO_LOCALE) || defined(NO_LOCALE_TELEPHONE)
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_TELEPHONE_AVAIL_ 0
+# else
+# define LC_TELEPHONE_AVAIL_ 1
+# define USE_LOCALE_TELEPHONE
+# endif
+#else
+# define LC_TELEPHONE_AVAIL_ 0
+#endif
+#ifdef LC_NAME
+
+ PERL_LOCALE_TABLE_ENTRY(NAME, NULL)
+
+# if defined(NO_LOCALE) || defined(NO_LOCALE_NAME)
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_NAME_AVAIL_ 0
+# else
+# define LC_NAME_AVAIL_ 1
+# define USE_LOCALE_NAME
+# endif
+#else
+# define LC_NAME_AVAIL_ 0
+#endif
+#ifdef LC_SYNTAX
+
+ PERL_LOCALE_TABLE_ENTRY(SYNTAX, NULL)
+
+# if defined(NO_LOCALE) || defined(NO_LOCALE_SYNTAX)
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_SYNTAX_AVAIL_ 0
+# else
+# define LC_SYNTAX_AVAIL_ 1
+# define USE_LOCALE_SYNTAX
+# endif
+#else
+# define LC_SYNTAX_AVAIL_ 0
+#endif
+#ifdef LC_TOD
+
+ PERL_LOCALE_TABLE_ENTRY(TOD, NULL)
+
+# if defined(NO_LOCALE) || defined(NO_LOCALE_TOD)
+# define HAS_IGNORED_LOCALE_CATEGORIES_
+# define LC_TOD_AVAIL_ 0
+# else
+# define LC_TOD_AVAIL_ 1
+# define USE_LOCALE_TOD
+# endif
+#else
+# define LC_TOD_AVAIL_ 0
+#endif
+
+/* ex: set ro ft=c: */
Property changes on: trunk/Master/tlpkg/tlperl/lib/CORE/locale_table.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/metaconfig.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/metaconfig.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/metaconfig.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -13,6 +13,112 @@
* Symbols should only be here temporarily. Once they are actually used,
* they should be removed from here.
*
- * HAS_NON_INT_BITFIELDS
- *
+ * BIN
+ * CASTI32
+ * CASTNEGFLOAT
+ * CPPLAST
+ * CPPMINUS
+ * CPPRUN
+ * CPPSTDIN
+ * DOSUID
+ * DOUBLE_HAS_NEGATIVE_ZERO
+ * DOUBLE_HAS_SUBNORMALS
+ * DOUBLEMANTBITS
+ * DOUBLE_STYLE_CRAY
+ * DOUBLE_STYLE_IBM
+ * DOUBLE_STYLE_IEEE
+ * DOUBLE_STYLE_VAX
+ * DRAND48_R_PROTO
+ * Gid_t_f
+ * HAS_ASCTIME64
+ * HAS_ATOLF
+ * HAS_BUILTIN_ADD_OVERFLOW
+ * HAS_BUILTIN_MUL_OVERFLOW
+ * HAS_BUILTIN_SUB_OVERFLOW
+ * HAS_CSH
+ * HAS_CTERMID
+ * HAS_CTIME64
+ * HAS_DIFFTIME64
+ * HAS_DRAND48_PROTO
+ * HAS_DRAND48_R
+ * HAS_FD_SET
+ * HAS_FFS
+ * HAS_FFSL
+ * HAS_GETMNT
+ * HAS_GMTIME64
+ * HAS_GNULIBC
+ * HAS_INT64_T
+ * HAS_IPV6_MREQ_SOURCE
+ * HAS_ISLESS
+ * HAS_ISNORMAL
+ * HAS_LGAMMA_R
+ * HAS_LOCALECONV_L
+ * HAS_LOCALTIME64
+ * HAS_LSEEK_PROTO
+ * HAS_MKTIME64
+ * HAS_NANOSLEEP
+ * HAS_OPEN3
+ * HAS_OPENAT
+ * HAS_PRCTL
+ * HAS_PSEUDOFORK
+ * HAS_RANDOM_R
+ * HAS_SIGINFO_SI_VALUE
+ * HAS_SIGSETJMP
+ * HAS_SRAND48_R
+ * HAS_SRANDOM_R
+ * HAS_STRTOD_L
+ * HAS_STRTOLD_L
+ * HAS_STRUCT_FS_DATA
+ * HAS_STRUCT_STATFS
+ * HAS_STRUCT_STATFS_F_FLAGS
+ * HAS_TIME
+ * HAS_USTAT
+ * HAS_VFORK
+ * HAS_WCSCMP
+ * HAS_WCSXFRM
+ * I16SIZE
+ * I32SIZE
+ * I64SIZE
+ * I8SIZE
+ * I_GDBM
+ * INSTALL_USR_BIN_PERL
+ * I_STDBOOL
+ * I_SYS_MOUNT
+ * I_SYS_STATFS
+ * I_SYS_STATVFS
+ * I_SYS_VFS
+ * I_TIME
+ * I_USTAT
+ * I_VFORK
+ * I_XLOCALE
+ * LOCALTIME_R_NEEDS_TZSET
+ * LOC_SED
+ * LONGDBLMANTBITS
+ * LONG_DOUBLE_STYLE_IEEE
+ * LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE
+ * LONG_DOUBLE_STYLE_IEEE_EXTENDED
+ * LONG_DOUBLE_STYLE_IEEE_STD
+ * LONG_DOUBLE_STYLE_VAX
+ * OSVERS
+ * PERL_LC_ALL_CATEGORY_POSITIONS_INIT
+ * PERL_LC_ALL_SEPARATOR
+ * PERL_LC_ALL_USES_NAME_VALUE_PAIRS
+ * PERL_PRIeldbl
+ * PERL_SCNfldbl
+ * PERL_TARGETARCH
+ * PERL_VENDORARCH
+ * RANDOM_R_PROTO
+ * SRAND48_R_PROTO
+ * SRANDOM_R_PROTO
+ * STARTPERL
+ * ST_INO_SIGN
+ * ST_INO_SIZE
+ * U32_ALIGNMENT_REQUIRED
+ * U32of
+ * U32xf
+ * U32Xf
+ * U8SIZE
+ * Uid_t_f
+ * USE_CROSS_COMPILE
+ * USE_MORE_BITS
*/
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/mg_vtable.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/mg_vtable.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/mg_vtable.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -198,11 +198,7 @@
{ Perl_magic_regdatum_get, Perl_magic_regdatum_set, 0, 0, 0, 0, 0, 0 },
{ 0, Perl_magic_setregexp, 0, 0, 0, 0, 0, 0 },
{ 0, Perl_magic_setsigall, 0, 0, 0, 0, 0, 0 },
-#ifndef PERL_MICRO
{ Perl_magic_getsig, Perl_magic_setsig, 0, Perl_magic_clearsig, 0, 0, 0, 0 },
-#else
- { 0, 0, 0, 0, 0, 0, 0, 0 },
-#endif
{ Perl_magic_getsubstr, Perl_magic_setsubstr, 0, 0, 0, 0, 0, 0 },
{ Perl_magic_get, Perl_magic_set, 0, 0, 0, 0, 0, 0 },
{ Perl_magic_gettaint, Perl_magic_settaint, 0, 0, 0, 0, 0, 0 },
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/nostdio.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/nostdio.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/nostdio.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -18,116 +18,116 @@
*/
#if !defined(_STDIO_H) && !defined(FILE) && !defined(_STDIO_INCLUDED) && !defined(__STDIO_LOADED)
-#define _STDIO_H
-#define _STDIO_INCLUDED
-#define __STDIO_LOADED
+# define _STDIO_H
+# define _STDIO_INCLUDED
+# define __STDIO_LOADED
struct _FILE;
-#define FILE struct _FILE
+# define FILE struct _FILE
#endif
#if !defined(OEMVS)
-#define _CANNOT "CANNOT"
+# define _CANNOT "CANNOT"
-#undef clearerr
-#undef fclose
-#undef fdopen
-#undef feof
-#undef ferror
-#undef fflush
-#undef fgetc
-#undef fgetpos
-#undef fgets
-#undef fileno
-#undef flockfile
-#undef fopen
-#undef fprintf
-#undef fputc
-#undef fputs
-#undef fread
-#undef freopen
-#undef fscanf
-#undef fseek
-#undef fsetpos
-#undef ftell
-#undef ftrylockfile
-#undef funlockfile
-#undef fwrite
-#undef getc
-#undef getc_unlocked
-#undef getw
-#undef pclose
-#undef popen
-#undef putc
-#undef putc_unlocked
-#undef putw
-#undef rewind
-#undef setbuf
-#undef setvbuf
-#undef stderr
-#undef stdin
-#undef stdout
-#undef tmpfile
-#undef ungetc
-#undef vfprintf
-#undef printf
+# undef clearerr
+# undef fclose
+# undef fdopen
+# undef feof
+# undef ferror
+# undef fflush
+# undef fgetc
+# undef fgetpos
+# undef fgets
+# undef fileno
+# undef flockfile
+# undef fopen
+# undef fprintf
+# undef fputc
+# undef fputs
+# undef fread
+# undef freopen
+# undef fscanf
+# undef fseek
+# undef fsetpos
+# undef ftell
+# undef ftrylockfile
+# undef funlockfile
+# undef fwrite
+# undef getc
+# undef getc_unlocked
+# undef getw
+# undef pclose
+# undef popen
+# undef putc
+# undef putc_unlocked
+# undef putw
+# undef rewind
+# undef setbuf
+# undef setvbuf
+# undef stderr
+# undef stdin
+# undef stdout
+# undef tmpfile
+# undef ungetc
+# undef vfprintf
+# undef printf
-#define fprintf _CANNOT _fprintf_
-#define printf _CANNOT _printf_
-#define stdin _CANNOT _stdin_
-#define stdout _CANNOT _stdout_
-#define stderr _CANNOT _stderr_
-#ifndef OS2
-#define tmpfile() _CANNOT _tmpfile_
-#endif
-#define fclose(f) _CANNOT _fclose_
-#define fflush(f) _CANNOT _fflush_
-#define fopen(p,m) _CANNOT _fopen_
-#define freopen(p,m,f) _CANNOT _freopen_
-#define setbuf(f,b) _CANNOT _setbuf_
-#define setvbuf(f,b,x,s) _CANNOT _setvbuf_
-#define fscanf _CANNOT _fscanf_
-#define vfprintf(f,fmt,a) _CANNOT _vfprintf_
-#define fgetc(f) _CANNOT _fgetc_
-#define fgets(s,n,f) _CANNOT _fgets_
-#define fputc(c,f) _CANNOT _fputc_
-#define fputs(s,f) _CANNOT _fputs_
-#define getc(f) _CANNOT _getc_
-#define putc(c,f) _CANNOT _putc_
-#ifndef OS2
-#define ungetc(c,f) _CANNOT _ungetc_
-#endif
-#define fread(b,s,c,f) _CANNOT _fread_
-#define fwrite(b,s,c,f) _CANNOT _fwrite_
-#define fgetpos(f,p) _CANNOT _fgetpos_
-#define fseek(f,o,w) _CANNOT _fseek_
-#define fsetpos(f,p) _CANNOT _fsetpos_
-#define ftell(f) _CANNOT _ftell_
-#define rewind(f) _CANNOT _rewind_
-#define clearerr(f) _CANNOT _clearerr_
-#define feof(f) _CANNOT _feof_
-#define ferror(f) _CANNOT _ferror_
-#define __filbuf(f) _CANNOT __filbuf_
-#define __flsbuf(c,f) _CANNOT __flsbuf_
-#define _filbuf(f) _CANNOT _filbuf_
-#define _flsbuf(c,f) _CANNOT _flsbuf_
-#define fdopen(fd,p) _CANNOT _fdopen_
-#define fileno(f) _CANNOT _fileno_
-#if defined(SFIO_VERSION) && SFIO_VERSION < 20000101L
-#define flockfile(f) _CANNOT _flockfile_
-#define ftrylockfile(f) _CANNOT _ftrylockfile_
-#define funlockfile(f) _CANNOT _funlockfile_
-#endif
-#define getc_unlocked(f) _CANNOT _getc_unlocked_
-#define putc_unlocked(c,f) _CANNOT _putc_unlocked_
-#define popen(c,m) _CANNOT _popen_
-#define getw(f) _CANNOT _getw_
-#define putw(v,f) _CANNOT _putw_
-#ifndef OS2
-#define pclose(f) _CANNOT _pclose_
-#endif
+# define fprintf _CANNOT _fprintf_
+# define printf _CANNOT _printf_
+# define stdin _CANNOT _stdin_
+# define stdout _CANNOT _stdout_
+# define stderr _CANNOT _stderr_
+# ifndef OS2
+# define tmpfile() _CANNOT _tmpfile_
+# endif
+# define fclose(f) _CANNOT _fclose_
+# define fflush(f) _CANNOT _fflush_
+# define fopen(p,m) _CANNOT _fopen_
+# define freopen(p,m,f) _CANNOT _freopen_
+# define setbuf(f,b) _CANNOT _setbuf_
+# define setvbuf(f,b,x,s) _CANNOT _setvbuf_
+# define fscanf _CANNOT _fscanf_
+# define vfprintf(f,fmt,a) _CANNOT _vfprintf_
+# define fgetc(f) _CANNOT _fgetc_
+# define fgets(s,n,f) _CANNOT _fgets_
+# define fputc(c,f) _CANNOT _fputc_
+# define fputs(s,f) _CANNOT _fputs_
+# define getc(f) _CANNOT _getc_
+# define putc(c,f) _CANNOT _putc_
+# ifndef OS2
+# define ungetc(c,f) _CANNOT _ungetc_
+# endif
+# define fread(b,s,c,f) _CANNOT _fread_
+# define fwrite(b,s,c,f) _CANNOT _fwrite_
+# define fgetpos(f,p) _CANNOT _fgetpos_
+# define fseek(f,o,w) _CANNOT _fseek_
+# define fsetpos(f,p) _CANNOT _fsetpos_
+# define ftell(f) _CANNOT _ftell_
+# define rewind(f) _CANNOT _rewind_
+# define clearerr(f) _CANNOT _clearerr_
+# define feof(f) _CANNOT _feof_
+# define ferror(f) _CANNOT _ferror_
+# define __filbuf(f) _CANNOT __filbuf_
+# define __flsbuf(c,f) _CANNOT __flsbuf_
+# define _filbuf(f) _CANNOT _filbuf_
+# define _flsbuf(c,f) _CANNOT _flsbuf_
+# define fdopen(fd,p) _CANNOT _fdopen_
+# define fileno(f) _CANNOT _fileno_
+# if defined(SFIO_VERSION) && SFIO_VERSION < 20000101L
+# define flockfile(f) _CANNOT _flockfile_
+# define ftrylockfile(f) _CANNOT _ftrylockfile_
+# define funlockfile(f) _CANNOT _funlockfile_
+# endif
+# define getc_unlocked(f) _CANNOT _getc_unlocked_
+# define putc_unlocked(c,f) _CANNOT _putc_unlocked_
+# define popen(c,m) _CANNOT _popen_
+# define getw(f) _CANNOT _getw_
+# define putw(v,f) _CANNOT _putw_
+# ifndef OS2
+# define pclose(f) _CANNOT _pclose_
+# endif
-#endif /*not define EBCDIC */
+#endif /*not define OEMVS */
/*
* ex: set ts=8 sts=4 sw=4 et:
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/opcode.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/opcode.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/opcode.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -567,6 +567,7 @@
"helemexistsor",
"methstart",
"initfield",
+ "classname",
"freed",
});
@@ -992,6 +993,7 @@
"hash element exists or",
"method start",
"initialise field",
+ "class name",
"freed op",
});
@@ -1422,6 +1424,7 @@
Perl_pp_helemexistsor,
Perl_pp_methstart,
Perl_pp_initfield,
+ Perl_pp_classname,
});
EXT Perl_check_t PL_check[] /* or perlvars.h */
@@ -1847,6 +1850,7 @@
Perl_ck_helemexistsor, /* helemexistsor */
Perl_ck_null, /* methstart */
Perl_ck_null, /* initfield */
+ Perl_ck_classname, /* classname */
});
EXTCONST U32 PL_opargs[] INIT({
@@ -1952,8 +1956,8 @@
0x0001120e, /* sbit_and */
0x0001120e, /* sbit_xor */
0x0001120e, /* sbit_or */
- 0x0000112e, /* negate */
- 0x0000110e, /* i_negate */
+ 0x0000113e, /* negate */
+ 0x0000111e, /* i_negate */
0x00001106, /* not */
0x0000110e, /* complement */
0x0000111e, /* ncomplement */
@@ -2014,7 +2018,7 @@
0x00224200, /* lslice */
0x00002405, /* anonlist */
0x00002405, /* anonhash */
- 0x0000241c, /* emptyavhv */
+ 0x0000001c, /* emptyavhv */
0x02993401, /* splice */
0x0002341d, /* push */
0x0000bb04, /* pop */
@@ -2271,6 +2275,7 @@
0x00011300, /* helemexistsor */
0x00000f00, /* methstart */
0x00000f00, /* initfield */
+ 0x00000008, /* classname */
});
END_EXTERN_C
@@ -2287,6 +2292,7 @@
#define OPpTRANS_CAN_FORCE_UTF8 0x01
#define OPpARGELEM_AV 0x02
#define OPpCONST_NOVER 0x02
+#define OPpCONST_TOKEN_BITS 0x02
#define OPpCOREARGS_DEREF2 0x02
#define OPpEVAL_HAS_HH 0x02
#define OPpFT_ACCESS 0x02
@@ -2293,6 +2299,7 @@
#define OPpHINT_STRICT_REFS 0x02
#define OPpINITFIELD_AV 0x02
#define OPpITER_REVERSED 0x02
+#define OPpMETH_NO_BAREWORD_IO 0x02
#define OPpSORT_INTEGER 0x02
#define OPpTRANS_USE_SVOP 0x02
#define OPpARG2_MASK 0x03
@@ -2312,6 +2319,7 @@
#define OPpTRANS_IDENTICAL 0x04
#define OPpUSEINT 0x04
#define OPpARGELEM_MASK 0x06
+#define OPpCONST_TOKEN_SHIFT 0x06
#define OPpARG3_MASK 0x07
#define OPpPADRANGE_COUNTSHIFT 0x07
#define OPpCONST_STRICT 0x08
@@ -2341,6 +2349,7 @@
#define OPpSUBSTR_REPL_FIRST 0x10
#define OPpTARGET_MY 0x10
#define OPpASSIGN_COMMON_RC1 0x20
+#define OPpCONST_BARE 0x20
#define OPpDEREF_HV 0x20
#define OPpEARLY_CV 0x20
#define OPpEMPTYAVHV_IS_HV 0x20
@@ -2364,7 +2373,7 @@
#define OPpASSIGN_BACKWARDS 0x40
#define OPpASSIGN_COMMON_SCALAR 0x40
#define OPpCONCAT_NESTED 0x40
-#define OPpCONST_BARE 0x40
+#define OPpCONST_TOKEN_LINE 0x40
#define OPpCOREARGS_SCALARMOD 0x40
#define OPpENTERSUB_DB 0x40
#define OPpEVAL_EVALSV 0x40
@@ -2384,6 +2393,7 @@
#define OPpPADRANGE_COUNTMASK 0x7f
#define OPpARG_IF_UNDEF 0x80
#define OPpASSIGN_CV_TO_GV 0x80
+#define OPpCONST_TOKEN_FILE 0x80
#define OPpCOREARGS_PUSHMARK 0x80
#define OPpDEFER_FINALLY 0x80
#define OPpENTERSUB_NOPAREN 0x80
@@ -2395,6 +2405,8 @@
#define OPpOPEN_OUT_CRLF 0x80
#define OPpPV_IS_UTF8 0x80
#define OPpTRANS_DELETE 0x80
+#define OPpCONST_TOKEN_MASK 0xc0
+#define OPpCONST_TOKEN_PACKAGE 0xc0
START_EXTERN_C
#ifndef DOINIT
@@ -2455,6 +2467,7 @@
'E','V','A','L','S','V','\0',
'E','X','I','S','T','S','\0',
'F','A','K','E','\0',
+ 'F','I','L','E','\0',
'F','I','N','A','L','L','Y','\0',
'F','T','A','C','C','E','S','S','\0',
'F','T','A','F','T','E','R','t','\0',
@@ -2482,6 +2495,7 @@
'K','E','Y','S','\0',
'K','V','S','L','I','C','E','\0',
'L','E','X','\0',
+ 'L','I','N','E','\0',
'L','I','N','E','N','U','M','\0',
'L','V','\0',
'L','V','D','E','F','E','R','\0',
@@ -2493,10 +2507,12 @@
'N','O','(',')','\0',
'N','O','I','N','I','T','\0',
'N','O','V','E','R','\0',
+ 'N','O','_','B','A','R','E','W','O','R','D','_','I','O','\0',
'N','U','M','\0',
'O','U','R','I','N','T','R','\0',
'O','U','T','B','I','N','\0',
'O','U','T','C','R','\0',
+ 'P','A','C','K','A','G','E','\0',
'R','E','F','C','\0',
'R','E','P','A','R','S','E','\0',
'R','E','P','L','1','S','T','\0',
@@ -2513,6 +2529,7 @@
'S','V','\0',
'T','A','R','G','\0',
'T','A','R','G','M','Y','\0',
+ 'T','O','K','E','N','\0',
'U','N','I','\0',
'U','S','E','I','N','T','\0',
'U','S','E','_','S','V','O','P','\0',
@@ -2538,14 +2555,15 @@
EXTCONST I16 PL_op_private_bitfields[] = {
0, 8, -1,
0, 8, -1,
- 0, 675, -1,
+ 0, 714, -1,
0, 8, -1,
0, 8, -1,
- 0, 682, -1,
- 0, 671, -1,
- 1, -1, 0, 632, 1, 39, 2, 319, -1,
+ 0, 721, -1,
+ 0, 710, -1,
+ 1, -1, 0, 665, 1, 39, 2, 324, -1,
4, -1, 1, 185, 2, 192, 3, 199, -1,
- 4, -1, 0, 632, 1, 39, 2, 319, 3, 131, -1,
+ 4, -1, 0, 665, 1, 39, 2, 324, 3, 131, -1,
+ 6, 680, 1, 455, 2, 246, 3, 567, -1,
};
@@ -2560,26 +2578,26 @@
1, /* pushmark */
3, /* wantarray */
4, /* const */
- 9, /* gvsv */
- 11, /* gv */
- 12, /* gelem */
- 13, /* padsv */
- 16, /* padsv_store */
- 19, /* padav */
- 24, /* padhv */
+ 10, /* gvsv */
+ 12, /* gv */
+ 13, /* gelem */
+ 14, /* padsv */
+ 17, /* padsv_store */
+ 20, /* padav */
+ 25, /* padhv */
-1, /* padany */
- 31, /* rv2gv */
- 38, /* rv2sv */
- 43, /* av2arylen */
- 45, /* rv2cv */
+ 32, /* rv2gv */
+ 39, /* rv2sv */
+ 44, /* av2arylen */
+ 46, /* rv2cv */
-1, /* anoncode */
0, /* prototype */
0, /* refgen */
0, /* srefgen */
- 52, /* ref */
- 55, /* bless */
- 56, /* backtick */
- 55, /* glob */
+ 53, /* ref */
+ 56, /* bless */
+ 57, /* backtick */
+ 56, /* glob */
0, /* readline */
-1, /* rcatline */
0, /* regcmaybe */
@@ -2587,20 +2605,20 @@
0, /* regcomp */
-1, /* match */
-1, /* qr */
- 61, /* subst */
+ 62, /* subst */
0, /* substcont */
- 62, /* trans */
- 62, /* transr */
- 69, /* sassign */
- 72, /* aassign */
+ 63, /* trans */
+ 63, /* transr */
+ 70, /* sassign */
+ 73, /* aassign */
0, /* chop */
0, /* schop */
- 78, /* chomp */
- 78, /* schomp */
+ 79, /* chomp */
+ 79, /* schomp */
0, /* defined */
- 80, /* undef */
+ 81, /* undef */
0, /* study */
- 85, /* pos */
+ 86, /* pos */
0, /* preinc */
0, /* i_preinc */
0, /* predec */
@@ -2609,171 +2627,171 @@
0, /* i_postinc */
0, /* postdec */
0, /* i_postdec */
- 88, /* pow */
- 88, /* multiply */
- 88, /* i_multiply */
- 88, /* divide */
- 88, /* i_divide */
- 88, /* modulo */
- 88, /* i_modulo */
- 90, /* repeat */
- 88, /* add */
- 88, /* i_add */
- 88, /* subtract */
- 88, /* i_subtract */
- 92, /* concat */
- 95, /* multiconcat */
- 101, /* stringify */
- 103, /* left_shift */
- 103, /* right_shift */
- 12, /* lt */
- 12, /* i_lt */
- 12, /* gt */
- 12, /* i_gt */
- 12, /* le */
- 12, /* i_le */
- 12, /* ge */
- 12, /* i_ge */
- 12, /* eq */
- 12, /* i_eq */
- 12, /* ne */
- 12, /* i_ne */
- 12, /* ncmp */
- 12, /* i_ncmp */
- 12, /* slt */
- 12, /* sgt */
- 12, /* sle */
- 12, /* sge */
- 12, /* seq */
- 12, /* sne */
- 12, /* scmp */
- 105, /* bit_and */
- 105, /* bit_xor */
- 105, /* bit_or */
- 103, /* nbit_and */
- 103, /* nbit_xor */
- 103, /* nbit_or */
- 105, /* sbit_and */
- 105, /* sbit_xor */
- 105, /* sbit_or */
- 0, /* negate */
- 0, /* i_negate */
+ 89, /* pow */
+ 89, /* multiply */
+ 89, /* i_multiply */
+ 89, /* divide */
+ 89, /* i_divide */
+ 89, /* modulo */
+ 89, /* i_modulo */
+ 91, /* repeat */
+ 89, /* add */
+ 89, /* i_add */
+ 89, /* subtract */
+ 89, /* i_subtract */
+ 93, /* concat */
+ 96, /* multiconcat */
+ 102, /* stringify */
+ 104, /* left_shift */
+ 104, /* right_shift */
+ 13, /* lt */
+ 13, /* i_lt */
+ 13, /* gt */
+ 13, /* i_gt */
+ 13, /* le */
+ 13, /* i_le */
+ 13, /* ge */
+ 13, /* i_ge */
+ 13, /* eq */
+ 13, /* i_eq */
+ 13, /* ne */
+ 13, /* i_ne */
+ 13, /* ncmp */
+ 13, /* i_ncmp */
+ 13, /* slt */
+ 13, /* sgt */
+ 13, /* sle */
+ 13, /* sge */
+ 13, /* seq */
+ 13, /* sne */
+ 13, /* scmp */
+ 106, /* bit_and */
+ 106, /* bit_xor */
+ 106, /* bit_or */
+ 104, /* nbit_and */
+ 104, /* nbit_xor */
+ 104, /* nbit_or */
+ 106, /* sbit_and */
+ 106, /* sbit_xor */
+ 106, /* sbit_or */
+ 79, /* negate */
+ 79, /* i_negate */
0, /* not */
- 105, /* complement */
- 103, /* ncomplement */
- 78, /* scomplement */
- 12, /* smartmatch */
- 101, /* atan2 */
- 78, /* sin */
- 78, /* cos */
- 101, /* rand */
- 101, /* srand */
- 78, /* exp */
- 78, /* log */
- 78, /* sqrt */
- 78, /* int */
- 78, /* hex */
- 78, /* oct */
- 78, /* abs */
- 106, /* length */
- 109, /* substr */
- 112, /* vec */
- 114, /* index */
- 114, /* rindex */
- 55, /* sprintf */
- 55, /* formline */
- 78, /* ord */
- 78, /* chr */
- 101, /* crypt */
+ 106, /* complement */
+ 104, /* ncomplement */
+ 79, /* scomplement */
+ 13, /* smartmatch */
+ 102, /* atan2 */
+ 79, /* sin */
+ 79, /* cos */
+ 102, /* rand */
+ 102, /* srand */
+ 79, /* exp */
+ 79, /* log */
+ 79, /* sqrt */
+ 79, /* int */
+ 79, /* hex */
+ 79, /* oct */
+ 79, /* abs */
+ 107, /* length */
+ 110, /* substr */
+ 113, /* vec */
+ 115, /* index */
+ 115, /* rindex */
+ 56, /* sprintf */
+ 56, /* formline */
+ 79, /* ord */
+ 79, /* chr */
+ 102, /* crypt */
0, /* ucfirst */
0, /* lcfirst */
0, /* uc */
0, /* lc */
0, /* quotemeta */
- 118, /* rv2av */
- 125, /* aelemfast */
- 125, /* aelemfast_lex */
- 125, /* aelemfastlex_store */
- 126, /* aelem */
- 131, /* aslice */
- 134, /* kvaslice */
+ 119, /* rv2av */
+ 126, /* aelemfast */
+ 126, /* aelemfast_lex */
+ 126, /* aelemfastlex_store */
+ 127, /* aelem */
+ 132, /* aslice */
+ 135, /* kvaslice */
0, /* aeach */
0, /* avalues */
- 43, /* akeys */
+ 44, /* akeys */
0, /* each */
- 43, /* values */
- 43, /* keys */
- 135, /* delete */
- 139, /* exists */
- 141, /* rv2hv */
- 126, /* helem */
- 131, /* hslice */
- 134, /* kvhslice */
- 149, /* multideref */
- 55, /* unpack */
- 55, /* pack */
- 156, /* split */
- 55, /* join */
- 161, /* list */
- 12, /* lslice */
- 55, /* anonlist */
- 55, /* anonhash */
- 163, /* emptyavhv */
- 55, /* splice */
- 101, /* push */
+ 44, /* values */
+ 44, /* keys */
+ 136, /* delete */
+ 140, /* exists */
+ 142, /* rv2hv */
+ 127, /* helem */
+ 132, /* hslice */
+ 135, /* kvhslice */
+ 150, /* multideref */
+ 56, /* unpack */
+ 56, /* pack */
+ 157, /* split */
+ 56, /* join */
+ 162, /* list */
+ 13, /* lslice */
+ 56, /* anonlist */
+ 56, /* anonhash */
+ 164, /* emptyavhv */
+ 56, /* splice */
+ 102, /* push */
0, /* pop */
0, /* shift */
- 101, /* unshift */
- 168, /* sort */
- 173, /* reverse */
+ 102, /* unshift */
+ 169, /* sort */
+ 174, /* reverse */
0, /* grepstart */
- 175, /* grepwhile */
+ 176, /* grepwhile */
0, /* mapstart */
0, /* mapwhile */
0, /* range */
- 177, /* flip */
- 177, /* flop */
+ 178, /* flip */
+ 178, /* flop */
0, /* and */
0, /* or */
- 12, /* xor */
+ 13, /* xor */
0, /* dor */
- 179, /* cond_expr */
+ 180, /* cond_expr */
0, /* andassign */
0, /* orassign */
0, /* dorassign */
- 181, /* entersub */
- 188, /* leavesub */
- 188, /* leavesublv */
+ 182, /* entersub */
+ 189, /* leavesub */
+ 189, /* leavesublv */
0, /* argcheck */
- 190, /* argelem */
- 192, /* argdefelem */
- 195, /* caller */
- 55, /* warn */
- 55, /* die */
- 55, /* reset */
+ 191, /* argelem */
+ 193, /* argdefelem */
+ 196, /* caller */
+ 56, /* warn */
+ 56, /* die */
+ 56, /* reset */
-1, /* lineseq */
- 197, /* nextstate */
- 197, /* dbstate */
+ 198, /* nextstate */
+ 198, /* dbstate */
-1, /* unstack */
-1, /* enter */
- 198, /* leave */
+ 199, /* leave */
-1, /* scope */
- 200, /* enteriter */
- 204, /* iter */
+ 201, /* enteriter */
+ 205, /* iter */
-1, /* enterloop */
- 205, /* leaveloop */
+ 206, /* leaveloop */
-1, /* return */
- 207, /* last */
- 207, /* next */
- 207, /* redo */
- 207, /* dump */
- 207, /* goto */
- 55, /* exit */
- 0, /* method */
- 0, /* method_named */
- 0, /* method_super */
- 0, /* method_redir */
- 0, /* method_redir_super */
+ 208, /* last */
+ 208, /* next */
+ 208, /* redo */
+ 208, /* dump */
+ 210, /* goto */
+ 56, /* exit */
+ 213, /* method */
+ 213, /* method_named */
+ 213, /* method_super */
+ 213, /* method_redir */
+ 213, /* method_redir_super */
0, /* entergiven */
0, /* leavegiven */
0, /* enterwhen */
@@ -2780,143 +2798,143 @@
0, /* leavewhen */
-1, /* break */
-1, /* continue */
- 209, /* open */
- 55, /* close */
- 55, /* pipe_op */
- 55, /* fileno */
- 55, /* umask */
- 55, /* binmode */
- 55, /* tie */
+ 215, /* open */
+ 56, /* close */
+ 56, /* pipe_op */
+ 56, /* fileno */
+ 56, /* umask */
+ 56, /* binmode */
+ 56, /* tie */
0, /* untie */
0, /* tied */
- 55, /* dbmopen */
+ 56, /* dbmopen */
0, /* dbmclose */
- 55, /* sselect */
- 55, /* select */
- 55, /* getc */
- 55, /* read */
- 55, /* enterwrite */
- 188, /* leavewrite */
+ 56, /* sselect */
+ 56, /* select */
+ 56, /* getc */
+ 56, /* read */
+ 56, /* enterwrite */
+ 189, /* leavewrite */
-1, /* prtf */
-1, /* print */
-1, /* say */
- 55, /* sysopen */
- 55, /* sysseek */
- 55, /* sysread */
- 55, /* syswrite */
- 55, /* eof */
- 55, /* tell */
- 55, /* seek */
- 55, /* truncate */
- 55, /* fcntl */
- 55, /* ioctl */
- 101, /* flock */
- 55, /* send */
- 55, /* recv */
- 55, /* socket */
- 55, /* sockpair */
- 55, /* bind */
- 55, /* connect */
- 55, /* listen */
- 55, /* accept */
- 55, /* shutdown */
- 55, /* gsockopt */
- 55, /* ssockopt */
+ 56, /* sysopen */
+ 56, /* sysseek */
+ 56, /* sysread */
+ 56, /* syswrite */
+ 56, /* eof */
+ 56, /* tell */
+ 56, /* seek */
+ 56, /* truncate */
+ 56, /* fcntl */
+ 56, /* ioctl */
+ 102, /* flock */
+ 56, /* send */
+ 56, /* recv */
+ 56, /* socket */
+ 56, /* sockpair */
+ 56, /* bind */
+ 56, /* connect */
+ 56, /* listen */
+ 56, /* accept */
+ 56, /* shutdown */
+ 56, /* gsockopt */
+ 56, /* ssockopt */
0, /* getsockname */
0, /* getpeername */
0, /* lstat */
0, /* stat */
- 214, /* ftrread */
- 214, /* ftrwrite */
- 214, /* ftrexec */
- 214, /* fteread */
- 214, /* ftewrite */
- 214, /* fteexec */
- 219, /* ftis */
- 219, /* ftsize */
- 219, /* ftmtime */
- 219, /* ftatime */
- 219, /* ftctime */
- 219, /* ftrowned */
- 219, /* fteowned */
- 219, /* ftzero */
- 219, /* ftsock */
- 219, /* ftchr */
- 219, /* ftblk */
- 219, /* ftfile */
- 219, /* ftdir */
- 219, /* ftpipe */
- 219, /* ftsuid */
- 219, /* ftsgid */
- 219, /* ftsvtx */
- 219, /* ftlink */
- 219, /* fttty */
- 219, /* fttext */
- 219, /* ftbinary */
- 101, /* chdir */
- 101, /* chown */
- 78, /* chroot */
- 101, /* unlink */
- 101, /* chmod */
- 101, /* utime */
- 101, /* rename */
- 101, /* link */
- 101, /* symlink */
+ 220, /* ftrread */
+ 220, /* ftrwrite */
+ 220, /* ftrexec */
+ 220, /* fteread */
+ 220, /* ftewrite */
+ 220, /* fteexec */
+ 225, /* ftis */
+ 225, /* ftsize */
+ 225, /* ftmtime */
+ 225, /* ftatime */
+ 225, /* ftctime */
+ 225, /* ftrowned */
+ 225, /* fteowned */
+ 225, /* ftzero */
+ 225, /* ftsock */
+ 225, /* ftchr */
+ 225, /* ftblk */
+ 225, /* ftfile */
+ 225, /* ftdir */
+ 225, /* ftpipe */
+ 225, /* ftsuid */
+ 225, /* ftsgid */
+ 225, /* ftsvtx */
+ 225, /* ftlink */
+ 225, /* fttty */
+ 225, /* fttext */
+ 225, /* ftbinary */
+ 102, /* chdir */
+ 102, /* chown */
+ 79, /* chroot */
+ 102, /* unlink */
+ 102, /* chmod */
+ 102, /* utime */
+ 102, /* rename */
+ 102, /* link */
+ 102, /* symlink */
0, /* readlink */
- 101, /* mkdir */
- 78, /* rmdir */
- 55, /* open_dir */
+ 102, /* mkdir */
+ 79, /* rmdir */
+ 56, /* open_dir */
0, /* readdir */
0, /* telldir */
- 55, /* seekdir */
+ 56, /* seekdir */
0, /* rewinddir */
0, /* closedir */
-1, /* fork */
- 223, /* wait */
- 101, /* waitpid */
- 101, /* system */
- 101, /* exec */
- 101, /* kill */
- 223, /* getppid */
- 101, /* getpgrp */
- 101, /* setpgrp */
- 101, /* getpriority */
- 101, /* setpriority */
- 223, /* time */
+ 229, /* wait */
+ 102, /* waitpid */
+ 102, /* system */
+ 102, /* exec */
+ 102, /* kill */
+ 229, /* getppid */
+ 102, /* getpgrp */
+ 102, /* setpgrp */
+ 102, /* getpriority */
+ 102, /* setpriority */
+ 229, /* time */
-1, /* tms */
0, /* localtime */
- 55, /* gmtime */
+ 56, /* gmtime */
0, /* alarm */
- 101, /* sleep */
- 55, /* shmget */
- 55, /* shmctl */
- 55, /* shmread */
- 55, /* shmwrite */
- 55, /* msgget */
- 55, /* msgctl */
- 55, /* msgsnd */
- 55, /* msgrcv */
- 55, /* semop */
- 55, /* semget */
- 55, /* semctl */
+ 102, /* sleep */
+ 56, /* shmget */
+ 56, /* shmctl */
+ 56, /* shmread */
+ 56, /* shmwrite */
+ 56, /* msgget */
+ 56, /* msgctl */
+ 56, /* msgsnd */
+ 56, /* msgrcv */
+ 56, /* semop */
+ 56, /* semget */
+ 56, /* semctl */
0, /* require */
0, /* dofile */
-1, /* hintseval */
- 224, /* entereval */
- 188, /* leaveeval */
+ 230, /* entereval */
+ 189, /* leaveeval */
0, /* entertry */
-1, /* leavetry */
0, /* ghbyname */
- 55, /* ghbyaddr */
+ 56, /* ghbyaddr */
-1, /* ghostent */
0, /* gnbyname */
- 55, /* gnbyaddr */
+ 56, /* gnbyaddr */
-1, /* gnetent */
0, /* gpbyname */
- 55, /* gpbynumber */
+ 56, /* gpbynumber */
-1, /* gprotoent */
- 55, /* gsbyname */
- 55, /* gsbyport */
+ 56, /* gsbyname */
+ 56, /* gsbyport */
-1, /* gservent */
0, /* shostent */
0, /* snetent */
@@ -2937,24 +2955,24 @@
-1, /* sgrent */
-1, /* egrent */
-1, /* getlogin */
- 55, /* syscall */
+ 56, /* syscall */
0, /* lock */
0, /* once */
-1, /* custom */
- 231, /* coreargs */
- 235, /* avhvswitch */
+ 237, /* coreargs */
+ 241, /* avhvswitch */
3, /* runcv */
0, /* fc */
-1, /* padcv */
-1, /* introcv */
-1, /* clonecv */
- 237, /* padrange */
- 239, /* refassign */
- 245, /* lvref */
- 251, /* lvrefslice */
- 16, /* lvavref */
+ 243, /* padrange */
+ 245, /* refassign */
+ 251, /* lvref */
+ 257, /* lvrefslice */
+ 17, /* lvavref */
0, /* anonconst */
- 12, /* isa */
+ 13, /* isa */
0, /* cmpchain_and */
0, /* cmpchain_dup */
0, /* entertrycatch */
@@ -2961,20 +2979,21 @@
-1, /* leavetrycatch */
-1, /* poptry */
0, /* catch */
- 252, /* pushdefer */
+ 258, /* pushdefer */
0, /* is_bool */
0, /* is_weak */
0, /* weaken */
0, /* unweaken */
- 52, /* blessed */
- 78, /* refaddr */
- 78, /* reftype */
- 78, /* ceil */
- 78, /* floor */
+ 53, /* blessed */
+ 260, /* refaddr */
+ 260, /* reftype */
+ 260, /* ceil */
+ 260, /* floor */
0, /* is_tainted */
- 254, /* helemexistsor */
- 256, /* methstart */
- 258, /* initfield */
+ 263, /* helemexistsor */
+ 265, /* methstart */
+ 267, /* initfield */
+ -1, /* classname */
};
@@ -2993,85 +3012,88 @@
*/
EXTCONST U16 PL_op_private_bitdefs[] = {
- 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, method, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst, cmpchain_and, cmpchain_dup, entertrycatch, catch, is_bool, is_weak, weaken, unweaken, is_tainted */
- 0x3abc, 0x4bb9, /* pushmark */
+ 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, not, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst, cmpchain_and, cmpchain_dup, entertrycatch, catch, is_bool, is_weak, weaken, unweaken, is_tainted */
+ 0x3bfc, 0x4fd9, /* pushmark */
0x00bd, /* wantarray, runcv */
- 0x0558, 0x1b70, 0x4c6c, 0x4808, 0x3fe5, /* const */
- 0x3abc, 0x4139, /* gvsv */
+ 0x065e, 0x0554, 0x1b70, 0x508c, 0x4c28, 0x4125, /* const */
+ 0x3bfc, 0x4459, /* gvsv */
0x19d5, /* gv */
0x0067, /* gelem, lt, i_lt, gt, i_gt, le, i_le, ge, i_ge, eq, i_eq, ne, i_ne, ncmp, i_ncmp, slt, sgt, sle, sge, seq, sne, scmp, smartmatch, lslice, xor, isa */
- 0x3abc, 0x4bb8, 0x03d7, /* padsv */
- 0x3abc, 0x4bb8, 0x0003, /* padsv_store, lvavref */
- 0x3abc, 0x4bb8, 0x06d4, 0x3bac, 0x4989, /* padav */
- 0x3abc, 0x4bb8, 0x06d4, 0x0770, 0x3bac, 0x4988, 0x3621, /* padhv */
- 0x3abc, 0x1e38, 0x03d6, 0x3bac, 0x3f08, 0x4c64, 0x0003, /* rv2gv */
- 0x3abc, 0x4138, 0x03d6, 0x4c64, 0x0003, /* rv2sv */
- 0x3bac, 0x0003, /* av2arylen, akeys, values, keys */
- 0x3e7c, 0x1198, 0x0ef4, 0x014c, 0x4f68, 0x4c64, 0x0003, /* rv2cv */
+ 0x3bfc, 0x4fd8, 0x03d7, /* padsv */
+ 0x3bfc, 0x4fd8, 0x0003, /* padsv_store, lvavref */
+ 0x3bfc, 0x4fd8, 0x06d4, 0x3cec, 0x4da9, /* padav */
+ 0x3bfc, 0x4fd8, 0x06d4, 0x0770, 0x3cec, 0x4da8, 0x36c1, /* padhv */
+ 0x3bfc, 0x1e38, 0x03d6, 0x3cec, 0x4048, 0x5084, 0x0003, /* rv2gv */
+ 0x3bfc, 0x4458, 0x03d6, 0x5084, 0x0003, /* rv2sv */
+ 0x3cec, 0x0003, /* av2arylen, akeys, values, keys */
+ 0x3fbc, 0x1198, 0x0ef4, 0x014c, 0x5388, 0x5084, 0x0003, /* rv2cv */
0x06d4, 0x0770, 0x0003, /* ref, blessed */
0x018f, /* bless, glob, sprintf, formline, unpack, pack, join, anonlist, anonhash, splice, warn, die, reset, exit, close, pipe_op, fileno, umask, binmode, tie, dbmopen, sselect, select, getc, read, enterwrite, sysopen, sysseek, sysread, syswrite, eof, tell, seek, truncate, fcntl, ioctl, send, recv, socket, sockpair, bind, connect, listen, accept, shutdown, gsockopt, ssockopt, open_dir, seekdir, gmtime, shmget, shmctl, shmread, shmwrite, msgget, msgctl, msgsnd, msgrcv, semop, semget, semctl, ghbyaddr, gnbyaddr, gpbynumber, gsbyname, gsbyport, syscall */
- 0x431c, 0x4238, 0x2dd4, 0x2d10, 0x0003, /* backtick */
+ 0x463c, 0x4558, 0x2e74, 0x2db0, 0x0003, /* backtick */
0x06d5, /* subst */
- 0x129c, 0x24b8, 0x0ad4, 0x4acc, 0x2848, 0x5244, 0x08e1, /* trans, transr */
+ 0x129c, 0x2558, 0x0ad4, 0x4eec, 0x28e8, 0x5724, 0x08e1, /* trans, transr */
0x10dc, 0x05f8, 0x0067, /* sassign */
- 0x0d98, 0x0c94, 0x0b90, 0x3bac, 0x06c8, 0x0067, /* aassign */
- 0x5010, 0x0003, /* chomp, schomp, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, ord, chr, chroot, rmdir, refaddr, reftype, ceil, floor */
- 0x3abc, 0x4bb8, 0x3534, 0x5010, 0x0003, /* undef */
- 0x06d4, 0x3bac, 0x0003, /* pos */
- 0x5010, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract */
+ 0x0d98, 0x0c94, 0x0b90, 0x3cec, 0x06c8, 0x0067, /* aassign */
+ 0x5430, 0x0003, /* chomp, schomp, negate, i_negate, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, ord, chr, chroot, rmdir */
+ 0x3bfc, 0x4fd8, 0x35d4, 0x5430, 0x0003, /* undef */
+ 0x06d4, 0x3cec, 0x0003, /* pos */
+ 0x5430, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract */
0x1658, 0x0067, /* repeat */
- 0x3d98, 0x5010, 0x0067, /* concat */
- 0x3abc, 0x0338, 0x1e34, 0x5010, 0x4d4c, 0x0003, /* multiconcat */
- 0x5010, 0x018f, /* stringify, atan2, rand, srand, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */
- 0x5010, 0x5169, /* left_shift, right_shift, nbit_and, nbit_xor, nbit_or, ncomplement */
- 0x5169, /* bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, complement */
- 0x06d4, 0x5010, 0x0003, /* length */
- 0x4570, 0x3bac, 0x012b, /* substr */
- 0x3bac, 0x0067, /* vec */
- 0x3d18, 0x06d4, 0x5010, 0x018f, /* index, rindex */
- 0x3abc, 0x4138, 0x06d4, 0x3bac, 0x4988, 0x4c64, 0x0003, /* rv2av */
+ 0x3ed8, 0x5430, 0x0067, /* concat */
+ 0x3bfc, 0x0338, 0x1e34, 0x5430, 0x516c, 0x0003, /* multiconcat */
+ 0x5430, 0x018f, /* stringify, atan2, rand, srand, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */
+ 0x5430, 0x5649, /* left_shift, right_shift, nbit_and, nbit_xor, nbit_or, ncomplement */
+ 0x5649, /* bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, complement */
+ 0x06d4, 0x5430, 0x0003, /* length */
+ 0x4990, 0x3cec, 0x012b, /* substr */
+ 0x3cec, 0x0067, /* vec */
+ 0x3e58, 0x06d4, 0x5430, 0x018f, /* index, rindex */
+ 0x3bfc, 0x4458, 0x06d4, 0x3cec, 0x4da8, 0x5084, 0x0003, /* rv2av */
0x025f, /* aelemfast, aelemfast_lex, aelemfastlex_store */
- 0x3abc, 0x39b8, 0x03d6, 0x3bac, 0x0067, /* aelem, helem */
- 0x3abc, 0x3bac, 0x4989, /* aslice, hslice */
- 0x3bad, /* kvaslice, kvhslice */
- 0x3abc, 0x48d8, 0x36d4, 0x0003, /* delete */
- 0x4e98, 0x0003, /* exists */
- 0x3abc, 0x4138, 0x06d4, 0x0770, 0x3bac, 0x4988, 0x4c64, 0x3621, /* rv2hv */
- 0x3abc, 0x39b8, 0x1314, 0x1d50, 0x3bac, 0x4c64, 0x0003, /* multideref */
- 0x3abc, 0x4138, 0x0410, 0x37cc, 0x2b49, /* split */
- 0x3abc, 0x2579, /* list */
- 0x3abc, 0x4bb8, 0x0214, 0x5010, 0x018f, /* emptyavhv */
- 0x15b0, 0x330c, 0x4668, 0x3404, 0x40a1, /* sort */
- 0x330c, 0x0003, /* reverse */
+ 0x3bfc, 0x3af8, 0x03d6, 0x3cec, 0x0067, /* aelem, helem */
+ 0x3bfc, 0x3cec, 0x4da9, /* aslice, hslice */
+ 0x3ced, /* kvaslice, kvhslice */
+ 0x3bfc, 0x4cf8, 0x3774, 0x0003, /* delete */
+ 0x52b8, 0x0003, /* exists */
+ 0x3bfc, 0x4458, 0x06d4, 0x0770, 0x3cec, 0x4da8, 0x5084, 0x36c1, /* rv2hv */
+ 0x3bfc, 0x3af8, 0x1314, 0x1d50, 0x3cec, 0x5084, 0x0003, /* multideref */
+ 0x3bfc, 0x4458, 0x0410, 0x386c, 0x2be9, /* split */
+ 0x3bfc, 0x2619, /* list */
+ 0x3bfc, 0x4fd8, 0x0214, 0x5430, 0x018f, /* emptyavhv */
+ 0x15b0, 0x33ac, 0x4a88, 0x34a4, 0x43c1, /* sort */
+ 0x33ac, 0x0003, /* reverse */
0x06d4, 0x0003, /* grepwhile */
- 0x3858, 0x0003, /* flip, flop */
- 0x3abc, 0x0003, /* cond_expr */
- 0x3abc, 0x1198, 0x03d6, 0x014c, 0x4f68, 0x4c64, 0x2c21, /* entersub */
- 0x43d8, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */
+ 0x3998, 0x0003, /* flip, flop */
+ 0x3bfc, 0x0003, /* cond_expr */
+ 0x3bfc, 0x1198, 0x03d6, 0x014c, 0x5388, 0x5084, 0x2cc1, /* entersub */
+ 0x47f8, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */
0x02aa, 0x0003, /* argelem */
- 0x2a3c, 0x2918, 0x0003, /* argdefelem */
+ 0x2adc, 0x29b8, 0x0003, /* argdefelem */
0x00bc, 0x018f, /* caller */
- 0x2755, /* nextstate, dbstate */
- 0x395c, 0x43d9, /* leave */
- 0x3abc, 0x4138, 0x120c, 0x46e5, /* enteriter */
- 0x46e5, /* iter */
- 0x395c, 0x0067, /* leaveloop */
- 0x537c, 0x0003, /* last, next, redo, dump, goto */
- 0x431c, 0x4238, 0x2dd4, 0x2d10, 0x018f, /* open */
- 0x20f0, 0x234c, 0x2208, 0x1fc4, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */
- 0x20f0, 0x234c, 0x2208, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */
- 0x5011, /* wait, getppid, time */
- 0x1c78, 0x4474, 0x0fb0, 0x082c, 0x50e8, 0x2664, 0x0003, /* entereval */
- 0x3c7c, 0x0018, 0x14c4, 0x13e1, /* coreargs */
- 0x3bac, 0x00c7, /* avhvswitch */
- 0x3abc, 0x01fb, /* padrange */
- 0x3abc, 0x4bb8, 0x04f6, 0x348c, 0x1ac8, 0x0067, /* refassign */
- 0x3abc, 0x4bb8, 0x04f6, 0x348c, 0x1ac8, 0x0003, /* lvref */
- 0x3abd, /* lvrefslice */
- 0x1edc, 0x0003, /* pushdefer */
+ 0x27f5, /* nextstate, dbstate */
+ 0x3a9c, 0x47f9, /* leave */
+ 0x3bfc, 0x4458, 0x120c, 0x4b05, /* enteriter */
+ 0x4b05, /* iter */
+ 0x3a9c, 0x0067, /* leaveloop */
+ 0x585c, 0x0003, /* last, next, redo, dump */
+ 0x585c, 0x5388, 0x0003, /* goto */
+ 0x41e4, 0x0003, /* method, method_named, method_super, method_redir, method_redir_super */
+ 0x463c, 0x4558, 0x2e74, 0x2db0, 0x018f, /* open */
+ 0x2190, 0x23ec, 0x22a8, 0x2064, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */
+ 0x2190, 0x23ec, 0x22a8, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */
+ 0x5431, /* wait, getppid, time */
+ 0x1c78, 0x4894, 0x0fb0, 0x082c, 0x55c8, 0x2704, 0x0003, /* entereval */
+ 0x3dbc, 0x0018, 0x14c4, 0x13e1, /* coreargs */
+ 0x3cec, 0x00c7, /* avhvswitch */
+ 0x3bfc, 0x01fb, /* padrange */
+ 0x3bfc, 0x4fd8, 0x04f6, 0x352c, 0x1ac8, 0x0067, /* refassign */
+ 0x3bfc, 0x4fd8, 0x04f6, 0x352c, 0x1ac8, 0x0003, /* lvref */
+ 0x3bfd, /* lvrefslice */
+ 0x1f7c, 0x0003, /* pushdefer */
+ 0x5430, 0x5388, 0x0003, /* refaddr, reftype, ceil, floor */
0x131c, 0x0003, /* helemexistsor */
- 0x2e7c, 0x0003, /* methstart */
- 0x3168, 0x2fc4, 0x0003, /* initfield */
+ 0x2f1c, 0x0003, /* methstart */
+ 0x3208, 0x3064, 0x0003, /* initfield */
};
@@ -3085,7 +3107,7 @@
/* SCALAR */ (OPpARG1_MASK),
/* PUSHMARK */ (OPpPAD_STATE|OPpLVAL_INTRO),
/* WANTARRAY */ (OPpOFFBYONE),
- /* CONST */ (OPpCONST_NOVER|OPpCONST_SHORTCIRCUIT|OPpCONST_STRICT|OPpCONST_ENTERED|OPpCONST_BARE),
+ /* CONST */ (OPpCONST_NOVER|OPpCONST_SHORTCIRCUIT|OPpCONST_STRICT|OPpCONST_ENTERED|OPpCONST_BARE|OPpCONST_TOKEN_MASK),
/* GVSV */ (OPpOUR_INTRO|OPpLVAL_INTRO),
/* GV */ (OPpEARLY_CV),
/* GELEM */ (OPpARG2_MASK),
@@ -3182,8 +3204,8 @@
/* SBIT_AND */ (OPpUSEINT),
/* SBIT_XOR */ (OPpUSEINT),
/* SBIT_OR */ (OPpUSEINT),
- /* NEGATE */ (OPpARG1_MASK),
- /* I_NEGATE */ (OPpARG1_MASK),
+ /* NEGATE */ (OPpARG1_MASK|OPpTARGET_MY),
+ /* I_NEGATE */ (OPpARG1_MASK|OPpTARGET_MY),
/* NOT */ (OPpARG1_MASK),
/* COMPLEMENT */ (OPpUSEINT),
/* NCOMPLEMENT */ (OPpUSEINT|OPpTARGET_MY),
@@ -3293,13 +3315,13 @@
/* NEXT */ (OPpARG1_MASK|OPpPV_IS_UTF8),
/* REDO */ (OPpARG1_MASK|OPpPV_IS_UTF8),
/* DUMP */ (OPpARG1_MASK|OPpPV_IS_UTF8),
- /* GOTO */ (OPpARG1_MASK|OPpPV_IS_UTF8),
+ /* GOTO */ (OPpARG1_MASK|OPpENTERSUB_HASTARG|OPpPV_IS_UTF8),
/* EXIT */ (OPpARG4_MASK),
- /* METHOD */ (OPpARG1_MASK),
- /* METHOD_NAMED */ (OPpARG1_MASK),
- /* METHOD_SUPER */ (OPpARG1_MASK),
- /* METHOD_REDIR */ (OPpARG1_MASK),
- /* METHOD_REDIR_SUPER */ (OPpARG1_MASK),
+ /* METHOD */ (OPpARG1_MASK|OPpMETH_NO_BAREWORD_IO),
+ /* METHOD_NAMED */ (OPpARG1_MASK|OPpMETH_NO_BAREWORD_IO),
+ /* METHOD_SUPER */ (OPpARG1_MASK|OPpMETH_NO_BAREWORD_IO),
+ /* METHOD_REDIR */ (OPpARG1_MASK|OPpMETH_NO_BAREWORD_IO),
+ /* METHOD_REDIR_SUPER */ (OPpARG1_MASK|OPpMETH_NO_BAREWORD_IO),
/* ENTERGIVEN */ (OPpARG1_MASK),
/* LEAVEGIVEN */ (OPpARG1_MASK),
/* ENTERWHEN */ (OPpARG1_MASK),
@@ -3493,14 +3515,15 @@
/* WEAKEN */ (OPpARG1_MASK),
/* UNWEAKEN */ (OPpARG1_MASK),
/* BLESSED */ (OPpARG1_MASK|OPpMAYBE_TRUEBOOL|OPpTRUEBOOL),
- /* REFADDR */ (OPpARG1_MASK|OPpTARGET_MY),
- /* REFTYPE */ (OPpARG1_MASK|OPpTARGET_MY),
- /* CEIL */ (OPpARG1_MASK|OPpTARGET_MY),
- /* FLOOR */ (OPpARG1_MASK|OPpTARGET_MY),
+ /* REFADDR */ (OPpARG1_MASK|OPpENTERSUB_HASTARG|OPpTARGET_MY),
+ /* REFTYPE */ (OPpARG1_MASK|OPpENTERSUB_HASTARG|OPpTARGET_MY),
+ /* CEIL */ (OPpARG1_MASK|OPpENTERSUB_HASTARG|OPpTARGET_MY),
+ /* FLOOR */ (OPpARG1_MASK|OPpENTERSUB_HASTARG|OPpTARGET_MY),
/* IS_TAINTED */ (OPpARG1_MASK),
/* HELEMEXISTSOR */ (OPpARG1_MASK|OPpHELEMEXISTSOR_DELETE),
/* METHSTART */ (OPpARG1_MASK|OPpINITFIELDS),
/* INITFIELD */ (OPpARG1_MASK|OPpINITFIELD_AV|OPpINITFIELD_HV),
+ /* CLASSNAME */ (0),
};
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/opnames.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/opnames.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/opnames.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -435,10 +435,11 @@
OP_HELEMEXISTSOR = 418,
OP_METHSTART = 419,
OP_INITFIELD = 420,
+ OP_CLASSNAME = 421,
OP_max
} opcode;
-#define MAXO 421
+#define MAXO 422
#define OP_FREED MAXO
/* the OP_IS_* macros are optimized to a simple range check because
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/pad.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/pad.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/pad.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -155,11 +155,8 @@
* whether PL_comppad and PL_curpad are consistent and whether they have
* active values */
-# define pad_peg(label)
-
#ifdef DEBUGGING
# define ASSERT_CURPAD_LEGAL(label) \
- pad_peg(label); \
if (PL_comppad ? (AvARRAY(PL_comppad) != PL_curpad) : (PL_curpad != 0)) \
Perl_croak(aTHX_ "panic: illegal pad in %s: 0x%" UVxf "[0x%" UVxf "]",\
label, PTR2UV(PL_comppad), PTR2UV(PL_curpad));
@@ -166,7 +163,6 @@
# define ASSERT_CURPAD_ACTIVE(label) \
- pad_peg(label); \
if (!PL_comppad || (AvARRAY(PL_comppad) != PL_curpad)) \
Perl_croak(aTHX_ "panic: invalid pad in %s: 0x%" UVxf "[0x%" UVxf "]",\
label, PTR2UV(PL_comppad), PTR2UV(PL_curpad));
@@ -359,15 +355,15 @@
#define PadnameLVALUE(pn) (PadnameFLAGS(pn) & PADNAMEf_LVALUE)
#define PadnameIsFIELD(pn) (PadnameFLAGS(pn) & PADNAMEf_FIELD)
-#define PadnameLVALUE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_LVALUE)
-#define PadnameIsSTATE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_STATE)
+#define PadnameLVALUE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_LVALUE)
+#define PadnameIsSTATE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_STATE)
-#define PADNAMEf_OUTER 0x01 /* outer lexical var */
-#define PADNAMEf_STATE 0x02 /* state var */
-#define PADNAMEf_LVALUE 0x04 /* used as lvalue */
-#define PADNAMEf_TYPED 0x08 /* for B; unused by core */
-#define PADNAMEf_OUR 0x10 /* for B; unused by core */
-#define PADNAMEf_FIELD 0x20 /* field var */
+#define PADNAMEf_OUTER 0x01 /* outer lexical var */
+#define PADNAMEf_STATE 0x02 /* state var */
+#define PADNAMEf_LVALUE 0x04 /* used as lvalue */
+#define PADNAMEf_TYPED 0x08 /* for B; unused by core */
+#define PADNAMEf_OUR 0x10 /* for B; unused by core */
+#define PADNAMEf_FIELD 0x20 /* field var */
/* backward compatibility */
#ifndef PERL_CORE
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/patchlevel.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/patchlevel.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/patchlevel.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -38,8 +38,8 @@
* exactly on the third column */
#define PERL_REVISION 5 /* age */
-#define PERL_VERSION 38 /* epoch */
-#define PERL_SUBVERSION 2 /* generation */
+#define PERL_VERSION 40 /* epoch */
+#define PERL_SUBVERSION 1 /* generation */
/* The following numbers describe the earliest compatible version of
Perl ("compatibility" here being defined as sufficient binary/API
@@ -59,7 +59,7 @@
changing them should not be necessary.
*/
#define PERL_API_REVISION 5
-#define PERL_API_VERSION 38
+#define PERL_API_VERSION 40
#define PERL_API_SUBVERSION 0
/*
XXX Note: The selection of non-default Configure options, such
@@ -150,9 +150,6 @@
# if defined(PERL_IS_MINIPERL)
# define PERL_PATCHNUM "UNKNOWN-miniperl"
# define PERL_GIT_UNPUSHED_COMMITS /*leave-this-comment*/
-# elif defined(PERL_MICRO)
-# define PERL_PATCHNUM "UNKNOWN-microperl"
-# define PERL_GIT_UNPUSHED_COMMITS /*leave-this-comment*/
# else
# include "git_version.h"
# endif
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/perl.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/perl.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/perl.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -38,10 +38,30 @@
#define USE_STDIO
#endif /* PERL_FOR_X2P */
-#ifdef PERL_MICRO
-# include "uconfig.h"
-#else
-# include "config.h"
+/* Treat the SVs on the argument stack as having been reference counted.
+ * (Experimental).
+ */
+/* #define PERL_RC_STACK */
+
+#include "config.h"
+
+/* This fakes up using Mingw for locale handling. In order to not define WIN32
+ * in this file (and hence throughout the code that isn't expecting it), this
+ * doesn't define that, but defines the appropriate things that would otherwise
+ * be defined later in the file. Hence those and here must be kept in sync */
+#ifdef WIN32_USE_FAKE_OLD_MINGW_LOCALES
+# define UINT unsigned int
+# undef USE_THREAD_SAFE_LOCALE
+# define NO_POSIX_2008_LOCALE
+# undef HAS_NL_LANGINFO
+# undef HAS_NL_LANGINFO_L
+# undef _UCRT
+# ifdef USE_LOCALE
+# define TS_W32_BROKEN_LOCALECONV
+# ifdef USE_THREADS
+# define EMULATE_THREAD_SAFE_LOCALES
+# endif
+# endif
#endif
/*
@@ -93,14 +113,14 @@
# define HAS_C99 1
#endif
+/* =========================================================================
+ * The defines from here to the following ===== line are unfortunately
+ * duplicated in makedef.pl, and changes here MUST also be made there */
+
/* See L<perlguts/"The Perl API"> for detailed notes on
* MULTIPLICITY and PERL_IMPLICIT_SYS */
-/* XXX NOTE that from here --> to <-- the same logic is
- * repeated in makedef.pl, so be certain to update
- * both places when editing. */
-
-#ifdef USE_ITHREADS
+#ifdef USE_THREADS
# if !defined(MULTIPLICITY)
# define MULTIPLICITY
# endif
@@ -129,11 +149,12 @@
/* Use the reentrant APIs like localtime_r and getpwent_r */
/* Win32 has naturally threadsafe libraries, no need to use any _r variants.
* XXX KEEP makedef.pl copy of this code in sync */
-#if defined(USE_ITHREADS) && !defined(USE_REENTRANT_API) && !defined(WIN32)
+#if defined(MULTIPLICITY) && !defined(USE_REENTRANT_API) && !defined(WIN32)
# define USE_REENTRANT_API
#endif
-/* <--- here ends the logic shared by perl.h and makedef.pl */
+/* end of makedef.pl logic duplication. But there are other groups below.
+ * ========================================================================= */
/*
=for apidoc_section $directives
@@ -257,7 +278,11 @@
# define MEMBER_TO_FPTR(name) name
#endif /* !PERL_CORE */
-#define CALLRUNOPS PL_runops
+#ifdef PERL_RC_STACK
+# define CALLRUNOPS Perl_runops_wrap
+#else
+# define CALLRUNOPS PL_runops
+#endif
#define CALLREGCOMP(sv, flags) Perl_pregcomp(aTHX_ (sv),(flags))
@@ -360,47 +385,45 @@
* have HASATTRIBUTE_FORMAT).
*/
-#ifndef PERL_MICRO
-# if defined __GNUC__ && !defined(__INTEL_COMPILER)
-# if PERL_GCC_VERSION_GE(3,1,0)
-# define HASATTRIBUTE_DEPRECATED
+#if defined __GNUC__ && !defined(__INTEL_COMPILER)
+# if PERL_GCC_VERSION_GE(3,1,0)
+# define HASATTRIBUTE_DEPRECATED
+# endif
+# if PERL_GCC_VERSION_GE(3,0,0) /* XXX Verify this version */
+# define HASATTRIBUTE_FORMAT
+# if defined __MINGW32__
+# define PRINTF_FORMAT_NULL_OK
# endif
-# if PERL_GCC_VERSION_GE(3,0,0) /* XXX Verify this version */
-# define HASATTRIBUTE_FORMAT
-# if defined __MINGW32__
-# define PRINTF_FORMAT_NULL_OK
-# endif
-# endif
-# if PERL_GCC_VERSION_GE(3,0,0)
-# define HASATTRIBUTE_MALLOC
-# endif
-# if PERL_GCC_VERSION_GE(3,3,0)
-# define HASATTRIBUTE_NONNULL
-# endif
-# if PERL_GCC_VERSION_GE(2,5,0)
-# define HASATTRIBUTE_NORETURN
-# endif
-# if PERL_GCC_VERSION_GE(3,0,0)
-# define HASATTRIBUTE_PURE
-# endif
-# if PERL_GCC_VERSION_GE(3,4,0)
-# define HASATTRIBUTE_UNUSED
-# endif
-# if __GNUC__ == 3 && __GNUC_MINOR__ == 3 && !defined(__cplusplus)
-# define HASATTRIBUTE_UNUSED /* gcc-3.3, but not g++-3.3. */
-# endif
-# if PERL_GCC_VERSION_GE(3,4,0)
-# define HASATTRIBUTE_WARN_UNUSED_RESULT
-# endif
- /* always_inline is buggy in gcc <= 4.6 and causes compilation errors */
-# if PERL_GCC_VERSION_GE(4,7,0)
-# define HASATTRIBUTE_ALWAYS_INLINE
-# endif
-# if PERL_GCC_VERSION_GE(3,3,0)
-# define HASATTRIBUTE_VISIBILITY
-# endif
# endif
-#endif /* #ifndef PERL_MICRO */
+# if PERL_GCC_VERSION_GE(3,0,0)
+# define HASATTRIBUTE_MALLOC
+# endif
+# if PERL_GCC_VERSION_GE(3,3,0)
+# define HASATTRIBUTE_NONNULL
+# endif
+# if PERL_GCC_VERSION_GE(2,5,0)
+# define HASATTRIBUTE_NORETURN
+# endif
+# if PERL_GCC_VERSION_GE(3,0,0)
+# define HASATTRIBUTE_PURE
+# endif
+# if PERL_GCC_VERSION_GE(3,4,0)
+# define HASATTRIBUTE_UNUSED
+# endif
+# if __GNUC__ == 3 && __GNUC_MINOR__ == 3 && !defined(__cplusplus)
+# define HASATTRIBUTE_UNUSED /* gcc-3.3, but not g++-3.3. */
+# endif
+# if PERL_GCC_VERSION_GE(3,4,0)
+# define HASATTRIBUTE_WARN_UNUSED_RESULT
+# endif
+ /* always_inline is buggy in gcc <= 4.6 and causes compilation errors */
+# if PERL_GCC_VERSION_GE(4,7,0)
+# define HASATTRIBUTE_ALWAYS_INLINE
+# endif
+# if PERL_GCC_VERSION_GE(3,3,0)
+# define HASATTRIBUTE_VISIBILITY
+# endif
+#endif
#ifdef HASATTRIBUTE_DEPRECATED
# define __attribute__deprecated__ __attribute__((deprecated))
@@ -547,7 +570,7 @@
# define PERL_UNUSED_VAR(x) ((void)sizeof(x))
#endif
-#if defined(USE_ITHREADS)
+#if defined(MULTIPLICITY)
# define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl)
#else
# define PERL_UNUSED_CONTEXT
@@ -775,7 +798,7 @@
if (x) STMT_START { ... } STMT_END else ...
Note that you can't return a value out of this construct and cannot use it as
-an operand to the comma operator. These limit its utility.
+an operand to the comma operator. These limit its utility.
But, a value could be returned by constructing the API so that a pointer is
passed and the macro dereferences this to set the return. If the value can be
@@ -884,6 +907,15 @@
#define STANDARD_C
#endif
+/* Don't compile 'code' if PERL_MEM_LOG is defined. This is used for
+ * constructs that don't play well when PERL_MEM_LOG is active, so that they
+ * automatically don't get compiled without having to use extra #ifdef's */
+#ifndef PERL_MEM_LOG
+# define UNLESS_PERL_MEM_LOG(code) code
+#else
+# define UNLESS_PERL_MEM_LOG(code)
+#endif
+
/* By compiling a perl with -DNO_TAINT_SUPPORT or -DSILENT_NO_TAINT_SUPPORT,
* you get a perl without taint support, but doubtlessly with a lesser
* degree of support. Do not do so unless you know exactly what it means
@@ -1027,9 +1059,6 @@
# define HAS_SETPGRP /* Well, effectively it does . . . */
#endif
-/* getpgid isn't POSIX, but at least Solaris and Linux have it, and it makes
- our life easier :-) so we'll try it.
-*/
#ifdef HAS_GETPGID
# define BSD_GETPGRP(pid) getpgid((pid))
#elif defined(HAS_GETPGRP) && defined(USE_BSD_GETPGRP)
@@ -1058,6 +1087,26 @@
*/
#define PERL_USE_SAFE_PUTENV
+/* Control whether we set and test the stack high water mark.
+ *
+ * When enabled this checks that pp funcs and XSUBs properly EXTEND()
+ * the stack.
+ *
+ * Debugging builds have HWM checks on by default, you can add
+ * -DPERL_NO_HWM to ccflags to prevent those checks, or add
+ * -DPERL_USE_HWM to ccflags to perform HWM checks even on
+ * non-debugging builds.
+ */
+
+#if defined PERL_NO_HWM
+# undef PERL_USE_HWM
+#elif defined PERL_USE_HWM
+/* nothing to do here */
+#elif defined DEBUGGING && !defined DEBUGGING_RE_ONLY
+# define PERL_USE_HWM
+#endif
+
+
/* HP-UX 10.X CMA (Common Multithreaded Architecture) insists that
pthread.h must be included before all other header files.
*/
@@ -1085,10 +1134,6 @@
#undef METHOD
#endif
-#ifdef PERL_MICRO
-# define NO_LOCALE
-#endif
-
#ifdef I_LOCALE
# include <locale.h>
#endif
@@ -1097,6 +1142,13 @@
# include <xlocale.h>
#endif
+/* Even if not using locales, this header should be #included so as to #define
+ * some symbols which avoid #ifdefs to get things to compile. But make sure
+ * the macro it calls does nothing */
+#undef PERL_LOCALE_TABLE_ENTRY
+#define PERL_LOCALE_TABLE_ENTRY(name, call_back)
+#include "locale_table.h"
+
#include "perl_langinfo.h" /* Needed for _NL_LOCALE_NAME */
/* =========================================================================
@@ -1108,7 +1160,6 @@
* repeated in t/loc_tools.pl and makedef.pl; The three should be kept in
* sync. */
#if ! defined(NO_LOCALE)
-
# if ! defined(NO_POSIX_2008_LOCALE) \
&& defined(HAS_NEWLOCALE) \
&& defined(HAS_USELOCALE) \
@@ -1127,144 +1178,73 @@
# endif
#endif
+/* end of makedef.pl logic duplication. But there are other groups below.
+ * ========================================================================= */
+
#ifdef USE_LOCALE
# define HAS_SKIP_LOCALE_INIT /* Solely for XS code to test for this
#define */
-# if !defined(NO_LOCALE_COLLATE) && defined(LC_COLLATE) \
- && defined(HAS_STRXFRM)
-# define USE_LOCALE_COLLATE
-# endif
-# if !defined(NO_LOCALE_CTYPE) && defined(LC_CTYPE)
-# define USE_LOCALE_CTYPE
-# endif
-# if !defined(NO_LOCALE_NUMERIC) && defined(LC_NUMERIC)
-# define USE_LOCALE_NUMERIC
-# endif
-# if !defined(NO_LOCALE_MESSAGES) && defined(LC_MESSAGES)
-# define USE_LOCALE_MESSAGES
-# endif
-# if !defined(NO_LOCALE_MONETARY) && defined(LC_MONETARY)
-# define USE_LOCALE_MONETARY
-# endif
-# if !defined(NO_LOCALE_TIME) && defined(LC_TIME)
-# define USE_LOCALE_TIME
-# endif
-# if !defined(NO_LOCALE_ADDRESS) && defined(LC_ADDRESS)
-# define USE_LOCALE_ADDRESS
-# endif
-# if !defined(NO_LOCALE_IDENTIFICATION) && defined(LC_IDENTIFICATION)
-# define USE_LOCALE_IDENTIFICATION
-# endif
-# if !defined(NO_LOCALE_MEASUREMENT) && defined(LC_MEASUREMENT)
-# define USE_LOCALE_MEASUREMENT
-# endif
-# if !defined(NO_LOCALE_PAPER) && defined(LC_PAPER)
-# define USE_LOCALE_PAPER
-# endif
-# if !defined(NO_LOCALE_TELEPHONE) && defined(LC_TELEPHONE)
-# define USE_LOCALE_TELEPHONE
-# endif
-# if !defined(NO_LOCALE_NAME) && defined(LC_NAME)
-# define USE_LOCALE_NAME
-# endif
-# if !defined(NO_LOCALE_SYNTAX) && defined(LC_SYNTAX)
-# define USE_LOCALE_SYNTAX
-# endif
-# if !defined(NO_LOCALE_TOD) && defined(LC_TOD)
-# define USE_LOCALE_TOD
-# endif
+#endif
-/* Now create LC_foo_INDEX_ #defines for just those categories on this system */
-# ifdef USE_LOCALE_CTYPE
-# define LC_CTYPE_INDEX_ 0
-# define PERL_DUMMY_CTYPE_ LC_CTYPE_INDEX_
-# else
-# define PERL_DUMMY_CTYPE_ -1
+/* XXX The Configure probe for categories must be updated when adding new
+ * categories here */
+
+/* Create an enum that allows translation between the arbitrary locale category
+ * integers that a platform has, and our desired values that range from 0..n
+ * which makes array indexing feasible.
+ *
+ * In locale.c, there are a bunch of parallel arrays corresponding to this
+ * enum. The first element of each corresponds with the first enum value here,
+ * and so on. That means this enum must be in identical order with those
+ * arrays. This is guaranteed by using locale_table.h in all instances.
+ * (There are also asserts in locale.c that should fail if this gets
+ * out-of-sync.) So, if the platform doesn't have LC_CTYPE, but does have
+ * LC_NUMERIC, the code below will cause LC_NUMERIC_INDEX_ to be defined to be
+ * 0. That way the foo_INDEX_ values are contiguous non-negative integers,
+ * regardless of how the platform defines the actual locale categories.
+ *
+ * It is possible to tell perl it is not to pay attention to certain categories
+ * that exist on a platform (which means they are always kept in the "C"
+ * locale). For the ones perl is supposed to pay attention to, The hdr file
+ * creates a 'USE_LOCALE_foo' #define. If any are to be ignored by perl, it
+ * #defines HAS_IGNORED_LOCALE_CATEGORIES_ */
+typedef enum {
+
+#ifdef USE_LOCALE
+# undef PERL_LOCALE_TABLE_ENTRY
+# define PERL_LOCALE_TABLE_ENTRY(name, call_back) LC_ ## name ## _INDEX_,
+# include "locale_table.h"
+#endif /* USE_LOCALE */
+
+ LC_ALL_INDEX_ /* Always defined, even if no LC_ALL on system */
+
+} locale_category_index;
+
+#ifdef USE_LOCALE
+
+/* And a count of all the locale categories, mainly for use in array
+ * declarations */
+# define LOCALE_CATEGORIES_COUNT_ (LC_ALL_INDEX_ + 1)
+
+/* As a development aid for platforms that have LC_ALL name=value notation,
+ * setting -Accflags=-DUSE_FAKE_LC_ALL_POSITIONAL_NOTATION, simulates a
+ * platform that instead uses positional notation. By doing this, you can find
+ * many bugs without trying it out on a real such platform. It would be
+ * possible to create the reverse definitions for people who have ready access
+ * to a posiional notation box, but harder to get a name=value box */
+# if defined(USE_FAKE_LC_ALL_POSITIONAL_NOTATION) \
+ && defined(PERL_LC_ALL_USES_NAME_VALUE_PAIRS)
+# undef PERL_LC_ALL_USES_NAME_VALUE_PAIRS
+
+# define PERL_LC_ALL_CATEGORY_POSITIONS_INIT /* Assumes glibc cateories */\
+ { 12, 11, 10, 9, 8, 7, 5, 4, 3, 2, 1, 0 }
+# define PERL_LC_ALL_SEPARATOR "/ = /"
# endif
-# ifdef USE_LOCALE_NUMERIC
-# define LC_NUMERIC_INDEX_ PERL_DUMMY_CTYPE_ + 1
-# define PERL_DUMMY_NUMERIC_ LC_NUMERIC_INDEX_
-# else
-# define PERL_DUMMY_NUMERIC_ PERL_DUMMY_CTYPE_
-# endif
-# ifdef USE_LOCALE_COLLATE
-# define LC_COLLATE_INDEX_ PERL_DUMMY_NUMERIC_ + 1
-# define PERL_DUMMY_COLLATE_ LC_COLLATE_INDEX_
-# else
-# define PERL_DUMMY_COLLATE_ PERL_DUMMY_NUMERIC_
-# endif
-# ifdef USE_LOCALE_TIME
-# define LC_TIME_INDEX_ PERL_DUMMY_COLLATE_ + 1
-# define PERL_DUMMY_TIME_ LC_TIME_INDEX_
-# else
-# define PERL_DUMMY_TIME_ PERL_DUMMY_COLLATE_
-# endif
-# ifdef USE_LOCALE_MESSAGES
-# define LC_MESSAGES_INDEX_ PERL_DUMMY_TIME_ + 1
-# define PERL_DUMMY_MESSAGES_ LC_MESSAGES_INDEX_
-# else
-# define PERL_DUMMY_MESSAGES_ PERL_DUMMY_TIME_
-# endif
-# ifdef USE_LOCALE_MONETARY
-# define LC_MONETARY_INDEX_ PERL_DUMMY_MESSAGES_ + 1
-# define PERL_DUMMY_MONETARY_ LC_MONETARY_INDEX_
-# else
-# define PERL_DUMMY_MONETARY_ PERL_DUMMY_MESSAGES_
-# endif
-# ifdef USE_LOCALE_ADDRESS
-# define LC_ADDRESS_INDEX_ PERL_DUMMY_MONETARY_ + 1
-# define PERL_DUMMY_ADDRESS_ LC_ADDRESS_INDEX_
-# else
-# define PERL_DUMMY_ADDRESS_ PERL_DUMMY_MONETARY_
-# endif
-# ifdef USE_LOCALE_IDENTIFICATION
-# define LC_IDENTIFICATION_INDEX_ PERL_DUMMY_ADDRESS_ + 1
-# define PERL_DUMMY_IDENTIFICATION_ LC_IDENTIFICATION_INDEX_
-# else
-# define PERL_DUMMY_IDENTIFICATION_ PERL_DUMMY_ADDRESS_
-# endif
-# ifdef USE_LOCALE_MEASUREMENT
-# define LC_MEASUREMENT_INDEX_ PERL_DUMMY_IDENTIFICATION_ + 1
-# define PERL_DUMMY_MEASUREMENT_ LC_MEASUREMENT_INDEX_
-# else
-# define PERL_DUMMY_MEASUREMENT_ PERL_DUMMY_IDENTIFICATION_
-# endif
-# ifdef USE_LOCALE_PAPER
-# define LC_PAPER_INDEX_ PERL_DUMMY_MEASUREMENT_ + 1
-# define PERL_DUMMY_PAPER_ LC_PAPER_INDEX_
-# else
-# define PERL_DUMMY_PAPER_ PERL_DUMMY_MEASUREMENT_
-# endif
-# ifdef USE_LOCALE_TELEPHONE
-# define LC_TELEPHONE_INDEX_ PERL_DUMMY_PAPER_ + 1
-# define PERL_DUMMY_TELEPHONE_ LC_TELEPHONE_INDEX_
-# else
-# define PERL_DUMMY_TELEPHONE_ PERL_DUMMY_PAPER_
-# endif
-# ifdef USE_LOCALE_NAME
-# define LC_NAME_INDEX_ PERL_DUMMY_TELEPHONE_ + 1
-# define PERL_DUMMY_NAME_ LC_NAME_INDEX_
-# else
-# define PERL_DUMMY_NAME_ PERL_DUMMY_TELEPHONE_
-# endif
-# ifdef USE_LOCALE_SYNTAX
-# define LC_SYNTAX_INDEX_ PERL_DUMMY_NAME + 1
-# define PERL_DUMMY_SYNTAX_ LC_SYNTAX_INDEX_
-# else
-# define PERL_DUMMY_SYNTAX_ PERL_DUMMY_NAME_
-# endif
-# ifdef USE_LOCALE_TOD
-# define LC_TOD_INDEX_ PERL_DUMMY_SYNTAX_ + 1
-# define PERL_DUMMY_TOD_ LC_TOD_INDEX_
-# else
-# define PERL_DUMMY_TOD_ PERL_DUMMY_SYNTAX_
-# endif
-# ifdef LC_ALL
-# define LC_ALL_INDEX_ PERL_DUMMY_TOD_ + 1
-# endif
+/* =========================================================================
+ * The defines from here to the following ===== line are unfortunately
+ * duplicated in makedef.pl, and changes here MUST also be made there */
-
-# if defined(USE_ITHREADS) && ! defined(NO_LOCALE_THREADS)
+# if defined(USE_THREADS) && ! defined(NO_LOCALE_THREADS)
# define USE_LOCALE_THREADS
# endif
@@ -1271,30 +1251,31 @@
/* Use POSIX 2008 locales if available, and no alternative exists
* ('setlocale()' is the alternative); or is threaded and not forbidden to
* use them */
-# if defined(HAS_POSIX_2008_LOCALE) && ( ! defined(HAS_SETLOCALE) \
- || ( defined(USE_LOCALE_THREADS) \
- && ! defined(NO_POSIX_2008_LOCALE)))
+# if ( defined(HAS_POSIX_2008_LOCALE) \
+ && ( ! defined(HAS_SETLOCALE) \
+ || ( defined(USE_LOCALE_THREADS) \
+ && ! defined(NO_POSIX_2008_LOCALE))) \
+ && ! defined(NO_THREAD_SAFE_LOCALE))
# define USE_POSIX_2008_LOCALE
# endif
/* On threaded builds, use thread-safe locales if they are available and not
* forbidden. Availability is when we are using POSIX 2008 locales, or
- * Windows for quite a few releases now. */
+ * Windows for any vintage recent enough to have _MSC_VER defined, or are
+ * using UCRT (principally MINGW in this latter case) */
# if defined(USE_LOCALE_THREADS) && ! defined(NO_THREAD_SAFE_LOCALE)
-# if defined(USE_POSIX_2008_LOCALE) || (defined(WIN32) && defined(_MSC_VER))
+# if defined(USE_POSIX_2008_LOCALE) \
+ || (defined(WIN32) && (defined(_MSC_VER) || (defined(_UCRT))))
# define USE_THREAD_SAFE_LOCALE
# endif
# endif
-# include "perl_langinfo.h" /* Needed for _NL_LOCALE_NAME */
-
# ifdef USE_POSIX_2008_LOCALE
# if defined(HAS_QUERYLOCALE) \
/* Use querylocale if has it, or has the glibc internal \
- * undocumented equivalent. */ \
+ * undocumented equivalent (if not forbidden). */ \
|| ( defined(_NL_LOCALE_NAME) \
- /* And asked for */ \
- && defined(USE_NL_LOCALE_NAME) \
+ && ! defined(NO_USE_NL_LOCALE_NAME) \
/* nl_langinfo_l almost certainly will exist on systems that \
* have _NL_LOCALE_NAME, so there is nothing lost by \
* requiring it instead of also allowing plain nl_langinfo(). \
@@ -1303,7 +1284,7 @@
&& defined(HAS_NL_LANGINFO_L) \
/* On systems that accept any locale name, the real \
* underlying locale is often returned by this internal \
- * item, so we can't use it */ \
+ * langinfo item, so we can't use it */ \
&& ! defined(SETLOCALE_ACCEPTS_ANY_LOCALE_NAME))
# define USE_QUERYLOCALE
# endif
@@ -1313,22 +1294,20 @@
* querylocale; so must keep track of it ourselves */
# if (defined(USE_POSIX_2008_LOCALE) && ! defined(USE_QUERYLOCALE))
# define USE_PL_CURLOCALES
-# define USE_PL_CUR_LC_ALL
# endif
-# if defined(WIN32) && defined(USE_THREAD_SAFE_LOCALE)
+# if defined(WIN32)
- /* We need to be able to map the current value of what the tTHX context
- * thinks LC_ALL is so as to inform the Windows libc when switching
- * contexts. */
-# define USE_PL_CUR_LC_ALL
+ /* We need to be able to map the current value of what the tTHX context
+ * thinks LC_ALL is so as to inform the Windows libc when switching
+ * contexts. */
+# if defined(USE_THREAD_SAFE_LOCALE)
+# define USE_PL_CUR_LC_ALL
+# endif
- /* Microsoft documentation reads in the change log for VS 2015: "The
- * localeconv function declared in locale.h now works correctly when
- * per-thread locale is enabled. In previous versions of the library, this
- * function would return the lconv data for the global locale, not the
- * thread's locale." */
-# if _MSC_VER < 1900
+ /* Assume MingW without UCRT has the broken localeconv() that Microsoft
+ * fixed in VS 2015 */
+# if ! defined(_MSC_VER) && ! defined(_UCRT)
# define TS_W32_BROKEN_LOCALECONV
# endif
# endif
@@ -1341,7 +1320,7 @@
&& defined(USE_THREAD_SAFE_LOCALE)))
# define USE_PERL_SWITCH_LOCALE_CONTEXT
# endif
-#endif
+#endif /* End of USE_LOCALE */
/* end of makedef.pl logic duplication
* ========================================================================= */
@@ -1348,19 +1327,9 @@
#ifdef PERL_CORE
-/* Both typedefs are used in locale.c only, but defined here so that embed.fnc
- * can generate the proper prototypes. */
+/* These typedefs are used in locale.c only (and documented there), but defined
+ * here so that embed.fnc can generate the proper prototypes. */
-typedef enum {
- DONT_RECALC_LC_ALL,
- YES_RECALC_LC_ALL,
-
- /* Used in tight loops through all sub-categories, where LC_ALL won't be
- * fully known until all subcategories are handled. */
- RECALCULATE_LC_ALL_ON_FINAL_INTERATION
-} recalc_lc_all_t;
-
-
typedef enum { /* Is the locale UTF8? */
LOCALE_NOT_UTF8,
LOCALE_IS_UTF8,
@@ -1372,7 +1341,31 @@
size_t offset;
} lconv_offset_t;
+typedef enum {
+ INTERNAL_FORMAT,
+ EXTERNAL_FORMAT_FOR_SET,
+ EXTERNAL_FORMAT_FOR_QUERY
+} calc_LC_ALL_format;
+typedef enum {
+ WANT_VOID,
+ WANT_TEMP_PV,
+ WANT_PL_setlocale_buf,
+} calc_LC_ALL_return;
+
+typedef enum {
+ no_override,
+ override_if_ignored,
+ check_that_overridden
+} parse_LC_ALL_STRING_action;
+
+typedef enum {
+ invalid,
+ no_array,
+ only_element_0,
+ full_array
+} parse_LC_ALL_string_return;
+
#endif
#include <setjmp.h>
@@ -1625,8 +1618,11 @@
#define PERL_MULTICONCAT_IX_PLAIN_LEN 2 /* non-utf8 constant string length */
#define PERL_MULTICONCAT_IX_UTF8_PV 3 /* utf8 constant string */
#define PERL_MULTICONCAT_IX_UTF8_LEN 4 /* utf8 constant string length */
-#define PERL_MULTICONCAT_IX_LENGTHS 5 /* first of nargs+1 const segment lens */
-#define PERL_MULTICONCAT_HEADER_SIZE 5 /* The number of fields of a
+#define PERL_MULTICONCAT_IX_PADTMP0 5 /* up to 3 pad indexes for PADTMPs */
+#define PERL_MULTICONCAT_IX_PADTMP1 6
+#define PERL_MULTICONCAT_IX_PADTMP2 7
+#define PERL_MULTICONCAT_IX_LENGTHS 8 /* first of nargs+1 const segment lens */
+#define PERL_MULTICONCAT_HEADER_SIZE 8 /* The number of fields of a
multiconcat header */
/* We no longer default to creating a new SV for GvSV.
@@ -1921,6 +1917,12 @@
# undef SETERRNO /* SOCKS might have defined this */
#endif
+#if defined(VMS) || defined(WIN32) || defined(OS2)
+# define HAS_EXTENDED_OS_ERRNO
+# define get_extended_os_errno() Perl_get_extended_os_errno()
+# else
+# define get_extended_os_errno() errno
+# endif
#ifdef VMS
# define SETERRNO(errcode,vmserrcode) \
STMT_START { \
@@ -3531,7 +3533,7 @@
and then they have the gall to warn that a value computed is not used. Hence
cast to void. */
# define PERL_FPU_INIT (void)fpsetmask(0)
-# elif defined(SIGFPE) && defined(SIG_IGN) && !defined(PERL_MICRO)
+# elif defined(SIGFPE) && defined(SIG_IGN)
# define PERL_FPU_INIT PL_sigfpe_saved = (Sighandler_t) signal(SIGFPE, SIG_IGN)
# define PERL_FPU_PRE_EXEC { Sigsave_t xfpe; rsignal_save(SIGFPE, PL_sigfpe_saved, &xfpe);
# define PERL_FPU_POST_EXEC rsignal_restore(SIGFPE, &xfpe); }
@@ -4297,6 +4299,15 @@
# define __has_builtin(x) 0 /* not a clang style compiler */
#endif
+#ifdef PERL_STACK_OFFSET_SSIZET
+ typedef SSize_t Stack_off_t;
+# define Stack_off_t_MAX SSize_t_MAX
+#else
+ typedef I32 Stack_off_t;
+# define Stack_off_t_MAX I32_MAX
+#endif
+#define PERL_STACK_OFFSET_DEFINED
+
/*
=for apidoc Am||ASSUME|bool expr
C<ASSUME> is like C<assert()>, but it has a benefit in a release build. It is a
@@ -4963,15 +4974,15 @@
* #define DEBUG_POST_STMTS RESTORE_ERRNO;
*
* Other potential things include displaying timestamps, location information,
- * which thread, etc. Heres an example with both errno and location info:
+ * which thread, etc. Here's an example with both errno and location info:
*
* #define DEBUG_PRE_STMTS dSAVE_ERRNO; \
* PerlIO_printf(Perl_debug_log, "%s:%d: ", __FILE__, __LINE__);
* #define DEBUG_POST RESTORE_ERRNO;
*
- * All DEBUG statements in the compiled scope will be have these extra
- * statements compiled in; they will be executed only for the DEBUG statements
- * whose flags are turned on.
+ * All DEBUG statements in the compiled scope will have these extra statements
+ * compiled in; they will be executed only for the DEBUG statements whose flags
+ * are turned on.
*/
#ifndef DEBUG_PRE_STMTS
# define DEBUG_PRE_STMTS
@@ -5213,7 +5224,7 @@
#define SCAN_TR 1
#define SCAN_REPL 2
-#ifdef DEBUGGING
+#if defined DEBUGGING || defined PERL_USE_HWM
# ifndef register
# define register
# endif
@@ -5224,7 +5235,7 @@
#if defined(USE_PERLIO)
EXTERN_C void PerlIO_teardown(void);
-# ifdef USE_ITHREADS
+# ifdef USE_THREADS
# define PERLIO_INIT MUTEX_INIT(&PL_perlio_mutex)
# define PERLIO_TERM \
STMT_START { \
@@ -5402,8 +5413,6 @@
INIT("Modification of non-creatable hash value attempted, subscript \"%" SVf "\"");
EXTCONST char PL_no_modify[]
INIT("Modification of a read-only value attempted");
-EXTCONST char PL_no_mem[sizeof("Out of memory!\n")]
- INIT("Out of memory!\n");
EXTCONST char PL_no_security[]
INIT("Insecure dependency in %s%s");
EXTCONST char PL_no_sock_func[]
@@ -5485,18 +5494,10 @@
#ifdef DOINIT
EXTCONST char PL_uudmap[256] =
-# ifdef PERL_MICRO
-# include "uuudmap.h"
-# else
-# include "uudmap.h"
-# endif
+# include "uudmap.h"
;
EXTCONST char PL_bitcount[256] =
-# ifdef PERL_MICRO
-# include "ubitcount.h"
-#else
-# include "bitcount.h"
-# endif
+# include "bitcount.h"
;
EXTCONST char* const PL_sig_name[] = { SIG_NAME };
EXTCONST int PL_sig_num[] = { SIG_NUM };
@@ -5760,9 +5761,6 @@
# ifdef PERL_IMPLICIT_SYS
" PERL_IMPLICIT_SYS"
# endif
-# ifdef PERL_MICRO
- " PERL_MICRO"
-# endif
# ifdef PERL_POISON
" PERL_POISON"
# endif
@@ -6287,11 +6285,7 @@
#ifdef DOINIT
EXTCONST U8 PL_magic_data[256] =
-# ifdef PERL_MICRO
-# include "umg_data.h"
-# else
-# include "mg_data.h"
-# endif
+# include "mg_data.h"
;
#else
EXTCONST U8 PL_magic_data[256];
@@ -6365,21 +6359,21 @@
#ifdef USE_PERL_SWITCH_LOCALE_CONTEXT
# define PERL_SET_LOCALE_CONTEXT(i) \
STMT_START { \
- if (UNLIKELY(PL_veto_switch_non_tTHX_context)) \
- Perl_switch_locale_context(); \
+ if (LIKELY(! PL_veto_switch_non_tTHX_context)) \
+ Perl_switch_locale_context(i); \
} STMT_END
+
+ /* In some Configurations there may be per-thread information that is
+ * carried in a library instead of perl's tTHX structure. This macro is to
+ * be used to handle those when tTHX is changed. Only locale handling is
+ * currently known to be affected. */
+# define PERL_SET_NON_tTHX_CONTEXT(i) \
+ STMT_START { if (i) PERL_SET_LOCALE_CONTEXT(i); } STMT_END
#else
-# define PERL_SET_LOCALE_CONTEXT(i) NOOP
+# define PERL_SET_LOCALE_CONTEXT(i) NOOP
+# define PERL_SET_NON_tTHX_CONTEXT(i) NOOP
#endif
-/* In some Configurations there may be per-thread information that is carried
- * in a library instead of perl's tTHX structure. This macro is to be used to
- * handle those when tTHX is changed. Only locale handling is currently known
- * to be affected. */
-#define PERL_SET_NON_tTHX_CONTEXT(i) \
- STMT_START { PERL_SET_LOCALE_CONTEXT(i); } STMT_END
-
-
#ifndef PERL_GET_CONTEXT
# define PERL_GET_CONTEXT PERL_GET_INTERP
#endif
@@ -6392,6 +6386,93 @@
# define PERL_SET_THX(t) NOOP
#endif
+#ifdef WIN32
+ /* Windows mutexes are all general semaphores; we don't currently bother
+ * with reproducing the same panic behavior as on other systems */
+# define PERL_REENTRANT_LOCK(name, mutex, counter, \
+ cond_to_panic_if_already_locked) \
+ MUTEX_LOCK(mutex)
+# define PERL_REENTRANT_UNLOCK(name, mutex, counter) MUTEX_UNLOCK(mutex)
+#else
+
+ /* Simulate a general (or recursive) semaphore on 'mutex' whose name will
+ * be displayed as 'name' in any messages. There must be a per-thread
+ * variable 'counter', initialized to 0 upon thread creation that this
+ * macro otherwise controls and keeps set to the recursion depth of the
+ * mutex. 'cond_to_panic_if_already_locked' should be set to '0' for a
+ * fully reentrant semaphore. Otherwise set it to a bit of code which will
+ * be evaluated if the macro is called recursively. If it evaluates to
+ * 'true', it means something is seriously wrong, and the process panics.
+ *
+ * It locks the mutex if the 'counter' is zero, and then increments
+ * 'counter'. Each corresponding UNLOCK decrements 'counter' until it is
+ * 0, at which point it actually unlocks the mutex. Since the variable is
+ * per-thread, initialized to 0, there is no race with other threads.
+ *
+ * Clang improperly gives warnings for this, if not silenced:
+ * https://clang.llvm.org/docs/ThreadSafetyAnalysis.html#conditional-locks
+ */
+# define PERL_REENTRANT_LOCK(name, mutex, counter, \
+ cond_to_panic_if_already_locked) \
+ STMT_START { \
+ CLANG_DIAG_IGNORE(-Wthread-safety) \
+ if (LIKELY(counter <= 0)) { \
+ UNLESS_PERL_MEM_LOG(DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
+ "%s: %d: locking " name "; lock depth=1\n", \
+ __FILE__, __LINE__)); \
+ ) \
+ MUTEX_LOCK(mutex); \
+ counter = 1; \
+ UNLESS_PERL_MEM_LOG(DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
+ "%s: %d: " name " locked; lock depth=1\n", \
+ __FILE__, __LINE__)); \
+ ) \
+ } \
+ else { \
+ counter++; \
+ UNLESS_PERL_MEM_LOG(DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
+ "%s: %d: avoided locking " name "; new lock" \
+ " depth=%d, but will panic if '%s' is true\n", \
+ __FILE__, __LINE__, counter, \
+ STRINGIFY(cond_to_panic_if_already_locked))); \
+ ) \
+ if (cond_to_panic_if_already_locked) { \
+ Perl_croak_nocontext("panic: %s: %d: attempting to lock" \
+ name " incompatibly: %s\n", \
+ __FILE__, __LINE__, \
+ STRINGIFY(cond_to_panic_if_already_locked));\
+ } \
+ } \
+ CLANG_DIAG_RESTORE \
+ } STMT_END
+
+# define PERL_REENTRANT_UNLOCK(name, mutex, counter) \
+ STMT_START { \
+ if (LIKELY(counter == 1)) { \
+ UNLESS_PERL_MEM_LOG(DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
+ "%s: %d: unlocking " name "; new lock depth=0\n", \
+ __FILE__, __LINE__)); \
+ ) \
+ counter = 0; \
+ MUTEX_UNLOCK(mutex); \
+ } \
+ else if (counter <= 0) { \
+ Perl_croak_nocontext("panic: %s: %d: attempting to unlock" \
+ " already unlocked " name "; depth was" \
+ " %d\n", __FILE__, __LINE__, \
+ counter); \
+ } \
+ else { \
+ counter--; \
+ UNLESS_PERL_MEM_LOG(DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
+ "%s: %d: avoided unlocking " name "; new lock depth=%d\n", \
+ __FILE__, __LINE__, counter)); \
+ ) \
+ } \
+ } STMT_END
+
+#endif
+
#ifndef EBCDIC
/* The tables below are adapted from
@@ -6929,7 +7010,7 @@
#define PERLDB_LINE_OR_SAVESRC (PL_perldb & (PERLDBf_LINE | PERLDBf_SAVESRC))
-#ifdef USE_ITHREADS
+#ifdef USE_THREADS
# define KEYWORD_PLUGIN_MUTEX_INIT MUTEX_INIT(&PL_keyword_plugin_mutex)
# define KEYWORD_PLUGIN_MUTEX_LOCK MUTEX_LOCK(&PL_keyword_plugin_mutex)
# define KEYWORD_PLUGIN_MUTEX_UNLOCK MUTEX_UNLOCK(&PL_keyword_plugin_mutex)
@@ -6949,6 +7030,373 @@
# define USER_PROP_MUTEX_TERM NOOP
#endif
+#ifdef USE_THREADS
+# define ENV_LOCK PERL_WRITE_LOCK(&PL_env_mutex)
+# define ENV_UNLOCK PERL_WRITE_UNLOCK(&PL_env_mutex)
+# define ENV_READ_LOCK PERL_READ_LOCK(&PL_env_mutex)
+# define ENV_READ_UNLOCK PERL_READ_UNLOCK(&PL_env_mutex)
+# define ENV_INIT PERL_RW_MUTEX_INIT(&PL_env_mutex)
+# define ENV_TERM PERL_RW_MUTEX_DESTROY(&PL_env_mutex)
+
+ /* On platforms where the static buffer contained in getenv() is per-thread
+ * rather than process-wide, another thread executing a getenv() at the same
+ * time won't destroy ours before we have copied the result safely away and
+ * unlocked the mutex. On such platforms (which is most), we can have many
+ * readers of the environment at the same time. */
+# ifdef GETENV_PRESERVES_OTHER_THREAD
+# define GETENV_LOCK ENV_READ_LOCK
+# define GETENV_UNLOCK ENV_READ_UNLOCK
+# else
+ /* If, on the other hand, another thread could zap our getenv() return, we
+ * need to keep them from executing until we are done */
+# define GETENV_LOCK ENV_LOCK
+# define GETENV_UNLOCK ENV_UNLOCK
+# endif
+#else
+# define ENV_LOCK NOOP
+# define ENV_UNLOCK NOOP
+# define ENV_READ_LOCK NOOP
+# define ENV_READ_UNLOCK NOOP
+# define ENV_INIT NOOP
+# define ENV_TERM NOOP
+# define GETENV_LOCK NOOP
+# define GETENV_UNLOCK NOOP
+#endif
+
+/* Locale/thread synchronization macros. */
+#if ! defined(USE_LOCALE_THREADS) /* No threads, or no locales */
+# define LOCALE_LOCK_(cond) NOOP
+# define LOCALE_UNLOCK_ NOOP
+# define LOCALE_LOCK NOOP
+# define LOCALE_UNLOCK NOOP
+#else /* Below: Threaded, and locales are supported */
+
+ /* A locale mutex is required on all such threaded builds for at least
+ * situations where there is a global static buffer. This base lock that
+ * handles these has a trailing underscore in the name */
+# define LOCALE_LOCK_(cond_to_panic_if_already_locked) \
+ PERL_REENTRANT_LOCK("locale", \
+ &PL_locale_mutex, PL_locale_mutex_depth, \
+ cond_to_panic_if_already_locked)
+# define LOCALE_UNLOCK_ \
+ PERL_REENTRANT_UNLOCK("locale", \
+ &PL_locale_mutex, PL_locale_mutex_depth)
+# ifdef USE_THREAD_SAFE_LOCALE
+ /* But for most situations, we use the macro name without a trailing
+ * underscore.
+ *
+ * In locale thread-safe Configurations, typical operations don't need
+ * locking */
+# define LOCALE_LOCK NOOP
+# define LOCALE_UNLOCK NOOP
+# else
+ /* Whereas, thread-unsafe Configurations always requires locking */
+# define LOCALE_LOCK_DOES_SOMETHING_
+# define LOCALE_LOCK LOCALE_LOCK_(0)
+# define LOCALE_UNLOCK LOCALE_UNLOCK_
+# ifdef USE_LOCALE_NUMERIC
+# define LC_NUMERIC_LOCK(cond_to_panic_if_already_locked) \
+ LOCALE_LOCK_(cond_to_panic_if_already_locked)
+# define LC_NUMERIC_UNLOCK LOCALE_UNLOCK_
+# endif
+# endif
+#endif
+
+/* There are some locale-related functions which may need locking only because
+ * they share some common memory across threads, and hence there is the
+ * potential for a race in accessing that space. Most are because their return
+ * points to a global static buffer, but some just use some common space
+ * internally. All functions accessing a given space need to have a critical
+ * section to prevent any other thread from accessing it at the same time.
+ * Ideally, there would be a separate mutex for each such space, so that
+ * another thread isn't unnecessarily blocked. But, most of them need to be
+ * locked against the locale changing while accessing that space, and it is not
+ * expected that any will be called frequently, and the locked interval should
+ * be short, and modern platforms will have reentrant versions (which don't
+ * lock) for almost all of them, so khw thinks a single mutex should suffice.
+ * Having a single mutex facilitates that, avoiding potential deadlock
+ * situations.
+ *
+ * This will be a no-op iff the perl is unthreaded. 'gw' stands for 'global
+ * write', to indicate the caller wants to be able to access memory that isn't
+ * thread specific, either to write to itself, or to prevent anyone else from
+ * writing. */
+#define gwLOCALE_LOCK LOCALE_LOCK_(0)
+#define gwLOCALE_UNLOCK LOCALE_UNLOCK_
+
+/* Similar to gwLOCALE_LOCK, there are functions that require both the locale
+ * and environment to be constant during their execution, and don't change
+ * either of those things, but do write to some sort of shared global space.
+ * They require some sort of exclusive lock against similar functions, and a
+ * read lock on both the locale and environment. However, on systems which
+ * have per-thread locales, the locale is constant during the execution of
+ * these functions, and so no locale lock is necssary. For such systems, an
+ * exclusive ENV lock is necessary and sufficient. On systems where the locale
+ * could change out from under us, we use an exclusive LOCALE lock to prevent
+ * that, and a read ENV lock to prevent other threads that have nothing to do
+ * with locales here from changing the environment. */
+#ifdef LOCALE_LOCK_DOES_SOMETHING
+# define gwENVr_LOCALEr_LOCK \
+ STMT_START { LOCALE_LOCK; ENV_READ_LOCK; } STMT_END
+# define gwENVr_LOCALEr_UNLOCK \
+ STMT_START { ENV_READ_UNLOCK; LOCALE_UNLOCK; } STMT_END
+#else
+# define gwENVr_LOCALEr_LOCK ENV_LOCK
+# define gwENVr_LOCALEr_UNLOCK ENV_UNLOCK
+#endif
+
+ /* On systems that don't have per-thread locales, even though we don't
+ * think we are changing the locale ourselves, behind the scenes it does
+ * get changed to whatever the thread's should be, so it has to be an
+ * exclusive lock. By defining it here with this name, we can, for the
+ * most part, hide this detail from the rest of the code */
+/* Currently, the read lock is an exclusive lock */
+#define LOCALE_READ_LOCK LOCALE_LOCK
+#define LOCALE_READ_UNLOCK LOCALE_UNLOCK
+
+/* setlocale() generally returns in a global static buffer, but not on Windows
+ * when operating in thread-safe mode */
+#if defined(WIN32) && defined(USE_THREAD_SAFE_LOCALE)
+# define POSIX_SETLOCALE_LOCK \
+ STMT_START { \
+ if (_configthreadlocale(0) == _DISABLE_PER_THREAD_LOCALE) \
+ gwLOCALE_LOCK; \
+ } STMT_END
+# define POSIX_SETLOCALE_UNLOCK \
+ STMT_START { \
+ if (_configthreadlocale(0) == _DISABLE_PER_THREAD_LOCALE) \
+ gwLOCALE_UNLOCK; \
+ } STMT_END
+#else
+# define POSIX_SETLOCALE_LOCK gwLOCALE_LOCK
+# define POSIX_SETLOCALE_UNLOCK gwLOCALE_UNLOCK
+#endif
+
+/* It handles _wsetlocale() as well */
+#define WSETLOCALE_LOCK POSIX_SETLOCALE_LOCK
+#define WSETLOCALE_UNLOCK POSIX_SETLOCALE_UNLOCK
+
+
+#ifndef LC_NUMERIC_LOCK
+# define LC_NUMERIC_LOCK(cond) NOOP
+# define LC_NUMERIC_UNLOCK NOOP
+#endif
+
+ /* These non-reentrant versions use global space */
+# define MBLEN_LOCK_ gwLOCALE_LOCK
+# define MBLEN_UNLOCK_ gwLOCALE_UNLOCK
+
+# define MBTOWC_LOCK_ gwLOCALE_LOCK
+# define MBTOWC_UNLOCK_ gwLOCALE_UNLOCK
+
+# define WCTOMB_LOCK_ gwLOCALE_LOCK
+# define WCTOMB_UNLOCK_ gwLOCALE_UNLOCK
+
+ /* Whereas the reentrant versions don't (assuming they are called with a
+ * per-thread buffer; some have the capability of being called with a NULL
+ * parameter, which defeats the reentrancy) */
+# define MBRLEN_LOCK_ NOOP
+# define MBRLEN_UNLOCK_ NOOP
+# define MBRTOWC_LOCK_ NOOP
+# define MBRTOWC_UNLOCK_ NOOP
+# define WCRTOMB_LOCK_ NOOP
+# define WCRTOMB_UNLOCK_ NOOP
+
+# define LC_COLLATE_LOCK LOCALE_LOCK
+# define LC_COLLATE_UNLOCK LOCALE_UNLOCK
+
+/* Some critical sections need to lock both the locale and the environment from
+ * changing, while allowing for any number of readers. To avoid deadlock, this
+ * is always done in the same order. These should always be invoked, like all
+ * locks really, at such a low level that its just a libc call that is wrapped,
+ * so as to prevent recursive calls which could deadlock. */
+#define ENVr_LOCALEr_LOCK \
+ STMT_START { LOCALE_READ_LOCK; ENV_READ_LOCK; } STMT_END
+#define ENVr_LOCALEr_UNLOCK \
+ STMT_START { ENV_READ_UNLOCK; LOCALE_READ_UNLOCK; } STMT_END
+
+#define STRFTIME_LOCK ENVr_LOCALEr_LOCK
+#define STRFTIME_UNLOCK ENVr_LOCALEr_UNLOCK
+
+/* These time-related functions all requre that the environment and locale
+ * don't change while they are executing (at least in glibc; this appears to be
+ * contrary to the POSIX standard). tzset() writes global variables, so
+ * always needs to have write locking. ctime, localtime, mktime, and strftime
+ * effectively call it, so they too need exclusive access. The rest need to
+ * have exclusive locking as well so that they can copy the contents of the
+ * returned static buffer before releasing the lock. That leaves asctime and
+ * gmtime. There may be reentrant versions of these available on the platform
+ * which don't require write locking.
+ */
+#ifdef PERL_REENTR_USING_ASCTIME_R
+# define ASCTIME_LOCK ENVr_LOCALEr_LOCK
+# define ASCTIME_UNLOCK ENVr_LOCALEr_UNLOCK
+#else
+# define ASCTIME_LOCK gwENVr_LOCALEr_LOCK
+# define ASCTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
+#endif
+
+#define CTIME_LOCK gwENVr_LOCALEr_LOCK
+#define CTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
+
+#ifdef PERL_REENTR_USING_GMTIME_R
+# define GMTIME_LOCK ENVr_LOCALEr_LOCK
+# define GMTIME_UNLOCK ENVr_LOCALEr_UNLOCK
+#else
+# define GMTIME_LOCK gwENVr_LOCALEr_LOCK
+# define GMTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
+#endif
+
+#define LOCALTIME_LOCK gwENVr_LOCALEr_LOCK
+#define LOCALTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
+#define MKTIME_LOCK gwENVr_LOCALEr_LOCK
+#define MKTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
+#define TZSET_LOCK gwENVr_LOCALEr_LOCK
+#define TZSET_UNLOCK gwENVr_LOCALEr_UNLOCK
+
+/* Similiarly, these functions need a constant environment and/or locale. And
+ * some have a buffer that is shared with another thread executing the same or
+ * a related call. A mutex could be created for each class, but for now, share
+ * the ENV mutex with everything, as none probably gets called so much that
+ * performance would suffer by a thread being locked out by another thread that
+ * could have used a different mutex.
+ *
+ * But, create a different macro name just to indicate the ones that don't
+ * actually depend on the environment, but are using its mutex for want of a
+ * better one */
+#define gwLOCALEr_LOCK gwENVr_LOCALEr_LOCK
+#define gwLOCALEr_UNLOCK gwENVr_LOCALEr_UNLOCK
+
+#ifdef PERL_REENTR_USING_GETHOSTBYADDR_R
+# define GETHOSTBYADDR_LOCK ENVr_LOCALEr_LOCK
+# define GETHOSTBYADDR_UNLOCK ENVr_LOCALEr_UNLOCK
+#else
+# define GETHOSTBYADDR_LOCK gwENVr_LOCALEr_LOCK
+# define GETHOSTBYADDR_UNLOCK gwENVr_LOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETHOSTBYNAME_R
+# define GETHOSTBYNAME_LOCK ENVr_LOCALEr_LOCK
+# define GETHOSTBYNAME_UNLOCK ENVr_LOCALEr_UNLOCK
+#else
+# define GETHOSTBYNAME_LOCK gwENVr_LOCALEr_LOCK
+# define GETHOSTBYNAME_UNLOCK gwENVr_LOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETNETBYADDR_R
+# define GETNETBYADDR_LOCK LOCALE_READ_LOCK
+# define GETNETBYADDR_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETNETBYADDR_LOCK gwLOCALEr_LOCK
+# define GETNETBYADDR_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETNETBYNAME_R
+# define GETNETBYNAME_LOCK LOCALE_READ_LOCK
+# define GETNETBYNAME_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETNETBYNAME_LOCK gwLOCALEr_LOCK
+# define GETNETBYNAME_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETPROTOBYNAME_R
+# define GETPROTOBYNAME_LOCK LOCALE_READ_LOCK
+# define GETPROTOBYNAME_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETPROTOBYNAME_LOCK gwLOCALEr_LOCK
+# define GETPROTOBYNAME_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETPROTOBYNUMBER_R
+# define GETPROTOBYNUMBER_LOCK LOCALE_READ_LOCK
+# define GETPROTOBYNUMBER_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETPROTOBYNUMBER_LOCK gwLOCALEr_LOCK
+# define GETPROTOBYNUMBER_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETPROTOENT_R
+# define GETPROTOENT_LOCK LOCALE_READ_LOCK
+# define GETPROTOENT_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETPROTOENT_LOCK gwLOCALEr_LOCK
+# define GETPROTOENT_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETPWNAM_R
+# define GETPWNAM_LOCK LOCALE_READ_LOCK
+# define GETPWNAM_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETPWNAM_LOCK gwLOCALEr_LOCK
+# define GETPWNAM_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETPWUID_R
+# define GETPWUID_LOCK LOCALE_READ_LOCK
+# define GETPWUID_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETPWUID_LOCK gwLOCALEr_LOCK
+# define GETPWUID_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETSERVBYNAME_R
+# define GETSERVBYNAME_LOCK LOCALE_READ_LOCK
+# define GETSERVBYNAME_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETSERVBYNAME_LOCK gwLOCALEr_LOCK
+# define GETSERVBYNAME_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETSERVBYPORT_R
+# define GETSERVBYPORT_LOCK LOCALE_READ_LOCK
+# define GETSERVBYPORT_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETSERVBYPORT_LOCK gwLOCALEr_LOCK
+# define GETSERVBYPORT_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETSERVENT_R
+# define GETSERVENT_LOCK LOCALE_READ_LOCK
+# define GETSERVENT_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETSERVENT_LOCK gwLOCALEr_LOCK
+# define GETSERVENT_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETSPNAM_R
+# define GETSPNAM_LOCK LOCALE_READ_LOCK
+# define GETSPNAM_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETSPNAM_LOCK gwLOCALEr_LOCK
+# define GETSPNAM_UNLOCK gwLOCALEr_UNLOCK
+#endif
+
+#define STRFMON_LOCK LC_MONETARY_LOCK
+#define STRFMON_UNLOCK LC_MONETARY_UNLOCK
+
+/* End of locale/env synchronization */
+
+#if ! defined(USE_LOCALE_THREADS)
+# define LOCALE_INIT
+# define LOCALE_TERM
+#else
+# ifdef WIN32_USE_FAKE_OLD_MINGW_LOCALES
+ /* This function is coerced by this Configure option into cleaning up
+ * memory that is static to locale.c. So we call it at termination. Doing
+ * it this way is kludgy but confines having to deal with this
+ * Configuration to a bare minimum number of places. */
+# define LOCALE_TERM_POSIX_2008_ Perl_thread_locale_term(NULL)
+# elif ! defined(USE_POSIX_2008_LOCALE)
+# define LOCALE_TERM_POSIX_2008_ NOOP
+# else
+ /* We have a locale object holding the 'C' locale for Posix 2008 */
+# define LOCALE_TERM_POSIX_2008_ \
+ STMT_START { \
+ if (PL_C_locale_obj) { \
+ /* Make sure we aren't using the locale \
+ * space we are about to free */ \
+ uselocale(LC_GLOBAL_LOCALE); \
+ freelocale(PL_C_locale_obj); \
+ PL_C_locale_obj = (locale_t) NULL; \
+ } \
+ } STMT_END
+# endif
+
+# define LOCALE_INIT MUTEX_INIT(&PL_locale_mutex)
+# define LOCALE_TERM STMT_START { \
+ LOCALE_TERM_POSIX_2008_; \
+ MUTEX_DESTROY(&PL_locale_mutex); \
+ } STMT_END
+#endif
+
#ifdef USE_LOCALE /* These locale things are all subject to change */
/* Returns TRUE if the plain locale pragma without a parameter is in effect.
@@ -7008,7 +7456,7 @@
# define IN_LC(category) \
(IN_LC_COMPILETIME(category) || IN_LC_RUNTIME(category))
-# if defined (PERL_CORE) || defined (PERL_IN_XSUB_RE)
+# if defined (PERL_CORE) || defined (PERL_IN_XSUB_RE) || defined(PERL_EXT_POSIX)
/* This internal macro should be called from places that operate under
* locale rules. If there is a problem with the current locale that
@@ -7020,7 +7468,7 @@
# define CHECK_AND_WARN_PROBLEMATIC_LOCALE_ \
STMT_START { \
if (UNLIKELY(PL_warn_locale)) { \
- Perl__warn_problematic_locale(); \
+ Perl_warn_problematic_locale(); \
} \
} STMT_END
# else
@@ -7074,230 +7522,9 @@
# define _CHECK_AND_OUTPUT_WIDE_LOCALE_CP_MSG(c)
#endif
-#define locale_panic_(m) Perl_locale_panic((m), __FILE__, __LINE__, errno)
+#define locale_panic_via_(m, f, l) Perl_locale_panic((m), __LINE__, f, l)
+#define locale_panic_(m) locale_panic_via_((m), __FILE__, __LINE__)
-/* Locale/thread synchronization macros. */
-#if ! defined(USE_LOCALE) || ! defined(USE_LOCALE_THREADS)
-# define LOCALE_LOCK_(cond) NOOP
-# define LOCALE_UNLOCK_ NOOP
-# define LOCALE_INIT
-# define LOCALE_TERM
-
-#else /* Below: Threaded, and locales are supported */
-
- /* A locale mutex is required on all such threaded builds.
- *
- * This mutex simulates a general (or recursive) semaphore. The current
- * thread will lock the mutex if the per-thread variable is zero, and then
- * increments that variable. Each corresponding UNLOCK decrements the
- * variable until it is 0, at which point it actually unlocks the mutex.
- * Since the variable is per-thread, initialized to 0, there is no race
- * with other threads.
- *
- * The single argument is a condition to test for, and if true, to panic.
- * Call it with the constant 0 to suppress the check.
- *
- * Clang improperly gives warnings for this, if not silenced:
- * https://clang.llvm.org/docs/ThreadSafetyAnalysis.html#conditional-locks
- */
-# define LOCALE_LOCK_(cond_to_panic_if_already_locked) \
- STMT_START { \
- CLANG_DIAG_IGNORE(-Wthread-safety) \
- if (LIKELY(PL_locale_mutex_depth <= 0)) { \
- DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
- "%s: %d: locking locale; depth=1\n", \
- __FILE__, __LINE__)); \
- MUTEX_LOCK(&PL_locale_mutex); \
- PL_locale_mutex_depth = 1; \
- } \
- else { \
- PL_locale_mutex_depth++; \
- DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
- "%s: %d: avoided locking locale; new depth=%d\n", \
- __FILE__, __LINE__, PL_locale_mutex_depth)); \
- if (cond_to_panic_if_already_locked) { \
- locale_panic_("Trying to lock locale incompatibly: " \
- STRINGIFY(cond_to_panic_if_already_locked)); \
- } \
- } \
- CLANG_DIAG_RESTORE \
- } STMT_END
-
-# define LOCALE_UNLOCK_ \
- STMT_START { \
- if (LIKELY(PL_locale_mutex_depth == 1)) { \
- DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
- "%s: %d: unlocking locale; new depth=0\n", \
- __FILE__, __LINE__)); \
- PL_locale_mutex_depth = 0; \
- MUTEX_UNLOCK(&PL_locale_mutex); \
- } \
- else if (PL_locale_mutex_depth <= 0) { \
- DEBUG_L(PerlIO_printf(Perl_debug_log, \
- "%s: %d: ignored attempt to unlock already" \
- " unlocked locale; depth unchanged at %d\n", \
- __FILE__, __LINE__, PL_locale_mutex_depth)); \
- } \
- else { \
- PL_locale_mutex_depth--; \
- DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
- "%s: %d: avoided unlocking locale; new depth=%d\n", \
- __FILE__, __LINE__, PL_locale_mutex_depth)); \
- } \
- } STMT_END
-
-# if defined(USE_THREADS) && ! defined(USE_THREAD_SAFE_LOCALE)
-
- /* By definition, a thread-unsafe locale means we need a critical
- * section. */
-# define SETLOCALE_LOCK LOCALE_LOCK_(0)
-# define SETLOCALE_UNLOCK LOCALE_UNLOCK_
-# ifdef USE_LOCALE_NUMERIC
-# define LC_NUMERIC_LOCK(cond_to_panic_if_already_locked) \
- LOCALE_LOCK_(cond_to_panic_if_already_locked)
-# define LC_NUMERIC_UNLOCK LOCALE_UNLOCK_
-# endif
-# endif
-
-# ifndef USE_POSIX_2008_LOCALE
-# define LOCALE_TERM_POSIX_2008_ NOOP
-# else
- /* We have a locale object holding the 'C' locale for Posix 2008 */
-# define LOCALE_TERM_POSIX_2008_ \
- STMT_START { \
- if (PL_C_locale_obj) { \
- /* Make sure we aren't using the locale \
- * space we are about to free */ \
- uselocale(LC_GLOBAL_LOCALE); \
- freelocale(PL_C_locale_obj); \
- PL_C_locale_obj = (locale_t) NULL; \
- } \
- } STMT_END
-# endif
-
-# define LOCALE_INIT MUTEX_INIT(&PL_locale_mutex)
-# define LOCALE_TERM STMT_START { \
- LOCALE_TERM_POSIX_2008_; \
- MUTEX_DESTROY(&PL_locale_mutex); \
- } STMT_END
-#endif
-
-/* There are some locale-related functions which may need locking only because
- * they share some common memory across threads, and hence there is the
- * potential for a race in accessing that space. Most are because their return
- * points to a global static buffer, but some just use some common space
- * internally. All functions accessing a given space need to have a critical
- * section to prevent any other thread from accessing it at the same time.
- * Ideally, there would be a separate mutex for each such space, so that
- * another thread isn't unnecessarily blocked. But, most of them need to be
- * locked against the locale changing while accessing that space, and it is not
- * expected that any will be called frequently, and the locked interval should
- * be short, and modern platforms will have reentrant versions (which don't
- * lock) for almost all of them, so khw thinks a single mutex should suffice.
- * Having a single mutex facilitates that, avoiding potential deadlock
- * situations.
- *
- * This will be a no-op iff the perl is unthreaded. 'gw' stands for 'global
- * write', to indicate the caller wants to be able to access memory that isn't
- * thread specific, either to write to itself, or to prevent anyone else from
- * writing. */
-#define gwLOCALE_LOCK LOCALE_LOCK_(0)
-#define gwLOCALE_UNLOCK LOCALE_UNLOCK_
-
-/* setlocale() generally returns in a global static buffer, but not on Windows
- * when operating in thread-safe mode */
-#if defined(WIN32) && defined(USE_THREAD_SAFE_LOCALE)
-# define POSIX_SETLOCALE_LOCK \
- STMT_START { \
- if (_configthreadlocale(0) == _DISABLE_PER_THREAD_LOCALE) \
- gwLOCALE_LOCK; \
- } STMT_END
-# define POSIX_SETLOCALE_UNLOCK \
- STMT_START { \
- if (_configthreadlocale(0) == _DISABLE_PER_THREAD_LOCALE) \
- gwLOCALE_UNLOCK; \
- } STMT_END
-#else
-# define POSIX_SETLOCALE_LOCK gwLOCALE_LOCK
-# define POSIX_SETLOCALE_UNLOCK gwLOCALE_UNLOCK
-#endif
-
-/* It handles _wsetlocale() as well */
-#define WSETLOCALE_LOCK POSIX_SETLOCALE_LOCK
-#define WSETLOCALE_UNLOCK POSIX_SETLOCALE_UNLOCK
-
-/* Similar to gwLOCALE_LOCK, there are functions that require both the locale
- * and environment to be constant during their execution, and don't change
- * either of those things, but do write to some sort of shared global space.
- * They require some sort of exclusive lock against similar functions, and a
- * read lock on both the locale and environment. However, on systems which
- * have per-thread locales, the locale is constant during the execution of
- * these functions, and so no locale lock is necssary. For such systems, an
- * exclusive ENV lock is necessary and sufficient. On systems where the locale
- * could change out from under us, we use an exclusive LOCALE lock to prevent
- * that, and a read ENV lock to prevent other threads that have nothing to do
- * with locales here from changing the environment. */
-#ifdef SETLOCALE_LOCK
-# define gwENVr_LOCALEr_LOCK \
- STMT_START { SETLOCALE_LOCK; ENV_READ_LOCK; } STMT_END
-# define gwENVr_LOCALEr_UNLOCK \
- STMT_START { ENV_READ_UNLOCK; SETLOCALE_UNLOCK; } STMT_END
-#else
-# define gwENVr_LOCALEr_LOCK ENV_LOCK
-# define gwENVr_LOCALEr_UNLOCK ENV_UNLOCK
-#endif
-
-/* Now that we have defined gwENVr_LOCALEr_LOCK, we can finish defining
- * SETLOCALE_LOCK, which we kept undefined until here on a thread-safe system
- * so that we could use that fact to calculate what gwENVr_LOCALEr_LOCK should
- * be */
-#ifndef SETLOCALE_LOCK
-# define SETLOCALE_LOCK NOOP
-# define SETLOCALE_UNLOCK NOOP
-#endif
-
-
- /* On systems that don't have per-thread locales, even though we don't
- * think we are changing the locale ourselves, behind the scenes it does
- * get changed to whatever the thread's should be, so it has to be an
- * exclusive lock. By defining it here with this name, we can, for the
- * most part, hide this detail from the rest of the code */
-/* Currently, the read lock is an exclusive lock */
-#define LOCALE_READ_LOCK SETLOCALE_LOCK
-#define LOCALE_READ_UNLOCK SETLOCALE_UNLOCK
-
-
-#ifndef LC_NUMERIC_LOCK
-# define LC_NUMERIC_LOCK(cond) NOOP
-# define LC_NUMERIC_UNLOCK NOOP
-#endif
-
- /* These non-reentrant versions use global space */
-# define MBLEN_LOCK_ gwLOCALE_LOCK
-# define MBLEN_UNLOCK_ gwLOCALE_UNLOCK
-
-# define MBTOWC_LOCK_ gwLOCALE_LOCK
-# define MBTOWC_UNLOCK_ gwLOCALE_UNLOCK
-
-# define WCTOMB_LOCK_ gwLOCALE_LOCK
-# define WCTOMB_UNLOCK_ gwLOCALE_UNLOCK
-
- /* Whereas the reentrant versions don't (assuming they are called with a
- * per-thread buffer; some have the capability of being called with a NULL
- * parameter, which defeats the reentrancy) */
-# define MBRLEN_LOCK_ NOOP
-# define MBRLEN_UNLOCK_ NOOP
-# define MBRTOWC_LOCK_ NOOP
-# define MBRTOWC_UNLOCK_ NOOP
-# define WCRTOMB_LOCK_ NOOP
-# define WCRTOMB_UNLOCK_ NOOP
-
-# define LC_COLLATE_LOCK SETLOCALE_LOCK
-# define LC_COLLATE_UNLOCK SETLOCALE_UNLOCK
-
-# define STRFTIME_LOCK ENV_LOCK
-# define STRFTIME_UNLOCK ENV_UNLOCK
-
#ifdef USE_LOCALE_NUMERIC
/* These macros are for toggling between the underlying locale (UNDERLYING or
@@ -7456,14 +7683,17 @@
# define NOT_IN_NUMERIC_STANDARD_ (! PL_numeric_standard)
-/* We can lock the category to stay in the C locale, making requests to the
- * contrary be noops, in the dynamic scope by setting PL_numeric_standard to 2.
- * */
+/* This macro is designed to be a helper macro when we think an operation needs
+ * to take place in the underlying numeric locale category. When 'true', the
+ * caller will attempt to toggle to that category. But a later addition was an
+ * override that prevents that toggle when PL_numeric_standard >= 2. The name
+ * of the macro was not changed when this was added. */
# define NOT_IN_NUMERIC_UNDERLYING_ \
(! PL_numeric_underlying && PL_numeric_standard < 2)
# define DECLARATION_FOR_LC_NUMERIC_MANIPULATION \
- void (*_restore_LC_NUMERIC_function)(pTHX) = NULL
+ void (*_restore_LC_NUMERIC_function)(pTHX_ const char * const file, \
+ const line_t line) = NULL
# define STORE_LC_NUMERIC_SET_TO_NEEDED_IN(in) \
STMT_START { \
@@ -7473,7 +7703,7 @@
|| (! _in_lc_numeric && NOT_IN_NUMERIC_STANDARD_))); \
if (_in_lc_numeric) { \
if (NOT_IN_NUMERIC_UNDERLYING_) { \
- Perl_set_numeric_underlying(aTHX); \
+ Perl_set_numeric_underlying(aTHX_ __FILE__, __LINE__); \
_restore_LC_NUMERIC_function \
= &Perl_set_numeric_standard; \
} \
@@ -7480,7 +7710,7 @@
} \
else { \
if (NOT_IN_NUMERIC_STANDARD_) { \
- Perl_set_numeric_standard(aTHX); \
+ Perl_set_numeric_standard(aTHX_ __FILE__, __LINE__); \
_restore_LC_NUMERIC_function \
= &Perl_set_numeric_underlying; \
} \
@@ -7493,7 +7723,7 @@
# define RESTORE_LC_NUMERIC() \
STMT_START { \
if (_restore_LC_NUMERIC_function) { \
- _restore_LC_NUMERIC_function(aTHX); \
+ _restore_LC_NUMERIC_function(aTHX_ __FILE__, __LINE__); \
} \
LC_NUMERIC_UNLOCK; \
} STMT_END
@@ -7506,7 +7736,7 @@
"%s: %d: lc_numeric standard=%d\n", \
__FILE__, __LINE__, PL_numeric_standard)); \
if (UNLIKELY(NOT_IN_NUMERIC_STANDARD_)) { \
- Perl_set_numeric_standard(aTHX); \
+ Perl_set_numeric_standard(aTHX_ __FILE__, __LINE__); \
} \
DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
"%s: %d: lc_numeric standard=%d\n", \
@@ -7517,7 +7747,7 @@
STMT_START { \
/*assert(PL_locale_mutex_depth > 0);*/ \
if (NOT_IN_NUMERIC_UNDERLYING_) { \
- Perl_set_numeric_underlying(aTHX); \
+ Perl_set_numeric_underlying(aTHX_ __FILE__, __LINE__); \
} \
} STMT_END
@@ -7528,7 +7758,7 @@
LC_NUMERIC_LOCK(NOT_IN_NUMERIC_STANDARD_); \
if (NOT_IN_NUMERIC_STANDARD_) { \
_restore_LC_NUMERIC_function = &Perl_set_numeric_underlying;\
- Perl_set_numeric_standard(aTHX); \
+ Perl_set_numeric_standard(aTHX_ __FILE__, __LINE__); \
} \
} STMT_END
@@ -7538,23 +7768,27 @@
STMT_START { \
LC_NUMERIC_LOCK(NOT_IN_NUMERIC_UNDERLYING_); \
if (NOT_IN_NUMERIC_UNDERLYING_) { \
- Perl_set_numeric_underlying(aTHX); \
+ Perl_set_numeric_underlying(aTHX_ __FILE__, __LINE__); \
_restore_LC_NUMERIC_function = &Perl_set_numeric_standard; \
} \
} STMT_END
-/* Lock/unlock to the C locale until unlock is called. This needs to be
- * recursively callable. [perl #128207] */
-# define LOCK_LC_NUMERIC_STANDARD() \
+/* Lock/unlock changes to LC_NUMERIC. This needs to be recursively callable.
+ * The highest level caller is responsible for making sure that LC_NUMERIC is
+ * set to a locale with a dot radix character. These deliberately don't check
+ * for the internal state being so, as they can be called from code that is not
+ * party to the internal conventions, namely 'version' (vutil.c).
+ * PL_numeric_standard changing doesn't affect anything about what locale is in
+ * effect, etc. [perl #128207] */
+# define DISABLE_LC_NUMERIC_CHANGES() \
STMT_START { \
DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
"%s: %d: lc_numeric_standard now locked to depth %d\n", \
__FILE__, __LINE__, PL_numeric_standard)); \
- __ASSERT_(PL_numeric_standard) \
PL_numeric_standard++; \
} STMT_END
-# define UNLOCK_LC_NUMERIC_STANDARD() \
+# define REENABLE_LC_NUMERIC_CHANGES() \
STMT_START { \
if (PL_numeric_standard > 1) { \
PL_numeric_standard--; \
@@ -7572,6 +7806,17 @@
PL_numeric_standard););\
} STMT_END
+/* Essentially synonyms for the above. The LOCK asserts at the top level that
+ * we are in a locale equivalent to C. By including the top level, this can be
+ * recursively called from chains which include DISABLE_LC_NUMERIC_CHANGES().
+ * */
+# define LOCK_LC_NUMERIC_STANDARD() \
+ STMT_START { \
+ assert(PL_numeric_standard > 0 || PL_numeric_standard); \
+ DISABLE_LC_NUMERIC_CHANGES(); \
+ } STMT_END
+# define UNLOCK_LC_NUMERIC_STANDARD() REENABLE_LC_NUMERIC_CHANGES()
+
# define WITH_LC_NUMERIC_SET_TO_NEEDED_IN(in_lc_numeric, block) \
STMT_START { \
DECLARATION_FOR_LC_NUMERIC_MANIPULATION; \
@@ -7578,7 +7823,7 @@
STORE_LC_NUMERIC_SET_TO_NEEDED_IN(in_lc_numeric); \
block; \
RESTORE_LC_NUMERIC(); \
- } STMT_END;
+ } STMT_END
# define WITH_LC_NUMERIC_SET_TO_NEEDED(block) \
WITH_LC_NUMERIC_SET_TO_NEEDED_IN(IN_LC(LC_NUMERIC), block)
@@ -7596,6 +7841,8 @@
# define RESTORE_LC_NUMERIC()
# define LOCK_LC_NUMERIC_STANDARD()
# define UNLOCK_LC_NUMERIC_STANDARD()
+# define DISABLE_LC_NUMERIC_CHANGES()
+# define REENABLE_LC_NUMERIC_CHANGES()
# define WITH_LC_NUMERIC_SET_TO_NEEDED_IN(in_lc_numeric, block) \
STMT_START { block; } STMT_END
# define WITH_LC_NUMERIC_SET_TO_NEEDED(block) \
@@ -7603,195 +7850,6 @@
#endif /* !USE_LOCALE_NUMERIC */
-#ifdef USE_LOCALE_THREADS
-# define ENV_LOCK PERL_WRITE_LOCK(&PL_env_mutex)
-# define ENV_UNLOCK PERL_WRITE_UNLOCK(&PL_env_mutex)
-# define ENV_READ_LOCK PERL_READ_LOCK(&PL_env_mutex)
-# define ENV_READ_UNLOCK PERL_READ_UNLOCK(&PL_env_mutex)
-# define ENV_INIT PERL_RW_MUTEX_INIT(&PL_env_mutex)
-# define ENV_TERM PERL_RW_MUTEX_DESTROY(&PL_env_mutex)
-
- /* On platforms where the static buffer contained in getenv() is per-thread
- * rather than process-wide, another thread executing a getenv() at the same
- * time won't destroy ours before we have copied the result safely away and
- * unlocked the mutex. On such platforms (which is most), we can have many
- * readers of the environment at the same time. */
-# ifdef GETENV_PRESERVES_OTHER_THREAD
-# define GETENV_LOCK ENV_READ_LOCK
-# define GETENV_UNLOCK ENV_READ_UNLOCK
-# else
- /* If, on the other hand, another thread could zap our getenv() return, we
- * need to keep them from executing until we are done */
-# define GETENV_LOCK ENV_LOCK
-# define GETENV_UNLOCK ENV_UNLOCK
-# endif
-#else
-# define ENV_LOCK NOOP
-# define ENV_UNLOCK NOOP
-# define ENV_READ_LOCK NOOP
-# define ENV_READ_UNLOCK NOOP
-# define ENV_INIT NOOP
-# define ENV_TERM NOOP
-# define GETENV_LOCK NOOP
-# define GETENV_UNLOCK NOOP
-#endif
-
-/* Some critical sections need to lock both the locale and the environment from
- * changing, while allowing for any number of readers. To avoid deadlock, this
- * is always done in the same order. These should always be invoked, like all
- * locks really, at such a low level that its just a libc call that is wrapped,
- * so as to prevent recursive calls which could deadlock. */
-#define ENVr_LOCALEr_LOCK \
- STMT_START { LOCALE_READ_LOCK; ENV_READ_LOCK; } STMT_END
-#define ENVr_LOCALEr_UNLOCK \
- STMT_START { ENV_READ_UNLOCK; LOCALE_READ_UNLOCK; } STMT_END
-
-/* These time-related functions all requre that the environment and locale
- * don't change while they are executing (at least in glibc; this appears to be
- * contrary to the POSIX standard). tzset() writes global variables, so
- * always needs to have write locking. ctime, localtime, mktime, and strftime
- * effectively call it, so they too need exclusive access. The rest need to
- * have exclusive locking as well so that they can copy the contents of the
- * returned static buffer before releasing the lock. That leaves asctime and
- * gmtime. There may be reentrant versions of these available on the platform
- * which don't require write locking.
- */
-#ifdef PERL_REENTR_USING_ASCTIME_R
-# define ASCTIME_LOCK ENVr_LOCALEr_LOCK
-# define ASCTIME_UNLOCK ENVr_LOCALEr_UNLOCK
-#else
-# define ASCTIME_LOCK gwENVr_LOCALEr_LOCK
-# define ASCTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
-#endif
-
-#define CTIME_LOCK gwENVr_LOCALEr_LOCK
-#define CTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
-
-#ifdef PERL_REENTR_USING_GMTIME_R
-# define GMTIME_LOCK ENVr_LOCALEr_LOCK
-# define GMTIME_UNLOCK ENVr_LOCALEr_UNLOCK
-#else
-# define GMTIME_LOCK gwENVr_LOCALEr_LOCK
-# define GMTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
-#endif
-
-#define LOCALTIME_LOCK gwENVr_LOCALEr_LOCK
-#define LOCALTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
-#define MKTIME_LOCK gwENVr_LOCALEr_LOCK
-#define MKTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
-#define TZSET_LOCK gwENVr_LOCALEr_LOCK
-#define TZSET_UNLOCK gwENVr_LOCALEr_UNLOCK
-
-/* Similiarly, these functions need a constant environment and/or locale. And
- * some have a buffer that is shared with another thread executing the same or
- * a related call. A mutex could be created for each class, but for now, share
- * the ENV mutex with everything, as none probably gets called so much that
- * performance would suffer by a thread being locked out by another thread that
- * could have used a different mutex.
- *
- * But, create a different macro name just to indicate the ones that don't
- * actually depend on the environment, but are using its mutex for want of a
- * better one */
-#define gwLOCALEr_LOCK gwENVr_LOCALEr_LOCK
-#define gwLOCALEr_UNLOCK gwENVr_LOCALEr_UNLOCK
-
-#ifdef PERL_REENTR_USING_GETHOSTBYADDR_R
-# define GETHOSTBYADDR_LOCK ENVr_LOCALEr_LOCK
-# define GETHOSTBYADDR_UNLOCK ENVr_LOCALEr_UNLOCK
-#else
-# define GETHOSTBYADDR_LOCK gwENVr_LOCALEr_LOCK
-# define GETHOSTBYADDR_UNLOCK gwENVr_LOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETHOSTBYNAME_R
-# define GETHOSTBYNAME_LOCK ENVr_LOCALEr_LOCK
-# define GETHOSTBYNAME_UNLOCK ENVr_LOCALEr_UNLOCK
-#else
-# define GETHOSTBYNAME_LOCK gwENVr_LOCALEr_LOCK
-# define GETHOSTBYNAME_UNLOCK gwENVr_LOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETNETBYADDR_R
-# define GETNETBYADDR_LOCK LOCALE_READ_LOCK
-# define GETNETBYADDR_UNLOCK LOCALE_READ_UNLOCK
-#else
-# define GETNETBYADDR_LOCK gwLOCALEr_LOCK
-# define GETNETBYADDR_UNLOCK gwLOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETNETBYNAME_R
-# define GETNETBYNAME_LOCK LOCALE_READ_LOCK
-# define GETNETBYNAME_UNLOCK LOCALE_READ_UNLOCK
-#else
-# define GETNETBYNAME_LOCK gwLOCALEr_LOCK
-# define GETNETBYNAME_UNLOCK gwLOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETPROTOBYNAME_R
-# define GETPROTOBYNAME_LOCK LOCALE_READ_LOCK
-# define GETPROTOBYNAME_UNLOCK LOCALE_READ_UNLOCK
-#else
-# define GETPROTOBYNAME_LOCK gwLOCALEr_LOCK
-# define GETPROTOBYNAME_UNLOCK gwLOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETPROTOBYNUMBER_R
-# define GETPROTOBYNUMBER_LOCK LOCALE_READ_LOCK
-# define GETPROTOBYNUMBER_UNLOCK LOCALE_READ_UNLOCK
-#else
-# define GETPROTOBYNUMBER_LOCK gwLOCALEr_LOCK
-# define GETPROTOBYNUMBER_UNLOCK gwLOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETPROTOENT_R
-# define GETPROTOENT_LOCK LOCALE_READ_LOCK
-# define GETPROTOENT_UNLOCK LOCALE_READ_UNLOCK
-#else
-# define GETPROTOENT_LOCK gwLOCALEr_LOCK
-# define GETPROTOENT_UNLOCK gwLOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETPWNAM_R
-# define GETPWNAM_LOCK LOCALE_READ_LOCK
-# define GETPWNAM_UNLOCK LOCALE_READ_UNLOCK
-#else
-# define GETPWNAM_LOCK gwLOCALEr_LOCK
-# define GETPWNAM_UNLOCK gwLOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETPWUID_R
-# define GETPWUID_LOCK LOCALE_READ_LOCK
-# define GETPWUID_UNLOCK LOCALE_READ_UNLOCK
-#else
-# define GETPWUID_LOCK gwLOCALEr_LOCK
-# define GETPWUID_UNLOCK gwLOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETSERVBYNAME_R
-# define GETSERVBYNAME_LOCK LOCALE_READ_LOCK
-# define GETSERVBYNAME_UNLOCK LOCALE_READ_UNLOCK
-#else
-# define GETSERVBYNAME_LOCK gwLOCALEr_LOCK
-# define GETSERVBYNAME_UNLOCK gwLOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETSERVBYPORT_R
-# define GETSERVBYPORT_LOCK LOCALE_READ_LOCK
-# define GETSERVBYPORT_UNLOCK LOCALE_READ_UNLOCK
-#else
-# define GETSERVBYPORT_LOCK gwLOCALEr_LOCK
-# define GETSERVBYPORT_UNLOCK gwLOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETSERVENT_R
-# define GETSERVENT_LOCK LOCALE_READ_LOCK
-# define GETSERVENT_UNLOCK LOCALE_READ_UNLOCK
-#else
-# define GETSERVENT_LOCK gwLOCALEr_LOCK
-# define GETSERVENT_UNLOCK gwLOCALEr_UNLOCK
-#endif
-#ifdef PERL_REENTR_USING_GETSPNAM_R
-# define GETSPNAM_LOCK LOCALE_READ_LOCK
-# define GETSPNAM_UNLOCK LOCALE_READ_UNLOCK
-#else
-# define GETSPNAM_LOCK gwLOCALEr_LOCK
-# define GETSPNAM_UNLOCK gwLOCALEr_UNLOCK
-#endif
-
-#define STRFMON_LOCK LC_MONETARY_LOCK
-#define STRFMON_UNLOCK LC_MONETARY_UNLOCK
-
-/* End of locale/env synchronization */
-
#ifndef PERL_NO_INLINE_FUNCTIONS
/* Static inline funcs that depend on includes and declarations above.
Some of these reference functions in the perl object files, and some
@@ -7932,14 +7990,8 @@
* massively.
*/
-#ifndef PERL_MICRO
-# ifndef PERL_ASYNC_CHECK
-# define PERL_ASYNC_CHECK() if (UNLIKELY(PL_sig_pending)) PL_signalhook(aTHX)
-# endif
-#endif
-
#ifndef PERL_ASYNC_CHECK
-# define PERL_ASYNC_CHECK() NOOP
+#define PERL_ASYNC_CHECK() if (UNLIKELY(PL_sig_pending)) PL_signalhook(aTHX)
#endif
/*
@@ -9128,6 +9180,33 @@
#define PERL_PARSE_ERROR_COUNT(f) (f)
+
+/* Work around
+
+ https://github.com/Perl/perl5/issues/21313
+
+ Where gcc when generating code for 32-bit windows assumes the stack
+ is 16 byte aligned, where the system doesn't guarantee that.
+
+ The code generated by gcc itself does maintain 16 byte alignment,
+ but callbacks from the CRT or Windows APIs don't, so calls to
+ code that is generated to SSE instructions (like the quadmath code
+ by default), crashes when called from a callback.
+
+ Since other code other than quadmath might use SSE instructions,
+ also enable this outside of quadmath builds.
+
+ This change is a little risky: if an XS module uses callbacks
+ and those callbacks may also produce alignment errors, if that
+ becomes a problem we'll need to use the nuclear option: building
+ 32-bit perl with -mstackrealign.
+*/
+#if defined(WIN32) && !defined(WIN64) && defined(__GNUC__)
+# define PERL_STACK_REALIGN __attribute__((force_align_arg_pointer))
+#else
+# define PERL_STACK_REALIGN
+#endif
+
/*
(KEEP THIS LAST IN perl.h!)
Deleted: trunk/Master/tlpkg/tlperl/lib/CORE/perl538.lib
===================================================================
(Binary files differ)
Added: trunk/Master/tlpkg/tlperl/lib/CORE/perl540.lib
===================================================================
(Binary files differ)
Index: trunk/Master/tlpkg/tlperl/lib/CORE/perl540.lib
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/perl540.lib 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/perl540.lib 2025-02-24 14:12:21 UTC (rev 74256)
Property changes on: trunk/Master/tlpkg/tlperl/lib/CORE/perl540.lib
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/x-archive
\ No newline at end of property
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/perl_langinfo.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/perl_langinfo.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/perl_langinfo.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -6,8 +6,12 @@
#include "config.h"
-#if defined(HAS_NL_LANGINFO) && defined(I_LANGINFO)
+#if defined(I_LANGINFO)
# include <langinfo.h>
+#else
+
+typedef int nl_item; /* Substitute 'int' for emulated nl_langinfo() */
+
#endif
/* NOTE that this file is parsed by ext/XS-APItest/t/locale.t, so be careful
@@ -17,174 +21,317 @@
#ifndef CODESET
# define CODESET -1
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef D_T_FMT
# define D_T_FMT -2
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef D_FMT
# define D_FMT -3
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef T_FMT
# define T_FMT -4
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef T_FMT_AMPM
# define T_FMT_AMPM -5
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef AM_STR
# define AM_STR -6
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef PM_STR
# define PM_STR -7
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef DAY_1
# define DAY_1 -8
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef DAY_2
# define DAY_2 -9
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef DAY_3
# define DAY_3 -10
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef DAY_4
# define DAY_4 -11
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef DAY_5
# define DAY_5 -12
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef DAY_6
# define DAY_6 -13
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef DAY_7
# define DAY_7 -14
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABDAY_1
# define ABDAY_1 -15
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABDAY_2
# define ABDAY_2 -16
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABDAY_3
# define ABDAY_3 -17
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABDAY_4
# define ABDAY_4 -18
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABDAY_5
# define ABDAY_5 -19
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABDAY_6
# define ABDAY_6 -20
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABDAY_7
# define ABDAY_7 -21
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_1
# define MON_1 -22
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_2
# define MON_2 -23
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_3
# define MON_3 -24
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_4
# define MON_4 -25
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_5
# define MON_5 -26
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_6
# define MON_6 -27
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_7
# define MON_7 -28
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_8
# define MON_8 -29
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_9
# define MON_9 -30
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_10
# define MON_10 -31
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_11
# define MON_11 -32
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef MON_12
# define MON_12 -33
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_1
# define ABMON_1 -34
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_2
# define ABMON_2 -35
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_3
# define ABMON_3 -36
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_4
# define ABMON_4 -37
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_5
# define ABMON_5 -38
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_6
# define ABMON_6 -39
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_7
# define ABMON_7 -40
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_8
# define ABMON_8 -41
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_9
# define ABMON_9 -42
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_10
# define ABMON_10 -43
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_11
# define ABMON_11 -44
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ABMON_12
# define ABMON_12 -45
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ERA
# define ERA -46
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ERA_D_FMT
# define ERA_D_FMT -47
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ERA_D_T_FMT
# define ERA_D_T_FMT -48
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ERA_T_FMT
# define ERA_T_FMT -49
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef ALT_DIGITS
# define ALT_DIGITS -50
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef RADIXCHAR
# define RADIXCHAR -51
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef THOUSEP
# define THOUSEP -52
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef YESEXPR
# define YESEXPR -53
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef YESSTR
# define YESSTR -54
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef NOEXPR
# define NOEXPR -55
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef NOSTR
# define NOSTR -56
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
#ifndef CRNCYSTR
# define CRNCYSTR -57
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
+/* The rest of the items are gnu extensions, and are not #defined by its
+ * langinfo.h. There is a slight possibility that one of these numbers could
+ * conflict with some other value, in which case after much gnashing of teeth
+ * you will find this comment, and end up having to adjust the numbers. But
+ * glibc values are not (so far) negative */
+#if ! defined(HAS_NL_LANGINFO) || ! defined(LC_ADDRESS)
+# define _NL_ADDRESS_POSTAL_FMT -58
+# define _NL_ADDRESS_COUNTRY_NAME -59
+# define _NL_ADDRESS_COUNTRY_POST -60
+# define _NL_ADDRESS_COUNTRY_AB2 -61
+# define _NL_ADDRESS_COUNTRY_AB3 -62
+# define _NL_ADDRESS_COUNTRY_CAR -63
+# define _NL_ADDRESS_COUNTRY_NUM -64
+# define _NL_ADDRESS_COUNTRY_ISBN -65
+# define _NL_ADDRESS_LANG_NAME -66
+# define _NL_ADDRESS_LANG_AB -67
+# define _NL_ADDRESS_LANG_TERM -68
+# define _NL_ADDRESS_LANG_LIB -69
+
+# define HAS_MISSING_LANGINFO_ITEM_
#endif
+#if ! defined(HAS_NL_LANGINFO) || ! defined(LC_IDENTIFICATION)
+# define _NL_IDENTIFICATION_TITLE -70
+# define _NL_IDENTIFICATION_SOURCE -71
+# define _NL_IDENTIFICATION_ADDRESS -72
+# define _NL_IDENTIFICATION_CONTACT -73
+# define _NL_IDENTIFICATION_EMAIL -74
+# define _NL_IDENTIFICATION_TEL -75
+# define _NL_IDENTIFICATION_FAX -76
+# define _NL_IDENTIFICATION_LANGUAGE -77
+# define _NL_IDENTIFICATION_TERRITORY -78
+# define _NL_IDENTIFICATION_AUDIENCE -79
+# define _NL_IDENTIFICATION_APPLICATION -80
+# define _NL_IDENTIFICATION_ABBREVIATION -81
+# define _NL_IDENTIFICATION_REVISION -82
+# define _NL_IDENTIFICATION_DATE -83
+# define _NL_IDENTIFICATION_CATEGORY -84
+
+# define HAS_MISSING_LANGINFO_ITEM_
+#endif
+#if ! defined(HAS_NL_LANGINFO) || ! defined(LC_MEASUREMENT)
+# define _NL_MEASUREMENT_MEASUREMENT -85
+
+# define HAS_MISSING_LANGINFO_ITEM_
+#endif
+#if ! defined(HAS_NL_LANGINFO) || ! defined(LC_NAME)
+# define _NL_NAME_NAME_FMT -86
+# define _NL_NAME_NAME_GEN -87
+# define _NL_NAME_NAME_MR -88
+# define _NL_NAME_NAME_MRS -89
+# define _NL_NAME_NAME_MISS -90
+# define _NL_NAME_NAME_MS -91
+
+# define HAS_MISSING_LANGINFO_ITEM_
+#endif
+#if ! defined(HAS_NL_LANGINFO) || ! defined(LC_PAPER)
+# define _NL_PAPER_HEIGHT -92
+# define _NL_PAPER_WIDTH -93
+
+# define HAS_MISSING_LANGINFO_ITEM_
+#endif
+#if ! defined(HAS_NL_LANGINFO) || ! defined(LC_TELEPHONE)
+# define _NL_TELEPHONE_TEL_INT_FMT -94
+# define _NL_TELEPHONE_TEL_DOM_FMT -95
+# define _NL_TELEPHONE_INT_SELECT -96
+# define _NL_TELEPHONE_INT_PREFIX -97
+
+# define HAS_MISSING_LANGINFO_ITEM_
+#endif
+
+/* All these categories have to be emulated if not available on the platform */
+#if ! LC_CTYPE_AVAIL_ \
+ || ! LC_MESSAGES_AVAIL_ \
+ || ! LC_MONETARY_AVAIL_ \
+ || ! LC_NUMERIC_AVAIL_ \
+ || ! LC_TIME_AVAIL_ \
+ || ! LC_ADDRESS_AVAIL_ \
+ || ! LC_IDENTIFICATION_AVAIL_ \
+ || ! LC_MEASUREMENT_AVAIL_ \
+ || ! LC_NAME_AVAIL_ \
+ || ! LC_PAPER_AVAIL_ \
+ || ! LC_TELEPHONE_AVAIL_
+
+# define HAS_MISSING_LANGINFO_ITEM_
+#endif
+
+#endif /* PERL_LANGINFO_H */
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/perlhost.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/perlhost.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/perlhost.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -471,6 +471,7 @@
int
PerlEnvUname(struct IPerlEnv* piPerl, struct utsname *name)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_uname(name);
}
@@ -507,6 +508,7 @@
unsigned long
PerlEnvOsId(struct IPerlEnv* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_os_id();
}
@@ -513,6 +515,7 @@
char*
PerlEnvLibPath(struct IPerlEnv* piPerl, WIN32_NO_REGISTRY_M_(const char *pl) STRLEN *const len)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_get_privlib(WIN32_NO_REGISTRY_M_(pl) len);
}
@@ -519,6 +522,7 @@
char*
PerlEnvSiteLibPath(struct IPerlEnv* piPerl, const char *pl, STRLEN *const len)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_get_sitelib(pl, len);
}
@@ -526,6 +530,7 @@
PerlEnvVendorLibPath(struct IPerlEnv* piPerl, const char *pl,
STRLEN *const len)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_get_vendorlib(pl, len);
}
@@ -532,6 +537,7 @@
void
PerlEnvGetChildIO(struct IPerlEnv* piPerl, child_IO_table* ptr)
{
+ PERL_UNUSED_ARG(piPerl);
win32_get_child_IO(ptr);
}
@@ -560,6 +566,7 @@
FILE*
PerlStdIOStdin(struct IPerlStdIO* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_stdin();
}
@@ -566,6 +573,7 @@
FILE*
PerlStdIOStdout(struct IPerlStdIO* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_stdout();
}
@@ -572,6 +580,7 @@
FILE*
PerlStdIOStderr(struct IPerlStdIO* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_stderr();
}
@@ -578,6 +587,7 @@
FILE*
PerlStdIOOpen(struct IPerlStdIO* piPerl, const char *path, const char *mode)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fopen(path, mode);
}
@@ -584,6 +594,7 @@
int
PerlStdIOClose(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fclose((pf));
}
@@ -590,6 +601,7 @@
int
PerlStdIOEof(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_feof(pf);
}
@@ -596,6 +608,7 @@
int
PerlStdIOError(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_ferror(pf);
}
@@ -602,6 +615,7 @@
void
PerlStdIOClearerr(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
win32_clearerr(pf);
}
@@ -608,6 +622,7 @@
int
PerlStdIOGetc(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getc(pf);
}
@@ -614,6 +629,7 @@
STDCHAR*
PerlStdIOGetBase(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
#ifdef FILE_base
FILE *f = pf;
return FILE_base(f);
@@ -625,6 +641,7 @@
int
PerlStdIOGetBufsiz(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
#ifdef FILE_bufsiz
FILE *f = pf;
return FILE_bufsiz(f);
@@ -636,6 +653,7 @@
int
PerlStdIOGetCnt(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
#ifdef USE_STDIO_PTR
FILE *f = pf;
return FILE_cnt(f);
@@ -647,6 +665,7 @@
STDCHAR*
PerlStdIOGetPtr(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
#ifdef USE_STDIO_PTR
FILE *f = pf;
return FILE_ptr(f);
@@ -658,6 +677,7 @@
char*
PerlStdIOGets(struct IPerlStdIO* piPerl, char* s, int n, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fgets(s, n, pf);
}
@@ -664,6 +684,7 @@
int
PerlStdIOPutc(struct IPerlStdIO* piPerl, int c, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fputc(c, pf);
}
@@ -670,6 +691,7 @@
int
PerlStdIOPuts(struct IPerlStdIO* piPerl, const char *s, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fputs(s, pf);
}
@@ -676,6 +698,7 @@
int
PerlStdIOFlush(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fflush(pf);
}
@@ -682,6 +705,7 @@
int
PerlStdIOUngetc(struct IPerlStdIO* piPerl,int c, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_ungetc(c, pf);
}
@@ -688,6 +712,7 @@
int
PerlStdIOFileno(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fileno(pf);
}
@@ -694,6 +719,7 @@
FILE*
PerlStdIOFdopen(struct IPerlStdIO* piPerl, int fd, const char *mode)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fdopen(fd, mode);
}
@@ -700,6 +726,7 @@
FILE*
PerlStdIOReopen(struct IPerlStdIO* piPerl, const char*path, const char*mode, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_freopen(path, mode, (FILE*)pf);
}
@@ -706,6 +733,7 @@
SSize_t
PerlStdIORead(struct IPerlStdIO* piPerl, void *buffer, Size_t size, Size_t count, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fread(buffer, size, count, pf);
}
@@ -712,6 +740,7 @@
SSize_t
PerlStdIOWrite(struct IPerlStdIO* piPerl, const void *buffer, Size_t size, Size_t count, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fwrite(buffer, size, count, pf);
}
@@ -718,6 +747,7 @@
void
PerlStdIOSetBuf(struct IPerlStdIO* piPerl, FILE* pf, char* buffer)
{
+ PERL_UNUSED_ARG(piPerl);
win32_setbuf(pf, buffer);
}
@@ -724,6 +754,7 @@
int
PerlStdIOSetVBuf(struct IPerlStdIO* piPerl, FILE* pf, char* buffer, int type, Size_t size)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_setvbuf(pf, buffer, type, size);
}
@@ -730,9 +761,13 @@
void
PerlStdIOSetCnt(struct IPerlStdIO* piPerl, FILE* pf, int n)
{
+ PERL_UNUSED_ARG(piPerl);
#ifdef STDIO_CNT_LVALUE
FILE *f = pf;
FILE_cnt(f) = n;
+#else
+ PERL_UNUSED_ARG(pf);
+ PERL_UNUSED_ARG(n);
#endif
}
@@ -739,9 +774,13 @@
void
PerlStdIOSetPtr(struct IPerlStdIO* piPerl, FILE* pf, STDCHAR * ptr)
{
+ PERL_UNUSED_ARG(piPerl);
#ifdef STDIO_PTR_LVALUE
FILE *f = pf;
FILE_ptr(f) = ptr;
+#else
+ PERL_UNUSED_ARG(pf);
+ PERL_UNUSED_ARG(ptr);
#endif
}
@@ -748,6 +787,7 @@
void
PerlStdIOSetlinebuf(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
win32_setvbuf(pf, NULL, _IOLBF, 0);
}
@@ -754,8 +794,9 @@
int
PerlStdIOPrintf(struct IPerlStdIO* piPerl, FILE* pf, const char *format,...)
{
- va_list(arglist);
+ va_list arglist;
va_start(arglist, format);
+ PERL_UNUSED_ARG(piPerl);
return win32_vfprintf(pf, format, arglist);
}
@@ -762,6 +803,7 @@
int
PerlStdIOVprintf(struct IPerlStdIO* piPerl, FILE* pf, const char *format, va_list arglist)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_vfprintf(pf, format, arglist);
}
@@ -768,6 +810,7 @@
Off_t
PerlStdIOTell(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_ftell(pf);
}
@@ -774,6 +817,7 @@
int
PerlStdIOSeek(struct IPerlStdIO* piPerl, FILE* pf, Off_t offset, int origin)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fseek(pf, offset, origin);
}
@@ -780,6 +824,7 @@
void
PerlStdIORewind(struct IPerlStdIO* piPerl, FILE* pf)
{
+ PERL_UNUSED_ARG(piPerl);
win32_rewind(pf);
}
@@ -786,6 +831,7 @@
FILE*
PerlStdIOTmpfile(struct IPerlStdIO* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_tmpfile();
}
@@ -792,6 +838,7 @@
int
PerlStdIOGetpos(struct IPerlStdIO* piPerl, FILE* pf, Fpos_t *p)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fgetpos(pf, p);
}
@@ -798,16 +845,19 @@
int
PerlStdIOSetpos(struct IPerlStdIO* piPerl, FILE* pf, const Fpos_t *p)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fsetpos(pf, p);
}
void
PerlStdIOInit(struct IPerlStdIO* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
}
void
PerlStdIOInitOSExtras(struct IPerlStdIO* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
Perl_init_os_extras();
}
@@ -814,6 +864,7 @@
int
PerlStdIOOpenOSfhandle(struct IPerlStdIO* piPerl, intptr_t osfhandle, int flags)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_open_osfhandle(osfhandle, flags);
}
@@ -820,6 +871,7 @@
intptr_t
PerlStdIOGetOSfhandle(struct IPerlStdIO* piPerl, int filenum)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_get_osfhandle(filenum);
}
@@ -830,6 +882,7 @@
fpos_t pos;
char mode[3];
int fileno = win32_dup(win32_fileno(pf));
+ PERL_UNUSED_ARG(piPerl);
/* open the file in the same mode */
if (PERLIO_FILE_flag(pf) & PERLIO_FILE_flag_RD) {
@@ -910,6 +963,7 @@
int
PerlLIOAccess(struct IPerlLIO* piPerl, const char *path, int mode)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_access(path, mode);
}
@@ -916,6 +970,7 @@
int
PerlLIOChmod(struct IPerlLIO* piPerl, const char *filename, int pmode)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_chmod(filename, pmode);
}
@@ -922,6 +977,7 @@
int
PerlLIOChown(struct IPerlLIO* piPerl, const char *filename, uid_t owner, gid_t group)
{
+ PERL_UNUSED_ARG(piPerl);
return chown(filename, owner, group);
}
@@ -928,6 +984,7 @@
int
PerlLIOChsize(struct IPerlLIO* piPerl, int handle, Off_t size)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_chsize(handle, size);
}
@@ -934,6 +991,7 @@
int
PerlLIOClose(struct IPerlLIO* piPerl, int handle)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_close(handle);
}
@@ -940,6 +998,7 @@
int
PerlLIODup(struct IPerlLIO* piPerl, int handle)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_dup(handle);
}
@@ -946,6 +1005,7 @@
int
PerlLIODup2(struct IPerlLIO* piPerl, int handle1, int handle2)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_dup2(handle1, handle2);
}
@@ -952,6 +1012,7 @@
int
PerlLIOFlock(struct IPerlLIO* piPerl, int fd, int oper)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_flock(fd, oper);
}
@@ -958,6 +1019,7 @@
int
PerlLIOFileStat(struct IPerlLIO* piPerl, int handle, Stat_t *buffer)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_fstat(handle, buffer);
}
@@ -966,6 +1028,7 @@
{
u_long u_long_arg;
int retval;
+ PERL_UNUSED_ARG(piPerl);
/* mauke says using memcpy avoids alignment issues */
memcpy(&u_long_arg, data, sizeof u_long_arg);
@@ -977,6 +1040,7 @@
int
PerlLIOIsatty(struct IPerlLIO* piPerl, int fd)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_isatty(fd);
}
@@ -983,6 +1047,7 @@
int
PerlLIOLink(struct IPerlLIO* piPerl, const char*oldname, const char *newname)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_link(oldname, newname);
}
@@ -989,6 +1054,7 @@
int
PerlLIOSymLink(struct IPerlLIO* piPerl, const char*oldname, const char *newname)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_symlink(oldname, newname);
}
@@ -995,6 +1061,7 @@
int
PerlLIOReadLink(struct IPerlLIO* piPerl, const char *path, char *buf, size_t bufsiz)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_readlink(path, buf, bufsiz);
}
@@ -1001,6 +1068,7 @@
Off_t
PerlLIOLseek(struct IPerlLIO* piPerl, int handle, Off_t offset, int origin)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_lseek(handle, offset, origin);
}
@@ -1007,6 +1075,7 @@
int
PerlLIOLstat(struct IPerlLIO* piPerl, const char *path, Stat_t *buffer)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_lstat(path, buffer);
}
@@ -1013,6 +1082,7 @@
char*
PerlLIOMktemp(struct IPerlLIO* piPerl, char *Template)
{
+ PERL_UNUSED_ARG(piPerl);
return mktemp(Template);
}
@@ -1019,6 +1089,7 @@
int
PerlLIOOpen(struct IPerlLIO* piPerl, const char *filename, int oflag)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_open(filename, oflag);
}
@@ -1025,6 +1096,7 @@
int
PerlLIOOpen3(struct IPerlLIO* piPerl, const char *filename, int oflag, int pmode)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_open(filename, oflag, pmode);
}
@@ -1031,6 +1103,7 @@
int
PerlLIORead(struct IPerlLIO* piPerl, int handle, void *buffer, unsigned int count)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_read(handle, buffer, count);
}
@@ -1037,6 +1110,7 @@
int
PerlLIORename(struct IPerlLIO* piPerl, const char *OldFileName, const char *newname)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_rename(OldFileName, newname);
}
@@ -1043,6 +1117,7 @@
int
PerlLIOSetmode(struct IPerlLIO* piPerl, int handle, int mode)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_setmode(handle, mode);
}
@@ -1049,6 +1124,7 @@
int
PerlLIONameStat(struct IPerlLIO* piPerl, const char *path, Stat_t *buffer)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_stat(path, buffer);
}
@@ -1055,6 +1131,7 @@
char*
PerlLIOTmpnam(struct IPerlLIO* piPerl, char *string)
{
+ PERL_UNUSED_ARG(piPerl);
return tmpnam(string);
}
@@ -1061,6 +1138,7 @@
int
PerlLIOUmask(struct IPerlLIO* piPerl, int pmode)
{
+ PERL_UNUSED_ARG(piPerl);
return umask(pmode);
}
@@ -1067,6 +1145,7 @@
int
PerlLIOUnlink(struct IPerlLIO* piPerl, const char *filename)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_unlink(filename);
}
@@ -1073,6 +1152,7 @@
int
PerlLIOUtime(struct IPerlLIO* piPerl, const char *filename, struct utimbuf *times)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_utime(filename, times);
}
@@ -1079,6 +1159,7 @@
int
PerlLIOWrite(struct IPerlLIO* piPerl, int handle, const void *buffer, unsigned int count)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_write(handle, buffer, count);
}
@@ -1122,6 +1203,7 @@
int
PerlDirMakedir(struct IPerlDir* piPerl, const char *dirname, int mode)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_mkdir(dirname, mode);
}
@@ -1128,6 +1210,7 @@
int
PerlDirChdir(struct IPerlDir* piPerl, const char *dirname)
{
+ PERL_UNUSED_ARG(piPerl);
return IPERL2HOST(piPerl)->Chdir(dirname);
}
@@ -1134,6 +1217,7 @@
int
PerlDirRmdir(struct IPerlDir* piPerl, const char *dirname)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_rmdir(dirname);
}
@@ -1140,6 +1224,7 @@
int
PerlDirClose(struct IPerlDir* piPerl, DIR *dirp)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_closedir(dirp);
}
@@ -1146,6 +1231,7 @@
DIR*
PerlDirOpen(struct IPerlDir* piPerl, const char *filename)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_opendir(filename);
}
@@ -1152,6 +1238,7 @@
struct direct *
PerlDirRead(struct IPerlDir* piPerl, DIR *dirp)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_readdir(dirp);
}
@@ -1158,6 +1245,7 @@
void
PerlDirRewind(struct IPerlDir* piPerl, DIR *dirp)
{
+ PERL_UNUSED_ARG(piPerl);
win32_rewinddir(dirp);
}
@@ -1164,6 +1252,7 @@
void
PerlDirSeek(struct IPerlDir* piPerl, DIR *dirp, long loc)
{
+ PERL_UNUSED_ARG(piPerl);
win32_seekdir(dirp, loc);
}
@@ -1170,6 +1259,7 @@
long
PerlDirTell(struct IPerlDir* piPerl, DIR *dirp)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_telldir(dirp);
}
@@ -1205,6 +1295,7 @@
u_long
PerlSockHtonl(struct IPerlSock* piPerl, u_long hostlong)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_htonl(hostlong);
}
@@ -1211,6 +1302,7 @@
u_short
PerlSockHtons(struct IPerlSock* piPerl, u_short hostshort)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_htons(hostshort);
}
@@ -1217,6 +1309,7 @@
u_long
PerlSockNtohl(struct IPerlSock* piPerl, u_long netlong)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_ntohl(netlong);
}
@@ -1223,11 +1316,13 @@
u_short
PerlSockNtohs(struct IPerlSock* piPerl, u_short netshort)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_ntohs(netshort);
}
SOCKET PerlSockAccept(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* addr, int* addrlen)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_accept(s, addr, addrlen);
}
@@ -1234,6 +1329,7 @@
int
PerlSockBind(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_bind(s, name, namelen);
}
@@ -1240,6 +1336,7 @@
int
PerlSockConnect(struct IPerlSock* piPerl, SOCKET s, const struct sockaddr* name, int namelen)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_connect(s, name, namelen);
}
@@ -1246,6 +1343,7 @@
void
PerlSockEndhostent(struct IPerlSock* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
win32_endhostent();
}
@@ -1252,6 +1350,7 @@
void
PerlSockEndnetent(struct IPerlSock* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
win32_endnetent();
}
@@ -1258,6 +1357,7 @@
void
PerlSockEndprotoent(struct IPerlSock* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
win32_endprotoent();
}
@@ -1264,6 +1364,7 @@
void
PerlSockEndservent(struct IPerlSock* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
win32_endservent();
}
@@ -1270,6 +1371,7 @@
struct hostent*
PerlSockGethostbyaddr(struct IPerlSock* piPerl, const char* addr, int len, int type)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_gethostbyaddr(addr, len, type);
}
@@ -1276,6 +1378,7 @@
struct hostent*
PerlSockGethostbyname(struct IPerlSock* piPerl, const char* name)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_gethostbyname(name);
}
@@ -1282,6 +1385,7 @@
struct hostent*
PerlSockGethostent(struct IPerlSock* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
win32_croak_not_implemented("gethostent");
return NULL;
}
@@ -1289,6 +1393,7 @@
int
PerlSockGethostname(struct IPerlSock* piPerl, char* name, int namelen)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_gethostname(name, namelen);
}
@@ -1295,6 +1400,7 @@
struct netent *
PerlSockGetnetbyaddr(struct IPerlSock* piPerl, long net, int type)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getnetbyaddr(net, type);
}
@@ -1301,6 +1407,7 @@
struct netent *
PerlSockGetnetbyname(struct IPerlSock* piPerl, const char *name)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getnetbyname((char*)name);
}
@@ -1307,11 +1414,13 @@
struct netent *
PerlSockGetnetent(struct IPerlSock* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getnetent();
}
int PerlSockGetpeername(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* name, int* namelen)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getpeername(s, name, namelen);
}
@@ -1318,6 +1427,7 @@
struct protoent*
PerlSockGetprotobyname(struct IPerlSock* piPerl, const char* name)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getprotobyname(name);
}
@@ -1324,6 +1434,7 @@
struct protoent*
PerlSockGetprotobynumber(struct IPerlSock* piPerl, int number)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getprotobynumber(number);
}
@@ -1330,6 +1441,7 @@
struct protoent*
PerlSockGetprotoent(struct IPerlSock* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getprotoent();
}
@@ -1336,6 +1448,7 @@
struct servent*
PerlSockGetservbyname(struct IPerlSock* piPerl, const char* name, const char* proto)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getservbyname(name, proto);
}
@@ -1342,6 +1455,7 @@
struct servent*
PerlSockGetservbyport(struct IPerlSock* piPerl, int port, const char* proto)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getservbyport(port, proto);
}
@@ -1348,6 +1462,7 @@
struct servent*
PerlSockGetservent(struct IPerlSock* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getservent();
}
@@ -1354,6 +1469,7 @@
int
PerlSockGetsockname(struct IPerlSock* piPerl, SOCKET s, struct sockaddr* name, int* namelen)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getsockname(s, name, namelen);
}
@@ -1360,6 +1476,7 @@
int
PerlSockGetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, char* optval, int* optlen)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getsockopt(s, level, optname, optval, optlen);
}
@@ -1366,6 +1483,7 @@
unsigned long
PerlSockInetAddr(struct IPerlSock* piPerl, const char* cp)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_inet_addr(cp);
}
@@ -1372,6 +1490,7 @@
char*
PerlSockInetNtoa(struct IPerlSock* piPerl, struct in_addr in)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_inet_ntoa(in);
}
@@ -1378,6 +1497,7 @@
int
PerlSockListen(struct IPerlSock* piPerl, SOCKET s, int backlog)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_listen(s, backlog);
}
@@ -1384,6 +1504,7 @@
int
PerlSockRecv(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_recv(s, buffer, len, flags);
}
@@ -1390,6 +1511,7 @@
int
PerlSockRecvfrom(struct IPerlSock* piPerl, SOCKET s, char* buffer, int len, int flags, struct sockaddr* from, int* fromlen)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_recvfrom(s, buffer, len, flags, from, fromlen);
}
@@ -1396,6 +1518,7 @@
int
PerlSockSelect(struct IPerlSock* piPerl, int nfds, char* readfds, char* writefds, char* exceptfds, const struct timeval* timeout)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_select(nfds, (Perl_fd_set*)readfds, (Perl_fd_set*)writefds, (Perl_fd_set*)exceptfds, timeout);
}
@@ -1402,6 +1525,7 @@
int
PerlSockSend(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_send(s, buffer, len, flags);
}
@@ -1408,6 +1532,7 @@
int
PerlSockSendto(struct IPerlSock* piPerl, SOCKET s, const char* buffer, int len, int flags, const struct sockaddr* to, int tolen)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_sendto(s, buffer, len, flags, to, tolen);
}
@@ -1414,6 +1539,7 @@
void
PerlSockSethostent(struct IPerlSock* piPerl, int stayopen)
{
+ PERL_UNUSED_ARG(piPerl);
win32_sethostent(stayopen);
}
@@ -1420,6 +1546,7 @@
void
PerlSockSetnetent(struct IPerlSock* piPerl, int stayopen)
{
+ PERL_UNUSED_ARG(piPerl);
win32_setnetent(stayopen);
}
@@ -1426,6 +1553,7 @@
void
PerlSockSetprotoent(struct IPerlSock* piPerl, int stayopen)
{
+ PERL_UNUSED_ARG(piPerl);
win32_setprotoent(stayopen);
}
@@ -1432,6 +1560,7 @@
void
PerlSockSetservent(struct IPerlSock* piPerl, int stayopen)
{
+ PERL_UNUSED_ARG(piPerl);
win32_setservent(stayopen);
}
@@ -1438,6 +1567,7 @@
int
PerlSockSetsockopt(struct IPerlSock* piPerl, SOCKET s, int level, int optname, const char* optval, int optlen)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_setsockopt(s, level, optname, optval, optlen);
}
@@ -1444,6 +1574,7 @@
int
PerlSockShutdown(struct IPerlSock* piPerl, SOCKET s, int how)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_shutdown(s, how);
}
@@ -1450,6 +1581,7 @@
SOCKET
PerlSockSocket(struct IPerlSock* piPerl, int af, int type, int protocol)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_socket(af, type, protocol);
}
@@ -1456,6 +1588,7 @@
int
PerlSockSocketpair(struct IPerlSock* piPerl, int domain, int type, int protocol, int* fds)
{
+ PERL_UNUSED_ARG(piPerl);
return Perl_my_socketpair(domain, type, protocol, fds);
}
@@ -1462,6 +1595,7 @@
int
PerlSockClosesocket(struct IPerlSock* piPerl, SOCKET s)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_closesocket(s);
}
@@ -1468,6 +1602,7 @@
int
PerlSockIoctlsocket(struct IPerlSock* piPerl, SOCKET s, long cmd, u_long *argp)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_ioctlsocket(s, cmd, argp);
}
@@ -1528,6 +1663,7 @@
void
PerlProcAbort(struct IPerlProc* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
win32_abort();
}
@@ -1534,6 +1670,7 @@
char *
PerlProcCrypt(struct IPerlProc* piPerl, const char* clear, const char* salt)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_crypt(clear, salt);
}
@@ -1540,6 +1677,7 @@
PERL_CALLCONV_NO_RET void
PerlProcExit(struct IPerlProc* piPerl, int status)
{
+ PERL_UNUSED_ARG(piPerl);
exit(status);
}
@@ -1546,6 +1684,7 @@
PERL_CALLCONV_NO_RET void
PerlProc_Exit(struct IPerlProc* piPerl, int status)
{
+ PERL_UNUSED_ARG(piPerl);
_exit(status);
}
@@ -1552,6 +1691,7 @@
int
PerlProcExecl(struct IPerlProc* piPerl, const char *cmdname, const char *arg0, const char *arg1, const char *arg2, const char *arg3)
{
+ PERL_UNUSED_ARG(piPerl);
return execl(cmdname, arg0, arg1, arg2, arg3);
}
@@ -1558,6 +1698,7 @@
int
PerlProcExecv(struct IPerlProc* piPerl, const char *cmdname, const char *const *argv)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_execvp(cmdname, argv);
}
@@ -1564,6 +1705,7 @@
int
PerlProcExecvp(struct IPerlProc* piPerl, const char *cmdname, const char *const *argv)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_execvp(cmdname, argv);
}
@@ -1570,6 +1712,7 @@
uid_t
PerlProcGetuid(struct IPerlProc* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return getuid();
}
@@ -1576,6 +1719,7 @@
uid_t
PerlProcGeteuid(struct IPerlProc* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return geteuid();
}
@@ -1582,6 +1726,7 @@
gid_t
PerlProcGetgid(struct IPerlProc* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return getgid();
}
@@ -1588,6 +1733,7 @@
gid_t
PerlProcGetegid(struct IPerlProc* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return getegid();
}
@@ -1594,6 +1740,7 @@
char *
PerlProcGetlogin(struct IPerlProc* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return g_getlogin();
}
@@ -1600,6 +1747,7 @@
int
PerlProcKill(struct IPerlProc* piPerl, int pid, int sig)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_kill(pid, sig);
}
@@ -1606,6 +1754,7 @@
int
PerlProcKillpg(struct IPerlProc* piPerl, int pid, int sig)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_kill(pid, -sig);
}
@@ -1612,6 +1761,7 @@
int
PerlProcPauseProc(struct IPerlProc* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_pause();
}
@@ -1620,6 +1770,7 @@
{
dTHX;
PERL_FLUSHALL_FOR_CHILD;
+ PERL_UNUSED_ARG(piPerl);
return win32_popen(command, mode);
}
@@ -1628,6 +1779,7 @@
{
dTHX;
PERL_FLUSHALL_FOR_CHILD;
+ PERL_UNUSED_ARG(piPerl);
return win32_popenlist(mode, narg, args);
}
@@ -1634,6 +1786,7 @@
int
PerlProcPclose(struct IPerlProc* piPerl, PerlIO *stream)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_pclose(stream);
}
@@ -1640,6 +1793,7 @@
int
PerlProcPipe(struct IPerlProc* piPerl, int *phandles)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_pipe(phandles, 512, O_BINARY);
}
@@ -1646,6 +1800,7 @@
int
PerlProcSetuid(struct IPerlProc* piPerl, uid_t u)
{
+ PERL_UNUSED_ARG(piPerl);
return setuid(u);
}
@@ -1652,6 +1807,7 @@
int
PerlProcSetgid(struct IPerlProc* piPerl, gid_t g)
{
+ PERL_UNUSED_ARG(piPerl);
return setgid(g);
}
@@ -1658,6 +1814,7 @@
int
PerlProcSleep(struct IPerlProc* piPerl, unsigned int s)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_sleep(s);
}
@@ -1664,6 +1821,7 @@
int
PerlProcTimes(struct IPerlProc* piPerl, struct tms *timebuf)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_times(timebuf);
}
@@ -1670,6 +1828,7 @@
int
PerlProcWait(struct IPerlProc* piPerl, int *status)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_wait(status);
}
@@ -1676,6 +1835,7 @@
int
PerlProcWaitpid(struct IPerlProc* piPerl, int pid, int *status, int flags)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_waitpid(pid, status, flags);
}
@@ -1682,6 +1842,7 @@
Sighandler_t
PerlProcSignal(struct IPerlProc* piPerl, int sig, Sighandler_t subcode)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_signal(sig, subcode);
}
@@ -1688,10 +1849,12 @@
int
PerlProcGetTimeOfDay(struct IPerlProc* piPerl, struct timeval *t, void *z)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_gettimeofday(t, z);
}
#ifdef USE_ITHREADS
+PERL_STACK_REALIGN
static THREAD_RET_TYPE
win32_start_child(LPVOID arg)
{
@@ -1813,6 +1976,7 @@
int
PerlProcFork(struct IPerlProc* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
#ifdef USE_ITHREADS
dTHX;
DWORD id;
@@ -1874,6 +2038,7 @@
int
PerlProcGetpid(struct IPerlProc* piPerl)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_getpid();
}
@@ -1880,6 +2045,7 @@
void*
PerlProcDynaLoader(struct IPerlProc* piPerl, const char* filename)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_dynaload(filename);
}
@@ -1886,6 +2052,7 @@
void
PerlProcGetOSError(struct IPerlProc* piPerl, SV* sv, DWORD dwErr)
{
+ PERL_UNUSED_ARG(piPerl);
win32_str_os_error(sv, dwErr);
}
@@ -1892,6 +2059,7 @@
int
PerlProcSpawnvp(struct IPerlProc* piPerl, int mode, const char *cmdname, const char *const *argv)
{
+ PERL_UNUSED_ARG(piPerl);
return win32_spawnvp(mode, cmdname, argv);
}
@@ -1900,9 +2068,10 @@
{
/* this dTHX is unused in an optimized build since CPerlHost::num_hosts
is a static */
- dTHX;
- CPerlHost *h = (CPerlHost*)w32_internal_host;
- return h->LastHost();
+ dTHX;
+ CPerlHost *h = (CPerlHost*)w32_internal_host;
+ PERL_UNUSED_ARG(piPerl);
+ return h->LastHost();
}
const struct IPerlProc perlProc =
@@ -2072,7 +2241,7 @@
/* duplicate environment info */
LPSTR lpPtr;
DWORD dwIndex = 0;
- while(lpPtr = host.GetIndex(dwIndex))
+ while((lpPtr = host.GetIndex(dwIndex)))
Add(lpPtr);
}
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/perlvars.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/perlvars.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/perlvars.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -65,7 +65,6 @@
PERLVARI(G, sig_trapped, int, 0)
#endif
-#ifndef PERL_MICRO
/* If Perl has to ignore SIGPFE, this is its saved state.
* See perl.h macros PERL_FPU_INIT and PERL_FPU_{PRE,POST}_EXEC. */
PERLVAR(G, sigfpe_saved, Sighandler_t)
@@ -76,7 +75,6 @@
PERLVARI(G, csighandlerp, Sighandler_t, Perl_csighandler)
PERLVARI(G, csighandler1p, Sighandler1_t, Perl_csighandler1)
PERLVARI(G, csighandler3p, Sighandler3_t, Perl_csighandler3)
-#endif
/* This is constant on most architectures, a global on OS/2 */
#ifdef OS2
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/perly.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/perly.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/perly.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,14 +4,14 @@
Any changes made here will be lost!
*/
-#define PERL_BISON_VERSION 30003
+#define PERL_BISON_VERSION 30007
#ifdef PERL_CORE
-/* A Bison parser, made by GNU Bison 3.3. */
+/* A Bison parser, made by GNU Bison 3.7. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
@@ -40,8 +40,9 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
-/* Undocumented macros, especially those whose name start with YY_,
- are private implementation details. Do not rely on them. */
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
/* Debug traces. */
#ifndef YYDEBUG
@@ -51,140 +52,145 @@
extern int yydebug;
#endif
-/* Token type. */
+/* Token kinds. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
- GRAMPROG = 258,
- GRAMEXPR = 259,
- GRAMBLOCK = 260,
- GRAMBARESTMT = 261,
- GRAMFULLSTMT = 262,
- GRAMSTMTSEQ = 263,
- GRAMSUBSIGNATURE = 264,
- PERLY_AMPERSAND = 265,
- PERLY_BRACE_OPEN = 266,
- PERLY_BRACE_CLOSE = 267,
- PERLY_BRACKET_OPEN = 268,
- PERLY_BRACKET_CLOSE = 269,
- PERLY_COMMA = 270,
- PERLY_DOLLAR = 271,
- PERLY_DOT = 272,
- PERLY_EQUAL_SIGN = 273,
- PERLY_MINUS = 274,
- PERLY_PERCENT_SIGN = 275,
- PERLY_PLUS = 276,
- PERLY_SEMICOLON = 277,
- PERLY_SLASH = 278,
- PERLY_SNAIL = 279,
- PERLY_STAR = 280,
- KW_FORMAT = 281,
- KW_PACKAGE = 282,
- KW_CLASS = 283,
- KW_LOCAL = 284,
- KW_MY = 285,
- KW_FIELD = 286,
- KW_IF = 287,
- KW_ELSE = 288,
- KW_ELSIF = 289,
- KW_UNLESS = 290,
- KW_FOR = 291,
- KW_UNTIL = 292,
- KW_WHILE = 293,
- KW_CONTINUE = 294,
- KW_GIVEN = 295,
- KW_WHEN = 296,
- KW_DEFAULT = 297,
- KW_TRY = 298,
- KW_CATCH = 299,
- KW_FINALLY = 300,
- KW_DEFER = 301,
- KW_REQUIRE = 302,
- KW_DO = 303,
- KW_USE_or_NO = 304,
- KW_SUB_named = 305,
- KW_SUB_named_sig = 306,
- KW_SUB_anon = 307,
- KW_SUB_anon_sig = 308,
- KW_METHOD_named = 309,
- KW_METHOD_anon = 310,
- BAREWORD = 311,
- METHCALL0 = 312,
- METHCALL = 313,
- THING = 314,
- PMFUNC = 315,
- PRIVATEREF = 316,
- QWLIST = 317,
- FUNC0OP = 318,
- FUNC0SUB = 319,
- UNIOPSUB = 320,
- LSTOPSUB = 321,
- PLUGEXPR = 322,
- PLUGSTMT = 323,
- LABEL = 324,
- LOOPEX = 325,
- DOTDOT = 326,
- YADAYADA = 327,
- FUNC0 = 328,
- FUNC1 = 329,
- FUNC = 330,
- UNIOP = 331,
- LSTOP = 332,
- POWOP = 333,
- MULOP = 334,
- ADDOP = 335,
- DOLSHARP = 336,
- HASHBRACK = 337,
- NOAMP = 338,
- COLONATTR = 339,
- FORMLBRACK = 340,
- FORMRBRACK = 341,
- SUBLEXSTART = 342,
- SUBLEXEND = 343,
- PHASER = 344,
- PREC_LOW = 345,
- PLUGIN_LOW_OP = 346,
- OROP = 347,
- PLUGIN_LOGICAL_OR_LOW_OP = 348,
- ANDOP = 349,
- PLUGIN_LOGICAL_AND_LOW_OP = 350,
- NOTOP = 351,
- ASSIGNOP = 352,
- PLUGIN_ASSIGN_OP = 353,
- PERLY_QUESTION_MARK = 354,
- PERLY_COLON = 355,
- OROR = 356,
- DORDOR = 357,
- PLUGIN_LOGICAL_OR_OP = 358,
- ANDAND = 359,
- PLUGIN_LOGICAL_AND_OP = 360,
- BITOROP = 361,
- BITANDOP = 362,
- CHEQOP = 363,
- NCEQOP = 364,
- CHRELOP = 365,
- NCRELOP = 366,
- PLUGIN_REL_OP = 367,
- SHIFTOP = 368,
- PLUGIN_ADD_OP = 369,
- PLUGIN_MUL_OP = 370,
- MATCHOP = 371,
- PERLY_EXCLAMATION_MARK = 372,
- PERLY_TILDE = 373,
- UMINUS = 374,
- REFGEN = 375,
- PLUGIN_POW_OP = 376,
- PREINC = 377,
- PREDEC = 378,
- POSTINC = 379,
- POSTDEC = 380,
- POSTJOIN = 381,
- PLUGIN_HIGH_OP = 382,
- ARROW = 383,
- PERLY_PAREN_CLOSE = 384,
- PERLY_PAREN_OPEN = 385
+ YYEMPTY = -2,
+ YYEOF = 0, /* "end of file" */
+ YYerror = 256, /* error */
+ YYUNDEF = 257, /* "invalid token" */
+ GRAMPROG = 258, /* GRAMPROG */
+ GRAMEXPR = 259, /* GRAMEXPR */
+ GRAMBLOCK = 260, /* GRAMBLOCK */
+ GRAMBARESTMT = 261, /* GRAMBARESTMT */
+ GRAMFULLSTMT = 262, /* GRAMFULLSTMT */
+ GRAMSTMTSEQ = 263, /* GRAMSTMTSEQ */
+ GRAMSUBSIGNATURE = 264, /* GRAMSUBSIGNATURE */
+ PERLY_AMPERSAND = 265, /* PERLY_AMPERSAND */
+ PERLY_BRACE_OPEN = 266, /* PERLY_BRACE_OPEN */
+ PERLY_BRACE_CLOSE = 267, /* PERLY_BRACE_CLOSE */
+ PERLY_BRACKET_OPEN = 268, /* PERLY_BRACKET_OPEN */
+ PERLY_BRACKET_CLOSE = 269, /* PERLY_BRACKET_CLOSE */
+ PERLY_COMMA = 270, /* PERLY_COMMA */
+ PERLY_DOLLAR = 271, /* PERLY_DOLLAR */
+ PERLY_DOT = 272, /* PERLY_DOT */
+ PERLY_EQUAL_SIGN = 273, /* PERLY_EQUAL_SIGN */
+ PERLY_MINUS = 274, /* PERLY_MINUS */
+ PERLY_PERCENT_SIGN = 275, /* PERLY_PERCENT_SIGN */
+ PERLY_PLUS = 276, /* PERLY_PLUS */
+ PERLY_SEMICOLON = 277, /* PERLY_SEMICOLON */
+ PERLY_SLASH = 278, /* PERLY_SLASH */
+ PERLY_SNAIL = 279, /* PERLY_SNAIL */
+ PERLY_STAR = 280, /* PERLY_STAR */
+ KW_FORMAT = 281, /* KW_FORMAT */
+ KW_PACKAGE = 282, /* KW_PACKAGE */
+ KW_CLASS = 283, /* KW_CLASS */
+ KW_LOCAL = 284, /* KW_LOCAL */
+ KW_MY = 285, /* KW_MY */
+ KW_FIELD = 286, /* KW_FIELD */
+ KW_IF = 287, /* KW_IF */
+ KW_ELSE = 288, /* KW_ELSE */
+ KW_ELSIF = 289, /* KW_ELSIF */
+ KW_UNLESS = 290, /* KW_UNLESS */
+ KW_FOR = 291, /* KW_FOR */
+ KW_UNTIL = 292, /* KW_UNTIL */
+ KW_WHILE = 293, /* KW_WHILE */
+ KW_CONTINUE = 294, /* KW_CONTINUE */
+ KW_GIVEN = 295, /* KW_GIVEN */
+ KW_WHEN = 296, /* KW_WHEN */
+ KW_DEFAULT = 297, /* KW_DEFAULT */
+ KW_TRY = 298, /* KW_TRY */
+ KW_CATCH = 299, /* KW_CATCH */
+ KW_FINALLY = 300, /* KW_FINALLY */
+ KW_DEFER = 301, /* KW_DEFER */
+ KW_REQUIRE = 302, /* KW_REQUIRE */
+ KW_DO = 303, /* KW_DO */
+ KW_USE_or_NO = 304, /* KW_USE_or_NO */
+ KW_SUB_named = 305, /* KW_SUB_named */
+ KW_SUB_named_sig = 306, /* KW_SUB_named_sig */
+ KW_SUB_anon = 307, /* KW_SUB_anon */
+ KW_SUB_anon_sig = 308, /* KW_SUB_anon_sig */
+ KW_METHOD_named = 309, /* KW_METHOD_named */
+ KW_METHOD_anon = 310, /* KW_METHOD_anon */
+ BAREWORD = 311, /* BAREWORD */
+ METHCALL0 = 312, /* METHCALL0 */
+ METHCALL = 313, /* METHCALL */
+ THING = 314, /* THING */
+ PMFUNC = 315, /* PMFUNC */
+ PRIVATEREF = 316, /* PRIVATEREF */
+ QWLIST = 317, /* QWLIST */
+ FUNC0OP = 318, /* FUNC0OP */
+ FUNC0SUB = 319, /* FUNC0SUB */
+ UNIOPSUB = 320, /* UNIOPSUB */
+ LSTOPSUB = 321, /* LSTOPSUB */
+ PLUGEXPR = 322, /* PLUGEXPR */
+ PLUGSTMT = 323, /* PLUGSTMT */
+ LABEL = 324, /* LABEL */
+ LOOPEX = 325, /* LOOPEX */
+ DOTDOT = 326, /* DOTDOT */
+ YADAYADA = 327, /* YADAYADA */
+ FUNC0 = 328, /* FUNC0 */
+ FUNC1 = 329, /* FUNC1 */
+ FUNC = 330, /* FUNC */
+ UNIOP = 331, /* UNIOP */
+ LSTOP = 332, /* LSTOP */
+ POWOP = 333, /* POWOP */
+ MULOP = 334, /* MULOP */
+ ADDOP = 335, /* ADDOP */
+ DOLSHARP = 336, /* DOLSHARP */
+ HASHBRACK = 337, /* HASHBRACK */
+ NOAMP = 338, /* NOAMP */
+ COLONATTR = 339, /* COLONATTR */
+ FORMLBRACK = 340, /* FORMLBRACK */
+ FORMRBRACK = 341, /* FORMRBRACK */
+ SUBLEXSTART = 342, /* SUBLEXSTART */
+ SUBLEXEND = 343, /* SUBLEXEND */
+ PHASER = 344, /* PHASER */
+ PREC_LOW = 345, /* PREC_LOW */
+ PLUGIN_LOW_OP = 346, /* PLUGIN_LOW_OP */
+ OROP = 347, /* OROP */
+ PLUGIN_LOGICAL_OR_LOW_OP = 348, /* PLUGIN_LOGICAL_OR_LOW_OP */
+ ANDOP = 349, /* ANDOP */
+ PLUGIN_LOGICAL_AND_LOW_OP = 350, /* PLUGIN_LOGICAL_AND_LOW_OP */
+ NOTOP = 351, /* NOTOP */
+ ASSIGNOP = 352, /* ASSIGNOP */
+ PLUGIN_ASSIGN_OP = 353, /* PLUGIN_ASSIGN_OP */
+ PERLY_QUESTION_MARK = 354, /* PERLY_QUESTION_MARK */
+ PERLY_COLON = 355, /* PERLY_COLON */
+ OROR = 356, /* OROR */
+ DORDOR = 357, /* DORDOR */
+ PLUGIN_LOGICAL_OR_OP = 358, /* PLUGIN_LOGICAL_OR_OP */
+ ANDAND = 359, /* ANDAND */
+ PLUGIN_LOGICAL_AND_OP = 360, /* PLUGIN_LOGICAL_AND_OP */
+ BITOROP = 361, /* BITOROP */
+ BITANDOP = 362, /* BITANDOP */
+ CHEQOP = 363, /* CHEQOP */
+ NCEQOP = 364, /* NCEQOP */
+ CHRELOP = 365, /* CHRELOP */
+ NCRELOP = 366, /* NCRELOP */
+ PLUGIN_REL_OP = 367, /* PLUGIN_REL_OP */
+ SHIFTOP = 368, /* SHIFTOP */
+ PLUGIN_ADD_OP = 369, /* PLUGIN_ADD_OP */
+ PLUGIN_MUL_OP = 370, /* PLUGIN_MUL_OP */
+ MATCHOP = 371, /* MATCHOP */
+ PERLY_EXCLAMATION_MARK = 372, /* PERLY_EXCLAMATION_MARK */
+ PERLY_TILDE = 373, /* PERLY_TILDE */
+ UMINUS = 374, /* UMINUS */
+ REFGEN = 375, /* REFGEN */
+ PLUGIN_POW_OP = 376, /* PLUGIN_POW_OP */
+ PREINC = 377, /* PREINC */
+ PREDEC = 378, /* PREDEC */
+ POSTINC = 379, /* POSTINC */
+ POSTDEC = 380, /* POSTDEC */
+ POSTJOIN = 381, /* POSTJOIN */
+ PLUGIN_HIGH_OP = 382, /* PLUGIN_HIGH_OP */
+ ARROW = 383, /* ARROW */
+ PERLY_PAREN_CLOSE = 384, /* PERLY_PAREN_CLOSE */
+ PERLY_PAREN_OPEN = 385 /* PERLY_PAREN_OPEN */
};
+ typedef enum yytokentype yytoken_kind_t;
#endif
/* Value type. */
@@ -213,7 +219,6 @@
#endif /* PERL_IN_TOKE_C */
#endif /* PERL_CORE */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
union YYSTYPE
{
@@ -223,8 +228,8 @@
OP *opval;
GV *gvval;
+
};
-
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
@@ -236,6 +241,6 @@
/* Generated from:
- * 0a5fcd15cf0b7afb57ade6ceaf68037a38dd194acd9d60d3e4ad99c15233af75 perly.y
+ * 823630846fc59cc2a19502726ec723b568eabded55fdc5e9722c600e1098779e perly.y
* acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl
* ex: set ro ft=c: */
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/pp.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/pp.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/pp.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -8,6 +8,57 @@
*
*/
+/*
+=for apidoc_section $rpp
+
+=for apidoc Amux||XSPP_wrapped|xsppw_name|I32 xsppw_nargs|I32 xsppw_nlists
+Declare and wrap a non-reference-counted PP-style function.
+On traditional perl builds where the stack isn't reference-counted, this
+just produces a function declaration like
+
+ OP * xsppw_name(pTHX)
+
+Conversely, in ref-counted builds it creates xsppw_name() as a small
+wrapper function which calls the real function via a wrapper which
+processes the args and return values to ensure that reference counts are
+properly handled for code which uses old-style dSP, PUSHs(), POPs() etc,
+which don't adjust the reference counts of the items they manipulate.
+
+xsppw_nargs indicates how many arguments the function consumes off the
+stack. It can be a constant value or an expression, such as
+
+ ((PL_op->op_flags & OPf_STACKED) ? 2 : 1)
+
+Alternatively if xsppw_nlists is 1, it indicates that the PP function
+consumes a list (or - rarely - if 2, consumes two lists, like
+pp_aassign()), as indicated by the top markstack position.
+
+This is intended as a temporary fix when converting XS code to run under
+PERL_RC_STACK builds. In the longer term, the PP function should be
+rewritten to replace PUSHs() etc with rpp_push_1() etc.
+
+=cut
+*/
+
+#ifdef PERL_RC_STACK
+# define XSPP_wrapped(xsppw_name, xsppw_nargs, xsppw_nlists) \
+ \
+STATIC OP* S_##xsppw_name##_norc(pTHX); \
+OP* xsppw_name(pTHX) \
+{ \
+ return Perl_pp_wrap(aTHX_ S_##xsppw_name##_norc, \
+ (xsppw_nargs), (xsppw_nlists)); \
+} \
+STATIC OP* S_##xsppw_name##_norc(pTHX)
+
+#else
+# define XSPP_wrapped(xsppw_name, xsppw_nargs, xsppw_nlists) \
+ OP * xsppw_name(pTHX)
+#endif
+
+#define PP_wrapped(ppw_name, ppw_nargs, ppw_nlists) \
+ XSPP_wrapped(Perl_##ppw_name, ppw_nargs, ppw_nlists)
+
#define PP(s) OP * Perl_##s(pTHX)
/*
@@ -67,11 +118,11 @@
#define PUSHMARK(p) \
STMT_START { \
- I32 * mark_stack_entry; \
+ Stack_off_t * mark_stack_entry; \
if (UNLIKELY((mark_stack_entry = ++PL_markstack_ptr) \
== PL_markstack_max)) \
mark_stack_entry = markstack_grow(); \
- *mark_stack_entry = (I32)((p) - PL_stack_base); \
+ *mark_stack_entry = (Stack_off_t)((p) - PL_stack_base); \
DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, \
"MARK push %p %" IVdf "\n", \
PL_markstack_ptr, (IV)*mark_stack_entry))); \
@@ -91,7 +142,7 @@
#define dSP SV **sp = PL_stack_sp
#define djSP dSP
#define dMARK SV **mark = PL_stack_base + POPMARK
-#define dORIGMARK const I32 origmark = (I32)(mark - PL_stack_base)
+#define dORIGMARK const SSize_t origmark = (SSize_t)(mark - PL_stack_base)
#define ORIGMARK (PL_stack_base + origmark)
#define SPAGAIN sp = PL_stack_sp
@@ -159,7 +210,12 @@
#define RETURNOP(o) return (PUTBACK, o)
#define RETURNX(x) return (x, PUTBACK, NORMAL)
-#define POPs (*sp--)
+#ifdef PERL_RC_STACK
+# define POPs (assert(!rpp_stack_is_rc()), *sp--)
+#else
+# define POPs (*sp--)
+#endif
+
#define POPp POPpx
#define POPpx (SvPVx_nolen(POPs))
#define POPpconstx (SvPVx_nolen_const(POPs))
@@ -331,7 +387,7 @@
/* EXTEND_HWM_SET: note the high-water-mark to which the stack has been
* requested to be extended (which is likely to be less than PL_stack_max)
*/
-#if defined DEBUGGING && !defined DEBUGGING_RE_ONLY
+#ifdef PERL_USE_HWM
# define EXTEND_HWM_SET(p, n) \
STMT_START { \
SSize_t extend_hwm_set_ix = (p) - PL_stack_base + (n); \
@@ -487,7 +543,12 @@
sv_setnv_mg(targ, TARGn_nv); \
} STMT_END
-#define PUSHs(s) (*++sp = (s))
+#ifdef PERL_RC_STACK
+# define PUSHs(s) (assert(!rpp_stack_is_rc()), *++sp = (s))
+#else
+# define PUSHs(s) (*++sp = (s))
+#endif
+
#define PUSHTARG STMT_START { SvSETMAGIC(TARG); PUSHs(TARG); } STMT_END
#define PUSHp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); PUSHTARG; } STMT_END
#define PUSHpvs(s) PUSHp("" s "", sizeof(s)-1)
@@ -495,7 +556,7 @@
#define PUSHi(i) STMT_START { TARGi(i,1); PUSHs(TARG); } STMT_END
#define PUSHu(u) STMT_START { TARGu(u,1); PUSHs(TARG); } STMT_END
-#define XPUSHs(s) STMT_START { EXTEND(sp,1); *++sp = (s); } STMT_END
+#define XPUSHs(s) STMT_START { EXTEND(sp,1); PUSHs(s); } STMT_END
#define XPUSHTARG STMT_START { SvSETMAGIC(TARG); XPUSHs(TARG); } STMT_END
#define XPUSHp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); XPUSHTARG; } STMT_END
#define XPUSHpvs(s) XPUSHp("" s "", sizeof(s)-1)
@@ -574,13 +635,14 @@
#define MAXARG (PL_op->op_private & OPpARG4_MASK)
+/* for backcompat - use switch_argstack() instead */
+
#define SWITCHSTACK(f,t) \
- STMT_START { \
- AvFILLp(f) = sp - PL_stack_base; \
- PL_stack_base = AvARRAY(t); \
- PL_stack_max = PL_stack_base + AvMAX(t); \
- sp = PL_stack_sp = PL_stack_base + AvFILLp(t); \
- PL_curstack = t; \
+ STMT_START { \
+ PL_curstack = f; \
+ PL_stack_sp = sp; \
+ switch_argstack(t); \
+ sp = PL_stack_sp; \
} STMT_END
#define EXTEND_MORTAL(n) \
@@ -619,51 +681,6 @@
/* No longer used in core. Use AMG_CALLunary instead */
#define AMG_CALLun(sv,meth) AMG_CALLunary(sv, CAT2(meth,_amg))
-#define tryAMAGICunTARGETlist(meth, jump) \
- STMT_START { \
- dSP; \
- SV *tmpsv; \
- SV *arg= *sp; \
- U8 gimme = GIMME_V; \
- if (UNLIKELY(SvAMAGIC(arg) && \
- (tmpsv = amagic_call(arg, &PL_sv_undef, meth, \
- AMGf_want_list | AMGf_noright \
- |AMGf_unary)))) \
- { \
- SPAGAIN; \
- if (gimme == G_VOID) { \
- NOOP; \
- } \
- else if (gimme == G_LIST) { \
- SSize_t i; \
- SSize_t len; \
- assert(SvTYPE(tmpsv) == SVt_PVAV); \
- len = av_count((AV *)tmpsv); \
- (void)POPs; /* get rid of the arg */ \
- EXTEND(sp, len); \
- for (i = 0; i < len; ++i) \
- PUSHs(av_shift((AV *)tmpsv)); \
- } \
- else { /* AMGf_want_scalar */ \
- dATARGET; /* just use the arg's location */ \
- sv_setsv(TARG, tmpsv); \
- if (PL_op->op_flags & OPf_STACKED) \
- sp--; \
- SETTARG; \
- } \
- PUTBACK; \
- if (jump) { \
- OP *jump_o = NORMAL->op_next; \
- while (jump_o->op_type == OP_NULL) \
- jump_o = jump_o->op_next; \
- assert(jump_o->op_type == OP_ENTERSUB); \
- (void)POPMARK; \
- return jump_o->op_next; \
- } \
- return NORMAL; \
- } \
- } STMT_END
-
/* This is no longer used anywhere in the core. You might wish to consider
calling amagic_deref_call() directly, as it has a cleaner interface. */
#define tryAMAGICunDEREF(meth) \
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/pp_proto.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/pp_proto.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/pp_proto.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -43,6 +43,7 @@
PERL_CALLCONV PP(pp_chown) __attribute__visibility__("hidden");
PERL_CALLCONV PP(pp_chr) __attribute__visibility__("hidden");
PERL_CALLCONV PP(pp_chroot) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_classname) __attribute__visibility__("hidden");
PERL_CALLCONV PP(pp_clonecv) __attribute__visibility__("hidden");
PERL_CALLCONV PP(pp_close) __attribute__visibility__("hidden");
PERL_CALLCONV PP(pp_closedir) __attribute__visibility__("hidden");
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/proto.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/proto.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/proto.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -57,6 +57,15 @@
/* PERL_CALLCONV const XOP *
Perl_custom_op_xop(pTHX_ const OP *o); */
+PERL_CALLCONV const char *
+Perl_langinfo(const nl_item item);
+#define PERL_ARGS_ASSERT_PERL_LANGINFO
+
+PERL_CALLCONV const char *
+Perl_langinfo8(const nl_item item, utf8ness_t *utf8ness);
+#define PERL_ARGS_ASSERT_PERL_LANGINFO8 \
+ assert(utf8ness)
+
PERL_CALLCONV HV *
Perl_localeconv(pTHX);
#define PERL_ARGS_ASSERT_PERL_LOCALECONV
@@ -78,10 +87,9 @@
/* PERL_CALLCONV void
SvREFCNT_dec_set_NULL(pTHX_ SV *sv); */
-PERL_CALLCONV char *
+PERL_CALLCONV const char *
Perl__byte_dump_string(pTHX_ const U8 * const start, const STRLEN len, const bool format);
-#define PERL_ARGS_ASSERT__BYTE_DUMP_STRING \
- assert(start)
+#define PERL_ARGS_ASSERT__BYTE_DUMP_STRING
PERL_CALLCONV void
Perl__force_out_malformed_utf8_message(pTHX_ const U8 * const p, const U8 * const e, const U32 flags, const bool die_here);
@@ -161,10 +169,6 @@
#define PERL_ARGS_ASSERT__UTF8N_TO_UVCHR_MSGS_HELPER \
assert(s)
-PERL_CALLCONV void
-Perl__warn_problematic_locale(void);
-#define PERL_ARGS_ASSERT__WARN_PROBLEMATIC_LOCALE
-
PERL_CALLCONV_NO_RET void
Perl_abort_execution(pTHX_ SV *msg_sv, const char * const name)
__attribute__noreturn__
@@ -203,7 +207,7 @@
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_AMAGIC_IS_ENABLED
-PERL_CALLCONV I32
+PERL_CALLCONV SSize_t
Perl_apply(pTHX_ I32 type, SV **mark, SV **sp)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_APPLY \
@@ -424,7 +428,7 @@
#define PERL_ARGS_ASSERT_BYTES_TO_UTF8 \
assert(s); assert(lenp)
-PERL_CALLCONV I32
+PERL_CALLCONV SSize_t
Perl_call_argv(pTHX_ const char *sub_name, I32 flags, char **argv);
#define PERL_ARGS_ASSERT_CALL_ARGV \
assert(sub_name); assert(argv)
@@ -438,18 +442,18 @@
#define PERL_ARGS_ASSERT_CALL_LIST \
assert(paramList)
-PERL_CALLCONV I32
+PERL_CALLCONV SSize_t
Perl_call_method(pTHX_ const char *methname, I32 flags);
#define PERL_ARGS_ASSERT_CALL_METHOD \
assert(methname)
-PERL_CALLCONV I32
+PERL_CALLCONV SSize_t
Perl_call_pv(pTHX_ const char *sub_name, I32 flags);
#define PERL_ARGS_ASSERT_CALL_PV \
assert(sub_name)
-PERL_CALLCONV I32
-Perl_call_sv(pTHX_ SV *sv, volatile I32 flags);
+PERL_CALLCONV SSize_t
+Perl_call_sv(pTHX_ SV *sv, I32 flags);
#define PERL_ARGS_ASSERT_CALL_SV \
assert(sv)
@@ -600,9 +604,10 @@
assert(coreargssv)
PERL_CALLCONV void
-Perl_create_eval_scope(pTHX_ OP *retop, U32 flags)
+Perl_create_eval_scope(pTHX_ OP *retop, SV **sp, U32 flags)
__attribute__visibility__("hidden");
-#define PERL_ARGS_ASSERT_CREATE_EVAL_SCOPE
+#define PERL_ARGS_ASSERT_CREATE_EVAL_SCOPE \
+ assert(sp)
PERL_CALLCONV_NO_RET void
Perl_croak(pTHX_ const char *pat, ...)
@@ -629,6 +634,13 @@
#define PERL_ARGS_ASSERT_CROAK_NO_MEM
PERL_CALLCONV_NO_RET void
+Perl_croak_no_mem_ext(const char *context, STRLEN len)
+ __attribute__noreturn__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_CROAK_NO_MEM_EXT \
+ assert(context)
+
+PERL_CALLCONV_NO_RET void
Perl_croak_no_modify(void)
__attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_NO_MODIFY
@@ -1096,12 +1108,18 @@
#define PERL_ARGS_ASSERT_EVAL_PV \
assert(p)
-PERL_CALLCONV I32
+PERL_CALLCONV SSize_t
Perl_eval_sv(pTHX_ SV *sv, I32 flags);
#define PERL_ARGS_ASSERT_EVAL_SV \
assert(sv)
PERL_CALLCONV void
+Perl_fatal_warner(pTHX_ U32 err, const char *pat, ...)
+ __attribute__format__(__printf__,pTHX_2,pTHX_3);
+#define PERL_ARGS_ASSERT_FATAL_WARNER \
+ assert(pat)
+
+PERL_CALLCONV void
Perl_fbm_compile(pTHX_ SV *sv, U32 flags);
#define PERL_ARGS_ASSERT_FBM_COMPILE \
assert(sv)
@@ -1167,7 +1185,7 @@
assert(o); assert(blockname)
PERL_CALLCONV void
-Perl_force_locale_unlock(void)
+Perl_force_locale_unlock(pTHX)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_FORCE_LOCALE_UNLOCK
@@ -1984,10 +2002,10 @@
assert(name)
PERL_CALLCONV_NO_RET void
-Perl_locale_panic(const char *msg, const char *file_name, const line_t line, const int errnum)
+Perl_locale_panic(const char *msg, const line_t immediate_caller_line, const char * const higher_caller_file, const line_t higher_caller_line)
__attribute__noreturn__;
#define PERL_ARGS_ASSERT_LOCALE_PANIC \
- assert(msg); assert(file_name)
+ assert(msg); assert(higher_caller_file)
PERL_CALLCONV OP *
Perl_localize(pTHX_ OP *o, I32 lex)
@@ -2383,7 +2401,7 @@
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MALLOC
-PERL_CALLCONV I32 *
+PERL_CALLCONV Stack_off_t *
Perl_markstack_grow(pTHX);
#define PERL_ARGS_ASSERT_MARKSTACK_GROW
@@ -2668,12 +2686,6 @@
#define PERL_ARGS_ASSERT_MY_STRFTIME \
assert(fmt)
-PERL_CALLCONV char *
-Perl_my_strftime8_temp(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst, utf8ness_t *utf8ness)
- __attribute__format__(__strftime__,pTHX_1,0);
-#define PERL_ARGS_ASSERT_MY_STRFTIME8_TEMP \
- assert(fmt)
-
PERL_CALLCONV NV
Perl_my_strtod(const char * const s, char **e)
__attribute__warn_unused_result__;
@@ -2740,6 +2752,10 @@
newAV_alloc_xz(pTHX_ SSize_t size)
__attribute__warn_unused_result__; */
+/* PERL_CALLCONV AV *
+newAV_mortal(pTHX)
+ __attribute__warn_unused_result__; */
+
PERL_CALLCONV AV *
Perl_newAVav(pTHX_ AV *oav)
__attribute__warn_unused_result__;
@@ -2843,6 +2859,11 @@
#define PERL_ARGS_ASSERT_NEWLISTOP
PERL_CALLCONV OP *
+Perl_newLISTOPn(pTHX_ I32 type, I32 flags, ...)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWLISTOPN
+
+PERL_CALLCONV OP *
Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP *first, OP *other)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWLOGOP \
@@ -3110,6 +3131,11 @@
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEW_STACKINFO
+PERL_CALLCONV PERL_SI *
+Perl_new_stackinfo_flags(pTHX_ I32 stitems, I32 cxitems, UV flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEW_STACKINFO_FLAGS
+
PERL_CALLCONV SV *
Perl_new_version(pTHX_ SV *ver);
#define PERL_ARGS_ASSERT_NEW_VERSION \
@@ -3771,7 +3797,7 @@
#define PERL_ARGS_ASSERT_REGINITCOLORS
PERL_CALLCONV void
-Perl_repeatcpy(char *to, const char *from, I32 len, IV count);
+Perl_repeatcpy(char *to, const char *from, SSize_t len, IV count);
#define PERL_ARGS_ASSERT_REPEATCPY \
assert(to); assert(from)
@@ -3817,6 +3843,15 @@
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_RPEEP
+PERL_CALLCONV void
+Perl_rpp_free_2_(pTHX_ SV * const sv1, SV * const sv2, const U32 rc1, const U32 rc2);
+#define PERL_ARGS_ASSERT_RPP_FREE_2_ \
+ assert(sv1); assert(sv2)
+
+PERL_CALLCONV void
+Perl_rpp_obliterate_stack_to(pTHX_ I32 ix);
+#define PERL_ARGS_ASSERT_RPP_OBLITERATE_STACK_TO
+
PERL_CALLCONV Sighandler_t
Perl_rsignal(pTHX_ int i, Sighandler_t t);
#define PERL_ARGS_ASSERT_RSIGNAL
@@ -4169,12 +4204,14 @@
assert(t)
PERL_CALLCONV void
-Perl_set_numeric_standard(pTHX);
-#define PERL_ARGS_ASSERT_SET_NUMERIC_STANDARD
+Perl_set_numeric_standard(pTHX_ const char *file, const line_t caller_line);
+#define PERL_ARGS_ASSERT_SET_NUMERIC_STANDARD \
+ assert(file)
PERL_CALLCONV void
-Perl_set_numeric_underlying(pTHX);
-#define PERL_ARGS_ASSERT_SET_NUMERIC_UNDERLYING
+Perl_set_numeric_underlying(pTHX_ const char *file, const line_t caller_line);
+#define PERL_ARGS_ASSERT_SET_NUMERIC_UNDERLYING \
+ assert(file)
PERL_CALLCONV void
Perl_setdefout(pTHX_ GV *gv);
@@ -4381,7 +4418,7 @@
#define PERL_ARGS_ASSERT_SV_CHOP \
assert(sv)
-PERL_CALLCONV I32
+PERL_CALLCONV SSize_t
Perl_sv_clean_all(pTHX)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SV_CLEAN_ALL
@@ -4570,6 +4607,10 @@
Perl_sv_isobject(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_ISOBJECT
+PERL_CALLCONV SV *
+Perl_sv_langinfo(pTHX_ const nl_item item);
+#define PERL_ARGS_ASSERT_SV_LANGINFO
+
PERL_CALLCONV STRLEN
Perl_sv_len(pTHX_ SV * const sv);
#define PERL_ARGS_ASSERT_SV_LEN
@@ -4867,6 +4908,16 @@
#define PERL_ARGS_ASSERT_SV_STREQ_FLAGS
PERL_CALLCONV SV *
+Perl_sv_strftime_ints(pTHX_ SV *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst);
+#define PERL_ARGS_ASSERT_SV_STRFTIME_INTS \
+ assert(fmt)
+
+PERL_CALLCONV SV *
+Perl_sv_strftime_tm(pTHX_ SV *fmt, const struct tm *mytm);
+#define PERL_ARGS_ASSERT_SV_STRFTIME_TM \
+ assert(fmt); assert(mytm)
+
+PERL_CALLCONV SV *
Perl_sv_string_from_errnum(pTHX_ int errnum, SV *tgtsv);
#define PERL_ARGS_ASSERT_SV_STRING_FROM_ERRNUM
@@ -5011,19 +5062,11 @@
#define PERL_ARGS_ASSERT_TAINT_PROPER \
assert(s)
-PERL_CALLCONV void
-Perl_thread_locale_init(pTHX);
-#define PERL_ARGS_ASSERT_THREAD_LOCALE_INIT
-
-PERL_CALLCONV void
-Perl_thread_locale_term(pTHX);
-#define PERL_ARGS_ASSERT_THREAD_LOCALE_TERM
-
PERL_CALLCONV OP *
-Perl_tied_method(pTHX_ SV *methname, SV **sp, SV * const sv, const MAGIC * const mg, const U32 flags, U32 argc, ...)
+Perl_tied_method(pTHX_ SV *methname, SV **mark, SV * const sv, const MAGIC * const mg, const U32 flags, U32 argc, ...)
__attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_TIED_METHOD \
- assert(methname); assert(sp); assert(sv); assert(mg)
+ assert(methname); assert(mark); assert(sv); assert(mg)
PERL_CALLCONV SSize_t
Perl_tmps_grow_p(pTHX_ SSize_t ix);
@@ -5144,11 +5187,6 @@
#define PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS_MSGS \
assert(d)
-PERL_CALLCONV U8 *
-Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv);
-#define PERL_ARGS_ASSERT_UVUNI_TO_UTF8 \
- assert(d)
-
PERL_CALLCONV bool
Perl_validate_proto(pTHX_ SV *name, SV *proto, bool warn, bool curstash);
#define PERL_ARGS_ASSERT_VALIDATE_PROTO \
@@ -5169,6 +5207,11 @@
#define PERL_ARGS_ASSERT_VDEB \
assert(pat)
+PERL_CALLCONV void
+Perl_vfatal_warner(pTHX_ U32 err, const char *pat, va_list *args);
+#define PERL_ARGS_ASSERT_VFATAL_WARNER \
+ assert(pat)
+
PERL_CALLCONV char *
Perl_vform(pTHX_ const char *pat, va_list *args);
#define PERL_ARGS_ASSERT_VFORM \
@@ -5306,10 +5349,10 @@
assert(msv)
PERL_CALLCONV void
-Perl_xs_boot_epilog(pTHX_ const I32 ax);
+Perl_xs_boot_epilog(pTHX_ const SSize_t ax);
#define PERL_ARGS_ASSERT_XS_BOOT_EPILOG
-PERL_CALLCONV I32
+PERL_CALLCONV Stack_off_t
Perl_xs_handshake(const U32 key, void *v_my_perl, const char *file, ...);
#define PERL_ARGS_ASSERT_XS_HANDSHAKE \
assert(v_my_perl); assert(file)
@@ -5440,7 +5483,7 @@
# define PERL_ARGS_ASSERT_DO_IPCGET \
assert(mark); assert(sp)
-PERL_CALLCONV I32
+PERL_CALLCONV SSize_t
Perl_do_msgrcv(pTHX_ SV **mark, SV **sp)
__attribute__visibility__("hidden");
# define PERL_ARGS_ASSERT_DO_MSGRCV \
@@ -5465,25 +5508,6 @@
assert(mark); assert(sp)
#endif /* defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) */
-#if defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H)
-PERL_CALLCONV const char *
-Perl_langinfo(const nl_item item);
-# define PERL_ARGS_ASSERT_PERL_LANGINFO
-
-PERL_CALLCONV const char *
-Perl_langinfo8(const nl_item item, utf8ness_t *utf8ness);
-# define PERL_ARGS_ASSERT_PERL_LANGINFO8
-
-#else
-PERL_CALLCONV const char *
-Perl_langinfo(const int item);
-# define PERL_ARGS_ASSERT_PERL_LANGINFO
-
-PERL_CALLCONV const char *
-Perl_langinfo8(const int item, utf8ness_t *utf8ness);
-# define PERL_ARGS_ASSERT_PERL_LANGINFO8
-
-#endif
#if defined(HAS_PIPE)
PERL_CALLCONV int
Perl_PerlProc_pipe_cloexec(pTHX_ int *pipefd)
@@ -6015,6 +6039,12 @@
# define PERL_ARGS_ASSERT_UTF8N_TO_UVUNI \
assert(s)
+PERL_CALLCONV U8 *
+Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv)
+ __attribute__deprecated__;
+# define PERL_ARGS_ASSERT_UVUNI_TO_UTF8 \
+ assert(d)
+
# if defined(PERL_DONT_CREATE_GVSV)
PERL_CALLCONV GV *
Perl_gv_SVadd(pTHX_ GV *gv);
@@ -6176,270 +6206,25 @@
assert(av)
#endif
-#if defined(PERL_IN_CLASS_C) || defined(PERL_IN_OP_C) || \
- defined(PERL_IN_PAD_C) || defined(PERL_IN_PERLY_C) || \
- defined(PERL_IN_TOKE_C)
+#if defined(PERL_IN_BUILTIN_C) || defined(PERL_IN_OP_C)
PERL_CALLCONV void
-Perl_class_add_ADJUST(pTHX_ HV *stash, CV *cv);
-# define PERL_ARGS_ASSERT_CLASS_ADD_ADJUST \
- assert(stash); assert(cv)
+Perl_finish_export_lexical(pTHX)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_FINISH_EXPORT_LEXICAL
PERL_CALLCONV void
-Perl_class_add_field(pTHX_ HV *stash, PADNAME *pn);
-# define PERL_ARGS_ASSERT_CLASS_ADD_FIELD \
- assert(stash); assert(pn)
+Perl_import_builtin_bundle(pTHX_ U16 ver)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_IMPORT_BUILTIN_BUNDLE
PERL_CALLCONV void
-Perl_class_apply_attributes(pTHX_ HV *stash, OP *attrlist);
-# define PERL_ARGS_ASSERT_CLASS_APPLY_ATTRIBUTES \
- assert(stash)
-
-PERL_CALLCONV void
-Perl_class_apply_field_attributes(pTHX_ PADNAME *pn, OP *attrlist);
-# define PERL_ARGS_ASSERT_CLASS_APPLY_FIELD_ATTRIBUTES \
- assert(pn)
-
-PERL_CALLCONV void
-Perl_class_prepare_initfield_parse(pTHX);
-# define PERL_ARGS_ASSERT_CLASS_PREPARE_INITFIELD_PARSE
-
-PERL_CALLCONV void
-Perl_class_prepare_method_parse(pTHX_ CV *cv);
-# define PERL_ARGS_ASSERT_CLASS_PREPARE_METHOD_PARSE \
- assert(cv)
-
-PERL_CALLCONV void
-Perl_class_seal_stash(pTHX_ HV *stash);
-# define PERL_ARGS_ASSERT_CLASS_SEAL_STASH \
- assert(stash)
-
-PERL_CALLCONV void
-Perl_class_set_field_defop(pTHX_ PADNAME *pn, OPCODE defmode, OP *defop);
-# define PERL_ARGS_ASSERT_CLASS_SET_FIELD_DEFOP \
- assert(pn); assert(defop)
-
-PERL_CALLCONV void
-Perl_class_setup_stash(pTHX_ HV *stash);
-# define PERL_ARGS_ASSERT_CLASS_SETUP_STASH \
- assert(stash)
-
-PERL_CALLCONV OP *
-Perl_class_wrap_method_body(pTHX_ OP *o);
-# define PERL_ARGS_ASSERT_CLASS_WRAP_METHOD_BODY
-
-PERL_CALLCONV void
-Perl_croak_kw_unless_class(pTHX_ const char *kw);
-# define PERL_ARGS_ASSERT_CROAK_KW_UNLESS_CLASS \
- assert(kw)
-
-#endif /* defined(PERL_IN_CLASS_C) || defined(PERL_IN_OP_C) ||
- defined(PERL_IN_PAD_C) || defined(PERL_IN_PERLY_C) ||
- defined(PERL_IN_TOKE_C) */
-#if defined(PERL_IN_DEB_C)
-STATIC void
-S_deb_stack_n(pTHX_ SV **stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max);
-# define PERL_ARGS_ASSERT_DEB_STACK_N \
- assert(stack_base)
-
-#endif
-#if defined(PERL_IN_DOIO_C)
-STATIC bool
-S_argvout_final(pTHX_ MAGIC *mg, IO *io, bool is_explicit);
-# define PERL_ARGS_ASSERT_ARGVOUT_FINAL \
- assert(mg); assert(io)
-
-STATIC void
-S_exec_failed(pTHX_ const char *cmd, int fd, int do_report);
-# define PERL_ARGS_ASSERT_EXEC_FAILED \
- assert(cmd)
-
-STATIC bool
-S_ingroup(pTHX_ Gid_t testgid, bool effective)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT_INGROUP
-
-STATIC bool
-S_openn_cleanup(pTHX_ GV *gv, IO *io, PerlIO *fp, char *mode, const char *oname, PerlIO *saveifp, PerlIO *saveofp, int savefd, char savetype, int writing, bool was_fdopen, const char *type, Stat_t *statbufp);
-# define PERL_ARGS_ASSERT_OPENN_CLEANUP \
- assert(gv); assert(io); assert(mode); assert(oname)
-
-STATIC IO *
-S_openn_setup(pTHX_ GV *gv, char *mode, PerlIO **saveifp, PerlIO **saveofp, int *savefd, char *savetype);
-# define PERL_ARGS_ASSERT_OPENN_SETUP \
- assert(gv); assert(mode); assert(saveifp); assert(saveofp); assert(savefd); \
- assert(savetype)
-
-#endif /* defined(PERL_IN_DOIO_C) */
-#if defined(PERL_IN_DOOP_C)
-STATIC Size_t
-S_do_trans_complex(pTHX_ SV * const sv, const OPtrans_map * const tbl)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX \
- assert(sv); assert(tbl)
-
-STATIC Size_t
-S_do_trans_count(pTHX_ SV * const sv, const OPtrans_map * const tbl)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT_DO_TRANS_COUNT \
- assert(sv); assert(tbl)
-
-STATIC Size_t
-S_do_trans_count_invmap(pTHX_ SV * const sv, AV * const map)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT_DO_TRANS_COUNT_INVMAP \
- assert(sv); assert(map)
-
-STATIC Size_t
-S_do_trans_invmap(pTHX_ SV * const sv, AV * const map)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT_DO_TRANS_INVMAP \
- assert(sv); assert(map)
-
-STATIC Size_t
-S_do_trans_simple(pTHX_ SV * const sv, const OPtrans_map * const tbl)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE \
- assert(sv); assert(tbl)
-
-#endif /* defined(PERL_IN_DOOP_C) */
-#if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
- defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) || \
- defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || \
- defined(PERL_IN_UTF8_C)
-
-PERL_CALLCONV SSize_t
-Perl__invlist_search(SV * const invlist, const UV cp)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT__INVLIST_SEARCH \
- assert(invlist)
-
-#endif /* defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) ||
- defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) ||
- defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) ||
- defined(PERL_IN_UTF8_C) */
-#if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
- defined(PERL_IN_REGCOMP_ANY)
-
-#endif
-#if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
- defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_UTF8_C)
-PERL_CALLCONV SV *
-Perl__add_range_to_invlist(pTHX_ SV *invlist, UV start, UV end)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT__ADD_RANGE_TO_INVLIST
-
-/* PERL_CALLCONV void
-_invlist_intersection(pTHX_ SV * const a, SV * const b, SV **i); */
-
-PERL_CALLCONV void
-Perl__invlist_intersection_maybe_complement_2nd(pTHX_ SV * const a, SV * const b, const bool complement_b, SV **i);
-# define PERL_ARGS_ASSERT__INVLIST_INTERSECTION_MAYBE_COMPLEMENT_2ND \
- assert(b); assert(i)
-
-PERL_CALLCONV void
-Perl__invlist_invert(pTHX_ SV * const invlist);
-# define PERL_ARGS_ASSERT__INVLIST_INVERT \
- assert(invlist)
-
-/* PERL_CALLCONV void
-_invlist_subtract(pTHX_ SV * const a, SV * const b, SV **result); */
-
-/* PERL_CALLCONV void
-_invlist_union(pTHX_ SV * const a, SV * const b, SV **output); */
-
-PERL_CALLCONV void
-Perl__invlist_union_maybe_complement_2nd(pTHX_ SV * const a, SV * const b, const bool complement_b, SV **output);
-# define PERL_ARGS_ASSERT__INVLIST_UNION_MAYBE_COMPLEMENT_2ND \
- assert(b); assert(output)
-
-PERL_CALLCONV SV *
-Perl__new_invlist(pTHX_ IV initial_size)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT__NEW_INVLIST
-
-PERL_CALLCONV SV *
-Perl__setup_canned_invlist(pTHX_ const STRLEN size, const UV element0, UV **other_elements_ptr)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT__SETUP_CANNED_INVLIST \
- assert(other_elements_ptr)
-
-#endif /* defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) ||
- defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_UTF8_C) */
-#if defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
- defined(PERL_IN_TOKE_C)
-PERL_CALLCONV const char *
-Perl_form_alien_digit_msg(pTHX_ const U8 which, const STRLEN valids_len, const char * const first_bad, const char * const send, const bool UTF, const bool braced)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT_FORM_ALIEN_DIGIT_MSG \
- assert(first_bad); assert(send)
-
-PERL_CALLCONV bool
-Perl_grok_bslash_c(pTHX_ const char source, U8 *result, const char **message, U32 *packed_warn)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT_GROK_BSLASH_C \
- assert(result); assert(message)
-
-PERL_CALLCONV bool
-Perl_grok_bslash_o(pTHX_ char **s, const char * const send, UV *uv, const char **message, U32 *packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT_GROK_BSLASH_O \
- assert(s); assert(send); assert(uv); assert(message)
-
-PERL_CALLCONV bool
-Perl_grok_bslash_x(pTHX_ char **s, const char * const send, UV *uv, const char **message, U32 *packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT_GROK_BSLASH_X \
- assert(s); assert(send); assert(uv); assert(message)
-
-#endif /* defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) ||
- defined(PERL_IN_TOKE_C) */
-#if defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
- defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C)
-PERL_CALLCONV const char *
-Perl_form_cp_too_large_msg(pTHX_ const U8 which, const char *string, const Size_t len, const UV cp)
- __attribute__warn_unused_result__;
-# define PERL_ARGS_ASSERT_FORM_CP_TOO_LARGE_MSG
-
-#endif
-#if defined(PERL_IN_DUMP_C)
-STATIC CV *
-S_deb_curcv(pTHX_ I32 ix);
-# define PERL_ARGS_ASSERT_DEB_CURCV
-
-STATIC void
-S_debprof(pTHX_ const OP *o);
-# define PERL_ARGS_ASSERT_DEBPROF \
- assert(o)
-
-STATIC SV *
-S_pm_description(pTHX_ const PMOP *pm);
-# define PERL_ARGS_ASSERT_PM_DESCRIPTION \
- assert(pm)
-
-STATIC UV
-S_sequence_num(pTHX_ const OP *o);
-# define PERL_ARGS_ASSERT_SEQUENCE_NUM
-
-#endif /* defined(PERL_IN_DUMP_C) */
-#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || \
- defined(PERL_IN_SCOPE_C) || defined(PERL_IN_SV_C)
-PERL_CALLCONV void
-Perl_hv_kill_backrefs(pTHX_ HV *hv)
+Perl_prepare_export_lexical(pTHX)
__attribute__visibility__("hidden");
-# define PERL_ARGS_ASSERT_HV_KILL_BACKREFS \
- assert(hv)
+# define PERL_ARGS_ASSERT_PREPARE_EXPORT_LEXICAL
-#endif
-#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_OP_C) || \
- defined(PERL_IN_REGCOMP_ANY)
-PERL_CALLCONV void
-Perl__invlist_dump(pTHX_ PerlIO *file, I32 level, const char * const indent, SV * const invlist);
-# define PERL_ARGS_ASSERT__INVLIST_DUMP \
- assert(file); assert(indent); assert(invlist)
-
-#endif
-#if defined(PERL_IN_GLOBALS_C) || defined(PERL_IN_OP_C) || \
- defined(PERL_IN_PEEP_C)
+#endif /* defined(PERL_IN_BUILTIN_C) || defined(PERL_IN_OP_C) */
+#if defined(PERL_IN_CLASS_C) || defined(PERL_IN_GLOBALS_C) || \
+ defined(PERL_IN_OP_C) || defined(PERL_IN_PEEP_C)
PERL_CALLCONV OP *
Perl_ck_anoncode(pTHX_ OP *o)
__attribute__warn_unused_result__
@@ -6462,6 +6247,13 @@
assert(o)
PERL_CALLCONV OP *
+Perl_ck_classname(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_CLASSNAME \
+ assert(o)
+
+PERL_CALLCONV OP *
Perl_ck_cmp(pTHX_ OP *o)
__attribute__warn_unused_result__
__attribute__visibility__("hidden");
@@ -6783,8 +6575,277 @@
# define PERL_ARGS_ASSERT_CK_TRYCATCH \
assert(o)
-#endif /* defined(PERL_IN_GLOBALS_C) || defined(PERL_IN_OP_C) ||
- defined(PERL_IN_PEEP_C) */
+#endif /* defined(PERL_IN_CLASS_C) || defined(PERL_IN_GLOBALS_C) ||
+ defined(PERL_IN_OP_C) || defined(PERL_IN_PEEP_C) */
+#if defined(PERL_IN_CLASS_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_PAD_C) || defined(PERL_IN_PERLY_C) || \
+ defined(PERL_IN_TOKE_C)
+PERL_CALLCONV void
+Perl_class_add_ADJUST(pTHX_ HV *stash, CV *cv);
+# define PERL_ARGS_ASSERT_CLASS_ADD_ADJUST \
+ assert(stash); assert(cv)
+
+PERL_CALLCONV void
+Perl_class_add_field(pTHX_ HV *stash, PADNAME *pn);
+# define PERL_ARGS_ASSERT_CLASS_ADD_FIELD \
+ assert(stash); assert(pn)
+
+PERL_CALLCONV void
+Perl_class_apply_attributes(pTHX_ HV *stash, OP *attrlist);
+# define PERL_ARGS_ASSERT_CLASS_APPLY_ATTRIBUTES \
+ assert(stash)
+
+PERL_CALLCONV void
+Perl_class_apply_field_attributes(pTHX_ PADNAME *pn, OP *attrlist);
+# define PERL_ARGS_ASSERT_CLASS_APPLY_FIELD_ATTRIBUTES \
+ assert(pn)
+
+PERL_CALLCONV void
+Perl_class_prepare_initfield_parse(pTHX);
+# define PERL_ARGS_ASSERT_CLASS_PREPARE_INITFIELD_PARSE
+
+PERL_CALLCONV void
+Perl_class_prepare_method_parse(pTHX_ CV *cv);
+# define PERL_ARGS_ASSERT_CLASS_PREPARE_METHOD_PARSE \
+ assert(cv)
+
+PERL_CALLCONV void
+Perl_class_seal_stash(pTHX_ HV *stash);
+# define PERL_ARGS_ASSERT_CLASS_SEAL_STASH \
+ assert(stash)
+
+PERL_CALLCONV void
+Perl_class_set_field_defop(pTHX_ PADNAME *pn, OPCODE defmode, OP *defop);
+# define PERL_ARGS_ASSERT_CLASS_SET_FIELD_DEFOP \
+ assert(pn); assert(defop)
+
+PERL_CALLCONV void
+Perl_class_setup_stash(pTHX_ HV *stash);
+# define PERL_ARGS_ASSERT_CLASS_SETUP_STASH \
+ assert(stash)
+
+PERL_CALLCONV OP *
+Perl_class_wrap_method_body(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_CLASS_WRAP_METHOD_BODY
+
+PERL_CALLCONV void
+Perl_croak_kw_unless_class(pTHX_ const char *kw);
+# define PERL_ARGS_ASSERT_CROAK_KW_UNLESS_CLASS \
+ assert(kw)
+
+#endif /* defined(PERL_IN_CLASS_C) || defined(PERL_IN_OP_C) ||
+ defined(PERL_IN_PAD_C) || defined(PERL_IN_PERLY_C) ||
+ defined(PERL_IN_TOKE_C) */
+#if defined(PERL_IN_DEB_C)
+STATIC void
+S_deb_stack_n(pTHX_ SV **stack_base, SSize_t stack_min, SSize_t stack_max, SSize_t mark_min, SSize_t mark_max, SSize_t nonrc_base);
+# define PERL_ARGS_ASSERT_DEB_STACK_N \
+ assert(stack_base)
+
+#endif
+#if defined(PERL_IN_DOIO_C)
+STATIC bool
+S_argvout_final(pTHX_ MAGIC *mg, IO *io, bool is_explicit);
+# define PERL_ARGS_ASSERT_ARGVOUT_FINAL \
+ assert(mg); assert(io)
+
+STATIC void
+S_exec_failed(pTHX_ const char *cmd, int fd, int do_report);
+# define PERL_ARGS_ASSERT_EXEC_FAILED \
+ assert(cmd)
+
+STATIC bool
+S_is_fork_open(const char *name);
+# define PERL_ARGS_ASSERT_IS_FORK_OPEN \
+ assert(name)
+
+STATIC bool
+S_openn_cleanup(pTHX_ GV *gv, IO *io, PerlIO *fp, char *mode, const char *oname, PerlIO *saveifp, PerlIO *saveofp, int savefd, char savetype, int writing, bool was_fdopen, const char *type, Stat_t *statbufp);
+# define PERL_ARGS_ASSERT_OPENN_CLEANUP \
+ assert(gv); assert(io); assert(mode); assert(oname)
+
+STATIC IO *
+S_openn_setup(pTHX_ GV *gv, char *mode, PerlIO **saveifp, PerlIO **saveofp, int *savefd, char *savetype);
+# define PERL_ARGS_ASSERT_OPENN_SETUP \
+ assert(gv); assert(mode); assert(saveifp); assert(saveofp); assert(savefd); \
+ assert(savetype)
+
+# if !defined(DOSISH)
+STATIC bool
+S_ingroup(pTHX_ Gid_t testgid, bool effective)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_INGROUP
+
+# endif
+#endif /* defined(PERL_IN_DOIO_C) */
+#if defined(PERL_IN_DOOP_C)
+STATIC Size_t
+S_do_trans_complex(pTHX_ SV * const sv, const OPtrans_map * const tbl)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX \
+ assert(sv); assert(tbl)
+
+STATIC Size_t
+S_do_trans_count(pTHX_ SV * const sv, const OPtrans_map * const tbl)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DO_TRANS_COUNT \
+ assert(sv); assert(tbl)
+
+STATIC Size_t
+S_do_trans_count_invmap(pTHX_ SV * const sv, AV * const map)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DO_TRANS_COUNT_INVMAP \
+ assert(sv); assert(map)
+
+STATIC Size_t
+S_do_trans_invmap(pTHX_ SV * const sv, AV * const map)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DO_TRANS_INVMAP \
+ assert(sv); assert(map)
+
+STATIC Size_t
+S_do_trans_simple(pTHX_ SV * const sv, const OPtrans_map * const tbl)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE \
+ assert(sv); assert(tbl)
+
+#endif /* defined(PERL_IN_DOOP_C) */
+#if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) || \
+ defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || \
+ defined(PERL_IN_UTF8_C)
+
+PERL_CALLCONV SSize_t
+Perl__invlist_search(SV * const invlist, const UV cp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__INVLIST_SEARCH \
+ assert(invlist)
+
+#endif /* defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) ||
+ defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) ||
+ defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) ||
+ defined(PERL_IN_UTF8_C) */
+#if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_REGCOMP_ANY)
+
+#endif
+#if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_UTF8_C)
+PERL_CALLCONV SV *
+Perl__add_range_to_invlist(pTHX_ SV *invlist, UV start, UV end)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__ADD_RANGE_TO_INVLIST
+
+/* PERL_CALLCONV void
+_invlist_intersection(pTHX_ SV * const a, SV * const b, SV **i); */
+
+PERL_CALLCONV void
+Perl__invlist_intersection_maybe_complement_2nd(pTHX_ SV * const a, SV * const b, const bool complement_b, SV **i);
+# define PERL_ARGS_ASSERT__INVLIST_INTERSECTION_MAYBE_COMPLEMENT_2ND \
+ assert(b); assert(i)
+
+PERL_CALLCONV void
+Perl__invlist_invert(pTHX_ SV * const invlist);
+# define PERL_ARGS_ASSERT__INVLIST_INVERT \
+ assert(invlist)
+
+/* PERL_CALLCONV void
+_invlist_subtract(pTHX_ SV * const a, SV * const b, SV **result); */
+
+/* PERL_CALLCONV void
+_invlist_union(pTHX_ SV * const a, SV * const b, SV **output); */
+
+PERL_CALLCONV void
+Perl__invlist_union_maybe_complement_2nd(pTHX_ SV * const a, SV * const b, const bool complement_b, SV **output);
+# define PERL_ARGS_ASSERT__INVLIST_UNION_MAYBE_COMPLEMENT_2ND \
+ assert(b); assert(output)
+
+PERL_CALLCONV SV *
+Perl__new_invlist(pTHX_ IV initial_size)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__NEW_INVLIST
+
+PERL_CALLCONV SV *
+Perl__setup_canned_invlist(pTHX_ const STRLEN size, const UV element0, UV **other_elements_ptr)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__SETUP_CANNED_INVLIST \
+ assert(other_elements_ptr)
+
+#endif /* defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) ||
+ defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_UTF8_C) */
+#if defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
+ defined(PERL_IN_TOKE_C)
+PERL_CALLCONV const char *
+Perl_form_alien_digit_msg(pTHX_ const U8 which, const STRLEN valids_len, const char * const first_bad, const char * const send, const bool UTF, const bool braced)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_FORM_ALIEN_DIGIT_MSG \
+ assert(first_bad); assert(send)
+
+PERL_CALLCONV bool
+Perl_grok_bslash_c(pTHX_ const char source, U8 *result, const char **message, U32 *packed_warn)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GROK_BSLASH_C \
+ assert(result); assert(message)
+
+PERL_CALLCONV bool
+Perl_grok_bslash_o(pTHX_ char **s, const char * const send, UV *uv, const char **message, U32 *packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GROK_BSLASH_O \
+ assert(s); assert(send); assert(uv); assert(message)
+
+PERL_CALLCONV bool
+Perl_grok_bslash_x(pTHX_ char **s, const char * const send, UV *uv, const char **message, U32 *packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GROK_BSLASH_X \
+ assert(s); assert(send); assert(uv); assert(message)
+
+#endif /* defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) ||
+ defined(PERL_IN_TOKE_C) */
+#if defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
+ defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C)
+PERL_CALLCONV const char *
+Perl_form_cp_too_large_msg(pTHX_ const U8 which, const char *string, const Size_t len, const UV cp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_FORM_CP_TOO_LARGE_MSG
+
+#endif
+#if defined(PERL_IN_DUMP_C)
+STATIC CV *
+S_deb_curcv(pTHX_ I32 ix);
+# define PERL_ARGS_ASSERT_DEB_CURCV
+
+STATIC void
+S_debprof(pTHX_ const OP *o);
+# define PERL_ARGS_ASSERT_DEBPROF \
+ assert(o)
+
+STATIC SV *
+S_pm_description(pTHX_ const PMOP *pm);
+# define PERL_ARGS_ASSERT_PM_DESCRIPTION \
+ assert(pm)
+
+STATIC UV
+S_sequence_num(pTHX_ const OP *o);
+# define PERL_ARGS_ASSERT_SEQUENCE_NUM
+
+#endif /* defined(PERL_IN_DUMP_C) */
+#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || \
+ defined(PERL_IN_SCOPE_C) || defined(PERL_IN_SV_C)
+PERL_CALLCONV void
+Perl_hv_kill_backrefs(pTHX_ HV *hv)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_HV_KILL_BACKREFS \
+ assert(hv)
+
+#endif
+#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_REGCOMP_ANY)
+PERL_CALLCONV void
+Perl__invlist_dump(pTHX_ PerlIO *file, I32 level, const char * const indent, SV * const invlist);
+# define PERL_ARGS_ASSERT__INVLIST_DUMP \
+ assert(file); assert(indent); assert(invlist)
+
+#endif
#if defined(PERL_IN_GV_C)
STATIC bool
S_find_default_stash(pTHX_ HV **stash, const char *name, STRLEN len, const U32 is_utf8, const I32 add, const svtype sv_type);
@@ -6942,79 +7003,140 @@
#endif
#if defined(PERL_IN_LOCALE_C)
STATIC utf8ness_t
-S_get_locale_string_utf8ness_i(pTHX_ const char *string, const locale_utf8ness_t known_utf8, const char *locale, const unsigned cat_index);
+S_get_locale_string_utf8ness_i(pTHX_ const char *string, const locale_utf8ness_t known_utf8, const char *locale, const locale_category_index cat_index);
# define PERL_ARGS_ASSERT_GET_LOCALE_STRING_UTF8NESS_I
+STATIC void
+S_ints_to_tm(pTHX_ struct tm *my_tm, const char *locale, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst);
+# define PERL_ARGS_ASSERT_INTS_TO_TM \
+ assert(my_tm); assert(locale)
+
STATIC bool
S_is_locale_utf8(pTHX_ const char *locale);
# define PERL_ARGS_ASSERT_IS_LOCALE_UTF8 \
assert(locale)
-# if defined(HAS_LOCALECONV)
STATIC HV *
S_my_localeconv(pTHX_ const int item);
-# define PERL_ARGS_ASSERT_MY_LOCALECONV
+# define PERL_ARGS_ASSERT_MY_LOCALECONV
STATIC void
-S_populate_hash_from_localeconv(pTHX_ HV *hv, const char *locale, const U32 which_mask, const lconv_offset_t *strings[2], const lconv_offset_t *integers);
-# define PERL_ARGS_ASSERT_POPULATE_HASH_FROM_LOCALECONV \
- assert(hv); assert(locale); assert(strings)
+S_populate_hash_from_C_localeconv(pTHX_ HV *hv, const char *locale, const U32 which_mask, const lconv_offset_t *strings[2], const lconv_offset_t *integers[2]);
+# define PERL_ARGS_ASSERT_POPULATE_HASH_FROM_C_LOCALECONV \
+ assert(hv); assert(locale); assert(strings); assert(integers)
-# endif /* defined(HAS_LOCALECONV) */
+STATIC bool
+S_strftime8(pTHX_ const char *fmt, SV *sv, const char *locale, const struct tm *mytm, const utf8ness_t fmt_utf8ness, utf8ness_t *result_utf8ness, const bool called_externally);
+# define PERL_ARGS_ASSERT_STRFTIME8 \
+ assert(fmt); assert(sv); assert(locale); assert(mytm); assert(result_utf8ness)
+
+STATIC bool
+S_strftime_tm(pTHX_ const char *fmt, SV *sv, const char *locale, const struct tm *mytm)
+ __attribute__format__(__strftime__,pTHX_1,0);
+# define PERL_ARGS_ASSERT_STRFTIME_TM \
+ assert(fmt); assert(sv); assert(locale); assert(mytm)
+
+STATIC SV *
+S_sv_strftime_common(pTHX_ SV *fmt, const char *locale, const struct tm *mytm);
+# define PERL_ARGS_ASSERT_SV_STRFTIME_COMMON \
+ assert(fmt); assert(locale); assert(mytm)
+
+# if defined(HAS_MISSING_LANGINFO_ITEM_) || !defined(HAS_NL_LANGINFO)
+STATIC const char *
+S_emulate_langinfo(pTHX_ const PERL_INTMAX_T item, const char *locale, SV *sv, utf8ness_t *utf8ness);
+# define PERL_ARGS_ASSERT_EMULATE_LANGINFO \
+ assert(locale); assert(sv)
+
+# endif
# if defined(USE_LOCALE)
-STATIC unsigned int
-S_get_category_index(const int category, const char *locale);
-# define PERL_ARGS_ASSERT_GET_CATEGORY_INDEX
+STATIC const char *
+S_calculate_LC_ALL_string(pTHX_ const char **category_locales_list, const calc_LC_ALL_format format, const calc_LC_ALL_return returning, const line_t caller_line);
+# define PERL_ARGS_ASSERT_CALCULATE_LC_ALL_STRING
-STATIC int
-S_get_category_index_nowarn(const int category);
-# define PERL_ARGS_ASSERT_GET_CATEGORY_INDEX_NOWARN
+STATIC const char *
+S_external_call_langinfo(pTHX_ const nl_item item, SV *sv, utf8ness_t *utf8ness);
+# define PERL_ARGS_ASSERT_EXTERNAL_CALL_LANGINFO \
+ assert(sv)
+STATIC locale_category_index
+S_get_category_index_helper(pTHX_ const int category, bool *success, const line_t caller_line)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GET_CATEGORY_INDEX_HELPER
+
+STATIC const char *
+S_native_querylocale_i(pTHX_ const locale_category_index cat_index);
+# define PERL_ARGS_ASSERT_NATIVE_QUERYLOCALE_I
+
STATIC void
-S_new_LC_ALL(pTHX_ const char *unused, bool force);
-# define PERL_ARGS_ASSERT_NEW_LC_ALL
+S_new_LC_ALL(pTHX_ const char *lc_all, bool force);
+# define PERL_ARGS_ASSERT_NEW_LC_ALL \
+ assert(lc_all)
STATIC void
-S_restore_toggled_locale_i(pTHX_ const unsigned cat_index, const char *original_locale, const line_t caller_line);
+S_output_check_environment_warning(pTHX_ const char * const language, const char * const lc_all, const char * const lang);
+# define PERL_ARGS_ASSERT_OUTPUT_CHECK_ENVIRONMENT_WARNING
+
+STATIC parse_LC_ALL_string_return
+S_parse_LC_ALL_string(pTHX_ const char *string, const char **output, const parse_LC_ALL_STRING_action, bool always_use_full_array, const bool panic_on_error, const line_t caller_line);
+# define PERL_ARGS_ASSERT_PARSE_LC_ALL_STRING \
+ assert(string); assert(output)
+
+STATIC void
+S_restore_toggled_locale_i(pTHX_ const locale_category_index cat_index, const char *original_locale, const line_t caller_line);
# define PERL_ARGS_ASSERT_RESTORE_TOGGLED_LOCALE_I
STATIC const char *
-S_save_to_buffer(const char *string, const char **buf, Size_t *buf_size);
+S_save_to_buffer(pTHX_ const char *string, char **buf, Size_t *buf_size);
# define PERL_ARGS_ASSERT_SAVE_TO_BUFFER
+STATIC void
+S_set_save_buffer_min_size(pTHX_ const Size_t min_len, char **buf, Size_t *buf_size);
+# define PERL_ARGS_ASSERT_SET_SAVE_BUFFER_MIN_SIZE
+
PERL_STATIC_NO_RET void
-S_setlocale_failure_panic_i(pTHX_ const unsigned int cat_index, const char *current, const char *failed, const line_t caller_0_line, const line_t caller_1_line)
+S_setlocale_failure_panic_via_i(pTHX_ const locale_category_index cat_index, const char *current, const char *failed, const line_t proxy_caller_line, const line_t immediate_caller_line, const char *higher_caller_file, const line_t higher_caller_line)
__attribute__noreturn__;
-# define PERL_ARGS_ASSERT_SETLOCALE_FAILURE_PANIC_I \
- assert(failed)
+# define PERL_ARGS_ASSERT_SETLOCALE_FAILURE_PANIC_VIA_I \
+ assert(failed); assert(higher_caller_file)
STATIC const char *
-S_stdize_locale(pTHX_ const int category, const char *input_locale, const char **buf, Size_t *buf_size, line_t caller_line);
-# define PERL_ARGS_ASSERT_STDIZE_LOCALE
-
-STATIC const char *
-S_toggle_locale_i(pTHX_ const unsigned switch_cat_index, const char *new_locale, const line_t caller_line);
+S_toggle_locale_i(pTHX_ const locale_category_index cat_index, const char *new_locale, const line_t caller_line);
# define PERL_ARGS_ASSERT_TOGGLE_LOCALE_I \
assert(new_locale)
# if defined(DEBUGGING)
STATIC char *
-S_my_setlocale_debug_string_i(pTHX_ const unsigned cat_index, const char *locale, const char *retval, const line_t line)
+S_my_setlocale_debug_string_i(pTHX_ const locale_category_index cat_index, const char *locale, const char *retval, const line_t line)
__attribute__warn_unused_result__;
# define PERL_ARGS_ASSERT_MY_SETLOCALE_DEBUG_STRING_I
# endif
-# if defined(HAS_NL_LANGINFO) || defined(HAS_NL_LANGINFO_L)
+# if defined(HAS_LOCALECONV) && \
+ ( defined(USE_LOCALE_MONETARY) || defined(USE_LOCALE_NUMERIC) )
+STATIC void
+S_populate_hash_from_localeconv(pTHX_ HV *hv, const char *locale, const U32 which_mask, const lconv_offset_t *strings[2], const lconv_offset_t *integers[2]);
+# define PERL_ARGS_ASSERT_POPULATE_HASH_FROM_LOCALECONV \
+ assert(hv); assert(locale); assert(strings); assert(integers)
+
+# endif
+# if defined(HAS_NL_LANGINFO)
STATIC const char *
-S_my_langinfo_i(pTHX_ const nl_item item, const unsigned int cat_index, const char *locale, const char **retbufp, Size_t *retbuf_sizep, utf8ness_t *utf8ness);
-# define PERL_ARGS_ASSERT_MY_LANGINFO_I \
- assert(locale); assert(retbufp)
+S_langinfo_sv_i(pTHX_ const nl_item item, locale_category_index cat_index, const char *locale, SV *sv, utf8ness_t *utf8ness);
+# define PERL_ARGS_ASSERT_LANGINFO_SV_I \
+ assert(locale); assert(sv)
+# endif
+# if defined(LC_ALL)
+STATIC void
+S_give_perl_locale_control(pTHX_ const char *lc_all_string, const line_t caller_line);
+# define PERL_ARGS_ASSERT_GIVE_PERL_LOCALE_CONTROL \
+ assert(lc_all_string)
+
# else
-STATIC const char *
-S_my_langinfo_i(pTHX_ const int item, const unsigned int cat_index, const char *locale, const char **retbufp, Size_t *retbuf_sizep, utf8ness_t *utf8ness);
-# define PERL_ARGS_ASSERT_MY_LANGINFO_I \
- assert(locale); assert(retbufp)
+STATIC void
+S_give_perl_locale_control(pTHX_ const char **curlocales, const line_t caller_line);
+# define PERL_ARGS_ASSERT_GIVE_PERL_LOCALE_CONTROL \
+ assert(curlocales)
# endif
# if !defined(PERL_NO_INLINE_FUNCTIONS)
@@ -7064,31 +7186,22 @@
# endif
# if defined(USE_POSIX_2008_LOCALE)
-STATIC const char *
-S_emulate_setlocale_i(pTHX_ const unsigned int index, const char *new_locale, const recalc_lc_all_t recalc_LC_ALL, const line_t line);
-# define PERL_ARGS_ASSERT_EMULATE_SETLOCALE_I
+STATIC bool
+S_bool_setlocale_2008_i(pTHX_ const locale_category_index index, const char *new_locale, const line_t caller_line);
+# define PERL_ARGS_ASSERT_BOOL_SETLOCALE_2008_I \
+ assert(new_locale)
STATIC const char *
-S_my_querylocale_i(pTHX_ const unsigned int index);
-# define PERL_ARGS_ASSERT_MY_QUERYLOCALE_I
+S_querylocale_2008_i(pTHX_ const locale_category_index index, const line_t line);
+# define PERL_ARGS_ASSERT_QUERYLOCALE_2008_I
-STATIC const char *
-S_setlocale_from_aggregate_LC_ALL(pTHX_ const char *locale, const line_t line);
-# define PERL_ARGS_ASSERT_SETLOCALE_FROM_AGGREGATE_LC_ALL \
- assert(locale)
-
STATIC locale_t
S_use_curlocale_scratch(pTHX);
# define PERL_ARGS_ASSERT_USE_CURLOCALE_SCRATCH
-# if defined(USE_QUERYLOCALE)
-STATIC const char *
-S_calculate_LC_ALL(pTHX_ const locale_t cur_obj);
-# define PERL_ARGS_ASSERT_CALCULATE_LC_ALL
-
-# else
-STATIC const char *
-S_update_PL_curlocales_i(pTHX_ const unsigned int index, const char *new_locale, recalc_lc_all_t recalc_LC_ALL);
+# if !defined(USE_QUERYLOCALE)
+STATIC void
+S_update_PL_curlocales_i(pTHX_ const locale_category_index index, const char *new_locale, const line_t caller_line);
# define PERL_ARGS_ASSERT_UPDATE_PL_CURLOCALES_I \
assert(new_locale)
@@ -7097,36 +7210,20 @@
!defined(USE_THREAD_SAFE_LOCALE) && \
!defined(USE_THREAD_SAFE_LOCALE_EMULATION) /* &&
!defined(USE_POSIX_2008_LOCALE) */
+STATIC bool
+S_less_dicey_bool_setlocale_r(pTHX_ const int cat, const char *locale);
+# define PERL_ARGS_ASSERT_LESS_DICEY_BOOL_SETLOCALE_R \
+ assert(locale)
+
STATIC const char *
S_less_dicey_setlocale_r(pTHX_ const int category, const char *locale);
# define PERL_ARGS_ASSERT_LESS_DICEY_SETLOCALE_R
-STATIC void
-S_less_dicey_void_setlocale_i(pTHX_ const unsigned cat_index, const char *locale, const line_t line);
-# define PERL_ARGS_ASSERT_LESS_DICEY_VOID_SETLOCALE_I \
- assert(locale)
-
-# if 0
-STATIC bool
-S_less_dicey_bool_setlocale_r(pTHX_ const int cat, const char *locale);
-# define PERL_ARGS_ASSERT_LESS_DICEY_BOOL_SETLOCALE_R \
- assert(locale)
-
-# endif
# endif /* defined(USE_LOCALE_THREADS) &&
!defined(USE_POSIX_2008_LOCALE) &&
!defined(USE_THREAD_SAFE_LOCALE) &&
!defined(USE_THREAD_SAFE_LOCALE_EMULATION) */
-# if !( defined(USE_POSIX_2008_LOCALE) && defined(USE_QUERYLOCALE) ) && \
- ( !defined(LC_ALL) || defined(USE_POSIX_2008_LOCALE) || \
- defined(WIN32) )
-STATIC const char *
-S_calculate_LC_ALL(pTHX_ const char **individ_locales);
-# define PERL_ARGS_ASSERT_CALCULATE_LC_ALL \
- assert(individ_locales)
-
-# endif
-# if defined(WIN32)
+# if defined(WIN32) || defined(WIN32_USE_FAKE_OLD_MINGW_LOCALES)
STATIC wchar_t *
S_Win_byte_string_to_wstring(const UINT code_page, const char *byte_string);
# define PERL_ARGS_ASSERT_WIN_BYTE_STRING_TO_WSTRING
@@ -7143,16 +7240,16 @@
S_wrap_wsetlocale(pTHX_ const int category, const char *locale);
# define PERL_ARGS_ASSERT_WRAP_WSETLOCALE
-# endif /* defined(WIN32) */
-# if defined(WIN32) || \
+# endif /* defined(WIN32) || defined(WIN32_USE_FAKE_OLD_MINGW_LOCALES) */
+# if defined(WIN32) || defined(WIN32_USE_FAKE_OLD_MINGW_LOCALES) || \
( defined(USE_POSIX_2008_LOCALE) && !defined(USE_QUERYLOCALE) )
STATIC const char *
-S_find_locale_from_environment(pTHX_ const unsigned int index);
+S_find_locale_from_environment(pTHX_ const locale_category_index index);
# define PERL_ARGS_ASSERT_FIND_LOCALE_FROM_ENVIRONMENT
# endif
# endif /* defined(USE_LOCALE) */
-# if defined(USE_POSIX_2008_LOCALE) || defined(DEBUGGING)
+# if defined(USE_LOCALE) || defined(DEBUGGING)
STATIC const char *
S_get_displayable_string(pTHX_ const char * const s, const char * const e, const bool is_utf8);
# define PERL_ARGS_ASSERT_GET_DISPLAYABLE_STRING \
@@ -7402,6 +7499,11 @@
# define PERL_ARGS_ASSERT_VOIDNONFINAL
# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE bool
+S_is_standard_filehandle_name(const char *fhname);
+# define PERL_ARGS_ASSERT_IS_STANDARD_FILEHANDLE_NAME \
+ assert(fhname)
+
PERL_STATIC_INLINE OP *
S_newMETHOP_internal(pTHX_ I32 type, I32 flags, OP *dynamic_meth, SV * const_meth);
# define PERL_ARGS_ASSERT_NEWMETHOP_INTERNAL
@@ -7644,10 +7746,10 @@
#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C)
PERL_CALLCONV GV *
-Perl_softref2xv(pTHX_ SV * const sv, const char * const what, const svtype type, SV ***spp)
+Perl_softref2xv(pTHX_ SV * const sv, const char * const what, const svtype type)
__attribute__warn_unused_result__;
# define PERL_ARGS_ASSERT_SOFTREF2XV \
- assert(sv); assert(what); assert(spp)
+ assert(sv); assert(what)
#endif
#if defined(PERL_IN_PP_C) || defined(PERL_IN_UTF8_C)
@@ -8023,12 +8125,6 @@
# define PERL_ARGS_ASSERT_GET_ANYOFM_CONTENTS \
assert(n)
-PERL_CALLCONV bool
-Perl_is_ssc_worth_it(const RExC_state_t *pRExC_state, const regnode_ssc *ssc)
- __attribute__visibility__("hidden");
-# define PERL_ARGS_ASSERT_IS_SSC_WORTH_IT \
- assert(pRExC_state); assert(ssc)
-
PERL_CALLCONV U32
Perl_join_exact(pTHX_ RExC_state_t *pRExC_state, regnode *scan, UV *min_subtract, bool *unfolded_multi_char, U32 flags, regnode *val, U32 depth)
__attribute__visibility__("hidden");
@@ -8068,12 +8164,6 @@
assert(pRExC_state); assert(node)
PERL_CALLCONV void
-Perl_ssc_finalize(pTHX_ RExC_state_t *pRExC_state, regnode_ssc *ssc)
- __attribute__visibility__("hidden");
-# define PERL_ARGS_ASSERT_SSC_FINALIZE \
- assert(pRExC_state); assert(ssc)
-
-PERL_CALLCONV void
Perl_ssc_init(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc)
__attribute__visibility__("hidden");
# define PERL_ARGS_ASSERT_SSC_INIT \
@@ -8206,6 +8296,11 @@
# define PERL_ARGS_ASSERT_HANDLE_USER_DEFINED_PROPERTY \
assert(name); assert(contents); assert(user_defined_ptr); assert(msg)
+STATIC bool
+S_is_ssc_worth_it(const RExC_state_t *pRExC_state, const regnode_ssc *ssc);
+# define PERL_ARGS_ASSERT_IS_SSC_WORTH_IT \
+ assert(pRExC_state); assert(ssc)
+
STATIC void
S_nextchar(pTHX_ RExC_state_t *pRExC_state);
# define PERL_ARGS_ASSERT_NEXTCHAR \
@@ -8330,6 +8425,11 @@
# define PERL_ARGS_ASSERT_SKIP_TO_BE_IGNORED_TEXT \
assert(pRExC_state); assert(p)
+STATIC void
+S_ssc_finalize(pTHX_ RExC_state_t *pRExC_state, regnode_ssc *ssc);
+# define PERL_ARGS_ASSERT_SSC_FINALIZE \
+ assert(pRExC_state); assert(ssc)
+
# if defined(DEBUGGING)
STATIC regnode_offset
S_regnode_guts_debug(pTHX_ RExC_state_t *pRExC_state, const U8 op, const STRLEN extra_len);
@@ -8992,7 +9092,7 @@
# define PERL_ARGS_ASSERT_UTF8_MG_POS_CACHE_UPDATE \
assert(sv); assert(mgp)
-STATIC I32
+STATIC SSize_t
S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask);
# define PERL_ARGS_ASSERT_VISIT \
assert(f)
@@ -9003,7 +9103,17 @@
# define PERL_ARGS_ASSERT_DEL_SV \
assert(p)
-# endif
+PERL_CALLCONV void
+Perl_sv_mark_arenas(pTHX)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SV_MARK_ARENAS
+
+PERL_CALLCONV void
+Perl_sv_sweep_arenas(pTHX)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SV_SWEEP_ARENAS
+
+# endif /* defined(DEBUGGING) */
# if !defined(NV_PRESERVES_UV)
# if defined(DEBUGGING)
STATIC int
@@ -9398,7 +9508,7 @@
assert(ex)
STATIC void
-S_xs_version_bootcheck(pTHX_ U32 items, U32 ax, const char *xs_p, STRLEN xs_len);
+S_xs_version_bootcheck(pTHX_ SSize_t items, SSize_t ax, const char *xs_p, STRLEN xs_len);
# define PERL_ARGS_ASSERT_XS_VERSION_BOOTCHECK \
assert(xs_p)
@@ -9460,7 +9570,7 @@
# define PERL_ARGS_ASSERT_CVGV \
assert(sv)
-PERL_STATIC_INLINE I32
+PERL_STATIC_INLINE Stack_off_t
Perl_POPMARK(pTHX);
# define PERL_ARGS_ASSERT_POPMARK
@@ -9564,7 +9674,7 @@
# define PERL_ARGS_ASSERT_SVUV_NOMG \
assert(sv)
-PERL_STATIC_INLINE I32
+PERL_STATIC_INLINE Stack_off_t
Perl_TOPMARK(pTHX);
# define PERL_ARGS_ASSERT_TOPMARK
@@ -9595,11 +9705,21 @@
# define PERL_ARGS_ASSERT_AV_PUSH_SIMPLE \
assert(av); assert(val)
+PERL_STATIC_INLINE void
+Perl_av_remove_offset(pTHX_ AV *av);
+# define PERL_ARGS_ASSERT_AV_REMOVE_OFFSET \
+ assert(av)
+
PERL_STATIC_INLINE SV **
Perl_av_store_simple(pTHX_ AV *av, SSize_t key, SV *val);
# define PERL_ARGS_ASSERT_AV_STORE_SIMPLE \
assert(av)
+PERL_STATIC_INLINE void
+Perl_clear_defarray_simple(pTHX_ AV *av);
+# define PERL_ARGS_ASSERT_CLEAR_DEFARRAY_SIMPLE \
+ assert(av)
+
PERL_STATIC_INLINE I32
Perl_foldEQ(pTHX_ const char *a, const char *b, I32 len);
# define PERL_ARGS_ASSERT_FOLDEQ \
@@ -9731,6 +9851,165 @@
__attribute__always_inline__;
# define PERL_ARGS_ASSERT_NEWSV_TYPE_MORTAL
+PERL_STATIC_INLINE void
+Perl_pop_stackinfo(pTHX);
+# define PERL_ARGS_ASSERT_POP_STACKINFO
+
+PERL_STATIC_INLINE void
+Perl_push_stackinfo(pTHX_ I32 type, UV flags);
+# define PERL_ARGS_ASSERT_PUSH_STACKINFO
+
+PERL_STATIC_INLINE void
+Perl_rpp_context(pTHX_ SV **mark, U8 gimme, SSize_t extra);
+# define PERL_ARGS_ASSERT_RPP_CONTEXT \
+ assert(mark)
+
+PERL_STATIC_INLINE void
+Perl_rpp_extend(pTHX_ SSize_t n);
+# define PERL_ARGS_ASSERT_RPP_EXTEND
+
+PERL_STATIC_INLINE void
+Perl_rpp_invoke_xs(pTHX_ CV *cv);
+# define PERL_ARGS_ASSERT_RPP_INVOKE_XS \
+ assert(cv)
+
+PERL_STATIC_INLINE bool
+Perl_rpp_is_lone(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_IS_LONE \
+ assert(sv)
+
+PERL_STATIC_INLINE SV *
+Perl_rpp_pop_1_norc(pTHX);
+# define PERL_ARGS_ASSERT_RPP_POP_1_NORC
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_1(pTHX);
+# define PERL_ARGS_ASSERT_RPP_POPFREE_1
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_1_NN(pTHX);
+# define PERL_ARGS_ASSERT_RPP_POPFREE_1_NN
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_2(pTHX);
+# define PERL_ARGS_ASSERT_RPP_POPFREE_2
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_2_NN(pTHX);
+# define PERL_ARGS_ASSERT_RPP_POPFREE_2_NN
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_to(pTHX_ SV **sp);
+# define PERL_ARGS_ASSERT_RPP_POPFREE_TO \
+ assert(sp)
+
+PERL_STATIC_INLINE void
+Perl_rpp_popfree_to_NN(pTHX_ SV **sp);
+# define PERL_ARGS_ASSERT_RPP_POPFREE_TO_NN \
+ assert(sp)
+
+PERL_STATIC_INLINE void
+Perl_rpp_push_1(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_PUSH_1 \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_push_1_norc(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_PUSH_1_NORC \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_push_2(pTHX_ SV *sv1, SV *sv2);
+# define PERL_ARGS_ASSERT_RPP_PUSH_2 \
+ assert(sv1); assert(sv2)
+
+PERL_STATIC_INLINE void
+Perl_rpp_push_IMM(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_PUSH_IMM \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_1_1(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_REPLACE_1_1 \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_1_1_NN(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_REPLACE_1_1_NN \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_1_IMM_NN(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_REPLACE_1_IMM_NN \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_2_1(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_REPLACE_2_1 \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_2_1_COMMON(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_REPLACE_2_1_COMMON \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_2_1_NN(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_REPLACE_2_1_NN \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_2_IMM_NN(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_REPLACE_2_IMM_NN \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_at(pTHX_ SV **sp, SV *sv);
+# define PERL_ARGS_ASSERT_RPP_REPLACE_AT \
+ assert(sp); assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_at_NN(pTHX_ SV **sp, SV *sv);
+# define PERL_ARGS_ASSERT_RPP_REPLACE_AT_NN \
+ assert(sp); assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_at_norc(pTHX_ SV **sp, SV *sv);
+# define PERL_ARGS_ASSERT_RPP_REPLACE_AT_NORC \
+ assert(sp); assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_replace_at_norc_NN(pTHX_ SV **sp, SV *sv);
+# define PERL_ARGS_ASSERT_RPP_REPLACE_AT_NORC_NN \
+ assert(sp); assert(sv)
+
+PERL_STATIC_INLINE bool
+Perl_rpp_stack_is_rc(pTHX);
+# define PERL_ARGS_ASSERT_RPP_STACK_IS_RC
+
+PERL_STATIC_INLINE bool
+Perl_rpp_try_AMAGIC_1(pTHX_ int method, int flags);
+# define PERL_ARGS_ASSERT_RPP_TRY_AMAGIC_1
+
+PERL_STATIC_INLINE bool
+Perl_rpp_try_AMAGIC_2(pTHX_ int method, int flags);
+# define PERL_ARGS_ASSERT_RPP_TRY_AMAGIC_2
+
+PERL_STATIC_INLINE void
+Perl_rpp_xpush_1(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_XPUSH_1 \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_rpp_xpush_2(pTHX_ SV *sv1, SV *sv2);
+# define PERL_ARGS_ASSERT_RPP_XPUSH_2 \
+ assert(sv1); assert(sv2)
+
+PERL_STATIC_INLINE void
+Perl_rpp_xpush_IMM(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_RPP_XPUSH_IMM \
+ assert(sv)
+
PERL_STATIC_INLINE char *
Perl_savepv(pTHX_ const char *pv)
__attribute__malloc__
@@ -9782,6 +10061,11 @@
# define PERL_ARGS_ASSERT_SV_SETPV_FRESHBUF \
assert(sv)
+PERL_STATIC_INLINE void
+Perl_switch_argstack(pTHX_ AV *to);
+# define PERL_ARGS_ASSERT_SWITCH_ARGSTACK \
+ assert(to)
+
PERL_STATIC_INLINE IV
Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
__attribute__warn_unused_result__;
@@ -10114,6 +10398,22 @@
# endif
#endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#if defined(PERL_RC_STACK)
+PERL_CALLCONV OP *
+Perl_pp_wrap(pTHX_ Perl_ppaddr_t real_pp_fn, I32 nargs, int nlists);
+# define PERL_ARGS_ASSERT_PP_WRAP \
+ assert(real_pp_fn)
+
+PERL_CALLCONV int
+Perl_runops_wrap(pTHX);
+# define PERL_ARGS_ASSERT_RUNOPS_WRAP
+
+PERL_CALLCONV void
+Perl_xs_wrap(pTHX_ XSUBADDR_t xsub, CV *cv);
+# define PERL_ARGS_ASSERT_XS_WRAP \
+ assert(xsub); assert(cv)
+
+#endif /* defined(PERL_RC_STACK) */
#if defined(PERL_USE_3ARG_SIGHANDLER)
PERL_CALLCONV Signal_t
Perl_csighandler(int sig, Siginfo_t *info, void *uap);
@@ -10377,6 +10677,12 @@
# endif
#endif /* defined(USE_LOCALE_COLLATE) */
+#if defined(USE_LOCALE_CTYPE)
+PERL_CALLCONV void
+Perl_warn_problematic_locale(void);
+# define PERL_ARGS_ASSERT_WARN_PROBLEMATIC_LOCALE
+
+#endif
#if defined(USE_PERLIO)
PERL_CALLCONV void
Perl_PerlIO_clearerr(pTHX_ PerlIO *f);
@@ -10485,7 +10791,7 @@
#endif /* defined(USE_PERLIO) */
#if defined(USE_PERL_SWITCH_LOCALE_CONTEXT)
PERL_CALLCONV void
-Perl_switch_locale_context(void);
+Perl_switch_locale_context(pTHX);
# define PERL_ARGS_ASSERT_SWITCH_LOCALE_CONTEXT
#endif
@@ -10503,6 +10809,16 @@
assert(format)
#endif /* defined(USE_QUADMATH) */
+#if defined(USE_THREADS)
+PERL_CALLCONV void
+Perl_thread_locale_init(pTHX);
+# define PERL_ARGS_ASSERT_THREAD_LOCALE_INIT
+
+PERL_CALLCONV void
+Perl_thread_locale_term(pTHX);
+# define PERL_ARGS_ASSERT_THREAD_LOCALE_TERM
+
+#endif
#if defined(VMS) || defined(WIN32)
PERL_CALLCONV int
Perl_do_aspawn(pTHX_ SV *really, SV **mark, SV **sp);
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/reentr.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/reentr.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/reentr.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -2,7 +2,9 @@
*
* reentr.h
*
- * Copyright (C) 2002, 2003, 2005, 2006, 2007 by Larry Wall and others
+ * Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+ * 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
+ * 2024 by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
@@ -1695,6 +1697,6 @@
#endif /* USE_REENTRANT_API */
-#endif
+#endif /* File hasn't already been #included */
/* ex: set ro ft=c: */
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/regcharclass.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/regcharclass.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/regcharclass.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -3850,7 +3850,7 @@
* 3f4f32ed2a577344a508114527e721d7a8b633d32f38945d47fe0c743650c585 lib/unicore/extracted/DLineBreak.txt
* 710abf2d581ac9c57f244c0834f9d9969d9781e0396adccd330eaae658ac7d6b lib/unicore/extracted/DNumType.txt
* 6bd30f385f3baf3ab5d5308c111a81de87bea5f494ba0ba69e8ab45263b8c34d lib/unicore/extracted/DNumValues.txt
- * f7265069b38ba9a0675a18600e241b1ec6fc8c55fd806fe4c13bc5d8cb0dc508 lib/unicore/mktables
+ * 8968a5ee00063fa31ff15474b95ccb6b9c228e3ebad6c20bc77f4225187e2023 lib/unicore/mktables
* 55d90fdc3f902e5c0b16b3378f9eaa36e970a1c09723c33de7d47d0370044012 lib/unicore/version
* 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
* acc94e4afc339fe2cf2ae74d6e1cbcf2c396328d78e56236ad314eadbfc84125 regen/regcharclass.pl
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/regcomp.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/regcomp.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/regcomp.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1554,8 +1554,20 @@
#define EVAL_OPTIMISTIC_FLAG 128
#define EVAL_FLAGS_MASK (EVAL_OPTIMISTIC_FLAG-1)
+/* We define PERL_RE_BUILD_DEBUG if we are NOT compiling the re extension and
+ * we are under DEBUGGING, or if we are ARE compiling the re extension
+ * and this is not a DEBUGGING enabled build (identified by
+ * DEBUGGING_RE_ONLY being defined)
+ */
+#if ( !defined(PERL_EXT_RE_STATIC) && defined(DEBUGGING)) || \
+ ( defined(PERL_EXT_RE_BUILD) && defined(DEBUGGING_RE_ONLY)) || \
+ (!defined(PERL_EXT_RE_BUILD) && defined(DEBUGGING))
+#define PERL_RE_BUILD_DEBUG
+#endif
+#if !defined(PERL_EXT_RE_STATIC)
+#define PERL_RE_BUILD_AUX
+#endif
-
#endif /* PERL_REGCOMP_H_ */
/*
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/regcomp_internal.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/regcomp_internal.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/regcomp_internal.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -155,7 +155,22 @@
AV *warn_text;
HV *unlexed_names;
SV *runtime_code_qr; /* qr with the runtime code blocks */
-#ifdef DEBUGGING
+ bool seen_d_op;
+ bool strict;
+ bool study_started;
+ bool in_script_run;
+ bool use_BRANCHJ;
+ bool sWARN_EXPERIMENTAL__VLB;
+ bool sWARN_EXPERIMENTAL__REGEX_SETS;
+ /* DEBUGGING only fields, keep these LAST so that we do not
+ * have any weirdness with static builds.
+ *
+ * We include these if we are building a DEBUGGING perl OR if we
+ * are not using dynamic linking (USE_DYNAMIC_LOADING).
+ *
+ * See GH Issue #21558 and also ba6e2c38aafc23cf114f3ba0d0ff3baead34328b
+ */
+#if defined(DEBUGGING) || !defined(USE_DYNAMIC_LOADING)
const char *lastparse;
I32 lastnum;
U32 study_chunk_recursed_count;
@@ -163,13 +178,6 @@
SV *mysv1;
SV *mysv2;
#endif
- bool seen_d_op;
- bool strict;
- bool study_started;
- bool in_script_run;
- bool use_BRANCHJ;
- bool sWARN_EXPERIMENTAL__VLB;
- bool sWARN_EXPERIMENTAL__REGEX_SETS;
};
#ifdef DEBUGGING
@@ -886,7 +894,6 @@
const char *ellipses = ""; \
IV len = RExC_precomp_end - RExC_precomp; \
\
- PREPARE_TO_DIE; \
if (len > RegexLengthToShowInErrorMessages) { \
/* chop 10 shorter than the max, to ensure meaning of "..." */ \
len = RegexLengthToShowInErrorMessages - 10; \
@@ -919,7 +926,6 @@
* Calls SAVEDESTRUCTOR_X if needed, then Simple_vFAIL()
*/
#define vFAIL(m) STMT_START { \
- PREPARE_TO_DIE; \
Simple_vFAIL(m); \
} STMT_END
@@ -935,7 +941,6 @@
* Calls SAVEDESTRUCTOR_X if needed, then Simple_vFAIL2().
*/
#define vFAIL2(m,a1) STMT_START { \
- PREPARE_TO_DIE; \
Simple_vFAIL2(m, a1); \
} STMT_END
@@ -952,7 +957,6 @@
* Calls SAVEDESTRUCTOR_X if needed, then Simple_vFAIL3().
*/
#define vFAIL3(m,a1,a2) STMT_START { \
- PREPARE_TO_DIE; \
Simple_vFAIL3(m, a1, a2); \
} STMT_END
@@ -965,19 +969,16 @@
} STMT_END
#define vFAIL4(m,a1,a2,a3) STMT_START { \
- PREPARE_TO_DIE; \
Simple_vFAIL4(m, a1, a2, a3); \
} STMT_END
/* A specialized version of vFAIL2 that works with UTF8f */
#define vFAIL2utf8f(m, a1) STMT_START { \
- PREPARE_TO_DIE; \
S_re_croak(aTHX_ UTF, m REPORT_LOCATION, a1, \
REPORT_LOCATION_ARGS(RExC_parse)); \
} STMT_END
#define vFAIL3utf8f(m, a1, a2) STMT_START { \
- PREPARE_TO_DIE; \
S_re_croak(aTHX_ UTF, m REPORT_LOCATION, a1, a2, \
REPORT_LOCATION_ARGS(RExC_parse)); \
} STMT_END
@@ -1018,8 +1019,6 @@
__FILE__, __LINE__, loc); \
} \
if (TO_OUTPUT_WARNINGS(loc)) { \
- if (ckDEAD(warns)) \
- PREPARE_TO_DIE; \
code; \
UPDATE_WARNINGS_LOC(loc); \
} \
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/regexp.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/regexp.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/regexp.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -130,8 +130,19 @@
regexp's data array based on the data item's type.
*/
+/* NOTE: There is a copy of this struct in the documentation in perlreapi.pod
+ * if you make ANY changes please make sure they are ALSO made there.
+ */
typedef struct regexp {
+ /*----------------------------------------------------------------------
+ * Fields required for compatibility with SV types
+ */
_XPV_HEAD;
+
+ /*----------------------------------------------------------------------
+ * Operational fields
+ */
+
const struct regexp_engine* engine; /* what engine created this regexp? */
REGEXP *mother_re; /* what re is this a lightweight copy of? */
HV *paren_names; /* Optional hash of paren names */
@@ -149,7 +160,6 @@
I32 *parno_to_logical_next; /* map every physical parno to the next
physical with the same logical id */
- U32 extflags; /* Flags used both externally and internally */
SSize_t maxlen; /* maximum possible number of chars in string to match */
SSize_t minlen; /* minimum possible number of chars in string to match */
SSize_t minlenret; /* minimum possible number of chars in $& */
@@ -163,6 +173,8 @@
void *pprivate; /* Data private to the regex engine which
* created this object. */
+
+ U32 extflags; /* Flags used both externally and internally */
U32 intflags; /* Engine Specific Internal flags */
/*----------------------------------------------------------------------
@@ -170,11 +182,10 @@
*/
U32 lastparen; /* highest close paren matched ($+) */
+ U32 lastcloseparen; /* last close paren matched ($^N) */
regexp_paren_pair *offs; /* Array of offsets for (@-) and (@+) */
char **recurse_locinput; /* used to detect infinite recursion, XXX: move to internal */
- U32 lastcloseparen; /* last close paren matched ($^N) */
-
/*---------------------------------------------------------------------- */
/* offset from wrapped to the start of precomp */
@@ -192,9 +203,10 @@
SSize_t suboffset; /* byte offset of subbeg from logical start of str */
SSize_t subcoffset; /* suboffset equiv, but in chars (for @-/@+) */
- /*---------------------------------------------------------------------- */
+ /*----------------------------------------------------------------------
+ * More Operational fields
+ */
-
CV *qr_anoncv; /* the anon sub wrapped round qr/(?{..})/ */
} regexp;
@@ -210,10 +222,52 @@
#define RXp_OFFS_VALID(rx,n) \
(RXp_OFFSp(rx)[(n)].end != -1 && RXp_OFFSp(rx)[(n)].start != -1 )
+
#define RX_OFFS_START(rx_sv,n) RXp_OFFS_START(ReANY(rx_sv),n)
#define RX_OFFS_END(rx_sv,n) RXp_OFFS_END(ReANY(rx_sv),n)
#define RX_OFFS_VALID(rx_sv,n) RXp_OFFS_VALID(ReANY(rx_sv),n)
+/*
+
+=for apidoc mh||RX_OFFSp|const REGEXP * rx_sv
+Returns the RX_OFFS structure as a pointer. This should NOT be used
+directly, and the structure it returns may change in future versions of
+perl. Use one of the other RX_OFFS_xxx macros instead, which should be
+stable as Perl evolves. The 'p' suffix on the macro is meant to indicate
+both that the macro is "private" to the internals, and that it returns
+a pointer.
+
+=for apidoc Amh||RX_OFFS_START|const REGEXP * rx_sv|U32 n
+Returns the start offset of the C<n>'th capture buffer, when
+C<n> is 0 it refers to the overall match as a whole. A value of
+-1 is returned if the C<n>'th capture buffer did not match.
+
+=for apidoc Amh||RXp_OFFS_START|const regexp * rx|U32 n
+Same as RX_OFFS_START() but operates on a C<struct regexp *> instead of
+an C<SV *>.
+
+=for apidoc Amh||RX_OFFS_END|const REGEXP * rx_sv|U32 n
+Returns the end offset of the C<n>'th capture buffer, when C<n> is 0 it
+refers to the overall match as a whole. A value of
+-1 is returned if the C<n>'th capture buffer did not match.
+
+=for apidoc Amh||RXp_OFFS_END|const regexp * rx|U32 n
+Same as RX_OFFS_END() but operates on a C<struct regexp *> instead of
+an C<SV *>.
+
+=for apidoc Amh||RX_OFFS_VALID|const REGEXP * rx_sv|U32 n
+Returns true if the C<n>'th offset buffer matched, false otherwise, when
+C<n> is 0 it refers to the overall match as a whole which should always
+return true.
+
+=for apidoc Amh||RXp_OFFS_VALID|const regexp * rx|U32 n
+Same as RX_OFFS_VLAID() but operates on a C<struct regexp *> instead of
+an C<SV *>.
+
+=cut
+
+*/
+
/* used for high speed searches */
typedef struct re_scream_pos_data_s
{
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/scope.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/scope.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/scope.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -256,13 +256,14 @@
/*
=for apidoc_section $stack
=for apidoc Am|SSize_t|SSNEW |Size_t size
-=for apidoc_item | |SSNEWa |Size_t_size|Size_t align
-=for apidoc_item | |SSNEWat|Size_t_size|type|Size_t align
+=for apidoc_item | |SSNEWa |Size_t size|Size_t align
+=for apidoc_item | |SSNEWat|Size_t size|type|Size_t align
=for apidoc_item | |SSNEWt |Size_t size|type
-These temporarily allocates data on the savestack, returning an SSize_t index into
-the savestack, because a pointer would get broken if the savestack is moved on
-reallocation. Use L</C<SSPTR>> to convert the returned index into a pointer.
+These each temporarily allocate data on the savestack, returning an SSize_t
+index into the savestack, because a pointer would get broken if the savestack
+is moved on reallocation. Use L</C<SSPTR>> to convert the returned index into
+a pointer.
The forms differ in that plain C<SSNEW> allocates C<size> bytes;
C<SSNEWt> and C<SSNEWat> allocate C<size> objects, each of which is type
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/sv.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/sv.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/sv.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -2415,7 +2415,17 @@
#ifdef DEBUGGING
/* exercise the immortal resurrection code in sv_free2() */
-# define SvREFCNT_IMMORTAL 1000
+# ifdef PERL_RC_STACK
+ /* When the stack is ref-counted, the code tends to take a lot of
+ * short cuts with immortals, such as skipping the bump of the ref
+ * count of PL_sv_undef when pushing it on the stack. Exercise that
+ * this doesn't cause problems, especially on code which
+ * special-cases RC==1 etc.
+ */
+# define SvREFCNT_IMMORTAL 10
+# else
+# define SvREFCNT_IMMORTAL 1000
+# endif
#else
# define SvREFCNT_IMMORTAL ((~(U32)0)/2)
#endif
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/sv_inline.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/sv_inline.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/sv_inline.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -230,12 +230,25 @@
SVt_PVIV, FALSE, NONV, HASARENA,
FIT_ARENA(0, sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur)) },
+#if NVSIZE > 8 && PTRSIZE < 8 && MEM_ALIGNBYTES > 8
+ /* NV may need strict 16 byte alignment.
+
+ On 64-bit systems the NV ends up aligned despite the hack
+ avoiding allocation of xmg_stash and xmg_u, so only do this
+ for 32-bit systems.
+ */
+ { sizeof(XPVNV),
+ sizeof(XPVNV),
+ 0,
+ SVt_PVNV, FALSE, HADNV, HASARENA,
+ FIT_ARENA(0, sizeof(XPVNV)) },
+#else
{ sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur),
copy_length(XPVNV, xnv_u) - STRUCT_OFFSET(XPV, xpv_cur),
+ STRUCT_OFFSET(XPV, xpv_cur),
SVt_PVNV, FALSE, HADNV, HASARENA,
FIT_ARENA(0, sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur)) },
-
+#endif
{ sizeof(XPVMG), copy_length(XPVMG, xnv_u), 0, SVt_PVMG, FALSE, HADNV,
HASARENA, FIT_ARENA(0, sizeof(XPVMG)) },
@@ -567,6 +580,8 @@
{
PERL_ARGS_ASSERT_SVPVXTRUE;
+ PERL_UNUSED_CONTEXT;
+
if (! (XPV *) SvANY(sv)) {
return false;
}
@@ -850,7 +865,7 @@
Perl_SvUV_nomg(pTHX_ SV *sv) {
PERL_ARGS_ASSERT_SVUV_NOMG;
- if (SvIOK_nog(sv))
+ if (SvUOK(sv))
return SvUVX(sv);
return sv_2uv_flags(sv, 0);
}
@@ -859,7 +874,7 @@
Perl_SvNV_nomg(pTHX_ SV *sv) {
PERL_ARGS_ASSERT_SVNV_NOMG;
- if (SvNOK_nog(sv))
+ if (SvNOK(sv))
return SvNVX(sv);
return sv_2nv_flags(sv, 0);
}
@@ -992,7 +1007,9 @@
assert(SvPVX(sv));
SvCUR_set(sv, 0);
*(SvEND(sv))= '\0';
- (void)SvPOK_only_UTF8(sv);
+ (void)SvPOK_only_UTF8(sv); /* UTF-8 flag will be 0; This is used instead
+ of 'SvPOK_only' because the other sv_setpv
+ functions use it */
SvTAINT(sv);
return SvPVX(sv);
}
Deleted: trunk/Master/tlpkg/tlperl/lib/CORE/uconfig.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/uconfig.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/uconfig.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,5387 +0,0 @@
-/* This file was produced by running the config_h.SH script, which
- * gets its values from uconfig.sh, which is generally produced by
- * running Configure.
- *
- * Feel free to modify any of this as the need arises. Note, however,
- * that running config_h.SH again will wipe out any changes you've made.
- * For a more permanent change edit uconfig.sh and rerun config_h.SH.
- */
-
-/* Package name : perl5
- * Source directory : .
- * Configuration time: Thu Jan 1 00:00:00 GMT 1970
- * Configured by : root at localhost
- * Target system : unknown
- */
-
-#ifndef _config_h_
-#define _config_h_
-
-/* LOC_SED:
- * This symbol holds the complete pathname to the sed program.
- */
-#define LOC_SED "" /**/
-
-/* HAS_ALARM:
- * This symbol, if defined, indicates that the alarm routine is
- * available.
- */
-/*#define HAS_ALARM / **/
-
-/* HAS_CBRT:
- * This symbol, if defined, indicates that the cbrt() (cube root)
- * function is available.
- */
-/*#define HAS_CBRT / **/
-
-/* HAS_CHOWN:
- * This symbol, if defined, indicates that the chown routine is
- * available.
- */
-/*#define HAS_CHOWN / **/
-
-/* HAS_CHROOT:
- * This symbol, if defined, indicates that the chroot routine is
- * available.
- */
-/*#define HAS_CHROOT / **/
-
-/* HAS_CHSIZE:
- * This symbol, if defined, indicates that the chsize routine is available
- * to truncate files. You might need a -lx to get this routine.
- */
-/*#define HAS_CHSIZE / **/
-
-/* HAS_CRYPT:
- * This symbol, if defined, indicates that the crypt routine is available
- * to encrypt passwords and the like.
- */
-/*#define HAS_CRYPT / **/
-
-/* HAS_CTERMID:
- * This symbol, if defined, indicates that the ctermid routine is
- * available to generate filename for terminal.
- */
-/*#define HAS_CTERMID / **/
-
-/* HAS_CUSERID:
- * This symbol, if defined, indicates that the cuserid routine is
- * available to get character login names.
- */
-/*#define HAS_CUSERID / **/
-
-/* HAS_DIFFTIME:
- * This symbol, if defined, indicates that the difftime routine is
- * available.
- */
-/*#define HAS_DIFFTIME / **/
-
-/* HAS_DLERROR:
- * This symbol, if defined, indicates that the dlerror routine is
- * available to return a string describing the last error that
- * occurred from a call to dlopen(), dlclose() or dlsym().
- */
-/*#define HAS_DLERROR / **/
-
-/* HAS_DUP2:
- * This symbol, if defined, indicates that the dup2 routine is
- * available to duplicate file descriptors.
- */
-/*#define HAS_DUP2 / **/
-
-/* HAS_FCHMOD:
- * This symbol, if defined, indicates that the fchmod routine is available
- * to change mode of opened files. If unavailable, use chmod().
- */
-/*#define HAS_FCHMOD / **/
-
-/* HAS_FCHOWN:
- * This symbol, if defined, indicates that the fchown routine is available
- * to change ownership of opened files. If unavailable, use chown().
- */
-/*#define HAS_FCHOWN / **/
-
-/* HAS_FCNTL:
- * This symbol, if defined, indicates to the C program that
- * the fcntl() function exists.
- */
-/*#define HAS_FCNTL / **/
-
-/* HAS_FGETPOS:
- * This symbol, if defined, indicates that the fgetpos routine is
- * available to get the file position indicator, similar to ftell().
- */
-/*#define HAS_FGETPOS / **/
-
-/* HAS_FLOCK:
- * This symbol, if defined, indicates that the flock routine is
- * available to do file locking.
- */
-/*#define HAS_FLOCK / **/
-
-/* HAS_FORK:
- * This symbol, if defined, indicates that the fork routine is
- * available.
- */
-#define HAS_FORK /**/
-
-/* HAS_FSETPOS:
- * This symbol, if defined, indicates that the fsetpos routine is
- * available to set the file position indicator, similar to fseek().
- */
-/*#define HAS_FSETPOS / **/
-
-/* HAS_GETTIMEOFDAY:
- * This symbol, if defined, indicates that the gettimeofday() system
- * call is available for a sub-second accuracy clock. Usually, the file
- * <sys/resource.h> needs to be included (see I_SYS_RESOURCE).
- * The type "Timeval" should be used to refer to "struct timeval".
- */
-/*#define HAS_GETTIMEOFDAY / **/
-#ifdef HAS_GETTIMEOFDAY
-#define Timeval struct timeval /* Structure used by gettimeofday() */
-#endif
-
-/* HAS_GETGROUPS:
- * This symbol, if defined, indicates that the getgroups() routine is
- * available to get the list of process groups. If unavailable, multiple
- * groups are probably not supported.
- */
-/*#define HAS_GETGROUPS / **/
-
-/* HAS_GETLOGIN:
- * This symbol, if defined, indicates that the getlogin routine is
- * available to get the login name.
- */
-/*#define HAS_GETLOGIN / **/
-
-/* HAS_GETPGID:
- * This symbol, if defined, indicates to the C program that
- * the getpgid(pid) function is available to get the
- * process group id.
- */
-/*#define HAS_GETPGID / **/
-
-/* HAS_GETPGRP2:
- * This symbol, if defined, indicates that the getpgrp2() (as in DG/UX)
- * routine is available to get the current process group.
- */
-/*#define HAS_GETPGRP2 / **/
-
-/* HAS_GETPPID:
- * This symbol, if defined, indicates that the getppid routine is
- * available to get the parent process ID.
- */
-/*#define HAS_GETPPID / **/
-
-/* HAS_GETPRIORITY:
- * This symbol, if defined, indicates that the getpriority routine is
- * available to get a process's priority.
- */
-/*#define HAS_GETPRIORITY / **/
-
-/* HAS_INET_ATON:
- * This symbol, if defined, indicates to the C program that the
- * inet_aton() function is available to parse IP address "dotted-quad"
- * strings.
- */
-/*#define HAS_INET_ATON / **/
-
-/* HAS_KILLPG:
- * This symbol, if defined, indicates that the killpg routine is available
- * to kill process groups. If unavailable, you probably should use kill
- * with a negative process number.
- */
-/*#define HAS_KILLPG / **/
-
-/* HAS_LINK:
- * This symbol, if defined, indicates that the link routine is
- * available to create hard links.
- */
-/*#define HAS_LINK / **/
-
-/* HAS_LOCALECONV:
- * This symbol, if defined, indicates that the localeconv routine is
- * available for numeric and monetary formatting conventions.
- */
-/*#define HAS_LOCALECONV / **/
-
-/* HAS_LOCKF:
- * This symbol, if defined, indicates that the lockf routine is
- * available to do file locking.
- */
-/*#define HAS_LOCKF / **/
-
-/* HAS_LSTAT:
- * This symbol, if defined, indicates that the lstat routine is
- * available to do file stats on symbolic links.
- */
-/*#define HAS_LSTAT / **/
-
-/* HAS_MBLEN:
- * This symbol, if defined, indicates that the mblen routine is available
- * to find the number of bytes in a multibyte character.
- */
-/*#define HAS_MBLEN / **/
-
-/* HAS_MBSTOWCS:
- * This symbol, if defined, indicates that the mbstowcs routine is
- * available to convert a multibyte string into a wide character string.
- */
-/*#define HAS_MBSTOWCS / **/
-
-/* HAS_MBTOWC:
- * This symbol, if defined, indicates that the mbtowc routine is available
- * to convert a multibyte to a wide character.
- */
-/*#define HAS_MBTOWC / **/
-
-/* HAS_MKDIR:
- * This symbol, if defined, indicates that the mkdir routine is available
- * to create directories. Otherwise you should fork off a new process to
- * exec /bin/mkdir.
- */
-/*#define HAS_MKDIR / **/
-
-/* HAS_MKFIFO:
- * This symbol, if defined, indicates that the mkfifo routine is
- * available to create FIFOs. Otherwise, mknod should be able to
- * do it for you. However, if mkfifo is there, mknod might require
- * super-user privileges which mkfifo will not.
- */
-/*#define HAS_MKFIFO / **/
-
-/* HAS_MKTIME:
- * This symbol, if defined, indicates that the mktime routine is
- * available.
- */
-/*#define HAS_MKTIME / **/
-
-/* HAS_MSG:
- * This symbol, if defined, indicates that the entire msg*(2) library is
- * supported (IPC mechanism based on message queues).
- */
-/*#define HAS_MSG / **/
-
-/* HAS_MSYNC:
- * This symbol, if defined, indicates that the msync system call is
- * available to synchronize a mapped file.
- */
-/*#define HAS_MSYNC / **/
-
-/* HAS_MUNMAP:
- * This symbol, if defined, indicates that the munmap system call is
- * available to unmap a region, usually mapped by mmap().
- */
-/*#define HAS_MUNMAP / **/
-
-/* HAS_NICE:
- * This symbol, if defined, indicates that the nice routine is
- * available.
- */
-/*#define HAS_NICE / **/
-
-/* HAS_PATHCONF:
- * This symbol, if defined, indicates that pathconf() is available
- * to determine file-system related limits and options associated
- * with a given filename.
- */
-/* HAS_FPATHCONF:
- * This symbol, if defined, indicates that pathconf() is available
- * to determine file-system related limits and options associated
- * with a given open file descriptor.
- */
-/*#define HAS_PATHCONF / **/
-/*#define HAS_FPATHCONF / **/
-
-/* HAS_PAUSE:
- * This symbol, if defined, indicates that the pause routine is
- * available to suspend a process until a signal is received.
- */
-/*#define HAS_PAUSE / **/
-
-/* HAS_PIPE:
- * This symbol, if defined, indicates that the pipe routine is
- * available to create an inter-process channel.
- */
-/*#define HAS_PIPE / **/
-
-/* HAS_POLL:
- * This symbol, if defined, indicates that the poll routine is
- * available to poll active file descriptors. Please check I_POLL and
- * I_SYS_POLL to know which header should be included as well.
- */
-/*#define HAS_POLL / **/
-
-/* HAS_READDIR:
- * This symbol, if defined, indicates that the readdir routine is
- * available to read directory entries. You may have to include
- * <dirent.h>. See I_DIRENT.
- */
-#define HAS_READDIR /**/
-
-/* HAS_SEEKDIR:
- * This symbol, if defined, indicates that the seekdir routine is
- * available. You may have to include <dirent.h>. See I_DIRENT.
- */
-/*#define HAS_SEEKDIR / **/
-
-/* HAS_TELLDIR:
- * This symbol, if defined, indicates that the telldir routine is
- * available. You may have to include <dirent.h>. See I_DIRENT.
- */
-/*#define HAS_TELLDIR / **/
-
-/* HAS_REWINDDIR:
- * This symbol, if defined, indicates that the rewinddir routine is
- * available. You may have to include <dirent.h>. See I_DIRENT.
- */
-/*#define HAS_REWINDDIR / **/
-
-/* HAS_READLINK:
- * This symbol, if defined, indicates that the readlink routine is
- * available to read the value of a symbolic link.
- */
-/*#define HAS_READLINK / **/
-
-/* HAS_REGCOMP:
- * This symbol, if defined, indicates that the regcomp() routine is
- * available to do some regular pattern matching (usually on POSIX.2
- * conforming systems).
- */
-#define HAS_REGCOMP /* POSIX.2 */
-
-/* HAS_RENAME:
- * This symbol, if defined, indicates that the rename routine is available
- * to rename files. Otherwise you should do the unlink(), link(), unlink()
- * trick.
- */
-#define HAS_RENAME /**/
-
-/* HAS_RMDIR:
- * This symbol, if defined, indicates that the rmdir routine is
- * available to remove directories. Otherwise you should fork off a
- * new process to exec /bin/rmdir.
- */
-/*#define HAS_RMDIR / **/
-
-/* HAS_SELECT:
- * This symbol, if defined, indicates that the select routine is
- * available to select active file descriptors. If the timeout field
- * is used, <sys/time.h> may need to be included.
- */
-/*#define HAS_SELECT / **/
-
-/* HAS_SEM:
- * This symbol, if defined, indicates that the entire sem*(2) library is
- * supported.
- */
-/*#define HAS_SEM / **/
-
-/* HAS_SETEGID:
- * This symbol, if defined, indicates that the setegid routine is available
- * to change the effective gid of the current program.
- */
-/*#define HAS_SETEGID / **/
-
-/* HAS_SETEUID:
- * This symbol, if defined, indicates that the seteuid routine is available
- * to change the effective uid of the current program.
- */
-/*#define HAS_SETEUID / **/
-
-/* HAS_SETGROUPS:
- * This symbol, if defined, indicates that the setgroups() routine is
- * available to set the list of process groups. If unavailable, multiple
- * groups are probably not supported.
- */
-/*#define HAS_SETGROUPS / **/
-
-/* HAS_SETLINEBUF:
- * This symbol, if defined, indicates that the setlinebuf routine is
- * available to change stderr or stdout from block-buffered or unbuffered
- * to a line-buffered mode.
- */
-/*#define HAS_SETLINEBUF / **/
-
-/* HAS_SETPGID:
- * This symbol, if defined, indicates that the setpgid(pid, gpid)
- * routine is available to set process group ID.
- */
-/*#define HAS_SETPGID / **/
-
-/* HAS_SETPGRP2:
- * This symbol, if defined, indicates that the setpgrp2() (as in DG/UX)
- * routine is available to set the current process group.
- */
-/*#define HAS_SETPGRP2 / **/
-
-/* HAS_SETPRIORITY:
- * This symbol, if defined, indicates that the setpriority routine is
- * available to set a process's priority.
- */
-/*#define HAS_SETPRIORITY / **/
-
-/* HAS_SETREGID:
- * This symbol, if defined, indicates that the setregid routine is
- * available to change the real and effective gid of the current
- * process.
- */
-/* HAS_SETRESGID:
- * This symbol, if defined, indicates that the setresgid routine is
- * available to change the real, effective and saved gid of the current
- * process.
- */
-/*#define HAS_SETREGID / **/
-/*#define HAS_SETRESGID / **/
-
-/* HAS_SETREUID:
- * This symbol, if defined, indicates that the setreuid routine is
- * available to change the real and effective uid of the current
- * process.
- */
-/* HAS_SETRESUID:
- * This symbol, if defined, indicates that the setresuid routine is
- * available to change the real, effective and saved uid of the current
- * process.
- */
-/*#define HAS_SETREUID / **/
-/*#define HAS_SETRESUID / **/
-
-/* HAS_SETRGID:
- * This symbol, if defined, indicates that the setrgid routine is available
- * to change the real gid of the current program.
- */
-/*#define HAS_SETRGID / **/
-
-/* HAS_SETRUID:
- * This symbol, if defined, indicates that the setruid routine is available
- * to change the real uid of the current program.
- */
-/*#define HAS_SETRUID / **/
-
-/* HAS_SETSID:
- * This symbol, if defined, indicates that the setsid routine is
- * available to set the process group ID.
- */
-/*#define HAS_SETSID / **/
-
-/* HAS_STAT:
- * This symbol, if defined, indicates that the stat routine is
- * available to get file status.
- */
-#define HAS_STAT /**/
-
-/* HAS_STRCOLL:
- * This symbol, if defined, indicates that the strcoll routine is
- * available to compare strings using collating information.
- */
-/*#define HAS_STRCOLL / **/
-
-/* HAS_STRTOD:
- * This symbol, if defined, indicates that the strtod routine is
- * available to provide better numeric string conversion than atof().
- */
-/*#define HAS_STRTOD / **/
-
-/* HAS_STRTOL:
- * This symbol, if defined, indicates that the strtol routine is available
- * to provide better numeric string conversion than atoi() and friends.
- */
-#define HAS_STRTOL /**/
-
-/* HAS_STRXFRM:
- * This symbol, if defined, indicates that the strxfrm() routine is
- * available to transform strings.
- */
-/*#define HAS_STRXFRM / **/
-
-/* HAS_SYMLINK:
- * This symbol, if defined, indicates that the symlink routine is available
- * to create symbolic links.
- */
-/*#define HAS_SYMLINK / **/
-
-/* HAS_SYSCALL:
- * This symbol, if defined, indicates that the syscall routine is
- * available to call arbitrary system calls. If undefined, that's tough.
- */
-/*#define HAS_SYSCALL / **/
-
-/* HAS_SYSCONF:
- * This symbol, if defined, indicates that sysconf() is available
- * to determine system related limits and options.
- */
-/*#define HAS_SYSCONF / **/
-
-/* HAS_SYSTEM:
- * This symbol, if defined, indicates that the system routine is
- * available to issue a shell command.
- */
-/*#define HAS_SYSTEM / **/
-
-/* HAS_TCGETPGRP:
- * This symbol, if defined, indicates that the tcgetpgrp routine is
- * available to get foreground process group ID.
- */
-/*#define HAS_TCGETPGRP / **/
-
-/* HAS_TCSETPGRP:
- * This symbol, if defined, indicates that the tcsetpgrp routine is
- * available to set foreground process group ID.
- */
-/*#define HAS_TCSETPGRP / **/
-
-/* HAS_TRUNCATE:
- * This symbol, if defined, indicates that the truncate routine is
- * available to truncate files.
- */
-/*#define HAS_TRUNCATE / **/
-
-/* HAS_TZNAME:
- * This symbol, if defined, indicates that the tzname[] array is
- * available to access timezone names.
- */
-/*#define HAS_TZNAME / **/
-
-/* HAS_UMASK:
- * This symbol, if defined, indicates that the umask routine is
- * available to set and get the value of the file creation mask.
- */
-/*#define HAS_UMASK / **/
-
-/* HAS_USLEEP:
- * This symbol, if defined, indicates that the usleep routine is
- * available to let the process sleep on a sub-second accuracy.
- */
-/*#define HAS_USLEEP / **/
-
-/* HAS_WAIT4:
- * This symbol, if defined, indicates that wait4() exists.
- */
-/*#define HAS_WAIT4 / **/
-
-/* HAS_WAITPID:
- * This symbol, if defined, indicates that the waitpid routine is
- * available to wait for child process.
- */
-/*#define HAS_WAITPID / **/
-
-/* HAS_WCSTOMBS:
- * This symbol, if defined, indicates that the wcstombs routine is
- * available to convert wide character strings to multibyte strings.
- */
-/*#define HAS_WCSTOMBS / **/
-
-/* HAS_WCTOMB:
- * This symbol, if defined, indicates that the wctomb routine is available
- * to convert a wide character to a multibyte.
- */
-/*#define HAS_WCTOMB / **/
-
-/* Groups_t:
- * This symbol holds the type used for the second argument to
- * getgroups() and setgroups(). Usually, this is the same as
- * gidtype (gid_t) , but sometimes it isn't.
- * It can be int, ushort, gid_t, etc...
- * It may be necessary to include <sys/types.h> to get any
- * typedef'ed information. This is only required if you have
- * getgroups() or setgroups()..
- */
-#if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS)
-#define Groups_t int /* Type for 2nd arg to [sg]etgroups() */
-#endif
-
-/* I_ARPA_INET:
- * This symbol, if defined, indicates to the C program that it should
- * include <arpa/inet.h> to get inet_addr and friends declarations.
- */
-/*#define I_ARPA_INET / **/
-
-/* I_DBM:
- * This symbol, if defined, indicates that <dbm.h> exists and should
- * be included.
- */
-/* I_RPCSVC_DBM:
- * This symbol, if defined, indicates that <rpcsvc/dbm.h> exists and
- * should be included.
- */
-/*#define I_DBM / **/
-/*#define I_RPCSVC_DBM / **/
-
-/* I_DLFCN:
- * This symbol, if defined, indicates that <dlfcn.h> exists and should
- * be included.
- */
-/*#define I_DLFCN / **/
-
-/* I_FCNTL:
- * This manifest constant tells the C program to include <fcntl.h>.
- */
-/*#define I_FCNTL / **/
-
-/* I_GDBM:
- * This symbol, if defined, indicates that <gdbm.h> exists and should
- * be included.
- */
-/*#define I_GDBM / **/
-
-/* I_LOCALE:
- * This symbol, if defined, indicates to the C program that it should
- * include <locale.h>.
- */
-/*#define I_LOCALE / **/
-
-/* I_NETINET_IN:
- * This symbol, if defined, indicates to the C program that it should
- * include <netinet/in.h>. Otherwise, you may try <sys/in.h>.
- */
-/*#define I_NETINET_IN / **/
-
-/* I_SYS_DIR:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/dir.h>.
- */
-/*#define I_SYS_DIR / **/
-
-/* I_SYS_FILE:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/file.h> to get definition of R_OK and friends.
- */
-/*#define I_SYS_FILE / **/
-
-/* I_SYS_IOCTL:
- * This symbol, if defined, indicates that <sys/ioctl.h> exists and should
- * be included. Otherwise, include <sgtty.h> or <termio.h>.
- */
-/* I_SYS_SOCKIO:
- * This symbol, if defined, indicates the <sys/sockio.h> should be included
- * to get socket ioctl options, like SIOCATMARK.
- */
-/*#define I_SYS_IOCTL / **/
-/*#define I_SYS_SOCKIO / **/
-
-/* I_SYS_NDIR:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/ndir.h>.
- */
-/*#define I_SYS_NDIR / **/
-
-/* I_SYS_PARAM:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/param.h>.
- */
-/*#define I_SYS_PARAM / **/
-
-/* I_SYS_POLL:
- * This symbol, if defined, indicates that the program may include
- * <sys/poll.h>. When I_POLL is also defined, it's probably safest
- * to only include <poll.h>.
- */
-/*#define I_SYS_POLL / **/
-
-/* I_SYS_RESOURCE:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/resource.h>.
- */
-/*#define I_SYS_RESOURCE / **/
-
-/* I_SYS_SELECT:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/select.h> in order to get definition of struct timeval.
- */
-/*#define I_SYS_SELECT / **/
-
-/* I_SYS_STAT:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/stat.h>.
- */
-#define I_SYS_STAT /**/
-
-/* I_SYS_TIMES:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/times.h>.
- */
-/*#define I_SYS_TIMES / **/
-
-/* I_SYS_TYPES:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/types.h>.
- */
-/*#define I_SYS_TYPES / **/
-
-/* I_SYS_UN:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/un.h> to get UNIX domain socket definitions.
- */
-/*#define I_SYS_UN / **/
-
-/* I_SYS_WAIT:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/wait.h>.
- */
-/*#define I_SYS_WAIT / **/
-
-/* I_UNISTD:
- * This symbol, if defined, indicates to the C program that it should
- * include <unistd.h>.
- */
-/*#define I_UNISTD / **/
-
-/* I_UTIME:
- * This symbol, if defined, indicates to the C program that it should
- * include <utime.h>.
- */
-/*#define I_UTIME / **/
-
-/* I_VFORK:
- * This symbol, if defined, indicates to the C program that it should
- * include vfork.h.
- */
-/*#define I_VFORK / **/
-
-/* STDCHAR:
- * This symbol is defined to be the type of char used in stdio.h.
- * It has the values "unsigned char" or "char".
- */
-#define STDCHAR char /**/
-
-/* INTSIZE:
- * This symbol contains the value of sizeof(int) so that the C
- * preprocessor can make decisions based on it.
- */
-/* LONGSIZE:
- * This symbol contains the value of sizeof(long) so that the C
- * preprocessor can make decisions based on it.
- */
-/* SHORTSIZE:
- * This symbol contains the value of sizeof(short) so that the C
- * preprocessor can make decisions based on it.
- */
-#define INTSIZE 4 /**/
-#define LONGSIZE 4 /**/
-#define SHORTSIZE 2 /**/
-
-/* MULTIARCH:
- * This symbol, if defined, signifies that the build
- * process will produce some binary files that are going to be
- * used in a cross-platform environment. This is the case for
- * example with the NeXT "fat" binaries that contain executables
- * for several CPUs.
- */
-/*#define MULTIARCH / **/
-
-/* HAS_QUAD:
- * This symbol, if defined, tells that there's a 64-bit integer type,
- * Quad_t, and its unsigned counterpart, Uquad_t. QUADKIND will be one
- * of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, QUAD_IS_INT64_T,
- * or QUAD_IS___INT64.
- */
-/*#define HAS_QUAD / **/
-#ifdef HAS_QUAD
-# define Quad_t int64_t /**/
-# define Uquad_t uint64_t /**/
-# define QUADKIND 4 /**/
-# define QUAD_IS_INT 1
-# define QUAD_IS_LONG 2
-# define QUAD_IS_LONG_LONG 3
-# define QUAD_IS_INT64_T 4
-# define QUAD_IS___INT64 5
-#endif
-
-/* HAS_ACCESSX:
- * This symbol, if defined, indicates that the accessx routine is
- * available to do extended access checks.
- */
-/*#define HAS_ACCESSX / **/
-
-/* HAS_EACCESS:
- * This symbol, if defined, indicates that the eaccess routine is
- * available to do extended access checks.
- */
-/*#define HAS_EACCESS / **/
-
-/* I_SYS_ACCESS:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/access.h>.
- */
-/*#define I_SYS_ACCESS / **/
-
-/* I_SYS_SECURITY:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/security.h>.
- */
-/*#define I_SYS_SECURITY / **/
-
-/* MEM_ALIGNBYTES:
- * This symbol contains the number of bytes required to align a
- * double, or a long double when applicable. Usual values are 2,
- * 4 and 8. The default is eight, for safety. For cross-compiling
- * or multiarch support, Configure will set a minimum of 8.
- */
-#define MEM_ALIGNBYTES 4
-
-/* BYTEORDER:
- * This symbol holds the hexadecimal constant defined in byteorder,
- * in a UV, i.e. 0x1234 or 0x4321 or 0x12345678, etc...
- * If the compiler supports cross-compiling or multiple-architecture
- * binaries, use compiler-defined macros to
- * determine the byte order.
- */
-#if defined(MULTIARCH)
-# ifdef __LITTLE_ENDIAN__
-# if LONGSIZE == 4
-# define BYTEORDER 0x1234
-# else
-# if LONGSIZE == 8
-# define BYTEORDER 0x12345678
-# endif
-# endif
-# else
-# ifdef __BIG_ENDIAN__
-# if LONGSIZE == 4
-# define BYTEORDER 0x4321
-# else
-# if LONGSIZE == 8
-# define BYTEORDER 0x87654321
-# endif
-# endif
-# endif
-# endif
-#else
-#define BYTEORDER 0x1234 /* large digits for MSB */
-#endif
-
-/* CHARBITS:
- * This symbol contains the size of a char, so that the C preprocessor
- * can make decisions based on it.
- */
-#define CHARBITS 8 /**/
-
-/* CASTI32:
- * This symbol is defined if the C compiler can cast negative
- * or large floating point numbers to 32-bit ints.
- */
-/*#define CASTI32 / **/
-
-/* CASTNEGFLOAT:
- * This symbol is defined if the C compiler can cast negative
- * numbers to unsigned longs, ints and shorts.
- */
-/* CASTFLAGS:
- * This symbol contains flags that say what difficulties the compiler
- * has casting odd floating values to unsigned long:
- * 0 = ok
- * 1 = couldn't cast < 0
- * 2 = couldn't cast >= 0x80000000
- * 4 = couldn't cast in argument expression list
- */
-/*#define CASTNEGFLOAT / **/
-#define CASTFLAGS 0 /**/
-
-/* VOID_CLOSEDIR:
- * This symbol, if defined, indicates that the closedir() routine
- * does not return a value.
- */
-/*#define VOID_CLOSEDIR / **/
-
-/* HAS_FD_SET:
- * This symbol, when defined, indicates presence of the fd_set typedef
- * in <sys/types.h>
- */
-/*#define HAS_FD_SET / **/
-
-/* Gconvert:
- * This preprocessor macro is defined to convert a floating point
- * number to a string without a trailing decimal point. This
- * emulates the behavior of sprintf("%g"), but is sometimes much more
- * efficient. If gconvert() is not available, but gcvt() drops the
- * trailing decimal point, then gcvt() is used. If all else fails,
- * a macro using sprintf("%g") is used. Arguments for the Gconvert
- * macro are: value, number of digits, whether trailing zeros should
- * be retained, and the output buffer.
- * The usual values are:
- * d_Gconvert='gconvert((x),(n),(t),(b))'
- * d_Gconvert='gcvt((x),(n),(b))'
- * d_Gconvert='sprintf((b),"%.*g",(n),(x))'
- * The last two assume trailing zeros should not be kept.
- */
-#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
-
-/* HAS_GETPAGESIZE:
- * This symbol, if defined, indicates that the getpagesize system call
- * is available to get system page size, which is the granularity of
- * many memory management calls.
- */
-/*#define HAS_GETPAGESIZE / **/
-
-/* HAS_GNULIBC:
- * This symbol, if defined, indicates to the C program that
- * the GNU C library is being used. A better check is to use
- * the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc.
- */
-/*#define HAS_GNULIBC / **/
-#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE)
-# define _GNU_SOURCE
-#endif
-
-/* HAS_ISASCII:
- * This manifest constant lets the C program know that isascii
- * is available.
- */
-/*#define HAS_ISASCII / **/
-
-/* HAS_LCHOWN:
- * This symbol, if defined, indicates that the lchown routine is
- * available to operate on a symbolic link (instead of following the
- * link).
- */
-/*#define HAS_LCHOWN / **/
-
-/* HAS_OPEN3:
- * This manifest constant lets the C program know that the three
- * argument form of open(2) is available.
- */
-/*#define HAS_OPEN3 / **/
-
-/* HAS_SIGACTION:
- * This symbol, if defined, indicates that Vr4's sigaction() routine
- * is available.
- */
-/*#define HAS_SIGACTION / **/
-
-/* HAS_SIGINFO_SI_ERRNO:
- * This symbol, if defined, indicates that siginfo_t has the
- * si_errno member
- */
-/* HAS_SIGINFO_SI_PID:
- * This symbol, if defined, indicates that siginfo_t has the
- * si_pid member
- */
-/* HAS_SIGINFO_SI_UID:
- * This symbol, if defined, indicates that siginfo_t has the
- * si_uid member
- */
-/* HAS_SIGINFO_SI_ADDR:
- * This symbol, if defined, indicates that siginfo_t has the
- * si_addr member
- */
-/* HAS_SIGINFO_SI_STATUS:
- * This symbol, if defined, indicates that siginfo_t has the
- * si_status member
- */
-/* HAS_SIGINFO_SI_BAND:
- * This symbol, if defined, indicates that siginfo_t has the
- * si_band member
- */
-/* HAS_SIGINFO_SI_VALUE:
- * This symbol, if defined, indicates that siginfo_t has the
- * si_value member
- */
-/*#define HAS_SIGINFO_SI_ERRNO / **/
-/*#define HAS_SIGINFO_SI_PID / **/
-/*#define HAS_SIGINFO_SI_UID / **/
-/*#define HAS_SIGINFO_SI_ADDR / **/
-/*#define HAS_SIGINFO_SI_STATUS / **/
-/*#define HAS_SIGINFO_SI_BAND / **/
-/*#define HAS_SIGINFO_SI_VALUE / **/
-
-/* HAS_SIGSETJMP:
- * This variable indicates to the C program that the sigsetjmp()
- * routine is available to save the calling process's registers
- * and stack environment for later use by siglongjmp(), and
- * to optionally save the process's signal mask. See
- * Sigjmp_buf, Sigsetjmp, and Siglongjmp.
- */
-/* Sigjmp_buf:
- * This is the buffer type to be used with Sigsetjmp and Siglongjmp.
- */
-/* Sigsetjmp:
- * This macro is used in the same way as sigsetjmp(), but will invoke
- * traditional setjmp() if sigsetjmp isn't available.
- * See HAS_SIGSETJMP.
- */
-/* Siglongjmp:
- * This macro is used in the same way as siglongjmp(), but will invoke
- * traditional longjmp() if siglongjmp isn't available.
- * See HAS_SIGSETJMP.
- */
-/*#define HAS_SIGSETJMP / **/
-#ifdef HAS_SIGSETJMP
-#define Sigjmp_buf sigjmp_buf
-#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask))
-#define Siglongjmp(buf,retval) siglongjmp((buf),(retval))
-#else
-#define Sigjmp_buf jmp_buf
-#define Sigsetjmp(buf,save_mask) setjmp((buf))
-#define Siglongjmp(buf,retval) longjmp((buf),(retval))
-#endif
-
-/* HAS_STATIC_INLINE:
- * This symbol, if defined, indicates that the C compiler supports
- * C99-style static inline. That is, the function can't be called
- * from another translation unit.
- */
-/* PERL_STATIC_INLINE:
- * This symbol gives the best-guess incantation to use for static
- * inline functions. If HAS_STATIC_INLINE is defined, this will
- * give C99-style inline. If HAS_STATIC_INLINE is not defined,
- * this will give a plain 'static'. It will always be defined
- * to something that gives static linkage.
- * Possibilities include
- * static inline (c99)
- * static __inline__ (gcc -ansi)
- * static __inline (MSVC)
- * static _inline (older MSVC)
- * static (c89 compilers)
- */
-/*#define HAS_STATIC_INLINE / **/
-#define PERL_STATIC_INLINE static /**/
-
-/* USE_STDIO_PTR:
- * This symbol is defined if the _ptr and _cnt fields (or similar)
- * of the stdio FILE structure can be used to access the stdio buffer
- * for a file handle. If this is defined, then the FILE_ptr(fp)
- * and FILE_cnt(fp) macros will also be defined and should be used
- * to access these fields.
- */
-/* FILE_ptr:
- * This macro is used to access the _ptr field (or equivalent) of the
- * FILE structure pointed to by its argument. This macro will always be
- * defined if USE_STDIO_PTR is defined.
- */
-/* STDIO_PTR_LVALUE:
- * This symbol is defined if the FILE_ptr macro can be used as an
- * lvalue.
- */
-/* FILE_cnt:
- * This macro is used to access the _cnt field (or equivalent) of the
- * FILE structure pointed to by its argument. This macro will always be
- * defined if USE_STDIO_PTR is defined.
- */
-/* STDIO_CNT_LVALUE:
- * This symbol is defined if the FILE_cnt macro can be used as an
- * lvalue.
- */
-/* STDIO_PTR_LVAL_SETS_CNT:
- * This symbol is defined if using the FILE_ptr macro as an lvalue
- * to increase the pointer by n has the side effect of decreasing the
- * value of File_cnt(fp) by n.
- */
-/* STDIO_PTR_LVAL_NOCHANGE_CNT:
- * This symbol is defined if using the FILE_ptr macro as an lvalue
- * to increase the pointer by n leaves File_cnt(fp) unchanged.
- */
-/*#define USE_STDIO_PTR / **/
-#ifdef USE_STDIO_PTR
-#define FILE_ptr(fp) ((fp)->_IO_read_ptr)
-/*#define STDIO_PTR_LVALUE / **/
-#define FILE_cnt(fp) ((fp)->_IO_read_end - (fp)->_IO_read_ptr)
-/*#define STDIO_CNT_LVALUE / **/
-/*#define STDIO_PTR_LVAL_SETS_CNT / **/
-/*#define STDIO_PTR_LVAL_NOCHANGE_CNT / **/
-#endif
-
-/* USE_STDIO_BASE:
- * This symbol is defined if the _base field (or similar) of the
- * stdio FILE structure can be used to access the stdio buffer for
- * a file handle. If this is defined, then the FILE_base(fp) macro
- * will also be defined and should be used to access this field.
- * Also, the FILE_bufsiz(fp) macro will be defined and should be used
- * to determine the number of bytes in the buffer. USE_STDIO_BASE
- * will never be defined unless USE_STDIO_PTR is.
- */
-/* FILE_base:
- * This macro is used to access the _base field (or equivalent) of the
- * FILE structure pointed to by its argument. This macro will always be
- * defined if USE_STDIO_BASE is defined.
- */
-/* FILE_bufsiz:
- * This macro is used to determine the number of bytes in the I/O
- * buffer pointed to by _base field (or equivalent) of the FILE
- * structure pointed to its argument. This macro will always be defined
- * if USE_STDIO_BASE is defined.
- */
-/*#define USE_STDIO_BASE / **/
-#ifdef USE_STDIO_BASE
-#define FILE_base(fp) ((fp)->_IO_read_base)
-#define FILE_bufsiz(fp) ((fp)->_IO_read_end - (fp)->_IO_read_base)
-#endif
-
-/* DOUBLESIZE:
- * This symbol contains the size of a double, so that the C preprocessor
- * can make decisions based on it.
- */
-#define DOUBLESIZE 8 /**/
-
-/* I_TIME:
- * This symbol is always defined, and indicates to the C program that
- * it should include <time.h>.
- */
-/* I_SYS_TIME:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/time.h>.
- */
-/* I_SYS_TIME_KERNEL:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/time.h> with KERNEL defined.
- */
-/* HAS_TM_TM_ZONE:
- * This symbol, if defined, indicates to the C program that
- * the struct tm has a tm_zone field.
- */
-/* HAS_TM_TM_GMTOFF:
- * This symbol, if defined, indicates to the C program that
- * the struct tm has a tm_gmtoff field.
- */
-#define I_TIME /**/
-/*#define I_SYS_TIME / **/
-/*#define I_SYS_TIME_KERNEL / **/
-/*#define HAS_TM_TM_ZONE / **/
-/*#define HAS_TM_TM_GMTOFF / **/
-
-/* VAL_O_NONBLOCK:
- * This symbol is to be used during open() or fcntl(F_SETFL) to turn on
- * non-blocking I/O for the file descriptor. Note that there is no way
- * back, i.e. you cannot turn it blocking again this way. If you wish to
- * alternatively switch between blocking and non-blocking, use the
- * ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
- */
-/* VAL_EAGAIN:
- * This symbol holds the errno error code set by read() when no data was
- * present on the non-blocking file descriptor.
- */
-/* RD_NODATA:
- * This symbol holds the return code from read() when no data is present
- * on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
- * not defined, then you can't distinguish between no data and EOF by
- * issuing a read(). You'll have to find another way to tell for sure!
- */
-/* EOF_NONBLOCK:
- * This symbol, if defined, indicates to the C program that a read() on
- * a non-blocking file descriptor will return 0 on EOF, and not the value
- * held in RD_NODATA (-1 usually, in that case!).
- */
-#define VAL_O_NONBLOCK O_NONBLOCK
-#define VAL_EAGAIN EAGAIN
-#define RD_NODATA -1
-#undef EOF_NONBLOCK
-
-/* PTRSIZE:
- * This symbol contains the size of a pointer, so that the C preprocessor
- * can make decisions based on it. It will be sizeof(void *) if
- * the compiler supports (void *); otherwise it will be
- * sizeof(char *).
- */
-#define PTRSIZE 4 /**/
-
-/* Drand01:
- * This macro is to be used to generate uniformly distributed
- * random numbers over the range [0., 1.[. You may have to supply
- * an 'extern double drand48();' in your program since SunOS 4.1.3
- * doesn't provide you with anything relevant in its headers.
- * See HAS_DRAND48_PROTO.
- */
-/* Rand_seed_t:
- * This symbol defines the type of the argument of the
- * random seed function.
- */
-/* seedDrand01:
- * This symbol defines the macro to be used in seeding the
- * random number generator (see Drand01).
- */
-/* RANDBITS:
- * This symbol indicates how many bits are produced by the
- * function used to generate normalized random numbers.
- * Values include 15, 16, 31, and 48.
- */
-#define Drand01() Perl_drand48() /**/
-#define Rand_seed_t U32 /**/
-#define seedDrand01(x) Perl_drand48_init((Rand_seed_t)x) /**/
-#define RANDBITS 48 /**/
-
-/* SSize_t:
- * This symbol holds the type used by functions that return
- * a count of bytes or an error condition. It must be a signed type.
- * It is usually ssize_t, but may be long or int, etc.
- * It may be necessary to include <sys/types.h> or <unistd.h>
- * to get any typedef'ed information.
- * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
- */
-#define SSize_t int /* signed count of bytes */
-
-/* EBCDIC:
- * This symbol, if defined, indicates that this system uses
- * EBCDIC encoding.
- */
-/*#define EBCDIC / **/
-
-/* ARCHLIB:
- * This variable, if defined, holds the name of the directory in
- * which the user wants to put architecture-dependent public
- * library files for perl5. It is most often a local directory
- * such as /usr/local/lib. Programs using this variable must be
- * prepared to deal with filename expansion. If ARCHLIB is the
- * same as PRIVLIB, it is not defined, since presumably the
- * program already searches PRIVLIB.
- */
-/* ARCHLIB_EXP:
- * This symbol contains the ~name expanded version of ARCHLIB, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-/*#define ARCHLIB "/usr/local/lib/perl5/5.38/unknown" / **/
-/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.38/unknown" / **/
-
-/* BIN:
- * This symbol holds the path of the bin directory where the package will
- * be installed. Program must be prepared to deal with ~name substitution.
- */
-/* BIN_EXP:
- * This symbol is the filename expanded version of the BIN symbol, for
- * programs that do not want to deal with that at run-time.
- */
-/* PERL_RELOCATABLE_INC:
- * This symbol, if defined, indicates that we'd like to relocate entries
- * in @INC at run time based on the location of the perl binary.
- */
-#define BIN "/usr/local/bin" /**/
-#define BIN_EXP "/usr/local/bin" /**/
-#define PERL_RELOCATABLE_INC "undef" /**/
-
-/* PERL_INC_VERSION_LIST:
- * This variable specifies the list of subdirectories in over
- * which perl.c:incpush() and lib/lib.pm will automatically
- * search when adding directories to @INC, in a format suitable
- * for a C initialization string. See the inc_version_list entry
- * in Porting/Glossary for more details.
- */
-/*#define PERL_INC_VERSION_LIST NULL / **/
-
-/* INSTALL_USR_BIN_PERL:
- * This symbol, if defined, indicates that Perl is to be installed
- * also as /usr/bin/perl.
- */
-/*#define INSTALL_USR_BIN_PERL / **/
-
-/* PERL_OTHERLIBDIRS:
- * This variable contains a colon-separated set of paths for the perl
- * binary to search for additional library files or modules.
- * These directories will be tacked to the end of @INC.
- * Perl will automatically search below each path for version-
- * and architecture-specific directories. See PERL_INC_VERSION_LIST
- * for more details.
- */
-/*#define PERL_OTHERLIBDIRS " " / **/
-
-/* PRIVLIB:
- * This symbol contains the name of the private library for this package.
- * The library is private in the sense that it needn't be in anyone's
- * execution path, but it should be accessible by the world. The program
- * should be prepared to do ~ expansion.
- */
-/* PRIVLIB_EXP:
- * This symbol contains the ~name expanded version of PRIVLIB, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-#define PRIVLIB "/usr/local/lib/perl5/5.38" /**/
-#define PRIVLIB_EXP "/usr/local/lib/perl5/5.38" /**/
-
-/* SITEARCH:
- * This symbol contains the name of the private library for this package.
- * The library is private in the sense that it needn't be in anyone's
- * execution path, but it should be accessible by the world. The program
- * should be prepared to do ~ expansion.
- * The standard distribution will put nothing in this directory.
- * After perl has been installed, users may install their own local
- * architecture-dependent modules in this directory with
- * MakeMaker Makefile.PL
- * or equivalent. See INSTALL for details.
- */
-/* SITEARCH_EXP:
- * This symbol contains the ~name expanded version of SITEARCH, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-/*#define SITEARCH "/usr/local/lib/perl5/5.38/unknown" / **/
-/*#define SITEARCH_EXP "/usr/local/lib/perl5/5.38/unknown" / **/
-
-/* SITELIB:
- * This symbol contains the name of the private library for this package.
- * The library is private in the sense that it needn't be in anyone's
- * execution path, but it should be accessible by the world. The program
- * should be prepared to do ~ expansion.
- * The standard distribution will put nothing in this directory.
- * After perl has been installed, users may install their own local
- * architecture-independent modules in this directory with
- * MakeMaker Makefile.PL
- * or equivalent. See INSTALL for details.
- */
-/* SITELIB_EXP:
- * This symbol contains the ~name expanded version of SITELIB, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-/* SITELIB_STEM:
- * This define is SITELIB_EXP with any trailing version-specific component
- * removed. The elements in inc_version_list (inc_version_list.U) can
- * be tacked onto this variable to generate a list of directories to search.
- */
-#define SITELIB "/usr/local/lib/perl5/5.38" /**/
-#define SITELIB_EXP "/usr/local/lib/perl5/5.38" /**/
-#define SITELIB_STEM "/usr/local/lib/perl5" /**/
-
-/* PERL_VENDORARCH:
- * If defined, this symbol contains the name of a private library.
- * The library is private in the sense that it needn't be in anyone's
- * execution path, but it should be accessible by the world.
- * It may have a ~ on the front.
- * The standard distribution will put nothing in this directory.
- * Vendors who distribute perl may wish to place their own
- * architecture-dependent modules and extensions in this directory with
- * MakeMaker Makefile.PL INSTALLDIRS=vendor
- * or equivalent. See INSTALL for details.
- */
-/* PERL_VENDORARCH_EXP:
- * This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-/*#define PERL_VENDORARCH "" / **/
-/*#define PERL_VENDORARCH_EXP "" / **/
-
-/* PERL_VENDORLIB_EXP:
- * This symbol contains the ~name expanded version of VENDORLIB, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-/* PERL_VENDORLIB_STEM:
- * This define is PERL_VENDORLIB_EXP with any trailing version-specific component
- * removed. The elements in inc_version_list (inc_version_list.U) can
- * be tacked onto this variable to generate a list of directories to search.
- */
-/*#define PERL_VENDORLIB_EXP "" / **/
-/*#define PERL_VENDORLIB_STEM "" / **/
-
-/* OSNAME:
- * This symbol contains the name of the operating system, as determined
- * by Configure. You shouldn't rely on it too much; the specific
- * feature tests from Configure are generally more reliable.
- */
-/* OSVERS:
- * This symbol contains the version of the operating system, as determined
- * by Configure. You shouldn't rely on it too much; the specific
- * feature tests from Configure are generally more reliable.
- */
-#define OSNAME "unknown" /**/
-#define OSVERS "unknown" /**/
-
-/* CAT2:
- * This macro concatenates 2 tokens together.
- */
-/* STRINGIFY:
- * This macro surrounds its token with double quotes.
- */
-#if 42 == 1
-#define CAT2(a,b) a/**/b
-#define STRINGIFY(a) "a"
-#endif
-#if 42 == 42
-#define PeRl_CaTiFy(a, b) a ## b
-#define PeRl_StGiFy(a) #a
-#define CAT2(a,b) PeRl_CaTiFy(a,b)
-#define StGiFy(a) PeRl_StGiFy(a)
-#define STRINGIFY(a) PeRl_StGiFy(a)
-#endif
-#if 42 != 1 && 42 != 42
-#include "Bletch: How does this C preprocessor concatenate tokens?"
-#endif
-
-/* CPPSTDIN:
- * This symbol contains the first part of the string which will invoke
- * the C preprocessor on the standard input and produce to standard
- * output. Typical value of "cc -E" or "/lib/cpp", but it can also
- * call a wrapper. See CPPRUN.
- */
-/* CPPMINUS:
- * This symbol contains the second part of the string which will invoke
- * the C preprocessor on the standard input and produce to standard
- * output. This symbol will have the value "-" if CPPSTDIN needs a minus
- * to specify standard input, otherwise the value is "".
- */
-/* CPPRUN:
- * This symbol contains the string which will invoke a C preprocessor on
- * the standard input and produce to standard output. It needs to end
- * with CPPLAST, after all other preprocessor flags have been specified.
- * The main difference with CPPSTDIN is that this program will never be a
- * pointer to a shell wrapper, i.e. it will be empty if no preprocessor is
- * available directly to the user. Note that it may well be different from
- * the preprocessor used to compile the C program.
- */
-/* CPPLAST:
- * This symbol is intended to be used along with CPPRUN in the same manner
- * symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "".
- */
-#define CPPSTDIN "cc -E"
-#define CPPMINUS "-"
-#define CPPRUN "cc -E"
-#define CPPLAST "-"
-
-/* HAS_ACCESS:
- * This manifest constant lets the C program know that the access()
- * system call is available to check for accessibility using real UID/GID.
- * (always present on UNIX.)
- */
-/*#define HAS_ACCESS / **/
-
-/* HASATTRIBUTE_FORMAT:
- * Can we handle GCC attribute for checking printf-style formats
- */
-/* PRINTF_FORMAT_NULL_OK:
- * Allows __printf__ format to be null when checking printf-style
- */
-/* HASATTRIBUTE_MALLOC:
- * Can we handle GCC attribute for malloc-style functions.
- */
-/* HASATTRIBUTE_NONNULL:
- * Can we handle GCC attribute for nonnull function parms.
- */
-/* HASATTRIBUTE_NORETURN:
- * Can we handle GCC attribute for functions that do not return
- */
-/* HASATTRIBUTE_PURE:
- * Can we handle GCC attribute for pure functions
- */
-/* HASATTRIBUTE_UNUSED:
- * Can we handle GCC attribute for unused variables and arguments
- */
-/* HASATTRIBUTE_DEPRECATED:
- * Can we handle GCC attribute for marking deprecated APIs
- */
-/* HASATTRIBUTE_WARN_UNUSED_RESULT:
- * Can we handle GCC attribute for warning on unused results
- */
-/* HASATTRIBUTE_ALWAYS_INLINE:
- * Can we handle GCC attribute for functions that should always be
- * inlined.
- */
-/* HASATTRIBUTE_VISIBILITY:
- * Can we handle GCC attribute for functions that should have a
- * different visibility.
- */
-/*#define HASATTRIBUTE_DEPRECATED / **/
-/*#define HASATTRIBUTE_FORMAT / **/
-/*#define PRINTF_FORMAT_NULL_OK / **/
-/*#define HASATTRIBUTE_NORETURN / **/
-/*#define HASATTRIBUTE_MALLOC / **/
-/*#define HASATTRIBUTE_NONNULL / **/
-/*#define HASATTRIBUTE_PURE / **/
-/*#define HASATTRIBUTE_UNUSED / **/
-/*#define HASATTRIBUTE_WARN_UNUSED_RESULT / **/
-/*#define HASATTRIBUTE_ALWAYS_INLINE / **/
-/*#define HASATTRIBUTE_VISIBILITY / **/
-
-/* HAS_BACKTRACE:
- * This symbol, if defined, indicates that the backtrace() routine is
- * available to get a stack trace. The <execinfo.h> header must be
- * included to use this routine.
- */
-/*#define HAS_BACKTRACE / **/
-
-/* HAS_CSH:
- * This symbol, if defined, indicates that the C-shell exists.
- */
-/* CSH:
- * This symbol, if defined, contains the full pathname of csh.
- */
-/*#define HAS_CSH / **/
-#ifdef HAS_CSH
-#define CSH "" /**/
-#endif
-
-/* HAS_DLADDR:
- * This symbol, if defined, indicates that the dladdr() routine is
- * available to query dynamic linker information for an address.
- * The <dlfcn.h> header must be included to use this routine.
- */
-/*#define HAS_DLADDR / **/
-
-/* SETUID_SCRIPTS_ARE_SECURE_NOW:
- * This symbol, if defined, indicates that the bug that prevents
- * setuid scripts from being secure is not present in this kernel.
- */
-/* DOSUID:
- * This symbol, if defined, indicates that the C program should
- * check the script that it is executing for setuid/setgid bits, and
- * attempt to emulate setuid/setgid on systems that have disabled
- * setuid #! scripts because the kernel can't do it securely.
- * It is up to the package designer to make sure that this emulation
- * is done securely. Among other things, it should do an fstat on
- * the script it just opened to make sure it really is a setuid/setgid
- * script, it should make sure the arguments passed correspond exactly
- * to the argument on the #! line, and it should not trust any
- * subprocesses to which it must pass the filename rather than the
- * file descriptor of the script to be executed.
- */
-/*#define SETUID_SCRIPTS_ARE_SECURE_NOW / **/
-/*#define DOSUID / **/
-
-/* HAS_ENDGRENT:
- * This symbol, if defined, indicates that the getgrent routine is
- * available for finalizing sequential access of the group database.
- */
-/*#define HAS_ENDGRENT / **/
-
-/* HAS_ENDHOSTENT:
- * This symbol, if defined, indicates that the endhostent() routine is
- * available to close whatever was being used for host queries.
- */
-/*#define HAS_ENDHOSTENT / **/
-
-/* HAS_ENDNETENT:
- * This symbol, if defined, indicates that the endnetent() routine is
- * available to close whatever was being used for network queries.
- */
-/*#define HAS_ENDNETENT / **/
-
-/* HAS_ENDPROTOENT:
- * This symbol, if defined, indicates that the endprotoent() routine is
- * available to close whatever was being used for protocol queries.
- */
-/*#define HAS_ENDPROTOENT / **/
-
-/* HAS_ENDPWENT:
- * This symbol, if defined, indicates that the endpwent routine is
- * available for finalizing sequential access of the passwd database.
- */
-/*#define HAS_ENDPWENT / **/
-
-/* HAS_ENDSERVENT:
- * This symbol, if defined, indicates that the endservent() routine is
- * available to close whatever was being used for service queries.
- */
-/*#define HAS_ENDSERVENT / **/
-
-/* FLEXFILENAMES:
- * This symbol, if defined, indicates that the system supports filenames
- * longer than 14 characters.
- */
-/*#define FLEXFILENAMES / **/
-
-/* HAS_GETGRENT:
- * This symbol, if defined, indicates that the getgrent routine is
- * available for sequential access of the group database.
- */
-/*#define HAS_GETGRENT / **/
-
-/* HAS_GETHOSTBYADDR:
- * This symbol, if defined, indicates that the gethostbyaddr() routine is
- * available to look up hosts by their IP addresses.
- */
-/*#define HAS_GETHOSTBYADDR / **/
-
-/* HAS_GETHOSTBYNAME:
- * This symbol, if defined, indicates that the gethostbyname() routine is
- * available to look up host names in some data base or other.
- */
-/*#define HAS_GETHOSTBYNAME / **/
-
-/* HAS_GETHOSTENT:
- * This symbol, if defined, indicates that the gethostent() routine is
- * available to look up host names in some data base or another.
- */
-/*#define HAS_GETHOSTENT / **/
-
-/* HAS_GETHOSTNAME:
- * This symbol, if defined, indicates that the C program may use the
- * gethostname() routine to derive the host name. See also HAS_UNAME
- * and PHOSTNAME.
- */
-/* HAS_UNAME:
- * This symbol, if defined, indicates that the C program may use the
- * uname() routine to derive the host name. See also HAS_GETHOSTNAME
- * and PHOSTNAME.
- */
-/* PHOSTNAME:
- * This symbol, if defined, indicates the command to feed to the
- * popen() routine to derive the host name. See also HAS_GETHOSTNAME
- * and HAS_UNAME. Note that the command uses a fully qualified path,
- * so that it is safe even if used by a process with super-user
- * privileges.
- */
-/* HAS_PHOSTNAME:
- * This symbol, if defined, indicates that the C program may use the
- * contents of PHOSTNAME as a command to feed to the popen() routine
- * to derive the host name.
- */
-/*#define HAS_GETHOSTNAME / **/
-/*#define HAS_UNAME / **/
-/*#define HAS_PHOSTNAME / **/
-#ifdef HAS_PHOSTNAME
-#define PHOSTNAME "/bin/hostname" /* How to get the host name */
-#endif
-
-/* HAS_GETNETBYADDR:
- * This symbol, if defined, indicates that the getnetbyaddr() routine is
- * available to look up networks by their IP addresses.
- */
-/*#define HAS_GETNETBYADDR / **/
-
-/* HAS_GETNETBYNAME:
- * This symbol, if defined, indicates that the getnetbyname() routine is
- * available to look up networks by their names.
- */
-/*#define HAS_GETNETBYNAME / **/
-
-/* HAS_GETNETENT:
- * This symbol, if defined, indicates that the getnetent() routine is
- * available to look up network names in some data base or another.
- */
-/*#define HAS_GETNETENT / **/
-
-/* HAS_GETPROTOENT:
- * This symbol, if defined, indicates that the getprotoent() routine is
- * available to look up protocols in some data base or another.
- */
-/*#define HAS_GETPROTOENT / **/
-
-/* HAS_GETPGRP:
- * This symbol, if defined, indicates that the getpgrp routine is
- * available to get the current process group.
- */
-/* USE_BSD_GETPGRP:
- * This symbol, if defined, indicates that getpgrp needs one
- * arguments whereas USG one needs none.
- */
-/*#define HAS_GETPGRP / **/
-/*#define USE_BSD_GETPGRP / **/
-
-/* HAS_GETPROTOBYNAME:
- * This symbol, if defined, indicates that the getprotobyname()
- * routine is available to look up protocols by their name.
- */
-/* HAS_GETPROTOBYNUMBER:
- * This symbol, if defined, indicates that the getprotobynumber()
- * routine is available to look up protocols by their number.
- */
-/*#define HAS_GETPROTOBYNAME / **/
-/*#define HAS_GETPROTOBYNUMBER / **/
-
-/* HAS_GETPWENT:
- * This symbol, if defined, indicates that the getpwent routine is
- * available for sequential access of the passwd database.
- * If this is not available, the older getpw() function may be available.
- */
-/*#define HAS_GETPWENT / **/
-
-/* HAS_GETSERVENT:
- * This symbol, if defined, indicates that the getservent() routine is
- * available to look up network services in some data base or another.
- */
-/*#define HAS_GETSERVENT / **/
-
-/* HAS_GETSERVBYNAME:
- * This symbol, if defined, indicates that the getservbyname()
- * routine is available to look up services by their name.
- */
-/* HAS_GETSERVBYPORT:
- * This symbol, if defined, indicates that the getservbyport()
- * routine is available to look up services by their port.
- */
-/*#define HAS_GETSERVBYNAME / **/
-/*#define HAS_GETSERVBYPORT / **/
-
-/* HAS_HTONL:
- * This symbol, if defined, indicates that the htonl() routine (and
- * friends htons() ntohl() ntohs()) are available to do network
- * order byte swapping.
- */
-/* HAS_HTONS:
- * This symbol, if defined, indicates that the htons() routine (and
- * friends htonl() ntohl() ntohs()) are available to do network
- * order byte swapping.
- */
-/* HAS_NTOHL:
- * This symbol, if defined, indicates that the ntohl() routine (and
- * friends htonl() htons() ntohs()) are available to do network
- * order byte swapping.
- */
-/* HAS_NTOHS:
- * This symbol, if defined, indicates that the ntohs() routine (and
- * friends htonl() htons() ntohl()) are available to do network
- * order byte swapping.
- */
-/*#define HAS_HTONL / **/
-/*#define HAS_HTONS / **/
-/*#define HAS_NTOHL / **/
-/*#define HAS_NTOHS / **/
-
-/* HAS_LONG_DOUBLE:
- * This symbol will be defined if the C compiler supports long
- * doubles.
- */
-/* LONG_DOUBLESIZE:
- * This symbol contains the size of a long double, so that the
- * C preprocessor can make decisions based on it. It is only
- * defined if the system supports long doubles. Note that this
- * is sizeof(long double), which may include unused bytes.
- */
-/* HAS_LDEXPL:
- * This symbol, if defined, indicates that the ldexpl routine is
- * available to shift a long double floating-point number
- * by an integral power of 2.
- */
-/* LONG_DOUBLEKIND:
- * LONG_DOUBLEKIND will be one of
- * LONG_DOUBLE_IS_DOUBLE
- * LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
- * LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
- * LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN
- * LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN
- * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE
- * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE
- * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE
- * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE
- * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN
- * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN
- * LONG_DOUBLE_IS_VAX_H_FLOAT
- * LONG_DOUBLE_IS_UNKNOWN_FORMAT
- * It is only defined if the system supports long doubles.
- */
-/* LONG_DOUBLE_STYLE_IEEE:
- * This symbol, if defined, indicates that the long double
- * is any of the IEEE 754 style long doubles:
- * LONG_DOUBLE_STYLE_IEEE_STD, LONG_DOUBLE_STYLE_IEEE_EXTENDED,
- * LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE.
- */
-/* LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE:
- * This symbol, if defined, indicates that the long double is
- * the 128-bit double-double.
- */
-/* LONG_DOUBLE_STYLE_IEEE_EXTENDED:
- * This symbol, if defined, indicates that the long double is
- * the 80-bit IEEE 754. Note that despite the 'extended' this
- * is less than the 'std', since this is an extension of
- * the double precision.
- */
-/* LONG_DOUBLE_STYLE_IEEE_STD:
- * This symbol, if defined, indicates that the long double is
- * the 128-bit IEEE 754.
- */
-/* LONG_DOUBLE_STYLE_VAX:
- * This symbol, if defined, indicates that the long double is
- * the 128-bit VAX format H.
- */
-/*#define HAS_LDEXPL / **/
-/*#define HAS_LONG_DOUBLE / **/
-#ifdef HAS_LONG_DOUBLE
-#define LONG_DOUBLESIZE 8 /**/
-#define LONG_DOUBLEKIND 0 /**/
-#define LONG_DOUBLE_IS_DOUBLE 0
-#define LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN 1
-#define LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN 2
-#define LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN 3
-#define LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN 4
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE 5
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE 6
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE 7
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE 8
-#define LONG_DOUBLE_IS_VAX_H_FLOAT 9
-#define LONG_DOUBLE_IS_UNKNOWN_FORMAT -1
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE /* back-compat */
-#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE /* back-compat */
-#undef LONG_DOUBLE_STYLE_IEEE
-#undef LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE
-#undef LONG_DOUBLE_STYLE_IEEE_EXTENDED
-#undef LONG_DOUBLE_STYLE_IEEE_STD
-#undef LONG_DOUBLE_STYLE_VAX
-#endif
-
-/* HAS_LONG_LONG:
- * This symbol will be defined if the C compiler supports long long.
- */
-/* LONGLONGSIZE:
- * This symbol contains the size of a long long, so that the
- * C preprocessor can make decisions based on it. It is only
- * defined if the system supports long long.
- */
-/*#define HAS_LONG_LONG / **/
-#ifdef HAS_LONG_LONG
-#define LONGLONGSIZE 8 /**/
-#endif
-
-/* HAS_MKSTEMP:
- * This symbol, if defined, indicates that the mkstemp routine is
- * available to exclusively create and open a uniquely named
- * temporary file.
- */
-/*#define HAS_MKSTEMP / **/
-
-/* HAS_MMAP:
- * This symbol, if defined, indicates that the mmap system call is
- * available to map a file into memory.
- */
-/* Mmap_t:
- * This symbol holds the return type of the mmap() system call
- * (and simultaneously the type of the first argument).
- * Usually set to 'void *' or 'caddr_t'.
- */
-/*#define HAS_MMAP / **/
-#define Mmap_t void * /**/
-
-/* HAS_SETGRENT:
- * This symbol, if defined, indicates that the setgrent routine is
- * available for initializing sequential access of the group database.
- */
-/*#define HAS_SETGRENT / **/
-
-/* HAS_SETHOSTENT:
- * This symbol, if defined, indicates that the sethostent() routine is
- * available.
- */
-/*#define HAS_SETHOSTENT / **/
-
-/* HAS_SETNETENT:
- * This symbol, if defined, indicates that the setnetent() routine is
- * available.
- */
-/*#define HAS_SETNETENT / **/
-
-/* HAS_SETPROTOENT:
- * This symbol, if defined, indicates that the setprotoent() routine is
- * available.
- */
-/*#define HAS_SETPROTOENT / **/
-
-/* HAS_SETPGRP:
- * This symbol, if defined, indicates that the setpgrp routine is
- * available to set the current process group.
- */
-/* USE_BSD_SETPGRP:
- * This symbol, if defined, indicates that setpgrp needs two
- * arguments whereas USG one needs none. See also HAS_SETPGID
- * for a POSIX interface.
- */
-/*#define HAS_SETPGRP / **/
-/*#define USE_BSD_SETPGRP / **/
-
-/* HAS_SETPWENT:
- * This symbol, if defined, indicates that the setpwent routine is
- * available for initializing sequential access of the passwd database.
- */
-/*#define HAS_SETPWENT / **/
-
-/* HAS_SETSERVENT:
- * This symbol, if defined, indicates that the setservent() routine is
- * available.
- */
-/*#define HAS_SETSERVENT / **/
-
-/* HAS_SETVBUF:
- * This symbol, if defined, indicates that the setvbuf routine is
- * available to change buffering on an open stdio stream.
- * to a line-buffered mode.
- */
-/*#define HAS_SETVBUF / **/
-
-/* HAS_SHM:
- * This symbol, if defined, indicates that the entire shm*(2) library is
- * supported.
- */
-/*#define HAS_SHM / **/
-
-/* Shmat_t:
- * This symbol holds the return type of the shmat() system call.
- * Usually set to 'void *' or 'char *'.
- */
-/* HAS_SHMAT_PROTOTYPE:
- * This symbol, if defined, indicates that the sys/shm.h includes
- * a prototype for shmat(). Otherwise, it is up to the program to
- * guess one. Shmat_t shmat(int, Shmat_t, int) is a good guess,
- * but not always right so it should be emitted by the program only
- * when HAS_SHMAT_PROTOTYPE is not defined to avoid conflicting defs.
- */
-#define Shmat_t void * /**/
-/*#define HAS_SHMAT_PROTOTYPE / **/
-
-/* HAS_SOCKET:
- * This symbol, if defined, indicates that the BSD socket interface is
- * supported.
- */
-/* HAS_SOCKETPAIR:
- * This symbol, if defined, indicates that the BSD socketpair() call is
- * supported.
- */
-/* HAS_SOCKADDR_SA_LEN:
- * This symbol, if defined, indicates that the struct sockaddr
- * structure has a member called sa_len, indicating the length of
- * the structure.
- */
-/* HAS_SOCKADDR_IN6:
- * This symbol, if defined, indicates the availability of
- * struct sockaddr_in6;
- */
-/* HAS_SOCKADDR_STORAGE:
- * This symbol, if defined, indicates the availability of
- * struct sockaddr_storage;
- */
-/* HAS_SIN6_SCOPE_ID:
- * This symbol, if defined, indicates that the struct sockaddr_in6
- * structure has a member called sin6_scope_id.
- */
-/* HAS_IP_MREQ:
- * This symbol, if defined, indicates the availability of
- * struct ip_mreq;
- */
-/* HAS_IP_MREQ_SOURCE:
- * This symbol, if defined, indicates the availability of
- * struct ip_mreq_source;
- */
-/* HAS_IPV6_MREQ:
- * This symbol, if defined, indicates the availability of
- * struct ipv6_mreq;
- */
-/* HAS_IPV6_MREQ_SOURCE:
- * This symbol, if defined, indicates the availability of
- * struct ipv6_mreq_source;
- */
-/*#define HAS_SOCKET / **/
-/*#define HAS_SOCKETPAIR / **/
-/*#define HAS_SOCKADDR_SA_LEN / **/
-/*#define HAS_SOCKADDR_IN6 / **/
-/*#define HAS_SOCKADDR_STORAGE / **/
-/*#define HAS_SIN6_SCOPE_ID / **/
-/*#define HAS_IP_MREQ / **/
-/*#define HAS_IP_MREQ_SOURCE / **/
-/*#define HAS_IPV6_MREQ / **/
-/*#define HAS_IPV6_MREQ_SOURCE / **/
-
-/* USE_STAT_BLOCKS:
- * This symbol is defined if this system has a stat structure declaring
- * st_blksize and st_blocks.
- */
-#ifndef USE_STAT_BLOCKS
-/*#define USE_STAT_BLOCKS / **/
-#endif
-
-/* HAS_SYS_ERRLIST:
- * This symbol, if defined, indicates that the sys_errlist array is
- * available to translate error numbers to strings. The extern int
- * sys_nerr gives the size of that table.
- */
-/*#define HAS_SYS_ERRLIST / **/
-
-/* HAS_STRTOUL:
- * This symbol, if defined, indicates that the strtoul routine is
- * available to provide conversion of strings to unsigned long.
- */
-#define HAS_STRTOUL /**/
-
-/* HAS_UNION_SEMUN:
- * This symbol, if defined, indicates that the union semun is
- * defined by including <sys/sem.h>. If not, the user code
- * probably needs to define it as:
- * union semun {
- * int val;
- * struct semid_ds *buf;
- * unsigned short *array;
- * }
- */
-/* USE_SEMCTL_SEMUN:
- * This symbol, if defined, indicates that union semun is
- * used for semctl IPC_STAT.
- */
-/* USE_SEMCTL_SEMID_DS:
- * This symbol, if defined, indicates that struct semid_ds * is
- * used for semctl IPC_STAT.
- */
-/*#define HAS_UNION_SEMUN / **/
-/*#define USE_SEMCTL_SEMUN / **/
-/*#define USE_SEMCTL_SEMID_DS / **/
-
-/* HAS_VFORK:
- * This symbol, if defined, indicates that vfork() exists.
- */
-/*#define HAS_VFORK / **/
-
-/* HAS_PSEUDOFORK:
- * This symbol, if defined, indicates that an emulation of the
- * fork routine is available.
- */
-/*#define HAS_PSEUDOFORK / **/
-
-/* Signal_t:
- * This symbol's value is either "void" or "int", corresponding to the
- * appropriate return type of a signal handler. Thus, you can declare
- * a signal handler using "Signal_t (*handler)()", and define the
- * handler using "Signal_t handler(sig)".
- */
-#define Signal_t int /* Signal handler's return type */
-
-/* I_DIRENT:
- * This symbol, if defined, indicates to the C program that it should
- * include <dirent.h>. Using this symbol also triggers the definition
- * of the Direntry_t define which ends up being 'struct dirent' or
- * 'struct direct' depending on the availability of <dirent.h>.
- */
-/* DIRNAMLEN:
- * This symbol, if defined, indicates to the C program that the length
- * of directory entry names is provided by a d_namlen field. Otherwise
- * you need to do strlen() on the d_name field.
- */
-/* Direntry_t:
- * This symbol is set to 'struct direct' or 'struct dirent' depending on
- * whether dirent is available or not. You should use this pseudo type to
- * portably declare your directory entries.
- */
-#define I_DIRENT /**/
-/*#define DIRNAMLEN / **/
-#define Direntry_t struct dirent
-
-/* I_EXECINFO:
- * This symbol, if defined, indicates to the C program that it should
- * include <execinfo.h> for backtrace() support.
- */
-/*#define I_EXECINFO / **/
-
-/* I_GRP:
- * This symbol, if defined, indicates to the C program that it should
- * include <grp.h>.
- */
-/* GRPASSWD:
- * This symbol, if defined, indicates to the C program that struct group
- * in <grp.h> contains gr_passwd.
- */
-/*#define I_GRP / **/
-/*#define GRPASSWD / **/
-
-/* I_NDBM:
- * This symbol, if defined, indicates that <ndbm.h> exists and should
- * be included.
- */
-/* I_GDBMNDBM:
- * This symbol, if defined, indicates that <gdbm/ndbm.h> exists and should
- * be included. This was the location of the ndbm.h compatibility file
- * in RedHat 7.1.
- */
-/* I_GDBM_NDBM:
- * This symbol, if defined, indicates that <gdbm-ndbm.h> exists and should
- * be included. This is the location of the ndbm.h compatibility file
- * in Debian 4.0.
- */
-/* NDBM_H_USES_PROTOTYPES:
- * This symbol, if defined, indicates that <ndbm.h> uses real ANSI C
- * prototypes instead of K&R style function declarations without any
- * parameter information. While ANSI C prototypes are supported in C++,
- * K&R style function declarations will yield errors.
- */
-/* GDBMNDBM_H_USES_PROTOTYPES:
- * This symbol, if defined, indicates that <gdbm/ndbm.h> uses real ANSI C
- * prototypes instead of K&R style function declarations without any
- * parameter information. While ANSI C prototypes are supported in C++,
- * K&R style function declarations will yield errors.
- */
-/* GDBM_NDBM_H_USES_PROTOTYPES:
- * This symbol, if defined, indicates that <gdbm-ndbm.h> uses real ANSI C
- * prototypes instead of K&R style function declarations without any
- * parameter information. While ANSI C prototypes are supported in C++,
- * K&R style function declarations will yield errors.
- */
-/*#define I_NDBM / **/
-/*#define I_GDBMNDBM / **/
-/*#define I_GDBM_NDBM / **/
-/*#define NDBM_H_USES_PROTOTYPES / **/
-/*#define GDBMNDBM_H_USES_PROTOTYPES / **/
-/*#define GDBM_NDBM_H_USES_PROTOTYPES / **/
-
-/* I_NETDB:
- * This symbol, if defined, indicates that <netdb.h> exists and
- * should be included.
- */
-/*#define I_NETDB / **/
-
-/* I_NET_ERRNO:
- * This symbol, if defined, indicates that <net/errno.h> exists and
- * should be included.
- */
-/*#define I_NET_ERRNO / **/
-
-/* I_PWD:
- * This symbol, if defined, indicates to the C program that it should
- * include <pwd.h>.
- */
-/* PWQUOTA:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_quota.
- */
-/* PWAGE:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_age.
- */
-/* PWCHANGE:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_change.
- */
-/* PWCLASS:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_class.
- */
-/* PWEXPIRE:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_expire.
- */
-/* PWCOMMENT:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_comment.
- */
-/* PWGECOS:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_gecos.
- */
-/* PWPASSWD:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_passwd.
- */
-/*#define I_PWD / **/
-/*#define PWQUOTA / **/
-/*#define PWAGE / **/
-/*#define PWCHANGE / **/
-/*#define PWCLASS / **/
-/*#define PWEXPIRE / **/
-/*#define PWCOMMENT / **/
-/*#define PWGECOS / **/
-/*#define PWPASSWD / **/
-
-/* I_SYSUIO:
- * This symbol, if defined, indicates that <sys/uio.h> exists and
- * should be included.
- */
-/*#define I_SYSUIO / **/
-
-/* I_TERMIO:
- * This symbol, if defined, indicates that the program should include
- * <termio.h> rather than <sgtty.h>. There are also differences in
- * the ioctl() calls that depend on the value of this symbol.
- */
-/* I_TERMIOS:
- * This symbol, if defined, indicates that the program should include
- * the POSIX termios.h rather than sgtty.h or termio.h.
- * There are also differences in the ioctl() calls that depend on the
- * value of this symbol.
- */
-/* I_SGTTY:
- * This symbol, if defined, indicates that the program should include
- * <sgtty.h> rather than <termio.h>. There are also differences in
- * the ioctl() calls that depend on the value of this symbol.
- */
-/*#define I_TERMIO / **/
-/*#define I_TERMIOS / **/
-/*#define I_SGTTY / **/
-
-/* Free_t:
- * This variable contains the return type of free(). It is usually
- * void, but occasionally int.
- */
-/* Malloc_t:
- * This symbol is the type of pointer returned by malloc and realloc.
- */
-#define Malloc_t void * /**/
-#define Free_t void /**/
-
-/* PERL_MALLOC_WRAP:
- * This symbol, if defined, indicates that we'd like malloc wrap checks.
- */
-/*#define PERL_MALLOC_WRAP / **/
-
-/* MYMALLOC:
- * This symbol, if defined, indicates that we're using our own malloc.
- */
-/*#define MYMALLOC / **/
-
-/* SH_PATH:
- * This symbol contains the full pathname to the shell used on this
- * on this system to execute Bourne shell scripts. Usually, this will be
- * /bin/sh, though it's possible that some systems will have /bin/ksh,
- * /bin/pdksh, /bin/ash, /bin/bash, or even something such as
- * D:/bin/sh.exe.
- */
-#define SH_PATH "/bin/sh" /**/
-
-/* SIG_NAME:
- * This symbol contains a list of signal names in order of
- * signal number. This is intended
- * to be used as a static array initialization, like this:
- * char *sig_name[] = { SIG_NAME };
- * The signals in the list are separated with commas, and each signal
- * is surrounded by double quotes. There is no leading SIG in the signal
- * name, i.e. SIGQUIT is known as "QUIT".
- * Gaps in the signal numbers (up to NSIG) are filled in with NUMnn,
- * etc., where nn is the actual signal number (e.g. NUM37).
- * The signal number for sig_name[i] is stored in sig_num[i].
- * The last element is 0 to terminate the list with a NULL. This
- * corresponds to the 0 at the end of the sig_name_init list.
- * Note that this variable is initialized from the sig_name_init,
- * not from sig_name (which is unused).
- */
-/* SIG_NUM:
- * This symbol contains a list of signal numbers, in the same order as the
- * SIG_NAME list. It is suitable for static array initialization, as in:
- * int sig_num[] = { SIG_NUM };
- * The signals in the list are separated with commas, and the indices
- * within that list and the SIG_NAME list match, so it's easy to compute
- * the signal name from a number or vice versa at the price of a small
- * dynamic linear lookup.
- * Duplicates are allowed, but are moved to the end of the list.
- * The signal number corresponding to sig_name[i] is sig_number[i].
- * if (i < NSIG) then sig_number[i] == i.
- * The last element is 0, corresponding to the 0 at the end of
- * the sig_name_init list.
- * Note that this variable is initialized from the sig_num_init,
- * not from sig_num (which is unused).
- */
-/* SIG_SIZE:
- * This variable contains the number of elements of the SIG_NAME
- * and SIG_NUM arrays, excluding the final NULL entry.
- */
-#define SIG_NAME 0 /**/
-#define SIG_NUM 0 /**/
-#define SIG_SIZE 1 /**/
-
-/* USE_CROSS_COMPILE:
- * This symbol, if defined, indicates that Perl is being cross-compiled.
- */
-/* PERL_TARGETARCH:
- * This symbol, if defined, indicates the target architecture
- * Perl has been cross-compiled to. Undefined if not a cross-compile.
- */
-#ifndef USE_CROSS_COMPILE
-/*#define USE_CROSS_COMPILE / **/
-#define PERL_TARGETARCH "" /**/
-#endif
-
-/* PERL_USE_DEVEL:
- * This symbol, if defined, indicates that Perl was configured with
- * -Dusedevel, to enable development features. This should not be
- * done for production builds.
- */
-/*#define PERL_USE_DEVEL / **/
-
-/* HAS_ATOLF:
- * This symbol, if defined, indicates that the atolf routine is
- * available to convert strings into long doubles.
- */
-/*#define HAS_ATOLF / **/
-
-/* HAS_ATOLL:
- * This symbol, if defined, indicates that the atoll routine is
- * available to convert strings into long longs.
- */
-/*#define HAS_ATOLL / **/
-
-/* HAS__FWALK:
- * This symbol, if defined, indicates that the _fwalk system call is
- * available to apply a function to all the file handles.
- */
-/*#define HAS__FWALK / **/
-
-/* HAS_ACCEPT4:
- * This symbol, if defined, indicates that the accept4 routine is
- * available to accept socket connections.
- */
-/*#define HAS_ACCEPT4 / **/
-
-/* HAS_ACOSH:
- * This symbol, if defined, indicates that the acosh routine is
- * available to do the inverse hyperbolic cosine function.
- */
-/*#define HAS_ACOSH / **/
-
-/* HAS_AINTL:
- * This symbol, if defined, indicates that the aintl routine is
- * available. If copysignl is also present we can emulate modfl.
- */
-/*#define HAS_AINTL / **/
-
-/* HAS_ASINH:
- * This symbol, if defined, indicates that the asinh routine is
- * available to do the inverse hyperbolic sine function.
- */
-/*#define HAS_ASINH / **/
-
-/* HAS_ATANH:
- * This symbol, if defined, indicates that the atanh routine is
- * available to do the inverse hyperbolic tangent function.
- */
-/*#define HAS_ATANH / **/
-
-/* HAS_NON_INT_BITFIELDS:
- * This symbol, if defined, indicates that the C compiler accepts, without
- * error or warning, struct bitfields that are declared with sizes other
- * than plain 'int'; for example 'unsigned char' is accepted.
- */
-#define HAS_NON_INT_BITFIELDS /**/
-
-/* HAS_BUILTIN_CHOOSE_EXPR:
- * Can we handle GCC builtin for compile-time ternary-like expressions
- */
-/* HAS_BUILTIN_EXPECT:
- * Can we handle GCC builtin for telling that certain values are more
- * likely
- */
-/*#define HAS_BUILTIN_EXPECT / **/
-/*#define HAS_BUILTIN_CHOOSE_EXPR / **/
-
-/* HAS_BUILTIN_ADD_OVERFLOW:
- * This symbol, if defined, indicates that the compiler supports
- * __builtin_add_overflow for adding integers with overflow checks.
- */
-/* HAS_BUILTIN_SUB_OVERFLOW:
- * This symbol, if defined, indicates that the compiler supports
- * __builtin_sub_overflow for subtracting integers with overflow checks.
- */
-/* HAS_BUILTIN_MUL_OVERFLOW:
- * This symbol, if defined, indicates that the compiler supports
- * __builtin_mul_overflow for multiplying integers with overflow checks.
- */
-/*#define HAS_BUILTIN_ADD_OVERFLOW / **/
-/*#define HAS_BUILTIN_SUB_OVERFLOW / **/
-/*#define HAS_BUILTIN_MUL_OVERFLOW / **/
-
-/* HAS_C99_VARIADIC_MACROS:
- * If defined, the compiler supports C99 variadic macros.
- */
-/*#define HAS_C99_VARIADIC_MACROS / **/
-
-/* HAS_CLASS:
- * This symbol, if defined, indicates that the class routine is
- * available to classify doubles. Available for example in AIX.
- * The returned values are defined in <float.h> and are:
- *
- * FP_PLUS_NORM Positive normalized, nonzero
- * FP_MINUS_NORM Negative normalized, nonzero
- * FP_PLUS_DENORM Positive denormalized, nonzero
- * FP_MINUS_DENORM Negative denormalized, nonzero
- * FP_PLUS_ZERO +0.0
- * FP_MINUS_ZERO -0.0
- * FP_PLUS_INF +INF
- * FP_MINUS_INF -INF
- * FP_NANS Signaling Not a Number (NaNS)
- * FP_NANQ Quiet Not a Number (NaNQ)
- */
-/*#define HAS_CLASS / **/
-
-/* HAS_CLEARENV:
- * This symbol, if defined, indicates that the clearenv () routine is
- * available for use.
- */
-/*#define HAS_CLEARENV / **/
-
-/* HAS_STRUCT_CMSGHDR:
- * This symbol, if defined, indicates that the struct cmsghdr
- * is supported.
- */
-/*#define HAS_STRUCT_CMSGHDR / **/
-
-/* HAS_COPYSIGN:
- * This symbol, if defined, indicates that the copysign routine is
- * available to do the copysign function.
- */
-/*#define HAS_COPYSIGN / **/
-
-/* HAS_COPYSIGNL:
- * This symbol, if defined, indicates that the copysignl routine is
- * available. If aintl is also present we can emulate modfl.
- */
-/*#define HAS_COPYSIGNL / **/
-
-/* USE_CPLUSPLUS:
- * This symbol, if defined, indicates that a C++ compiler was
- * used to compiled Perl and will be used to compile extensions.
- */
-/*#define USE_CPLUSPLUS / **/
-
-/* HAS_DBMINIT_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the dbminit() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern int dbminit(char *);
- */
-/*#define HAS_DBMINIT_PROTO / **/
-
-/* HAS_DIR_DD_FD:
- * This symbol, if defined, indicates that the DIR* dirstream
- * structure contains a member variable named dd_fd.
- */
-/*#define HAS_DIR_DD_FD / **/
-
-/* HAS_DIRFD:
- * This manifest constant lets the C program know that dirfd
- * is available.
- */
-/*#define HAS_DIRFD / **/
-
-/* DLSYM_NEEDS_UNDERSCORE:
- * This symbol, if defined, indicates that we need to prepend an
- * underscore to the symbol name before calling dlsym(). This only
- * makes sense if you *have* dlsym, which we will presume is the
- * case if you're using dl_dlopen.xs.
- */
-/*#define DLSYM_NEEDS_UNDERSCORE / **/
-
-/* HAS_DUP3:
- * This symbol, if defined, indicates that the dup3 routine is
- * available to duplicate file descriptors.
- */
-/*#define HAS_DUP3 / **/
-
-/* HAS_ERF:
- * This symbol, if defined, indicates that the erf routine is
- * available to do the error function.
- */
-/*#define HAS_ERF / **/
-
-/* HAS_ERFC:
- * This symbol, if defined, indicates that the erfc routine is
- * available to do the complementary error function.
- */
-/*#define HAS_ERFC / **/
-
-/* HAS_EXP2:
- * This symbol, if defined, indicates that the exp2 routine is
- * available to do the 2**x function.
- */
-/*#define HAS_EXP2 / **/
-
-/* HAS_EXPM1:
- * This symbol, if defined, indicates that the expm1 routine is
- * available to do the exp(x) - 1 when x is near 1 function.
- */
-/*#define HAS_EXPM1 / **/
-
-/* HAS_FAST_STDIO:
- * This symbol, if defined, indicates that the "fast stdio"
- * is available to manipulate the stdio buffers directly.
- */
-/*#define HAS_FAST_STDIO / **/
-
-/* HAS_FCHDIR:
- * This symbol, if defined, indicates that the fchdir routine is
- * available to change directory using a file descriptor.
- */
-/*#define HAS_FCHDIR / **/
-
-/* FCNTL_CAN_LOCK:
- * This symbol, if defined, indicates that fcntl() can be used
- * for file locking. Normally on Unix systems this is defined.
- * It may be undefined on VMS.
- */
-/*#define FCNTL_CAN_LOCK / **/
-
-/* HAS_FDCLOSE:
- * This symbol, if defined, indicates that the fdclose routine is
- * available to free a FILE structure without closing the underlying
- * file descriptor. This function appeared in FreeBSD 10.2.
- */
-/*#define HAS_FDCLOSE / **/
-
-/* HAS_FDIM:
- * This symbol, if defined, indicates that the fdim routine is
- * available to do the positive difference function.
- */
-/*#define HAS_FDIM / **/
-
-/* HAS_FEGETROUND:
- * This symbol, if defined, indicates that the fegetround routine is
- * available to return the macro corresponding to the current rounding
- * mode.
- */
-/*#define HAS_FEGETROUND / **/
-
-/* HAS_FFS:
- * This symbol, if defined, indicates that the ffs routine is available
- * to find the first bit set in its argument. If it's not available,
- * roll your own.
- */
-/* HAS_FFSL:
- * This symbol, if defined, indicates that the ffsl routine is available
- * to find the first bit set in its argument. If it's not available,
- * roll your own.
- */
-/*#define HAS_FFS / **/
-/*#define HAS_FFSL / **/
-
-/* HAS_FINITE:
- * This symbol, if defined, indicates that the finite routine is
- * available to check whether a double is finite (non-infinity non-NaN).
- */
-/*#define HAS_FINITE / **/
-
-/* HAS_FINITEL:
- * This symbol, if defined, indicates that the finitel routine is
- * available to check whether a long double is finite
- * (non-infinity non-NaN).
- */
-/*#define HAS_FINITEL / **/
-
-/* HAS_FLOCK_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the flock() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern int flock(int, int);
- */
-/*#define HAS_FLOCK_PROTO / **/
-
-/* HAS_FMA:
- * This symbol, if defined, indicates that the fma routine is
- * available to do the multiply-add function.
- */
-/*#define HAS_FMA / **/
-
-/* HAS_FMAX:
- * This symbol, if defined, indicates that the fmax routine is
- * available to do the maximum function.
- */
-/*#define HAS_FMAX / **/
-
-/* HAS_FMIN:
- * This symbol, if defined, indicates that the fmin routine is
- * available to do the minimum function.
- */
-/*#define HAS_FMIN / **/
-
-/* HAS_FP_CLASS:
- * This symbol, if defined, indicates that the fp_class routine is
- * available to classify doubles. Available for example in Digital UNIX.
- * The returned values are defined in <math.h> and are:
- *
- * FP_SNAN Signaling NaN (Not-a-Number)
- * FP_QNAN Quiet NaN (Not-a-Number)
- * FP_POS_INF +infinity
- * FP_NEG_INF -infinity
- * FP_POS_NORM Positive normalized
- * FP_NEG_NORM Negative normalized
- * FP_POS_DENORM Positive denormalized
- * FP_NEG_DENORM Negative denormalized
- * FP_POS_ZERO +0.0 (positive zero)
- * FP_NEG_ZERO -0.0 (negative zero)
- */
-/*#define HAS_FP_CLASS / **/
-
-/* HAS_FP_CLASSL:
- * This symbol, if defined, indicates that the fp_classl routine is
- * available to classify long doubles. Available for example in
- * Digital UNIX. See for possible values HAS_FP_CLASS.
- */
-/*#define HAS_FP_CLASSL / **/
-
-/* HAS_FPCLASS:
- * This symbol, if defined, indicates that the fpclass routine is
- * available to classify doubles. Available for example in Solaris/SVR4.
- * The returned values are defined in <ieeefp.h> and are:
- *
- * FP_SNAN signaling NaN
- * FP_QNAN quiet NaN
- * FP_NINF negative infinity
- * FP_PINF positive infinity
- * FP_NDENORM negative denormalized non-zero
- * FP_PDENORM positive denormalized non-zero
- * FP_NZERO negative zero
- * FP_PZERO positive zero
- * FP_NNORM negative normalized non-zero
- * FP_PNORM positive normalized non-zero
- */
-/*#define HAS_FPCLASS / **/
-
-/* HAS_FPCLASSIFY:
- * This symbol, if defined, indicates that the fpclassify routine is
- * available to classify doubles. Available for example in HP-UX.
- * The returned values are defined in <math.h> and are
- *
- * FP_NORMAL Normalized
- * FP_ZERO Zero
- * FP_INFINITE Infinity
- * FP_SUBNORMAL Denormalized
- * FP_NAN NaN
- *
- */
-/* HAS_FP_CLASSIFY:
- * This symbol, if defined, indicates that the fp_classify routine is
- * available to classify doubles. The values are defined in <math.h>
- *
- * FP_NORMAL Normalized
- * FP_ZERO Zero
- * FP_INFINITE Infinity
- * FP_SUBNORMAL Denormalized
- * FP_NAN NaN
- *
- */
-/*#define HAS_FPCLASSIFY / **/
-/*#define HAS_FP_CLASSIFY / **/
-
-/* HAS_FPCLASSL:
- * This symbol, if defined, indicates that the fpclassl routine is
- * available to classify long doubles. Available for example in IRIX.
- * The returned values are defined in <ieeefp.h> and are:
- *
- * FP_SNAN signaling NaN
- * FP_QNAN quiet NaN
- * FP_NINF negative infinity
- * FP_PINF positive infinity
- * FP_NDENORM negative denormalized non-zero
- * FP_PDENORM positive denormalized non-zero
- * FP_NZERO negative zero
- * FP_PZERO positive zero
- * FP_NNORM negative normalized non-zero
- * FP_PNORM positive normalized non-zero
- */
-/*#define HAS_FPCLASSL / **/
-
-/* HAS_FPGETROUND:
- * This symbol, if defined, indicates that the fpgetround routine is
- * available to get the floating point rounding mode.
- */
-/*#define HAS_FPGETROUND / **/
-
-/* HAS_FPOS64_T:
- * This symbol will be defined if the C compiler supports fpos64_t.
- */
-/*#define HAS_FPOS64_T / **/
-
-/* HAS_FREXPL:
- * This symbol, if defined, indicates that the frexpl routine is
- * available to break a long double floating-point number into
- * a normalized fraction and an integral power of 2.
- */
-/*#define HAS_FREXPL / **/
-
-/* HAS_STRUCT_FS_DATA:
- * This symbol, if defined, indicates that the struct fs_data
- * to do statfs() is supported.
- */
-/*#define HAS_STRUCT_FS_DATA / **/
-
-/* HAS_FCHMODAT:
- * This symbol is defined if the fchmodat() routine is available.
- */
-/* HAS_LINKAT:
- * This symbol is defined if the linkat() routine is available.
- */
-/* HAS_OPENAT:
- * This symbol is defined if the openat() routine is available.
- */
-/* HAS_RENAMEAT:
- * This symbol is defined if the renameat() routine is available.
- */
-/* HAS_UNLINKAT:
- * This symbol is defined if the unlinkat() routine is available.
- */
-/*#define HAS_FCHMODAT / **/
-/*#define HAS_LINKAT / **/
-/*#define HAS_OPENAT / **/
-/*#define HAS_RENAMEAT / **/
-/*#define HAS_UNLINKAT / **/
-
-/* HAS_FSEEKO:
- * This symbol, if defined, indicates that the fseeko routine is
- * available to fseek beyond 32 bits (useful for ILP32 hosts).
- */
-/*#define HAS_FSEEKO / **/
-
-/* HAS_FSTATFS:
- * This symbol, if defined, indicates that the fstatfs routine is
- * available to stat filesystems by file descriptors.
- */
-/*#define HAS_FSTATFS / **/
-
-/* HAS_FSYNC:
- * This symbol, if defined, indicates that the fsync routine is
- * available to write a file's modified data and attributes to
- * permanent storage.
- */
-/*#define HAS_FSYNC / **/
-
-/* HAS_FTELLO:
- * This symbol, if defined, indicates that the ftello routine is
- * available to ftell beyond 32 bits (useful for ILP32 hosts).
- */
-/*#define HAS_FTELLO / **/
-
-/* HAS_FUTIMES:
- * This symbol, if defined, indicates that the futimes routine is
- * available to change file descriptor time stamps with struct timevals.
- */
-/*#define HAS_FUTIMES / **/
-
-/* HAS_GAI_STRERROR:
- * This symbol, if defined, indicates that the gai_strerror routine
- * is available to translate error codes returned by getaddrinfo()
- * into human readable strings.
- */
-/*#define HAS_GAI_STRERROR / **/
-
-/* HAS_GETADDRINFO:
- * This symbol, if defined, indicates that the getaddrinfo() function
- * is available for use.
- */
-/*#define HAS_GETADDRINFO / **/
-
-/* HAS_GETCWD:
- * This symbol, if defined, indicates that the getcwd routine is
- * available to get the current working directory.
- */
-/*#define HAS_GETCWD / **/
-
-/* HAS_GETESPWNAM:
- * This symbol, if defined, indicates that the getespwnam system call is
- * available to retrieve enhanced (shadow) password entries by name.
- */
-/*#define HAS_GETESPWNAM / **/
-
-/* HAS_GETFSSTAT:
- * This symbol, if defined, indicates that the getfsstat routine is
- * available to stat filesystems in bulk.
- */
-/*#define HAS_GETFSSTAT / **/
-
-/* HAS_GETITIMER:
- * This symbol, if defined, indicates that the getitimer routine is
- * available to return interval timers.
- */
-/*#define HAS_GETITIMER / **/
-
-/* HAS_GETMNT:
- * This symbol, if defined, indicates that the getmnt routine is
- * available to get filesystem mount info by filename.
- */
-/*#define HAS_GETMNT / **/
-
-/* HAS_GETMNTENT:
- * This symbol, if defined, indicates that the getmntent routine is
- * available to iterate through mounted file systems to get their info.
- */
-/*#define HAS_GETMNTENT / **/
-
-/* HAS_GETNAMEINFO:
- * This symbol, if defined, indicates that the getnameinfo() function
- * is available for use.
- */
-/*#define HAS_GETNAMEINFO / **/
-
-/* HAS_GETPRPWNAM:
- * This symbol, if defined, indicates that the getprpwnam system call is
- * available to retrieve protected (shadow) password entries by name.
- */
-/*#define HAS_GETPRPWNAM / **/
-
-/* HAS_GETSPNAM:
- * This symbol, if defined, indicates that the getspnam system call is
- * available to retrieve SysV shadow password entries by name.
- */
-/*#define HAS_GETSPNAM / **/
-
-/* HAS_HASMNTOPT:
- * This symbol, if defined, indicates that the hasmntopt routine is
- * available to query the mount options of file systems.
- */
-/*#define HAS_HASMNTOPT / **/
-
-/* HAS_HYPOT:
- * This symbol, if defined, indicates that the hypot routine is
- * available to do the hypotenuse function.
- */
-/*#define HAS_HYPOT / **/
-
-/* HAS_ILOGB:
- * This symbol, if defined, indicates that the ilogb routine is
- * available to get integer exponent of a floating-point value.
- */
-/*#define HAS_ILOGB / **/
-
-/* HAS_ILOGBL:
- * This symbol, if defined, indicates that the ilogbl routine is
- * available. If scalbnl is also present we can emulate frexpl.
- */
-/*#define HAS_ILOGBL / **/
-
-/* HAS_INETNTOP:
- * This symbol, if defined, indicates that the inet_ntop() function
- * is available to parse IPv4 and IPv6 strings.
- */
-/*#define HAS_INETNTOP / **/
-
-/* HAS_INETPTON:
- * This symbol, if defined, indicates that the inet_pton() function
- * is available to parse IPv4 and IPv6 strings.
- */
-/*#define HAS_INETPTON / **/
-
-/* HAS_INT64_T:
- * This symbol will defined if the C compiler supports int64_t.
- * Usually the <inttypes.h> needs to be included, but sometimes
- * <sys/types.h> is enough.
- */
-/*#define HAS_INT64_T / **/
-
-/* HAS_ISBLANK:
- * This manifest constant lets the C program know that isblank
- * is available.
- */
-/*#define HAS_ISBLANK / **/
-
-/* HAS_ISFINITE:
- * This symbol, if defined, indicates that the isfinite routine is
- * available to check whether a double is finite (non-infinity non-NaN).
- */
-/*#define HAS_ISFINITE / **/
-
-/* HAS_ISFINITEL:
- * This symbol, if defined, indicates that the isfinitel routine is
- * available to check whether a long double is finite.
- * (non-infinity non-NaN).
- */
-/*#define HAS_ISFINITEL / **/
-
-/* HAS_ISINF:
- * This symbol, if defined, indicates that the isinf routine is
- * available to check whether a double is an infinity.
- */
-/*#define HAS_ISINF / **/
-
-/* HAS_ISINFL:
- * This symbol, if defined, indicates that the isinfl routine is
- * available to check whether a long double is an infinity.
- */
-/*#define HAS_ISINFL / **/
-
-/* HAS_ISLESS:
- * This symbol, if defined, indicates that the isless routine is
- * available to do the isless function.
- */
-/*#define HAS_ISLESS / **/
-
-/* HAS_ISNAN:
- * This symbol, if defined, indicates that the isnan routine is
- * available to check whether a double is a NaN.
- */
-/*#define HAS_ISNAN / **/
-
-/* HAS_ISNANL:
- * This symbol, if defined, indicates that the isnanl routine is
- * available to check whether a long double is a NaN.
- */
-/*#define HAS_ISNANL / **/
-
-/* HAS_ISNORMAL:
- * This symbol, if defined, indicates that the isnormal routine is
- * available to check whether a double is normal (non-zero normalized).
- */
-/*#define HAS_ISNORMAL / **/
-
-/* HAS_J0:
- * This symbol, if defined, indicates to the C program that the
- * j0() function is available for Bessel functions of the first
- * kind of the order zero, for doubles.
- */
-/* HAS_J0L:
- * This symbol, if defined, indicates to the C program that the
- * j0l() function is available for Bessel functions of the first
- * kind of the order zero, for long doubles.
- */
-/*#define HAS_J0 / **/
-/*#define HAS_J0L / **/
-
-/* HAS_LC_MONETARY_2008:
- * This symbol, if defined, indicates that the localeconv routine is
- * available and has the additional members added in POSIX 1003.1-2008.
- */
-/*#define HAS_LC_MONETARY_2008 / **/
-
-/* HAS_LDBL_DIG:
- * This symbol, if defined, indicates that this system's <float.h>
- * or <limits.h> defines the symbol LDBL_DIG, which is the number
- * of significant digits in a long double precision number. Unlike
- * for DBL_DIG, there's no good guess for LDBL_DIG if it is undefined.
- */
-/*#define HAS_LDBL_DIG / * */
-
-/* HAS_LGAMMA:
- * This symbol, if defined, indicates that the lgamma routine is
- * available to do the log gamma function. See also HAS_TGAMMA and
- * HAS_LGAMMA_R.
- */
-/*#define HAS_LGAMMA / **/
-
-/* HAS_LGAMMA_R:
- * This symbol, if defined, indicates that the lgamma_r routine is
- * available to do the log gamma function without using the global
- * signgam variable.
- */
-/*#define HAS_LGAMMA_R / **/
-
-/* LIBM_LIB_VERSION:
- * This symbol, if defined, indicates that libm exports _LIB_VERSION
- * and that math.h defines the enum to manipulate it.
- */
-/*#define LIBM_LIB_VERSION / **/
-
-/* HAS_LLRINT:
- * This symbol, if defined, indicates that the llrint routine is
- * available to return the long long value closest to a double
- * (according to the current rounding mode).
- */
-/*#define HAS_LLRINT / **/
-
-/* HAS_LLRINTL:
- * This symbol, if defined, indicates that the llrintl routine is
- * available to return the long long value closest to a long double
- * (according to the current rounding mode).
- */
-/*#define HAS_LLRINTL / **/
-
-/* HAS_LLROUND:
- * This symbol, if defined, indicates that the llround routine is
- * available to return the nearest long long value.
- */
-/*#define HAS_LLROUND / **/
-
-/* HAS_LLROUNDL:
- * This symbol, if defined, indicates that the llroundl routine is
- * available to return the nearest long long value away from zero of
- * the long double argument value.
- */
-/*#define HAS_LLROUNDL / **/
-
-/* HAS_LOG1P:
- * This symbol, if defined, indicates that the log1p routine is
- * available to do the logarithm of 1 plus argument function.
- */
-/*#define HAS_LOG1P / **/
-
-/* HAS_LOG2:
- * This symbol, if defined, indicates that the log2 routine is
- * available to do the log2 function.
- */
-/*#define HAS_LOG2 / **/
-
-/* HAS_LOGB:
- * This symbol, if defined, indicates that the logb routine is
- * available to do the logb function.
- */
-/*#define HAS_LOGB / **/
-
-/* HAS_LRINT:
- * This symbol, if defined, indicates that the lrint routine is
- * available to return the integral value closest to a double
- * (according to the current rounding mode).
- */
-/*#define HAS_LRINT / **/
-
-/* HAS_LRINTL:
- * This symbol, if defined, indicates that the lrintl routine is
- * available to return the integral value closest to a long double
- * (according to the current rounding mode).
- */
-/*#define HAS_LRINTL / **/
-
-/* HAS_LROUND:
- * This symbol, if defined, indicates that the lround routine is
- * available to return the nearest integral value.
- */
-/*#define HAS_LROUND / **/
-
-/* HAS_LROUNDL:
- * This symbol, if defined, indicates that the lroundl routine is
- * available to return the nearest integral value away from zero of
- * the long double argument value.
- */
-/*#define HAS_LROUNDL / **/
-
-/* HAS_MADVISE:
- * This symbol, if defined, indicates that the madvise system call is
- * available to map a file into memory.
- */
-/*#define HAS_MADVISE / **/
-
-/* HAS_MALLOC_SIZE:
- * This symbol, if defined, indicates that the malloc_size
- * routine is available for use.
- */
-/*#define HAS_MALLOC_SIZE / **/
-
-/* HAS_MALLOC_GOOD_SIZE:
- * This symbol, if defined, indicates that the malloc_good_size
- * routine is available for use.
- */
-/*#define HAS_MALLOC_GOOD_SIZE / **/
-
-/* HAS_MEMMEM:
- * This symbol, if defined, indicates that the memmem routine is
- * available to return a pointer to the start of the first occurrence
- * of a substring in a memory area (or NULL if not found).
- * In glibc, memmem is a GNU extension. The function is visible in
- * libc, but the prototype is only visible if _GNU_SOURCE is #defined.
- * Thus we only define this if both the prototype and symbol are found.
- */
-/*#define HAS_MEMMEM / **/
-
-/* HAS_MEMRCHR:
- * This symbol, if defined, indicates that the memrchr routine is
- * available to return a pointer to the last occurrence of a byte in
- * a memory area (or NULL if not found).
- */
-/*#define HAS_MEMRCHR / **/
-
-/* HAS_MKDTEMP:
- * This symbol, if defined, indicates that the mkdtemp routine is
- * available to exclusively create a uniquely named temporary directory.
- */
-/*#define HAS_MKDTEMP / **/
-
-/* HAS_MKOSTEMP:
- * This symbol, if defined, indicates that the mkostemp routine is
- * available to exclusively create and open a uniquely named (with a
- * suffix) temporary file.
- */
-/*#define HAS_MKOSTEMP / **/
-
-/* HAS_MKSTEMPS:
- * This symbol, if defined, indicates that the mkstemps routine is
- * available to exclusively create and open a uniquely named
- * (with a suffix) temporary file.
- */
-/*#define HAS_MKSTEMPS / **/
-
-/* HAS_MODFL:
- * This symbol, if defined, indicates that the modfl routine is
- * available to split a long double x into a fractional part f and
- * an integer part i such that |f| < 1.0 and (f + i) = x.
- */
-/* HAS_MODFL_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the modfl() function. Otherwise, it is up
- * to the program to supply one.
- */
-/*#define HAS_MODFL / **/
-/*#define HAS_MODFL_PROTO / **/
-
-/* HAS_MPROTECT:
- * This symbol, if defined, indicates that the mprotect system call is
- * available to modify the access protection of a memory mapped file.
- */
-/*#define HAS_MPROTECT / **/
-
-/* HAS_STRUCT_MSGHDR:
- * This symbol, if defined, indicates that the struct msghdr
- * is supported.
- */
-/*#define HAS_STRUCT_MSGHDR / **/
-
-/* HAS_NAN:
- * This symbol, if defined, indicates that the nan routine is
- * available to generate NaN.
- */
-/*#define HAS_NAN / **/
-
-/* HAS_NANOSLEEP:
- * This symbol, if defined, indicates that the nanosleep
- * system call is available to sleep with 1E-9 sec accuracy.
- */
-/*#define HAS_NANOSLEEP / **/
-
-/* HAS_NEARBYINT:
- * This symbol, if defined, indicates that the nearbyint routine is
- * available to return the integral value closest to (according to
- * the current rounding mode) to x.
- */
-/*#define HAS_NEARBYINT / **/
-
-/* HAS_NEWLOCALE:
- * This symbol, if defined, indicates that the newlocale routine is
- * available to return a new locale object or modify an existing
- * locale object.
- */
-/* HAS_FREELOCALE:
- * This symbol, if defined, indicates that the freelocale routine is
- * available to deallocates the resources associated with a locale object.
- */
-/* HAS_USELOCALE:
- * This symbol, if defined, indicates that the uselocale routine is
- * available to set the current locale for the calling thread.
- */
-/* HAS_DUPLOCALE:
- * This symbol, if defined, indicates that the duplocale routine is
- * available to duplicate a locale object.
- */
-/* HAS_QUERYLOCALE:
- * This symbol, if defined, indicates that the querylocale routine is
- * available to return the name of the locale for a category mask.
- */
-/* I_XLOCALE:
- * This symbol, if defined, indicates to the C program that the
- * header xlocale.h is available. See also NEED_XLOCALE_H
- */
-/* NEED_XLOCALE_H:
- * This symbol, if defined, indicates that the C program should
- * include <xlocale.h> to get newlocale() and its friends.
- */
-/*#define HAS_NEWLOCALE / **/
-/*#define HAS_FREELOCALE / **/
-/*#define HAS_USELOCALE / **/
-/*#define HAS_DUPLOCALE / **/
-/*#define HAS_QUERYLOCALE / **/
-/*#define NEED_XLOCALE_H / **/
-/*#define I_XLOCALE / **/
-
-/* HAS_NEXTAFTER:
- * This symbol, if defined, indicates that the nextafter routine is
- * available to return the next machine representable double from
- * x in direction y.
- */
-/*#define HAS_NEXTAFTER / **/
-
-/* HAS_NEXTTOWARD:
- * This symbol, if defined, indicates that the nexttoward routine is
- * available to return the next machine representable long double from
- * x in direction y.
- */
-/*#define HAS_NEXTTOWARD / **/
-
-/* HAS_NL_LANGINFO:
- * This symbol, if defined, indicates that the nl_langinfo routine is
- * available to return local data. You will also need <langinfo.h>
- * and therefore I_LANGINFO.
- */
-/*#define HAS_NL_LANGINFO / **/
-
-/* HAS_OFF64_T:
- * This symbol will be defined if the C compiler supports off64_t.
- */
-/*#define HAS_OFF64_T / **/
-
-/* HAS_PIPE2:
- * This symbol, if defined, indicates that the pipe2 routine is
- * available to create an inter-process channel.
- */
-/*#define HAS_PIPE2 / **/
-
-/* HAS_PRCTL:
- * This symbol, if defined, indicates that the prctl routine is
- * available to set process title.
- * Note that there are at least two prctl variants: Linux and Irix.
- * While they are somewhat similar, they are incompatible.
- */
-/* HAS_PRCTL_SET_NAME:
- * This symbol, if defined, indicates that the prctl routine is
- * available to set process title and supports PR_SET_NAME.
- */
-/*#define HAS_PRCTL / **/
-/*#define HAS_PRCTL_SET_NAME / **/
-
-/* HAS_PROCSELFEXE:
- * This symbol is defined if PROCSELFEXE_PATH is a symlink
- * to the absolute pathname of the executing program.
- */
-/* PROCSELFEXE_PATH:
- * If HAS_PROCSELFEXE is defined this symbol is the filename
- * of the symbolic link pointing to the absolute pathname of
- * the executing program.
- */
-/*#define HAS_PROCSELFEXE / **/
-#if defined(HAS_PROCSELFEXE) && !defined(PROCSELFEXE_PATH)
-#define PROCSELFEXE_PATH /**/
-#endif
-
-/* HAS_PTHREAD_ATTR_SETSCOPE:
- * This symbol, if defined, indicates that the pthread_attr_setscope
- * system call is available to set the contention scope attribute of
- * a thread attribute object.
- */
-/*#define HAS_PTHREAD_ATTR_SETSCOPE / **/
-
-/* HAS_PTRDIFF_T:
- * This symbol will be defined if the C compiler supports ptrdiff_t.
- */
-#define HAS_PTRDIFF_T /**/
-
-/* HAS_READV:
- * This symbol, if defined, indicates that the readv routine is
- * available to do gather reads. You will also need <sys/uio.h>
- * and there I_SYSUIO.
- */
-/*#define HAS_READV / **/
-
-/* HAS_RECVMSG:
- * This symbol, if defined, indicates that the recvmsg routine is
- * available to send structured socket messages.
- */
-/*#define HAS_RECVMSG / **/
-
-/* HAS_REMAINDER:
- * This symbol, if defined, indicates that the remainder routine is
- * available to return the floating-point remainder.
- */
-/*#define HAS_REMAINDER / **/
-
-/* HAS_REMQUO:
- * This symbol, if defined, indicates that the remquo routine is
- * available to return the remainder and part of quotient.
- */
-/*#define HAS_REMQUO / **/
-
-/* HAS_RINT:
- * This symbol, if defined, indicates that the rint routine is
- * available to return the nearest integral value to x as double
- * using the current rounding mode.
- */
-/*#define HAS_RINT / **/
-
-/* HAS_ROUND:
- * This symbol, if defined, indicates that the round routine is
- * available to round to nearest integer, away from zero.
- */
-/*#define HAS_ROUND / **/
-
-/* HAS_SBRK_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the sbrk() function. Otherwise, it is up
- * to the program to supply one. Good guesses are
- * extern void* sbrk(int);
- * extern void* sbrk(size_t);
- */
-/*#define HAS_SBRK_PROTO / **/
-
-/* HAS_SCALBN:
- * This symbol, if defined, indicates that the scalbn routine is
- * available to multiply floating-point number by integral power
- * of radix.
- */
-/*#define HAS_SCALBN / **/
-
-/* HAS_SCALBNL:
- * This symbol, if defined, indicates that the scalbnl routine is
- * available. If ilogbl is also present we can emulate frexpl.
- */
-/*#define HAS_SCALBNL / **/
-
-/* HAS_SENDMSG:
- * This symbol, if defined, indicates that the sendmsg routine is
- * available to send structured socket messages.
- */
-/*#define HAS_SENDMSG / **/
-
-/* HAS_SETENV:
- * This symbol, if defined, indicates that the setenv routine is
- * available for use.
- */
-/*#define HAS_SETENV / **/
-
-/* HAS_SETITIMER:
- * This symbol, if defined, indicates that the setitimer routine is
- * available to set interval timers.
- */
-/*#define HAS_SETITIMER / **/
-
-/* HAS_SETLOCALE:
- * This symbol, if defined, indicates that the setlocale routine is
- * available to handle locale-specific ctype implementations.
- */
-/* SETLOCALE_ACCEPTS_ANY_LOCALE_NAME:
- * This symbol, if defined, indicates that the setlocale routine is
- * available and it accepts any input locale name as valid.
- */
-/*#define HAS_SETLOCALE / **/
-/*#define SETLOCALE_ACCEPTS_ANY_LOCALE_NAME / **/
-
-/* HAS_SETPROCTITLE:
- * This symbol, if defined, indicates that the setproctitle routine is
- * available to set process title.
- */
-/*#define HAS_SETPROCTITLE / **/
-
-/* HAS_SIGNBIT:
- * This symbol, if defined, indicates that the signbit routine is
- * available to check if the given number has the sign bit set.
- * This should include correct testing of -0.0. This will only be set
- * if the signbit() routine is safe to use with the NV type used internally
- * in perl. Users should call Perl_signbit(), which will be #defined to
- * the system's signbit() function or macro if this symbol is defined.
- */
-/*#define HAS_SIGNBIT / **/
-
-/* HAS_SIGPROCMASK:
- * This symbol, if defined, indicates that the sigprocmask
- * system call is available to examine or change the signal mask
- * of the calling process.
- */
-/*#define HAS_SIGPROCMASK / **/
-
-/* USE_SITECUSTOMIZE:
- * This symbol, if defined, indicates that sitecustomize should
- * be used.
- */
-#ifndef USE_SITECUSTOMIZE
-/*#define USE_SITECUSTOMIZE / **/
-#endif
-
-/* HAS_SNPRINTF:
- * This symbol, if defined, indicates that the snprintf () library
- * function is available for use.
- */
-/* HAS_VSNPRINTF:
- * This symbol, if defined, indicates that the vsnprintf () library
- * function is available for use.
- */
-/*#define HAS_SNPRINTF / **/
-/*#define HAS_VSNPRINTF / **/
-
-/* HAS_SOCKATMARK:
- * This symbol, if defined, indicates that the sockatmark routine is
- * available to test whether a socket is at the out-of-band mark.
- */
-/*#define HAS_SOCKATMARK / **/
-
-/* HAS_SOCKATMARK_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the sockatmark() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern int sockatmark(int);
- */
-/*#define HAS_SOCKATMARK_PROTO / **/
-
-/* HAS_SOCKS5_INIT:
- * This symbol, if defined, indicates that the socks5_init routine is
- * available to initialize SOCKS 5.
- */
-/*#define HAS_SOCKS5_INIT / **/
-
-/* HAS_SQRTL:
- * This symbol, if defined, indicates that the sqrtl routine is
- * available to do long double square roots.
- */
-/*#define HAS_SQRTL / **/
-
-/* HAS_SETRESGID_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the setresgid() function. Otherwise, it is up
- * to the program to supply one. Good guesses are
- * extern int setresgid(uid_t ruid, uid_t euid, uid_t suid);
- */
-/*#define HAS_SETRESGID_PROTO / **/
-
-/* HAS_SETRESUID_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the setresuid() function. Otherwise, it is up
- * to the program to supply one. Good guesses are
- * extern int setresuid(uid_t ruid, uid_t euid, uid_t suid);
- */
-/*#define HAS_SETRESUID_PROTO / **/
-
-/* HAS_STRUCT_STATFS_F_FLAGS:
- * This symbol, if defined, indicates that the struct statfs
- * does have the f_flags member containing the mount flags of
- * the filesystem containing the file.
- * This kind of struct statfs is coming from <sys/mount.h> (BSD 4.3),
- * not from <sys/statfs.h> (SYSV). Older BSDs (like Ultrix) do not
- * have statfs() and struct statfs, they have ustat() and getmnt()
- * with struct ustat and struct fs_data.
- */
-/*#define HAS_STRUCT_STATFS_F_FLAGS / **/
-
-/* HAS_STRUCT_STATFS:
- * This symbol, if defined, indicates that the struct statfs
- * to do statfs() is supported.
- */
-/*#define HAS_STRUCT_STATFS / **/
-
-/* HAS_FSTATVFS:
- * This symbol, if defined, indicates that the fstatvfs routine is
- * available to stat filesystems by file descriptors.
- */
-/*#define HAS_FSTATVFS / **/
-
-/* HAS_STRERROR_L:
- * This symbol, if defined, indicates that the strerror_l routine is
- * available to return the error message for a given errno value in
- * a particular locale (identified by a locale_t object).
- */
-/*#define HAS_STRERROR_L / **/
-
-/* HAS_STRFTIME:
- * This symbol, if defined, indicates that the strftime routine is
- * available to do time formatting.
- */
-/*#define HAS_STRFTIME / **/
-
-/* HAS_STRLCAT:
- * This symbol, if defined, indicates that the strlcat () routine is
- * available to do string concatenation.
- */
-/*#define HAS_STRLCAT / **/
-
-/* HAS_STRLCPY:
- * This symbol, if defined, indicates that the strlcpy () routine is
- * available to do string copying.
- */
-/*#define HAS_STRLCPY / **/
-
-/* HAS_STRNLEN:
- * This symbol, if defined, indicates that the strnlen () routine is
- * available to check the length of a string up to a maximum.
- */
-/*#define HAS_STRNLEN / **/
-
-/* HAS_STRTOLD:
- * This symbol, if defined, indicates that the strtold routine is
- * available to convert strings to long doubles.
- */
-/*#define HAS_STRTOLD / **/
-
-/* HAS_STRTOLL:
- * This symbol, if defined, indicates that the strtoll routine is
- * available to convert strings to long longs.
- */
-/*#define HAS_STRTOLL / **/
-
-/* HAS_STRTOQ:
- * This symbol, if defined, indicates that the strtoq routine is
- * available to convert strings to long longs (quads).
- */
-/*#define HAS_STRTOQ / **/
-
-/* HAS_STRTOULL:
- * This symbol, if defined, indicates that the strtoull routine is
- * available to convert strings to unsigned long longs.
- */
-/*#define HAS_STRTOULL / **/
-
-/* HAS_STRTOUQ:
- * This symbol, if defined, indicates that the strtouq routine is
- * available to convert strings to unsigned long longs (quads).
- */
-/*#define HAS_STRTOUQ / **/
-
-/* HAS_STRXFRM_L:
- * This symbol, if defined, indicates that the strxfrm_l() routine is
- * available to transform strings.
- */
-/*#define HAS_STRXFRM_L / **/
-
-/* HAS_SYSCALL_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the syscall() function. Otherwise, it is up
- * to the program to supply one. Good guesses are
- * extern int syscall(int, ...);
- * extern int syscall(long, ...);
- */
-/*#define HAS_SYSCALL_PROTO / **/
-
-/* HAS_TELLDIR_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the telldir() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern long telldir(DIR*);
- */
-/*#define HAS_TELLDIR_PROTO / **/
-
-/* HAS_TGAMMA:
- * This symbol, if defined, indicates that the tgamma routine is
- * available to do the gamma function. See also HAS_LGAMMA.
- */
-/*#define HAS_TGAMMA / **/
-
-/* HAS_CTIME64:
- * This symbol, if defined, indicates that the ctime64 () routine is
- * available to do the 64bit variant of ctime ()
- */
-/* HAS_LOCALTIME64:
- * This symbol, if defined, indicates that the localtime64 () routine is
- * available to do the 64bit variant of localtime ()
- */
-/* HAS_GMTIME64:
- * This symbol, if defined, indicates that the gmtime64 () routine is
- * available to do the 64bit variant of gmtime ()
- */
-/* HAS_MKTIME64:
- * This symbol, if defined, indicates that the mktime64 () routine is
- * available to do the 64bit variant of mktime ()
- */
-/* HAS_DIFFTIME64:
- * This symbol, if defined, indicates that the difftime64 () routine is
- * available to do the 64bit variant of difftime ()
- */
-/* HAS_ASCTIME64:
- * This symbol, if defined, indicates that the asctime64 () routine is
- * available to do the 64bit variant of asctime ()
- */
-/*#define HAS_CTIME64 / **/
-/*#define HAS_LOCALTIME64 / **/
-/*#define HAS_GMTIME64 / **/
-/*#define HAS_MKTIME64 / **/
-/*#define HAS_DIFFTIME64 / **/
-/*#define HAS_ASCTIME64 / **/
-
-/* HAS_TIMEGM:
- * This symbol, if defined, indicates that the timegm routine is
- * available to do the opposite of gmtime ()
- */
-/*#define HAS_TIMEGM / **/
-
-/* HAS_TOWLOWER:
- * This symbol, if defined, indicates that the towlower () routine is
- * available to do case conversion.
- */
-/*#define HAS_TOWLOWER / **/
-
-/* HAS_TOWUPPER:
- * This symbol, if defined, indicates that the towupper () routine is
- * available to do case conversion.
- */
-/*#define HAS_TOWUPPER / **/
-
-/* HAS_TRUNC:
- * This symbol, if defined, indicates that the trunc routine is
- * available to round doubles towards zero.
- */
-/*#define HAS_TRUNC / **/
-
-/* HAS_TRUNCL:
- * This symbol, if defined, indicates that the truncl routine is
- * available. If copysignl is also present we can emulate modfl.
- */
-/*#define HAS_TRUNCL / **/
-
-/* U32_ALIGNMENT_REQUIRED:
- * This symbol, if defined, indicates that you must access
- * character data through U32-aligned pointers.
- */
-#ifndef U32_ALIGNMENT_REQUIRED
-#define U32_ALIGNMENT_REQUIRED /**/
-#endif
-
-/* HAS_UALARM:
- * This symbol, if defined, indicates that the ualarm routine is
- * available to do alarms with microsecond granularity.
- */
-/*#define HAS_UALARM / **/
-
-/* HAS_UNORDERED:
- * This symbol, if defined, indicates that the unordered routine is
- * available to check whether two doubles are unordered
- * (effectively: whether either of them is NaN)
- */
-/*#define HAS_UNORDERED / **/
-
-/* HAS_UNSETENV:
- * This symbol, if defined, indicates that the unsetenv () routine is
- * available for use.
- */
-/*#define HAS_UNSETENV / **/
-
-/* HAS_USLEEP_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the usleep() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern int usleep(useconds_t);
- */
-/*#define HAS_USLEEP_PROTO / **/
-
-/* HAS_USTAT:
- * This symbol, if defined, indicates that the ustat system call is
- * available to query file system statistics by dev_t.
- */
-/*#define HAS_USTAT / **/
-
-/* HAS_WCSCMP:
- * This symbol, if defined, indicates that the wcscmp routine is
- * available to compare two wide character strings.
- */
-/*#define HAS_WCSCMP / **/
-
-/* HAS_WCSXFRM:
- * This symbol, if defined, indicates that the wcsxfrm routine is
- * available to transform a wide character string for wcscmp().
- */
-/*#define HAS_WCSXFRM / **/
-
-/* HAS_WRITEV:
- * This symbol, if defined, indicates that the writev routine is
- * available to do scatter writes.
- */
-/*#define HAS_WRITEV / **/
-
-/* DEFAULT_INC_EXCLUDES_DOT:
- * This symbol, if defined, removes the legacy default behavior of
- * including '.' at the end of @INC.
- */
-/*#define DEFAULT_INC_EXCLUDES_DOT / **/
-
-/* USE_DYNAMIC_LOADING:
- * This symbol, if defined, indicates that dynamic loading of
- * some sort is available.
- */
-/*#define USE_DYNAMIC_LOADING / **/
-
-/* FFLUSH_NULL:
- * This symbol, if defined, tells that fflush(NULL) correctly
- * flushes all pending stdio output without side effects. In
- * particular, on some platforms calling fflush(NULL) *still*
- * corrupts STDIN if it is a pipe.
- */
-/* FFLUSH_ALL:
- * This symbol, if defined, tells that to flush
- * all pending stdio output one must loop through all
- * the stdio file handles stored in an array and fflush them.
- * Note that if fflushNULL is defined, fflushall will not
- * even be probed for and will be left undefined.
- */
-/*#define FFLUSH_NULL / **/
-/*#define FFLUSH_ALL / **/
-
-/* I_BFD:
- * This symbol, if defined, indicates that <bfd.h> exists and
- * can be included.
- */
-/*#define I_BFD / **/
-
-/* I_CRYPT:
- * This symbol, if defined, indicates that <crypt.h> exists and
- * should be included.
- */
-/*#define I_CRYPT / **/
-
-/* DB_Prefix_t:
- * This symbol contains the type of the prefix structure element
- * in the <db.h> header file. In older versions of DB, it was
- * int, while in newer ones it is u_int32_t.
- */
-/* DB_Hash_t:
- * This symbol contains the type of the prefix structure element
- * in the <db.h> header file. In older versions of DB, it was
- * int, while in newer ones it is size_t.
- */
-/* DB_VERSION_MAJOR_CFG:
- * This symbol, if defined, defines the major version number of
- * Berkeley DB found in the <db.h> header when Perl was configured.
- */
-/* DB_VERSION_MINOR_CFG:
- * This symbol, if defined, defines the minor version number of
- * Berkeley DB found in the <db.h> header when Perl was configured.
- * For DB version 1 this is always 0.
- */
-/* DB_VERSION_PATCH_CFG:
- * This symbol, if defined, defines the patch version number of
- * Berkeley DB found in the <db.h> header when Perl was configured.
- * For DB version 1 this is always 0.
- */
-#define DB_Hash_t u_int32_t /**/
-#define DB_Prefix_t size_t /**/
-#define DB_VERSION_MAJOR_CFG 0 /**/
-#define DB_VERSION_MINOR_CFG 0 /**/
-#define DB_VERSION_PATCH_CFG 0 /**/
-
-/* I_FENV:
- * This symbol, if defined, indicates to the C program that it should
- * include <fenv.h> to get the floating point environment definitions.
- */
-/*#define I_FENV / **/
-
-/* I_FP:
- * This symbol, if defined, indicates that <fp.h> exists and
- * should be included.
- */
-/*#define I_FP / **/
-
-/* I_FP_CLASS:
- * This symbol, if defined, indicates that <fp_class.h> exists and
- * should be included.
- */
-/*#define I_FP_CLASS / **/
-
-/* I_IEEEFP:
- * This symbol, if defined, indicates that <ieeefp.h> exists and
- * should be included.
- */
-/*#define I_IEEEFP / **/
-
-/* I_INTTYPES:
- * This symbol, if defined, indicates to the C program that it should
- * include <inttypes.h>.
- */
-/*#define I_INTTYPES / **/
-
-/* I_LANGINFO:
- * This symbol, if defined, indicates that <langinfo.h> exists and
- * should be included.
- */
-/*#define I_LANGINFO / **/
-
-/* I_LIBUTIL:
- * This symbol, if defined, indicates that <libutil.h> exists and
- * should be included.
- */
-/*#define I_LIBUTIL / **/
-
-/* I_MALLOCMALLOC:
- * This symbol, if defined, indicates to the C program that it should
- * include <malloc/malloc.h>.
- */
-/*#define I_MALLOCMALLOC / **/
-
-/* I_MNTENT:
- * This symbol, if defined, indicates that <mntent.h> exists and
- * should be included.
- */
-/*#define I_MNTENT / **/
-
-/* I_NETINET_TCP:
- * This symbol, if defined, indicates to the C program that it should
- * include <netinet/tcp.h>.
- */
-/*#define I_NETINET_TCP / **/
-
-/* I_POLL:
- * This symbol, if defined, indicates that <poll.h> exists and
- * should be included. (see also HAS_POLL)
- */
-/*#define I_POLL / **/
-
-/* I_PROT:
- * This symbol, if defined, indicates that <prot.h> exists and
- * should be included.
- */
-/*#define I_PROT / **/
-
-/* I_QUADMATH:
- * This symbol, if defined, indicates that <quadmath.h> exists and
- * should be included.
- */
-/*#define I_QUADMATH / **/
-
-/* I_SHADOW:
- * This symbol, if defined, indicates that <shadow.h> exists and
- * should be included.
- */
-/*#define I_SHADOW / **/
-
-/* I_SOCKS:
- * This symbol, if defined, indicates that <socks.h> exists and
- * should be included.
- */
-/*#define I_SOCKS / **/
-
-/* I_STDBOOL:
- * This symbol, if defined, indicates that <stdbool.h> exists and
- * can be included.
- */
-/*#define I_STDBOOL / **/
-
-/* I_STDINT:
- * This symbol, if defined, indicates that <stdint.h> exists and
- * should be included.
- */
-/*#define I_STDINT / **/
-
-/* I_SUNMATH:
- * This symbol, if defined, indicates that <sunmath.h> exists and
- * should be included.
- */
-/*#define I_SUNMATH / **/
-
-/* I_SYSLOG:
- * This symbol, if defined, indicates that <syslog.h> exists and
- * should be included.
- */
-/*#define I_SYSLOG / **/
-
-/* I_SYSMODE:
- * This symbol, if defined, indicates that <sys/mode.h> exists and
- * should be included.
- */
-/*#define I_SYSMODE / **/
-
-/* I_SYS_MOUNT:
- * This symbol, if defined, indicates that <sys/mount.h> exists and
- * should be included.
- */
-/*#define I_SYS_MOUNT / **/
-
-/* I_SYS_STATFS:
- * This symbol, if defined, indicates that <sys/statfs.h> exists.
- */
-/*#define I_SYS_STATFS / **/
-
-/* I_SYS_STATVFS:
- * This symbol, if defined, indicates that <sys/statvfs.h> exists and
- * should be included.
- */
-/*#define I_SYS_STATVFS / **/
-
-/* I_SYS_SYSCALL:
- * This symbol, if defined, indicates that <sys/syscall.h> exists.
- */
-/*#define I_SYS_SYSCALL / **/
-
-/* I_SYSUTSNAME:
- * This symbol, if defined, indicates that <sys/utsname.h> exists and
- * should be included.
- */
-/*#define I_SYSUTSNAME / **/
-
-/* I_SYS_VFS:
- * This symbol, if defined, indicates that <sys/vfs.h> exists and
- * should be included.
- */
-/*#define I_SYS_VFS / **/
-
-/* I_USTAT:
- * This symbol, if defined, indicates that <ustat.h> exists and
- * should be included.
- */
-/*#define I_USTAT / **/
-
-/* I_WCHAR:
- * This symbol, if defined, indicates to the C program that <wchar.h>
- * is available for inclusion
- */
-/*#define I_WCHAR / **/
-
-/* I_WCTYPE:
- * This symbol, if defined, indicates that <wctype.h> exists.
- */
-/*#define I_WCTYPE / **/
-
-/* DOUBLEINFBYTES:
- * This symbol, if defined, is a comma-separated list of
- * hexadecimal bytes for the double precision infinity.
- */
-/* DOUBLENANBYTES:
- * This symbol, if defined, is a comma-separated list of
- * hexadecimal bytes (0xHH) for the double precision not-a-number.
- */
-/* LONGDBLINFBYTES:
- * This symbol, if defined, is a comma-separated list of
- * hexadecimal bytes for the long double precision infinity.
- */
-/* LONGDBLNANBYTES:
- * This symbol, if defined, is a comma-separated list of
- * hexadecimal bytes (0xHH) for the long double precision not-a-number.
- */
-#define DOUBLEINFBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f /**/
-#define DOUBLENANBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f /**/
-#define LONGDBLINFBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /**/
-#define LONGDBLNANBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /**/
-
-/* PERL_PRIfldbl:
- * This symbol, if defined, contains the string used by stdio to
- * format long doubles (format 'f') for output.
- */
-/* PERL_PRIgldbl:
- * This symbol, if defined, contains the string used by stdio to
- * format long doubles (format 'g') for output.
- */
-/* PERL_PRIeldbl:
- * This symbol, if defined, contains the string used by stdio to
- * format long doubles (format 'e') for output.
- */
-/* PERL_SCNfldbl:
- * This symbol, if defined, contains the string used by stdio to
- * format long doubles (format 'f') for input.
- */
-/* DOUBLEKIND:
- * DOUBLEKIND will be one of
- * DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN
- * DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN
- * DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN
- * DOUBLE_IS_IEEE_754_64_BIT_BIG_ENDIAN
- * DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
- * DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
- * DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE
- * DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
- * DOUBLE_IS_VAX_F_FLOAT
- * DOUBLE_IS_VAX_D_FLOAT
- * DOUBLE_IS_VAX_G_FLOAT
- * DOUBLE_IS_IBM_SINGLE_32_BIT
- * DOUBLE_IS_IBM_DOUBLE_64_BIT
- * DOUBLE_IS_CRAY_SINGLE_64_BIT
- * DOUBLE_IS_UNKNOWN_FORMAT
- */
-/* DOUBLE_HAS_INF:
- * This symbol, if defined, indicates that the double has
- * the infinity.
- */
-/* DOUBLE_HAS_NAN:
- * This symbol, if defined, indicates that the double has
- * the not-a-number.
- */
-/* DOUBLE_HAS_NEGATIVE_ZERO:
- * This symbol, if defined, indicates that the double has
- * the negative_zero.
- */
-/* DOUBLE_HAS_SUBNORMALS:
- * This symbol, if defined, indicates that the double has
- * the subnormals (denormals).
- */
-/* DOUBLE_STYLE_CRAY:
- * This symbol, if defined, indicates that the double is
- * the 64-bit CRAY mainframe format.
- */
-/* DOUBLE_STYLE_IBM:
- * This symbol, if defined, indicates that the double is
- * the 64-bit IBM mainframe format.
- */
-/* DOUBLE_STYLE_IEEE:
- * This symbol, if defined, indicates that the double is
- * the 64-bit IEEE 754.
- */
-/* DOUBLE_STYLE_VAX:
- * This symbol, if defined, indicates that the double is
- * the 64-bit VAX format D or G.
- */
-#define DOUBLEKIND 3 /**/
-#define DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN 1
-#define DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN 2
-#define DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN 3
-#define DOUBLE_IS_IEEE_754_64_BIT_BIG_ENDIAN 4
-#define DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN 5
-#define DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN 6
-#define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE 7
-#define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE 8
-#define DOUBLE_IS_VAX_F_FLOAT 9
-#define DOUBLE_IS_VAX_D_FLOAT 10
-#define DOUBLE_IS_VAX_G_FLOAT 11
-#define DOUBLE_IS_IBM_SINGLE_32_BIT 12
-#define DOUBLE_IS_IBM_DOUBLE_64_BIT 13
-#define DOUBLE_IS_CRAY_SINGLE_64_BIT 14
-#define DOUBLE_IS_UNKNOWN_FORMAT -1
-/*#define PERL_PRIfldbl "llf" / **/
-/*#define PERL_PRIgldbl "llg" / **/
-/*#define PERL_PRIeldbl "lle" / **/
-/*#define PERL_SCNfldbl "llf" / **/
-#define DOUBLE_HAS_INF
-#define DOUBLE_HAS_NAN
-#define DOUBLE_HAS_NEGATIVE_ZERO
-#define DOUBLE_HAS_SUBNORMALS
-#undef DOUBLE_STYLE_CRAY
-#undef DOUBLE_STYLE_IBM
-#define DOUBLE_STYLE_IEEE
-#undef DOUBLE_STYLE_VAX
-
-/* DOUBLEMANTBITS:
- * This symbol, if defined, tells how many mantissa bits
- * there are in double precision floating point format.
- * Note that this is usually DBL_MANT_DIG minus one, since
- * with the standard IEEE 754 formats DBL_MANT_DIG includes
- * the implicit bit, which doesn't really exist.
- */
-/* LONGDBLMANTBITS:
- * This symbol, if defined, tells how many mantissa bits
- * there are in long double precision floating point format.
- * Note that this can be LDBL_MANT_DIG minus one,
- * since LDBL_MANT_DIG can include the IEEE 754 implicit bit.
- * The common x86-style 80-bit long double does not have
- * an implicit bit.
- */
-/* NVMANTBITS:
- * This symbol, if defined, tells how many mantissa bits
- * (not including implicit bit) there are in a Perl NV.
- * This depends on which floating point type was chosen.
- */
-#define DOUBLEMANTBITS 52
-#define LONGDBLMANTBITS 64
-#define NVMANTBITS 52
-
-/* NEED_VA_COPY:
- * This symbol, if defined, indicates that the system stores
- * the variable argument list datatype, va_list, in a format
- * that cannot be copied by simple assignment, so that some
- * other means must be used when copying is required.
- * As such systems vary in their provision (or non-provision)
- * of copying mechanisms, handy.h defines a platform-
- * independent macro, Perl_va_copy(src, dst), to do the job.
- */
-#define NEED_VA_COPY /**/
-
-/* I32df:
- * This symbol defines the format string used for printing a Perl I32
- * as a signed decimal integer.
- */
-/* U32uf:
- * This symbol defines the format string used for printing a Perl U32
- * as an unsigned decimal integer.
- */
-/* U32of:
- * This symbol defines the format string used for printing a Perl U32
- * as an unsigned octal integer.
- */
-/* U32xf:
- * This symbol defines the format string used for printing a Perl U32
- * as an unsigned hexadecimal integer in lowercase abcdef.
- */
-/* U32Xf:
- * This symbol defines the format string used for printing a Perl U32
- * as an unsigned hexadecimal integer in uppercase ABCDEF.
- */
-#define I32df "ld" /**/
-#define U32of "lo" /**/
-#define U32uf "lu" /**/
-#define U32xf "lx" /**/
-#define U32Xf "lX" /**/
-
-/* IVTYPE:
- * This symbol defines the C type used for Perl's IV.
- */
-/* UVTYPE:
- * This symbol defines the C type used for Perl's UV.
- */
-/* I8TYPE:
- * This symbol defines the C type used for Perl's I8.
- */
-/* U8TYPE:
- * This symbol defines the C type used for Perl's U8.
- */
-/* I16TYPE:
- * This symbol defines the C type used for Perl's I16.
- */
-/* U16TYPE:
- * This symbol defines the C type used for Perl's U16.
- */
-/* I32TYPE:
- * This symbol defines the C type used for Perl's I32.
- */
-/* U32TYPE:
- * This symbol defines the C type used for Perl's U32.
- */
-/* I64TYPE:
- * This symbol defines the C type used for Perl's I64.
- */
-/* U64TYPE:
- * This symbol defines the C type used for Perl's U64.
- */
-/* NVTYPE:
- * This symbol defines the C type used for Perl's NV.
- */
-/* IVSIZE:
- * This symbol contains the sizeof(IV).
- */
-/* UVSIZE:
- * This symbol contains the sizeof(UV).
- */
-/* I8SIZE:
- * This symbol contains the sizeof(I8).
- */
-/* U8SIZE:
- * This symbol contains the sizeof(U8).
- */
-/* I16SIZE:
- * This symbol contains the sizeof(I16).
- */
-/* U16SIZE:
- * This symbol contains the sizeof(U16).
- */
-/* I32SIZE:
- * This symbol contains the sizeof(I32).
- */
-/* U32SIZE:
- * This symbol contains the sizeof(U32).
- */
-/* I64SIZE:
- * This symbol contains the sizeof(I64).
- */
-/* U64SIZE:
- * This symbol contains the sizeof(U64).
- */
-/* NVSIZE:
- * This symbol contains the sizeof(NV).
- * Note that some floating point formats have unused bytes.
- * The most notable example is the x86* 80-bit extended precision
- * which comes in byte sizes of 12 and 16 (for 32 and 64 bit
- * platforms, respectively), but which only uses 10 bytes.
- * Perl compiled with -Duselongdouble on x86* is like this.
- */
-/* NV_PRESERVES_UV:
- * This symbol, if defined, indicates that a variable of type NVTYPE
- * can preserve all the bits of a variable of type UVTYPE.
- */
-/* NV_PRESERVES_UV_BITS:
- * This symbol contains the number of bits a variable of type NVTYPE
- * can preserve of a variable of type UVTYPE.
- */
-/* NV_OVERFLOWS_INTEGERS_AT:
- * This symbol gives the largest integer value that NVs can hold. This
- * value + 1.0 cannot be stored accurately. It is expressed as constant
- * floating point expression to reduce the chance of decimal/binary
- * conversion issues. If it can not be determined, the value 0 is given.
- */
-/* NV_ZERO_IS_ALLBITS_ZERO:
- * This symbol, if defined, indicates that a variable of type NVTYPE
- * stores 0.0 in memory as all bits zero.
- */
-#define IVTYPE long /**/
-#define UVTYPE unsigned long /**/
-#define I8TYPE signed char /**/
-#define U8TYPE unsigned char /**/
-#define I16TYPE short /**/
-#define U16TYPE unsigned short /**/
-#define I32TYPE long /**/
-#define U32TYPE unsigned long /**/
-#ifdef HAS_QUAD
-#define I64TYPE int64_t /**/
-#define U64TYPE uint64_t /**/
-#endif
-#define NVTYPE double /**/
-#define IVSIZE 4 /**/
-#define UVSIZE 4 /**/
-#define I8SIZE 1 /**/
-#define U8SIZE 1 /**/
-#define I16SIZE 2 /**/
-#define U16SIZE 2 /**/
-#define I32SIZE 4 /**/
-#define U32SIZE 4 /**/
-#ifdef HAS_QUAD
-#define I64SIZE 8 /**/
-#define U64SIZE 8 /**/
-#endif
-#define NVSIZE 8 /**/
-#undef NV_PRESERVES_UV
-#define NV_PRESERVES_UV_BITS 0
-#define NV_OVERFLOWS_INTEGERS_AT (256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0)
-#undef NV_ZERO_IS_ALLBITS_ZERO
-#if UVSIZE == 8
-# ifdef BYTEORDER
-# if BYTEORDER == 0x1234
-# undef BYTEORDER
-# define BYTEORDER 0x12345678
-# else
-# if BYTEORDER == 0x4321
-# undef BYTEORDER
-# define BYTEORDER 0x87654321
-# endif
-# endif
-# endif
-#endif
-
-/* IVdf:
- * This symbol defines the format string used for printing a Perl IV
- * as a signed decimal integer.
- */
-/* UVuf:
- * This symbol defines the format string used for printing a Perl UV
- * as an unsigned decimal integer.
- */
-/* UVof:
- * This symbol defines the format string used for printing a Perl UV
- * as an unsigned octal integer.
- */
-/* UVxf:
- * This symbol defines the format string used for printing a Perl UV
- * as an unsigned hexadecimal integer in lowercase abcdef.
- */
-/* UVXf:
- * This symbol defines the format string used for printing a Perl UV
- * as an unsigned hexadecimal integer in uppercase ABCDEF.
- */
-/* NVef:
- * This symbol defines the format string used for printing a Perl NV
- * using %e-ish floating point format.
- */
-/* NVff:
- * This symbol defines the format string used for printing a Perl NV
- * using %f-ish floating point format.
- */
-/* NVgf:
- * This symbol defines the format string used for printing a Perl NV
- * using %g-ish floating point format.
- */
-#define IVdf "ld" /**/
-#define UVuf "lu" /**/
-#define UVof "lo" /**/
-#define UVxf "lx" /**/
-#define UVXf "lX" /**/
-#define NVef "e" /**/
-#define NVff "f" /**/
-#define NVgf "g" /**/
-
-/* SELECT_MIN_BITS:
- * This symbol holds the minimum number of bits operated by select.
- * That is, if you do select(n, ...), how many bits at least will be
- * cleared in the masks if some activity is detected. Usually this
- * is either n or 32*ceil(n/32), especially many little-endians do
- * the latter. This is only useful if you have select(), naturally.
- */
-#define SELECT_MIN_BITS 32 /**/
-
-/* ST_DEV_SIZE:
- * This variable contains the size of struct stat's st_dev in bytes.
- */
-/* ST_DEV_SIGN:
- * This symbol holds the signedness of struct stat's st_dev.
- * 1 for unsigned, -1 for signed.
- */
-#define ST_DEV_SIGN 1 /* st_dev sign */
-#define ST_DEV_SIZE 4 /* st_dev size */
-
-/* ST_INO_SIZE:
- * This variable contains the size of struct stat's st_ino in bytes.
- */
-/* ST_INO_SIGN:
- * This symbol holds the signedness of struct stat's st_ino.
- * 1 for unsigned, -1 for signed.
- */
-#define ST_INO_SIGN 1 /* st_ino sign */
-#define ST_INO_SIZE 4 /* st_ino size */
-
-/* STARTPERL:
- * This variable contains the string to put in front of a perl
- * script to make sure (one hopes) that it runs with perl and not
- * some shell.
- */
-#define STARTPERL "#!perl" /**/
-
-/* HAS_STDIO_STREAM_ARRAY:
- * This symbol, if defined, tells that there is an array
- * holding the stdio streams.
- */
-/* STDIO_STREAM_ARRAY:
- * This symbol tells the name of the array holding the stdio streams.
- * Usual values include _iob, __iob, and __sF.
- */
-/*#define HAS_STDIO_STREAM_ARRAY / **/
-#ifdef HAS_STDIO_STREAM_ARRAY
-#define STDIO_STREAM_ARRAY
-#endif
-
-/* GMTIME_MAX:
- * This symbol contains the maximum value for the time_t offset that
- * the system function gmtime () accepts, and defaults to 0
- */
-/* GMTIME_MIN:
- * This symbol contains the minimum value for the time_t offset that
- * the system function gmtime () accepts, and defaults to 0
- */
-/* LOCALTIME_MAX:
- * This symbol contains the maximum value for the time_t offset that
- * the system function localtime () accepts, and defaults to 0
- */
-/* LOCALTIME_MIN:
- * This symbol contains the minimum value for the time_t offset that
- * the system function localtime () accepts, and defaults to 0
- */
-#define GMTIME_MAX 2147483647 /**/
-#define GMTIME_MIN 0 /**/
-#define LOCALTIME_MAX 2147483647 /**/
-#define LOCALTIME_MIN 0 /**/
-
-/* USE_64_BIT_INT:
- * This symbol, if defined, indicates that 64-bit integers should
- * be used when available. If not defined, the native integers
- * will be employed (be they 32 or 64 bits). The minimal possible
- * 64-bitness is used, just enough to get 64-bit integers into Perl.
- * This may mean using for example "long longs", while your memory
- * may still be limited to 2 gigabytes.
- */
-/* USE_64_BIT_ALL:
- * This symbol, if defined, indicates that 64-bit integers should
- * be used when available. If not defined, the native integers
- * will be used (be they 32 or 64 bits). The maximal possible
- * 64-bitness is employed: LP64 or ILP64, meaning that you will
- * be able to use more than 2 gigabytes of memory. This mode is
- * even more binary incompatible than USE_64_BIT_INT. You may not
- * be able to run the resulting executable in a 32-bit CPU at all or
- * you may need at least to reboot your OS to 64-bit mode.
- */
-#ifndef USE_64_BIT_INT
-/*#define USE_64_BIT_INT / **/
-#endif
-#ifndef USE_64_BIT_ALL
-/*#define USE_64_BIT_ALL / **/
-#endif
-
-/* USE_C_BACKTRACE:
- * This symbol, if defined, indicates that Perl should
- * be built with support for backtrace.
- */
-/*#define USE_C_BACKTRACE / **/
-
-/* USE_STRICT_BY_DEFAULT:
- * This symbol, if defined, enables additional defaults.
- * At this time it only enables implicit strict by default.
- */
-/*#define USE_STRICT_BY_DEFAULT / * use strict by default */
-
-/* USE_DTRACE:
- * This symbol, if defined, indicates that Perl should
- * be built with support for DTrace.
- */
-/*#define USE_DTRACE / **/
-
-/* USE_FAST_STDIO:
- * This symbol, if defined, indicates that Perl should
- * be built to use 'fast stdio'.
- * Defaults to define in Perls 5.8 and earlier, to undef later.
- */
-#ifndef USE_FAST_STDIO
-/*#define USE_FAST_STDIO / **/
-#endif
-
-/* USE_KERN_PROC_PATHNAME:
- * This symbol, if defined, indicates that we can use sysctl with
- * KERN_PROC_PATHNAME to get a full path for the executable, and hence
- * convert $^X to an absolute path.
- */
-/*#define USE_KERN_PROC_PATHNAME / **/
-
-/* USE_LARGE_FILES:
- * This symbol, if defined, indicates that large file support
- * should be used when available.
- */
-#ifndef USE_LARGE_FILES
-/*#define USE_LARGE_FILES / **/
-#endif
-
-/* USE_LONG_DOUBLE:
- * This symbol, if defined, indicates that long doubles should
- * be used when available.
- */
-#ifndef USE_LONG_DOUBLE
-/*#define USE_LONG_DOUBLE / **/
-#endif
-
-/* USE_MORE_BITS:
- * This symbol, if defined, indicates that 64-bit interfaces and
- * long doubles should be used when available.
- */
-#ifndef USE_MORE_BITS
-/*#define USE_MORE_BITS / **/
-#endif
-
-/* MULTIPLICITY:
- * This symbol, if defined, indicates that Perl should
- * be built to use multiplicity.
- */
-#ifndef MULTIPLICITY
-/*#define MULTIPLICITY / **/
-#endif
-
-/* USE_NSGETEXECUTABLEPATH:
- * This symbol, if defined, indicates that we can use _NSGetExecutablePath
- * and realpath to get a full path for the executable, and hence convert
- * $^X to an absolute path.
- */
-/*#define USE_NSGETEXECUTABLEPATH / **/
-
-/* USE_PERLIO:
- * This symbol, if defined, indicates that the PerlIO abstraction should
- * be used throughout. If not defined, stdio should be
- * used in a fully backward compatible manner.
- */
-#ifndef USE_PERLIO
-/*#define USE_PERLIO / **/
-#endif
-
-/* USE_QUADMATH:
- * This symbol, if defined, indicates that the quadmath library should
- * be used when available.
- */
-#ifndef USE_QUADMATH
-/*#define USE_QUADMATH / **/
-#endif
-
-/* USE_SOCKS:
- * This symbol, if defined, indicates that Perl should
- * be built to use socks.
- */
-#ifndef USE_SOCKS
-/*#define USE_SOCKS / **/
-#endif
-
-/* HAS_DRAND48_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the drand48() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern double drand48(void);
- */
-/*#define HAS_DRAND48_PROTO / **/
-
-/* HAS_GETHOST_PROTOS:
- * This symbol, if defined, indicates that <netdb.h> includes
- * prototypes for gethostent(), gethostbyname(), and
- * gethostbyaddr(). Otherwise, it is up to the program to guess
- * them. See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-/*#define HAS_GETHOST_PROTOS / **/
-
-/* HAS_GETNET_PROTOS:
- * This symbol, if defined, indicates that <netdb.h> includes
- * prototypes for getnetent(), getnetbyname(), and
- * getnetbyaddr(). Otherwise, it is up to the program to guess
- * them. See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-/*#define HAS_GETNET_PROTOS / **/
-
-/* HAS_GETPROTO_PROTOS:
- * This symbol, if defined, indicates that <netdb.h> includes
- * prototypes for getprotoent(), getprotobyname(), and
- * getprotobyaddr(). Otherwise, it is up to the program to guess
- * them. See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-/*#define HAS_GETPROTO_PROTOS / **/
-
-/* HAS_GETSERV_PROTOS:
- * This symbol, if defined, indicates that <netdb.h> includes
- * prototypes for getservent(), getservbyname(), and
- * getservbyaddr(). Otherwise, it is up to the program to guess
- * them. See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-/*#define HAS_GETSERV_PROTOS / **/
-
-/* HAS_LSEEK_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the lseek() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern off_t lseek(int, off_t, int);
- */
-/*#define HAS_LSEEK_PROTO / **/
-
-/* Netdb_host_t:
- * This symbol holds the type used for the 1st argument
- * to gethostbyaddr().
- */
-/* Netdb_hlen_t:
- * This symbol holds the type used for the 2nd argument
- * to gethostbyaddr().
- */
-/* Netdb_name_t:
- * This symbol holds the type used for the argument to
- * gethostbyname().
- */
-/* Netdb_net_t:
- * This symbol holds the type used for the 1st argument to
- * getnetbyaddr().
- */
-#define Netdb_host_t const char * /**/
-#define Netdb_hlen_t int /**/
-#define Netdb_name_t const char * /**/
-#define Netdb_net_t unsigned long /**/
-
-/* Select_fd_set_t:
- * This symbol holds the type used for the 2nd, 3rd, and 4th
- * arguments to select. Usually, this is 'fd_set *', if HAS_FD_SET
- * is defined, and 'int *' otherwise. This is only useful if you
- * have select(), of course.
- */
-#define Select_fd_set_t int /**/
-
-/* Sock_size_t:
- * This symbol holds the type used for the size argument of
- * various socket calls (just the base type, not the pointer-to).
- */
-#define Sock_size_t int /**/
-
-/* ARCHNAME:
- * This symbol holds a string representing the architecture name.
- * It may be used to construct an architecture-dependant pathname
- * where library files may be held under a private library, for
- * instance.
- */
-#define ARCHNAME "unknown" /**/
-
-/* HAS_ASCTIME_R:
- * This symbol, if defined, indicates that the asctime_r routine
- * is available to asctime re-entrantly.
- */
-/* ASCTIME_R_PROTO:
- * This symbol encodes the prototype of asctime_r.
- * It is zero if d_asctime_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_asctime_r
- * is defined.
- */
-/*#define HAS_ASCTIME_R / **/
-#define ASCTIME_R_PROTO 0 /**/
-
-/* HAS_CRYPT_R:
- * This symbol, if defined, indicates that the crypt_r routine
- * is available to crypt re-entrantly.
- */
-/* CRYPT_R_PROTO:
- * This symbol encodes the prototype of crypt_r.
- * It is zero if d_crypt_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_crypt_r
- * is defined.
- */
-/*#define HAS_CRYPT_R / **/
-#define CRYPT_R_PROTO 0 /**/
-
-/* HAS_CTERMID_R:
- * This symbol, if defined, indicates that the ctermid_r routine
- * is available to ctermid re-entrantly.
- */
-/* CTERMID_R_PROTO:
- * This symbol encodes the prototype of ctermid_r.
- * It is zero if d_ctermid_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctermid_r
- * is defined.
- */
-/*#define HAS_CTERMID_R / **/
-#define CTERMID_R_PROTO 0 /**/
-
-/* HAS_CTIME_R:
- * This symbol, if defined, indicates that the ctime_r routine
- * is available to ctime re-entrantly.
- */
-/* CTIME_R_PROTO:
- * This symbol encodes the prototype of ctime_r.
- * It is zero if d_ctime_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctime_r
- * is defined.
- */
-/*#define HAS_CTIME_R / **/
-#define CTIME_R_PROTO 0 /**/
-
-/* HAS_DRAND48_R:
- * This symbol, if defined, indicates that the drand48_r routine
- * is available to drand48 re-entrantly.
- */
-/* DRAND48_R_PROTO:
- * This symbol encodes the prototype of drand48_r.
- * It is zero if d_drand48_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_drand48_r
- * is defined.
- */
-/*#define HAS_DRAND48_R / **/
-#define DRAND48_R_PROTO 0 /**/
-
-/* HAS_ENDGRENT_R:
- * This symbol, if defined, indicates that the endgrent_r routine
- * is available to endgrent re-entrantly.
- */
-/* ENDGRENT_R_PROTO:
- * This symbol encodes the prototype of endgrent_r.
- * It is zero if d_endgrent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endgrent_r
- * is defined.
- */
-/*#define HAS_ENDGRENT_R / **/
-#define ENDGRENT_R_PROTO 0 /**/
-
-/* HAS_ENDHOSTENT_R:
- * This symbol, if defined, indicates that the endhostent_r routine
- * is available to endhostent re-entrantly.
- */
-/* ENDHOSTENT_R_PROTO:
- * This symbol encodes the prototype of endhostent_r.
- * It is zero if d_endhostent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endhostent_r
- * is defined.
- */
-/*#define HAS_ENDHOSTENT_R / **/
-#define ENDHOSTENT_R_PROTO 0 /**/
-
-/* HAS_ENDNETENT_R:
- * This symbol, if defined, indicates that the endnetent_r routine
- * is available to endnetent re-entrantly.
- */
-/* ENDNETENT_R_PROTO:
- * This symbol encodes the prototype of endnetent_r.
- * It is zero if d_endnetent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endnetent_r
- * is defined.
- */
-/*#define HAS_ENDNETENT_R / **/
-#define ENDNETENT_R_PROTO 0 /**/
-
-/* HAS_ENDPROTOENT_R:
- * This symbol, if defined, indicates that the endprotoent_r routine
- * is available to endprotoent re-entrantly.
- */
-/* ENDPROTOENT_R_PROTO:
- * This symbol encodes the prototype of endprotoent_r.
- * It is zero if d_endprotoent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endprotoent_r
- * is defined.
- */
-/*#define HAS_ENDPROTOENT_R / **/
-#define ENDPROTOENT_R_PROTO 0 /**/
-
-/* HAS_ENDPWENT_R:
- * This symbol, if defined, indicates that the endpwent_r routine
- * is available to endpwent re-entrantly.
- */
-/* ENDPWENT_R_PROTO:
- * This symbol encodes the prototype of endpwent_r.
- * It is zero if d_endpwent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endpwent_r
- * is defined.
- */
-/*#define HAS_ENDPWENT_R / **/
-#define ENDPWENT_R_PROTO 0 /**/
-
-/* HAS_ENDSERVENT_R:
- * This symbol, if defined, indicates that the endservent_r routine
- * is available to endservent re-entrantly.
- */
-/* ENDSERVENT_R_PROTO:
- * This symbol encodes the prototype of endservent_r.
- * It is zero if d_endservent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endservent_r
- * is defined.
- */
-/*#define HAS_ENDSERVENT_R / **/
-#define ENDSERVENT_R_PROTO 0 /**/
-
-/* GETENV_PRESERVES_OTHER_THREAD:
- * This symbol, if defined, indicates that the getenv system call doesn't
- * zap the static buffer of getenv() in a different thread.
- *
- * The typical getenv() implementation will return a pointer to the proper
- * position in **environ. But some may instead copy them to a static
- * buffer in getenv(). If there is a per-thread instance of that buffer,
- * or the return points to **environ, then a many-reader/1-writer mutex
- * will work; otherwise an exclusive locking mutex is required to prevent
- * races.
- */
-#define GETENV_PRESERVES_OTHER_THREAD /**/
-
-/* HAS_GETGRENT_R:
- * This symbol, if defined, indicates that the getgrent_r routine
- * is available to getgrent re-entrantly.
- */
-/* GETGRENT_R_PROTO:
- * This symbol encodes the prototype of getgrent_r.
- * It is zero if d_getgrent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrent_r
- * is defined.
- */
-/*#define HAS_GETGRENT_R / **/
-#define GETGRENT_R_PROTO 0 /**/
-
-/* HAS_GETGRGID_R:
- * This symbol, if defined, indicates that the getgrgid_r routine
- * is available to getgrgid re-entrantly.
- */
-/* GETGRGID_R_PROTO:
- * This symbol encodes the prototype of getgrgid_r.
- * It is zero if d_getgrgid_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrgid_r
- * is defined.
- */
-/*#define HAS_GETGRGID_R / **/
-#define GETGRGID_R_PROTO 0 /**/
-
-/* HAS_GETGRNAM_R:
- * This symbol, if defined, indicates that the getgrnam_r routine
- * is available to getgrnam re-entrantly.
- */
-/* GETGRNAM_R_PROTO:
- * This symbol encodes the prototype of getgrnam_r.
- * It is zero if d_getgrnam_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrnam_r
- * is defined.
- */
-/*#define HAS_GETGRNAM_R / **/
-#define GETGRNAM_R_PROTO 0 /**/
-
-/* HAS_GETHOSTBYADDR_R:
- * This symbol, if defined, indicates that the gethostbyaddr_r routine
- * is available to gethostbyaddr re-entrantly.
- */
-/* GETHOSTBYADDR_R_PROTO:
- * This symbol encodes the prototype of gethostbyaddr_r.
- * It is zero if d_gethostbyaddr_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyaddr_r
- * is defined.
- */
-/*#define HAS_GETHOSTBYADDR_R / **/
-#define GETHOSTBYADDR_R_PROTO 0 /**/
-
-/* HAS_GETHOSTBYNAME_R:
- * This symbol, if defined, indicates that the gethostbyname_r routine
- * is available to gethostbyname re-entrantly.
- */
-/* GETHOSTBYNAME_R_PROTO:
- * This symbol encodes the prototype of gethostbyname_r.
- * It is zero if d_gethostbyname_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyname_r
- * is defined.
- */
-/*#define HAS_GETHOSTBYNAME_R / **/
-#define GETHOSTBYNAME_R_PROTO 0 /**/
-
-/* HAS_GETHOSTENT_R:
- * This symbol, if defined, indicates that the gethostent_r routine
- * is available to gethostent re-entrantly.
- */
-/* GETHOSTENT_R_PROTO:
- * This symbol encodes the prototype of gethostent_r.
- * It is zero if d_gethostent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostent_r
- * is defined.
- */
-/*#define HAS_GETHOSTENT_R / **/
-#define GETHOSTENT_R_PROTO 0 /**/
-
-/* HAS_GETLOGIN_R:
- * This symbol, if defined, indicates that the getlogin_r routine
- * is available to getlogin re-entrantly.
- */
-/* GETLOGIN_R_PROTO:
- * This symbol encodes the prototype of getlogin_r.
- * It is zero if d_getlogin_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getlogin_r
- * is defined.
- */
-/*#define HAS_GETLOGIN_R / **/
-#define GETLOGIN_R_PROTO 0 /**/
-
-/* HAS_GETNETBYADDR_R:
- * This symbol, if defined, indicates that the getnetbyaddr_r routine
- * is available to getnetbyaddr re-entrantly.
- */
-/* GETNETBYADDR_R_PROTO:
- * This symbol encodes the prototype of getnetbyaddr_r.
- * It is zero if d_getnetbyaddr_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyaddr_r
- * is defined.
- */
-/*#define HAS_GETNETBYADDR_R / **/
-#define GETNETBYADDR_R_PROTO 0 /**/
-
-/* HAS_GETNETBYNAME_R:
- * This symbol, if defined, indicates that the getnetbyname_r routine
- * is available to getnetbyname re-entrantly.
- */
-/* GETNETBYNAME_R_PROTO:
- * This symbol encodes the prototype of getnetbyname_r.
- * It is zero if d_getnetbyname_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyname_r
- * is defined.
- */
-/*#define HAS_GETNETBYNAME_R / **/
-#define GETNETBYNAME_R_PROTO 0 /**/
-
-/* HAS_GETNETENT_R:
- * This symbol, if defined, indicates that the getnetent_r routine
- * is available to getnetent re-entrantly.
- */
-/* GETNETENT_R_PROTO:
- * This symbol encodes the prototype of getnetent_r.
- * It is zero if d_getnetent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetent_r
- * is defined.
- */
-/*#define HAS_GETNETENT_R / **/
-#define GETNETENT_R_PROTO 0 /**/
-
-/* HAS_GETPROTOBYNAME_R:
- * This symbol, if defined, indicates that the getprotobyname_r routine
- * is available to getprotobyname re-entrantly.
- */
-/* GETPROTOBYNAME_R_PROTO:
- * This symbol encodes the prototype of getprotobyname_r.
- * It is zero if d_getprotobyname_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobyname_r
- * is defined.
- */
-/*#define HAS_GETPROTOBYNAME_R / **/
-#define GETPROTOBYNAME_R_PROTO 0 /**/
-
-/* HAS_GETPROTOBYNUMBER_R:
- * This symbol, if defined, indicates that the getprotobynumber_r routine
- * is available to getprotobynumber re-entrantly.
- */
-/* GETPROTOBYNUMBER_R_PROTO:
- * This symbol encodes the prototype of getprotobynumber_r.
- * It is zero if d_getprotobynumber_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobynumber_r
- * is defined.
- */
-/*#define HAS_GETPROTOBYNUMBER_R / **/
-#define GETPROTOBYNUMBER_R_PROTO 0 /**/
-
-/* HAS_GETPROTOENT_R:
- * This symbol, if defined, indicates that the getprotoent_r routine
- * is available to getprotoent re-entrantly.
- */
-/* GETPROTOENT_R_PROTO:
- * This symbol encodes the prototype of getprotoent_r.
- * It is zero if d_getprotoent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotoent_r
- * is defined.
- */
-/*#define HAS_GETPROTOENT_R / **/
-#define GETPROTOENT_R_PROTO 0 /**/
-
-/* HAS_GETPWENT_R:
- * This symbol, if defined, indicates that the getpwent_r routine
- * is available to getpwent re-entrantly.
- */
-/* GETPWENT_R_PROTO:
- * This symbol encodes the prototype of getpwent_r.
- * It is zero if d_getpwent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwent_r
- * is defined.
- */
-/*#define HAS_GETPWENT_R / **/
-#define GETPWENT_R_PROTO 0 /**/
-
-/* HAS_GETPWNAM_R:
- * This symbol, if defined, indicates that the getpwnam_r routine
- * is available to getpwnam re-entrantly.
- */
-/* GETPWNAM_R_PROTO:
- * This symbol encodes the prototype of getpwnam_r.
- * It is zero if d_getpwnam_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwnam_r
- * is defined.
- */
-/*#define HAS_GETPWNAM_R / **/
-#define GETPWNAM_R_PROTO 0 /**/
-
-/* HAS_GETPWUID_R:
- * This symbol, if defined, indicates that the getpwuid_r routine
- * is available to getpwuid re-entrantly.
- */
-/* GETPWUID_R_PROTO:
- * This symbol encodes the prototype of getpwuid_r.
- * It is zero if d_getpwuid_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwuid_r
- * is defined.
- */
-/*#define HAS_GETPWUID_R / **/
-#define GETPWUID_R_PROTO 0 /**/
-
-/* HAS_GETSERVBYNAME_R:
- * This symbol, if defined, indicates that the getservbyname_r routine
- * is available to getservbyname re-entrantly.
- */
-/* GETSERVBYNAME_R_PROTO:
- * This symbol encodes the prototype of getservbyname_r.
- * It is zero if d_getservbyname_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyname_r
- * is defined.
- */
-/*#define HAS_GETSERVBYNAME_R / **/
-#define GETSERVBYNAME_R_PROTO 0 /**/
-
-/* HAS_GETSERVBYPORT_R:
- * This symbol, if defined, indicates that the getservbyport_r routine
- * is available to getservbyport re-entrantly.
- */
-/* GETSERVBYPORT_R_PROTO:
- * This symbol encodes the prototype of getservbyport_r.
- * It is zero if d_getservbyport_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyport_r
- * is defined.
- */
-/*#define HAS_GETSERVBYPORT_R / **/
-#define GETSERVBYPORT_R_PROTO 0 /**/
-
-/* HAS_GETSERVENT_R:
- * This symbol, if defined, indicates that the getservent_r routine
- * is available to getservent re-entrantly.
- */
-/* GETSERVENT_R_PROTO:
- * This symbol encodes the prototype of getservent_r.
- * It is zero if d_getservent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservent_r
- * is defined.
- */
-/*#define HAS_GETSERVENT_R / **/
-#define GETSERVENT_R_PROTO 0 /**/
-
-/* HAS_GETSPNAM_R:
- * This symbol, if defined, indicates that the getspnam_r routine
- * is available to getspnam re-entrantly.
- */
-/* GETSPNAM_R_PROTO:
- * This symbol encodes the prototype of getspnam_r.
- * It is zero if d_getspnam_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getspnam_r
- * is defined.
- */
-/*#define HAS_GETSPNAM_R / **/
-#define GETSPNAM_R_PROTO 0 /**/
-
-/* HAS_GMTIME_R:
- * This symbol, if defined, indicates that the gmtime_r routine
- * is available to gmtime re-entrantly.
- */
-/* GMTIME_R_PROTO:
- * This symbol encodes the prototype of gmtime_r.
- * It is zero if d_gmtime_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gmtime_r
- * is defined.
- */
-/*#define HAS_GMTIME_R / **/
-#define GMTIME_R_PROTO 0 /**/
-
-/* HAS_LOCALECONV_L:
- * This symbol, if defined, indicates that the localeconv_l routine is
- * available to query certain information about a locale.
- */
-/*#define HAS_LOCALECONV_L / **/
-
-/* HAS_LOCALTIME_R:
- * This symbol, if defined, indicates that the localtime_r routine
- * is available to localtime re-entrantly.
- */
-/* LOCALTIME_R_NEEDS_TZSET:
- * Many libc's localtime_r implementations do not call tzset,
- * making them differ from localtime(), and making timezone
- * changes using $ENV{TZ} without explicitly calling tzset
- * impossible. This symbol makes us call tzset before localtime_r
- */
-/*#define LOCALTIME_R_NEEDS_TZSET / **/
-#ifdef LOCALTIME_R_NEEDS_TZSET
-#define L_R_TZSET tzset(),
-#else
-#define L_R_TZSET
-#endif
-
-/* L_R_TZSET:
- * If localtime_r() needs tzset, it is defined in this define
- */
-/* LOCALTIME_R_PROTO:
- * This symbol encodes the prototype of localtime_r.
- * It is zero if d_localtime_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_localtime_r
- * is defined.
- */
-/*#define HAS_LOCALTIME_R / **/
-#define LOCALTIME_R_PROTO 0 /**/
-
-/* HAS_MBRLEN:
- * This symbol, if defined, indicates that the mbrlen routine is
- * available to get the length of multi-byte character strings.
- */
-/*#define HAS_MBRLEN / **/
-
-/* HAS_MBRTOWC:
- * This symbol, if defined, indicates that the mbrtowc routine is
- * available to convert a multi-byte character into a wide character.
- */
-/*#define HAS_MBRTOWC / **/
-
-/* HAS_NL_LANGINFO_L:
- * This symbol, when defined, indicates presence of the nl_langinfo_l()
- * function
- */
-/* HAS_THREAD_SAFE_NL_LANGINFO_L:
- * This symbol, when defined, indicates presence of the nl_langinfo_l()
- * function, and that it is thread-safe.
- */
-/*#define HAS_NL_LANGINFO_L / **/
-/*#define HAS_THREAD_SAFE_NL_LANGINFO_L / **/
-
-/* OLD_PTHREAD_CREATE_JOINABLE:
- * This symbol, if defined, indicates how to create pthread
- * in joinable (aka undetached) state. NOTE: not defined
- * if pthread.h already has defined PTHREAD_CREATE_JOINABLE
- * (the new version of the constant).
- * If defined, known values are PTHREAD_CREATE_UNDETACHED
- * and __UNDETACHED.
- */
-/*#define OLD_PTHREAD_CREATE_JOINABLE / **/
-
-/* HAS_PTHREAD_ATFORK:
- * This symbol, if defined, indicates that the pthread_atfork routine
- * is available to setup fork handlers.
- */
-/*#define HAS_PTHREAD_ATFORK / **/
-
-/* HAS_PTHREAD_YIELD:
- * This symbol, if defined, indicates that the pthread_yield
- * routine is available to yield the execution of the current
- * thread. sched_yield is preferable to pthread_yield.
- */
-/* SCHED_YIELD:
- * This symbol defines the way to yield the execution of
- * the current thread. Known ways are sched_yield,
- * pthread_yield, and pthread_yield with NULL.
- */
-/* HAS_SCHED_YIELD:
- * This symbol, if defined, indicates that the sched_yield
- * routine is available to yield the execution of the current
- * thread. sched_yield is preferable to pthread_yield.
- */
-/*#define HAS_PTHREAD_YIELD / **/
-#define SCHED_YIELD sched_yield() /**/
-/*#define HAS_SCHED_YIELD / **/
-
-/* HAS_RANDOM_R:
- * This symbol, if defined, indicates that the random_r routine
- * is available to random re-entrantly.
- */
-/* RANDOM_R_PROTO:
- * This symbol encodes the prototype of random_r.
- * It is zero if d_random_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_random_r
- * is defined.
- */
-/*#define HAS_RANDOM_R / **/
-#define RANDOM_R_PROTO 0 /**/
-
-/* HAS_READDIR64_R:
- * This symbol, if defined, indicates that the readdir64_r routine
- * is available to readdir64 re-entrantly.
- */
-/* READDIR64_R_PROTO:
- * This symbol encodes the prototype of readdir64_r.
- * It is zero if d_readdir64_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir64_r
- * is defined.
- */
-/*#define HAS_READDIR64_R / **/
-#define READDIR64_R_PROTO 0 /**/
-
-/* HAS_READDIR_R:
- * This symbol, if defined, indicates that the readdir_r routine
- * is available to readdir re-entrantly.
- */
-/* READDIR_R_PROTO:
- * This symbol encodes the prototype of readdir_r.
- * It is zero if d_readdir_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir_r
- * is defined.
- */
-/*#define HAS_READDIR_R / **/
-#define READDIR_R_PROTO 0 /**/
-
-/* HAS_SETGRENT_R:
- * This symbol, if defined, indicates that the setgrent_r routine
- * is available to setgrent re-entrantly.
- */
-/* SETGRENT_R_PROTO:
- * This symbol encodes the prototype of setgrent_r.
- * It is zero if d_setgrent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setgrent_r
- * is defined.
- */
-/*#define HAS_SETGRENT_R / **/
-#define SETGRENT_R_PROTO 0 /**/
-
-/* HAS_SETHOSTENT_R:
- * This symbol, if defined, indicates that the sethostent_r routine
- * is available to sethostent re-entrantly.
- */
-/* SETHOSTENT_R_PROTO:
- * This symbol encodes the prototype of sethostent_r.
- * It is zero if d_sethostent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_sethostent_r
- * is defined.
- */
-/*#define HAS_SETHOSTENT_R / **/
-#define SETHOSTENT_R_PROTO 0 /**/
-
-/* HAS_SETLOCALE_R:
- * This symbol, if defined, indicates that the setlocale_r routine
- * is available to setlocale re-entrantly.
- */
-/* SETLOCALE_R_PROTO:
- * This symbol encodes the prototype of setlocale_r.
- * It is zero if d_setlocale_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setlocale_r
- * is defined.
- */
-/*#define HAS_SETLOCALE_R / **/
-#define SETLOCALE_R_PROTO 0 /**/
-
-/* HAS_SETNETENT_R:
- * This symbol, if defined, indicates that the setnetent_r routine
- * is available to setnetent re-entrantly.
- */
-/* SETNETENT_R_PROTO:
- * This symbol encodes the prototype of setnetent_r.
- * It is zero if d_setnetent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setnetent_r
- * is defined.
- */
-/*#define HAS_SETNETENT_R / **/
-#define SETNETENT_R_PROTO 0 /**/
-
-/* HAS_SETPROTOENT_R:
- * This symbol, if defined, indicates that the setprotoent_r routine
- * is available to setprotoent re-entrantly.
- */
-/* SETPROTOENT_R_PROTO:
- * This symbol encodes the prototype of setprotoent_r.
- * It is zero if d_setprotoent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setprotoent_r
- * is defined.
- */
-/*#define HAS_SETPROTOENT_R / **/
-#define SETPROTOENT_R_PROTO 0 /**/
-
-/* HAS_SETPWENT_R:
- * This symbol, if defined, indicates that the setpwent_r routine
- * is available to setpwent re-entrantly.
- */
-/* SETPWENT_R_PROTO:
- * This symbol encodes the prototype of setpwent_r.
- * It is zero if d_setpwent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setpwent_r
- * is defined.
- */
-/*#define HAS_SETPWENT_R / **/
-#define SETPWENT_R_PROTO 0 /**/
-
-/* HAS_SETSERVENT_R:
- * This symbol, if defined, indicates that the setservent_r routine
- * is available to setservent re-entrantly.
- */
-/* SETSERVENT_R_PROTO:
- * This symbol encodes the prototype of setservent_r.
- * It is zero if d_setservent_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setservent_r
- * is defined.
- */
-/*#define HAS_SETSERVENT_R / **/
-#define SETSERVENT_R_PROTO 0 /**/
-
-/* HAS_SRAND48_R:
- * This symbol, if defined, indicates that the srand48_r routine
- * is available to srand48 re-entrantly.
- */
-/* SRAND48_R_PROTO:
- * This symbol encodes the prototype of srand48_r.
- * It is zero if d_srand48_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srand48_r
- * is defined.
- */
-/*#define HAS_SRAND48_R / **/
-#define SRAND48_R_PROTO 0 /**/
-
-/* HAS_SRANDOM_R:
- * This symbol, if defined, indicates that the srandom_r routine
- * is available to srandom re-entrantly.
- */
-/* SRANDOM_R_PROTO:
- * This symbol encodes the prototype of srandom_r.
- * It is zero if d_srandom_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srandom_r
- * is defined.
- */
-/*#define HAS_SRANDOM_R / **/
-#define SRANDOM_R_PROTO 0 /**/
-
-/* HAS_STRERROR_R:
- * This symbol, if defined, indicates that the strerror_r routine
- * is available to strerror re-entrantly.
- */
-/* STRERROR_R_PROTO:
- * This symbol encodes the prototype of strerror_r.
- * It is zero if d_strerror_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_strerror_r
- * is defined.
- */
-/*#define HAS_STRERROR_R / **/
-#define STRERROR_R_PROTO 0 /**/
-
-/* HAS_STRTOD_L:
- * This symbol, if defined, indicates that the strtod_l routine is
- * available to convert strings to long doubles.
- */
-/*#define HAS_STRTOD_L / **/
-
-/* HAS_STRTOLD_L:
- * This symbol, if defined, indicates that the strtold_l routine is
- * available to convert strings to long doubles.
- */
-/*#define HAS_STRTOLD_L / **/
-
-/* PERL_THREAD_LOCAL:
- * This symbol, if defined, gives a linkage specification for thread-local
- * storage. For example, for a C11 compiler this will be _Thread_local.
- * Beware, some compilers are sensitive to the C language standard they are
- * told to parse. For example, suncc defaults to C11, so our probe will
- * report that _Thread_local can be used. However, if the -std=c99 is later
- * added to the compiler flags, then _Thread_local will become a syntax
- * error. Hence it is important for these flags to be consistent between
- * probing and use.
- */
-/*#define PERL_THREAD_LOCAL / **/
-
-/* HAS_TMPNAM_R:
- * This symbol, if defined, indicates that the tmpnam_r routine
- * is available to tmpnam re-entrantly.
- */
-/* TMPNAM_R_PROTO:
- * This symbol encodes the prototype of tmpnam_r.
- * It is zero if d_tmpnam_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_tmpnam_r
- * is defined.
- */
-/*#define HAS_TMPNAM_R / **/
-#define TMPNAM_R_PROTO 0 /**/
-
-/* HAS_TTYNAME_R:
- * This symbol, if defined, indicates that the ttyname_r routine
- * is available to ttyname re-entrantly.
- */
-/* TTYNAME_R_PROTO:
- * This symbol encodes the prototype of ttyname_r.
- * It is zero if d_ttyname_r is undef, and one of the
- * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ttyname_r
- * is defined.
- */
-/*#define HAS_TTYNAME_R / **/
-#define TTYNAME_R_PROTO 0 /**/
-
-/* HAS_WCRTOMB:
- * This symbol, if defined, indicates that the wcrtomb routine is
- * available to convert a wide character into a multi-byte character.
- */
-/*#define HAS_WCRTOMB / **/
-
-/* I_MACH_CTHREADS:
- * This symbol, if defined, indicates to the C program that it should
- * include <mach/cthreads.h>.
- */
-/*#define I_MACH_CTHREADS / **/
-
-/* I_PTHREAD:
- * This symbol, if defined, indicates to the C program that it should
- * include <pthread.h>.
- */
-/*#define I_PTHREAD / **/
-
-/* USE_ITHREADS:
- * This symbol, if defined, indicates that Perl should be built to
- * use the interpreter-based threading implementation.
- */
-/* USE_THREADS:
- * This symbol, if defined, indicates that Perl should
- * be built to use threads. At present, it is a synonym for
- * and USE_ITHREADS, but eventually the source ought to be
- * changed to use this to mean _any_ threading implementation.
- */
-/* OLD_PTHREADS_API:
- * This symbol, if defined, indicates that Perl should
- * be built to use the old draft POSIX threads API.
- */
-/* USE_REENTRANT_API:
- * This symbol, if defined, indicates that Perl should
- * try to use the various _r versions of library functions.
- * This is extremely experimental.
- */
-/*#define USE_ITHREADS / **/
-/*#define USE_THREADS / **/
-/*#define OLD_PTHREADS_API / **/
-/*#define USE_REENTRANT_API / **/
-
-/* HAS_TIME:
- * This symbol, if defined, indicates that the time() routine exists.
- */
-/* Time_t:
- * This symbol holds the type returned by time(). It can be long,
- * or time_t on BSD sites (in which case <sys/types.h> should be
- * included).
- */
-#define HAS_TIME /**/
-#define Time_t time_t /* Time type */
-
-/* HAS_TIMES:
- * This symbol, if defined, indicates that the times() routine exists.
- * Note that this became obsolete on some systems (SUNOS), which now
- * use getrusage(). It may be necessary to include <sys/times.h>.
- */
-/*#define HAS_TIMES / **/
-
-/* Fpos_t:
- * This symbol holds the type used to declare file positions in libc.
- * It can be fpos_t, long, uint, etc... It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
-#define Fpos_t int /* File position type */
-
-/* Gid_t_f:
- * This symbol defines the format string used for printing a Gid_t.
- */
-#define Gid_t_f "lu" /**/
-
-/* Gid_t_sign:
- * This symbol holds the signedness of a Gid_t.
- * 1 for unsigned, -1 for signed.
- */
-#define Gid_t_sign 1 /* GID sign */
-
-/* Gid_t_size:
- * This symbol holds the size of a Gid_t in bytes.
- */
-#define Gid_t_size 4 /* GID size */
-
-/* Gid_t:
- * This symbol holds the return type of getgid() and the type of
- * argument to setrgid() and related functions. Typically,
- * it is the type of group ids in the kernel. It can be int, ushort,
- * gid_t, etc... It may be necessary to include <sys/types.h> to get
- * any typedef'ed information.
- */
-#define Gid_t int /* Type for getgid(), etc... */
-
-/* Off_t:
- * This symbol holds the type used to declare offsets in the kernel.
- * It can be int, long, off_t, etc... It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
-/* LSEEKSIZE:
- * This symbol holds the number of bytes used by the Off_t.
- */
-/* Off_t_size:
- * This symbol holds the number of bytes used by the Off_t.
- */
-#define Off_t int /* <offset> type */
-#define LSEEKSIZE 4 /* <offset> size */
-#define Off_t_size 4 /* <offset> size */
-
-/* Mode_t:
- * This symbol holds the type used to declare file modes
- * for systems calls. It is usually mode_t, but may be
- * int or unsigned short. It may be necessary to include <sys/types.h>
- * to get any typedef'ed information.
- */
-#define Mode_t int /* file mode parameter for system calls */
-
-/* Pid_t:
- * This symbol holds the type used to declare process ids in the kernel.
- * It can be int, uint, pid_t, etc... It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
-#define Pid_t int /* PID type */
-
-/* Size_t_size:
- * This symbol holds the size of a Size_t in bytes.
- */
-#define Size_t_size 4 /**/
-
-/* Size_t:
- * This symbol holds the type used to declare length parameters
- * for string functions. It is usually size_t, but may be
- * unsigned long, int, etc. It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
-#define Size_t size_t /* length parameter for string functions */
-
-/* Uid_t_f:
- * This symbol defines the format string used for printing a Uid_t.
- */
-#define Uid_t_f "lu" /**/
-
-/* Uid_t_sign:
- * This symbol holds the signedness of a Uid_t.
- * 1 for unsigned, -1 for signed.
- */
-#define Uid_t_sign 1 /* UID sign */
-
-/* Uid_t_size:
- * This symbol holds the size of a Uid_t in bytes.
- */
-#define Uid_t_size 4 /* UID size */
-
-/* Uid_t:
- * This symbol holds the type used to declare user ids in the kernel.
- * It can be int, ushort, uid_t, etc... It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
-#define Uid_t int /* UID type */
-
-#endif
-
-/* Generated from:
- * e17a83ff6ae98071d846d4a001f6ce1a669df08c357fe153c2370adc4910135e config_h.SH
- * 8d785207fec43bbad5118a8125e625d1cc654455994f09a76c1625b2ae2ae2d0 uconfig.sh
- * ex: set ro ft=c: */
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/uni_keywords.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/uni_keywords.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/uni_keywords.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -10,7 +10,7 @@
#define MPH_VALt I16
/*
-generator script: ./regen/mk_invlists.pl
+generator script: regen/mk_invlists.pl
split strategy: squeeze
srand: 1785235451
rows: 7498
@@ -7756,7 +7756,7 @@
* 3f4f32ed2a577344a508114527e721d7a8b633d32f38945d47fe0c743650c585 lib/unicore/extracted/DLineBreak.txt
* 710abf2d581ac9c57f244c0834f9d9969d9781e0396adccd330eaae658ac7d6b lib/unicore/extracted/DNumType.txt
* 6bd30f385f3baf3ab5d5308c111a81de87bea5f494ba0ba69e8ab45263b8c34d lib/unicore/extracted/DNumValues.txt
- * f7265069b38ba9a0675a18600e241b1ec6fc8c55fd806fe4c13bc5d8cb0dc508 lib/unicore/mktables
+ * 8968a5ee00063fa31ff15474b95ccb6b9c228e3ebad6c20bc77f4225187e2023 lib/unicore/mktables
* 55d90fdc3f902e5c0b16b3378f9eaa36e970a1c09723c33de7d47d0370044012 lib/unicore/version
* 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
* c7ff8e0d207d3538c7feb4a1a152b159e5e902d20293b303569ea8323e84633e regen/mk_PL_charclass.pl
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -16,10 +16,12 @@
*
* The macros that have the suffix "_UTF8" may have further suffixes, as
* follows:
- * "_FIRST_BYTE" if the value is just the first byte of the UTF-8
- * representation; the value will be a numeric constant.
- * "_TAIL" if instead it represents all but the first byte. This, and
- * with no additional suffix are both string constants */
+ * "_FIRST_BYTE" if the value is just the first byte of the UTF-8
+ * representation; the value will be a numeric constant.
+ * "_FIRST_BYTEs" same, but the first byte is represented as a literal
+ * string
+ * "_TAIL" if instead it represents all but the first byte. This,
+ * and with no additional suffix are both string constants */
/*
=for apidoc_section $unicode
@@ -88,11 +90,15 @@
# define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE 0xFF /* U+00FF */
# define MICRO_SIGN_NATIVE 0xB5 /* U+00B5 */
# define MICRO_SIGN_UTF8 "\xC2\xB5" /* U+00B5 */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8 "\xD9\xAB" /* U+066B */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8_FIRST_BYTE 0xD9 /* U+066B */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8_TAIL "\xAB" /* U+066B */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8_FIRST_BYTE_s "\xD9" /* U+066B */
# ifdef PERL_IN_TOKE_C
/* Paired characters for quote-like operators, in UTF-8 */
-# define EXTRA_OPENING_UTF8_BRACKETS "\x28\x3C\x5B\x7B\xC2\xAB\xC2\xBB\xDC\x86\xE0\xBC\xBA\xE0\xBC\xBC\xE1\x9A\x9B\xE2\x80\x98\xE2\x80\x99\xE2\x80\x9C\xE2\x80\x9D\xE2\x80\xB5\xE2\x80\xB6\xE2\x80\xB7\xE2\x80\xB9\xE2\x80\xBA\xE2\x81\x85\xE2\x81\x8D\xE2\x81\xBD\xE2\x82\x8D\xE2\x86\x92\xE2\x86\x9B\xE2\x86\x9D\xE2\x86\xA0\xE2\x86\xA3\xE2\x86\xA6\xE2\x86\xAA\xE2\x86\xAC\xE2\x86\xB1\xE2\x86\xB3\xE2\x87\x80\xE2\x87\x81\xE2\x87\x89\xE2\x87\x8F\xE2\x87\x92\xE2\x87\x9B\xE2\x87\x9D\xE2\x87\xA2\xE2\x87\xA5\xE2\x87\xA8\xE2\x87\xB4\xE2\x87\xB6\xE2\x87\xB8\xE2\x87\xBB\xE2\x87\xBE\xE2\x88\x88\xE2\x88\x89\xE2\x88\x8A\xE2\x89\xA4\xE2\x89\xA6\xE2\x89\xA8\xE2\x89\xAA\xE2\x89\xAE\xE2\x89\xB0\xE2\x89\xB2\xE2\x89\xB4\xE2\x89\xBA\xE2\x89\xBC\xE2\x89\xBE\xE2\x8A\x80\xE2\x8A\x82\xE2\x8A\x84\xE2\x8A\x86\xE2\x8A\x88\xE2\x8A\x8A\xE2\x8A\xA3\xE2\x8A\xA6\xE2\x8A\xA8\xE2\x8A\xA9\xE2\x8A\xB0\xE2\x8B\x90\xE2\x8B\x96\xE2\x8B\x98\xE2\x8B\x9C\xE2\x8B\x9E\xE2\x8B\xA0\xE2\x8B\xA6\xE2\x8B\xA8\xE2\x8B\xB2\xE2\x8B\xB3\xE2\x8B\xB4\xE2\x8B\xB6\xE2\x8B\xB7\xE2\x8C\x88\xE2\x8C\x8A\xE2\x8C\xA6\xE2\x8C\xA9\xE2\x8D\x88\xE2\x8F\xA9\xE2\x8F\xAD\xE2\x98\x9B\xE2\x98\x9E\xE2\x9A\x9E\xE2\x9D\xA8\xE2\x9D\xAA\xE2\x9D\xAC\xE2\x9D\xAE\xE2\x9D\xB0\xE2\x9D\xB2\xE2\x9D\xB4\xE2\x9F\x83\xE2\x9F\x85\xE2\x9F\x88\xE2\x9F\x9E\xE2\x9F\xA6\xE2\x9F\xA8\xE2\x9F\xAA\xE2\x9F\xAC\xE2\x9F\xAE\xE2\x9F\xB4\xE2\x9F\xB6\xE2\x9F\xB9\xE2\x9F\xBC\xE2\x9F\xBE\xE2\x9F\xBF\xE2\xA4\x80\xE2\xA4\x81\xE2\xA4\x83\xE2\xA4\x85\xE2\xA4\x87\xE2\xA4\x8D\xE2\xA4\x8F\xE2\xA4\x90\xE2\xA4\x91\xE2\xA4\x94\xE2\xA4\x95\xE2\xA4\x96\xE2\xA4\x97\xE2\xA4\x98\xE2\xA4\x9A\xE2\xA4\x9C\xE2\xA4\x9E\xE2\xA4\xA0\xE2\xA4\xB3\xE2\xA4\xB7\xE2\xA5\x85\xE2\xA5\x87\xE2\xA5\x93\xE2\xA5\x97\xE2\xA5\x9B\xE2\xA5\x9F\xE2\xA5\xA4\xE2\xA5\xAC\xE2\xA5\xAD\xE2\xA5\xB1\xE2\xA5\xB2\xE2\xA5\xB4\xE2\xA5\xB5\xE2\xA5\xB9\xE2\xA6\x83\xE2\xA6\x85\xE2\xA6\x87\xE2\xA6\x89\xE2\xA6\x8B\xE2\xA6\x8D\xE2\xA6\x8F\xE2\xA6\x91\xE2\xA6\x93\xE2\xA6\x95\xE2\xA6\x97\xE2\xA6\xA8\xE2\xA6\xAA\xE2\xA6\xB3\xE2\xA7\x80\xE2\xA7\x98\xE2\xA7\x9A\xE2\xA7\xB!
C\xE2\xA9\xB9\xE2\xA9\xBB\xE2\xA9\xBD\xE2\xA9\xBF\xE2\xAA\x81\xE2\xAA\x83\xE2\xAA\x85\xE2\xAA\x87\xE2\xAA\x89\xE2\xAA\x8D\xE2\xAA\x95\xE2\xAA\x97\xE2\xAA\x99\xE2\xAA\x9B\xE2\xAA\x9D\xE2\xAA\x9F\xE2\xAA\xA1\xE2\xAA\xA6\xE2\xAA\xA8\xE2\xAA\xAA\xE2\xAA\xAC\xE2\xAA\xAF\xE2\xAA\xB1\xE2\xAA\xB3\xE2\xAA\xB5\xE2\xAA\xB7\xE2\xAA\xB9\xE2\xAA\xBB\xE2\xAA\xBD\xE2\xAA\xBF\xE2\xAB\x81\xE2\xAB\x83\xE2\xAB\x85\xE2\xAB\x87\xE2\xAB\x89\xE2\xAB\x8B\xE2\xAB\x8F\xE2\xAB\x91\xE2\xAB\x95\xE2\xAB\xA5\xE2\xAB\xB7\xE2\xAB\xB9\xE2\xAD\x86\xE2\xAD\x87\xE2\xAD\x88\xE2\xAD\x8C\xE2\xAD\xA2\xE2\xAD\xAC\xE2\xAD\xB2\xE2\xAD\xBC\xE2\xAE\x86\xE2\xAE\x8A\xE2\xAE\x95\xE2\xAE\x9A\xE2\xAE\x9E\xE2\xAE\xA1\xE2\xAE\xA3\xE2\xAE\xA9\xE2\xAE\xAB\xE2\xAE\xB1\xE2\xAE\xB3\xE2\xAF\xAE\xE2\xB8\x82\xE2\xB8\x83\xE2\xB8\x84\xE2\xB8\x85\xE2\xB8\x89\xE2\xB8\x8A\xE2\xB8\x8C\xE2\xB8\x8D\xE2\xB8\x91\xE2\xB8\x9C\xE2\xB8\x9D\xE2\xB8\xA0\xE2\xB8\xA1\xE2\xB8\xA2\xE2\xB8\xA4\xE2\xB8\xA6\xE2\xB8\xA8\xE2\xB8\xB6\xE2\xB9\x82\xE2\xB9\x95\xE2\xB9\x97\xE2\xB9\x99\xE2\xB9\x9B\xE3\x80\x88\xE3\x80\x8A\xE3\x80\x8C\xE3\x80\x8E\xE3\x80\x90\xE3\x80\x94\xE3\x80\x96\xE3\x80\x98\xE3\x80\x9A\xE3\x80\x9D\xEA\xA7\x81\xEF\xB4\xBE\xEF\xB9\x99\xEF\xB9\x9B\xEF\xB9\x9D\xEF\xB9\xA4\xEF\xBC\x88\xEF\xBC\x9C\xEF\xBC\xBB\xEF\xBD\x9B\xEF\xBD\x9F\xEF\xBD\xA2\xEF\xBF\xAB\xF0\x9D\x84\x83\xF0\x9D\x84\x86\xF0\x9F\x91\x89\xF0\x9F\x94\x88\xF0\x9F\x94\x89\xF0\x9F\x94\x8A\xF0\x9F\x95\xBB\xF0\x9F\x96\x99\xF0\x9F\x96\x9B\xF0\x9F\x96\x9D\xF0\x9F\x97\xA6\xF0\x9F\xA0\x82\xF0\x9F\xA0\x86\xF0\x9F\xA0\x8A\xF0\x9F\xA0\x92\xF0\x9F\xA0\x96\xF0\x9F\xA0\x9A\xF0\x9F\xA0\x9E\xF0\x9F\xA0\xA2\xF0\x9F\xA0\xA6\xF0\x9F\xA0\xAA\xF0\x9F\xA0\xAE\xF0\x9F\xA0\xB2\xF0\x9F\xA0\xB6\xF0\x9F\xA0\xBA\xF0\x9F\xA0\xBE\xF0\x9F\xA1\x82\xF0\x9F\xA1\x86\xF0\x9F\xA1\x92\xF0\x9F\xA1\xA2\xF0\x9F\xA1\xAA\xF0\x9F\xA1\xB2\xF0\x9F\xA1\xBA\xF0\x9F\xA2\x82\xF0\x9F\xA2\x92\xF0\x9F\xA2\x96\xF0\x9F\xA2\x9A\xF0\x9F\xA2\xA1\xF0\x9F\xA2\xA3\xF0\x9F\xA2\xA5\xF0\x9F\xA2\xA7\xF0\x9F\xA2\xA9\xF0\x9F\xA2\xAB"
-# define EXTRA_CLOSING_UTF8_BRACKETS "\x29\x3E\x5D\x7D\xC2\xBB\xC2\xAB\xDC\x87\xE0\xBC\xBB\xE0\xBC\xBD\xE1\x9A\x9C\xE2\x80\x99\xE2\x80\x98\xE2\x80\x9D\xE2\x80\x9C\xE2\x80\xB2\xE2\x80\xB3\xE2\x80\xB4\xE2\x80\xBA\xE2\x80\xB9\xE2\x81\x86\xE2\x81\x8C\xE2\x81\xBE\xE2\x82\x8E\xE2\x86\x90\xE2\x86\x9A\xE2\x86\x9C\xE2\x86\x9E\xE2\x86\xA2\xE2\x86\xA4\xE2\x86\xA9\xE2\x86\xAB\xE2\x86\xB0\xE2\x86\xB2\xE2\x86\xBC\xE2\x86\xBD\xE2\x87\x87\xE2\x87\x8D\xE2\x87\x90\xE2\x87\x9A\xE2\x87\x9C\xE2\x87\xA0\xE2\x87\xA4\xE2\x87\xA6\xE2\xAC\xB0\xE2\xAC\xB1\xE2\x87\xB7\xE2\x87\xBA\xE2\x87\xBD\xE2\x88\x8B\xE2\x88\x8C\xE2\x88\x8D\xE2\x89\xA5\xE2\x89\xA7\xE2\x89\xA9\xE2\x89\xAB\xE2\x89\xAF\xE2\x89\xB1\xE2\x89\xB3\xE2\x89\xB5\xE2\x89\xBB\xE2\x89\xBD\xE2\x89\xBF\xE2\x8A\x81\xE2\x8A\x83\xE2\x8A\x85\xE2\x8A\x87\xE2\x8A\x89\xE2\x8A\x8B\xE2\x8A\xA2\xE2\xAB\x9E\xE2\xAB\xA4\xE2\xAB\xA3\xE2\x8A\xB1\xE2\x8B\x91\xE2\x8B\x97\xE2\x8B\x99\xE2\x8B\x9D\xE2\x8B\x9F\xE2\x8B\xA1\xE2\x8B\xA7\xE2\x8B\xA9\xE2\x8B\xBA\xE2\x8B\xBB\xE2\x8B\xBC\xE2\x8B\xBD\xE2\x8B\xBE\xE2\x8C\x89\xE2\x8C\x8B\xE2\x8C\xAB\xE2\x8C\xAA\xE2\x8D\x87\xE2\x8F\xAA\xE2\x8F\xAE\xE2\x98\x9A\xE2\x98\x9C\xE2\x9A\x9F\xE2\x9D\xA9\xE2\x9D\xAB\xE2\x9D\xAD\xE2\x9D\xAF\xE2\x9D\xB1\xE2\x9D\xB3\xE2\x9D\xB5\xE2\x9F\x84\xE2\x9F\x86\xE2\x9F\x89\xE2\x9F\x9D\xE2\x9F\xA7\xE2\x9F\xA9\xE2\x9F\xAB\xE2\x9F\xAD\xE2\x9F\xAF\xE2\xAC\xB2\xE2\x9F\xB5\xE2\x9F\xB8\xE2\x9F\xBB\xE2\x9F\xBD\xE2\xAC\xB3\xE2\xAC\xB4\xE2\xAC\xB5\xE2\xA4\x82\xE2\xAC\xB6\xE2\xA4\x86\xE2\xA4\x8C\xE2\xA4\x8E\xE2\xAC\xB7\xE2\xAC\xB8\xE2\xAC\xB9\xE2\xAC\xBA\xE2\xAC\xBB\xE2\xAC\xBC\xE2\xAC\xBD\xE2\xA4\x99\xE2\xA4\x9B\xE2\xA4\x9D\xE2\xA4\x9F\xE2\xAC\xBF\xE2\xA4\xB6\xE2\xA5\x86\xE2\xAC\xBE\xE2\xA5\x92\xE2\xA5\x96\xE2\xA5\x9A\xE2\xA5\x9E\xE2\xA5\xA2\xE2\xA5\xAA\xE2\xA5\xAB\xE2\xAD\x80\xE2\xAD\x81\xE2\xAD\x8B\xE2\xAD\x82\xE2\xA5\xBB\xE2\xA6\x84\xE2\xA6\x86\xE2\xA6\x88\xE2\xA6\x8A\xE2\xA6\x8C\xE2\xA6\x90\xE2\xA6\x8E\xE2\xA6\x92\xE2\xA6\x94\xE2\xA6\x96\xE2\xA6\x98\xE2\xA6\xA9\xE2\xA6\xAB\xE2\xA6\xB4\xE2\xA7\x81\xE2\xA7\x99\xE2\xA7\x9B\xE2\xA7\xB!
D\xE2\xA9\xBA\xE2\xA9\xBC\xE2\xA9\xBE\xE2\xAA\x80\xE2\xAA\x82\xE2\xAA\x84\xE2\xAA\x86\xE2\xAA\x88\xE2\xAA\x8A\xE2\xAA\x8E\xE2\xAA\x96\xE2\xAA\x98\xE2\xAA\x9A\xE2\xAA\x9C\xE2\xAA\x9E\xE2\xAA\xA0\xE2\xAA\xA2\xE2\xAA\xA7\xE2\xAA\xA9\xE2\xAA\xAB\xE2\xAA\xAD\xE2\xAA\xB0\xE2\xAA\xB2\xE2\xAA\xB4\xE2\xAA\xB6\xE2\xAA\xB8\xE2\xAA\xBA\xE2\xAA\xBC\xE2\xAA\xBE\xE2\xAB\x80\xE2\xAB\x82\xE2\xAB\x84\xE2\xAB\x86\xE2\xAB\x88\xE2\xAB\x8A\xE2\xAB\x8C\xE2\xAB\x90\xE2\xAB\x92\xE2\xAB\x96\xE2\x8A\xAB\xE2\xAB\xB8\xE2\xAB\xBA\xE2\xAD\x85\xE2\xAD\x89\xE2\xAD\x8A\xE2\xA5\xB3\xE2\xAD\xA0\xE2\xAD\xAA\xE2\xAD\xB0\xE2\xAD\xBA\xE2\xAE\x84\xE2\xAE\x88\xE2\xAC\x85\xE2\xAE\x98\xE2\xAE\x9C\xE2\xAE\xA0\xE2\xAE\xA2\xE2\xAE\xA8\xE2\xAE\xAA\xE2\xAE\xB0\xE2\xAE\xB2\xE2\xAF\xAC\xE2\xB8\x83\xE2\xB8\x82\xE2\xB8\x85\xE2\xB8\x84\xE2\xB8\x8A\xE2\xB8\x89\xE2\xB8\x8D\xE2\xB8\x8C\xE2\xB8\x90\xE2\xB8\x9D\xE2\xB8\x9C\xE2\xB8\xA1\xE2\xB8\xA0\xE2\xB8\xA3\xE2\xB8\xA5\xE2\xB8\xA7\xE2\xB8\xA9\xE2\xB8\xB7\xE2\x80\x9E\xE2\xB9\x96\xE2\xB9\x98\xE2\xB9\x9A\xE2\xB9\x9C\xE3\x80\x89\xE3\x80\x8B\xE3\x80\x8D\xE3\x80\x8F\xE3\x80\x91\xE3\x80\x95\xE3\x80\x97\xE3\x80\x99\xE3\x80\x9B\xE3\x80\x9E\xEA\xA7\x82\xEF\xB4\xBF\xEF\xB9\x9A\xEF\xB9\x9C\xEF\xB9\x9E\xEF\xB9\xA5\xEF\xBC\x89\xEF\xBC\x9E\xEF\xBC\xBD\xEF\xBD\x9D\xEF\xBD\xA0\xEF\xBD\xA3\xEF\xBF\xA9\xF0\x9D\x84\x82\xF0\x9D\x84\x87\xF0\x9F\x91\x88\xF0\x9F\x95\xA8\xF0\x9F\x95\xA9\xF0\x9F\x95\xAA\xF0\x9F\x95\xBD\xF0\x9F\x96\x98\xF0\x9F\x96\x9A\xF0\x9F\x96\x9C\xF0\x9F\x97\xA7\xF0\x9F\xA0\x80\xF0\x9F\xA0\x84\xF0\x9F\xA0\x88\xF0\x9F\xA0\x90\xF0\x9F\xA0\x94\xF0\x9F\xA0\x98\xF0\x9F\xA0\x9C\xF0\x9F\xA0\xA0\xF0\x9F\xA0\xA4\xF0\x9F\xA0\xA8\xF0\x9F\xA0\xAC\xF0\x9F\xA0\xB0\xF0\x9F\xA0\xB4\xF0\x9F\xA0\xB8\xF0\x9F\xA0\xBC\xF0\x9F\xA1\x80\xF0\x9F\xA1\x84\xF0\x9F\xA1\x90\xF0\x9F\xA1\xA0\xF0\x9F\xA1\xA8\xF0\x9F\xA1\xB0\xF0\x9F\xA1\xB8\xF0\x9F\xA2\x80\xF0\x9F\xA2\x90\xF0\x9F\xA2\x94\xF0\x9F\xA2\x98\xF0\x9F\xA2\xA0\xF0\x9F\xA2\xA2\xF0\x9F\xA2\xA6\xF0\x9F\xA2\xA4\xF0\x9F\xA2\xA8\xF0\x9F\xA2\xAA"
+# define EXTRA_OPENING_UTF8_BRACKETS "\x28\x3C\x5B\x7B\xC2\xAB\xC2\xBB\xE0\xBC\xBA\xE0\xBC\xBC\xE1\x9A\x9B\xE2\x80\x98\xE2\x80\x99\xE2\x80\x9C\xE2\x80\x9D\xE2\x80\xB5\xE2\x80\xB6\xE2\x80\xB7\xE2\x80\xB9\xE2\x80\xBA\xE2\x81\x85\xE2\x81\x8D\xE2\x81\xBD\xE2\x82\x8D\xE2\x86\x92\xE2\x86\x9B\xE2\x86\x9D\xE2\x86\xA0\xE2\x86\xA3\xE2\x86\xA6\xE2\x86\xAA\xE2\x86\xAC\xE2\x86\xB1\xE2\x86\xB3\xE2\x87\x80\xE2\x87\x81\xE2\x87\x89\xE2\x87\x8F\xE2\x87\x92\xE2\x87\x9B\xE2\x87\x9D\xE2\x87\xA2\xE2\x87\xA5\xE2\x87\xA8\xE2\x87\xB4\xE2\x87\xB6\xE2\x87\xB8\xE2\x87\xBB\xE2\x87\xBE\xE2\x88\x88\xE2\x88\x89\xE2\x88\x8A\xE2\x89\xA4\xE2\x89\xA6\xE2\x89\xA8\xE2\x89\xAA\xE2\x89\xAE\xE2\x89\xB0\xE2\x89\xB2\xE2\x89\xB4\xE2\x89\xBA\xE2\x89\xBC\xE2\x89\xBE\xE2\x8A\x80\xE2\x8A\x82\xE2\x8A\x84\xE2\x8A\x86\xE2\x8A\x88\xE2\x8A\x8A\xE2\x8A\xA3\xE2\x8A\xA6\xE2\x8A\xA8\xE2\x8A\xA9\xE2\x8A\xB0\xE2\x8B\x90\xE2\x8B\x96\xE2\x8B\x98\xE2\x8B\x9C\xE2\x8B\x9E\xE2\x8B\xA0\xE2\x8B\xA6\xE2\x8B\xA8\xE2\x8B\xB2\xE2\x8B\xB3\xE2\x8B\xB4\xE2\x8B\xB6\xE2\x8B\xB7\xE2\x8C\x88\xE2\x8C\x8A\xE2\x8C\xA6\xE2\x8C\xA9\xE2\x8D\x88\xE2\x8F\xA9\xE2\x8F\xAD\xE2\x98\x9B\xE2\x98\x9E\xE2\x9A\x9E\xE2\x9D\xA8\xE2\x9D\xAA\xE2\x9D\xAC\xE2\x9D\xAE\xE2\x9D\xB0\xE2\x9D\xB2\xE2\x9D\xB4\xE2\x9F\x83\xE2\x9F\x85\xE2\x9F\x88\xE2\x9F\x9E\xE2\x9F\xA6\xE2\x9F\xA8\xE2\x9F\xAA\xE2\x9F\xAC\xE2\x9F\xAE\xE2\x9F\xB4\xE2\x9F\xB6\xE2\x9F\xB9\xE2\x9F\xBC\xE2\x9F\xBE\xE2\x9F\xBF\xE2\xA4\x80\xE2\xA4\x81\xE2\xA4\x83\xE2\xA4\x85\xE2\xA4\x87\xE2\xA4\x8D\xE2\xA4\x8F\xE2\xA4\x90\xE2\xA4\x91\xE2\xA4\x94\xE2\xA4\x95\xE2\xA4\x96\xE2\xA4\x97\xE2\xA4\x98\xE2\xA4\x9A\xE2\xA4\x9C\xE2\xA4\x9E\xE2\xA4\xA0\xE2\xA4\xB3\xE2\xA4\xB7\xE2\xA5\x85\xE2\xA5\x87\xE2\xA5\x93\xE2\xA5\x97\xE2\xA5\x9B\xE2\xA5\x9F\xE2\xA5\xA4\xE2\xA5\xAC\xE2\xA5\xAD\xE2\xA5\xB1\xE2\xA5\xB2\xE2\xA5\xB4\xE2\xA5\xB5\xE2\xA5\xB9\xE2\xA6\x83\xE2\xA6\x85\xE2\xA6\x87\xE2\xA6\x89\xE2\xA6\x8B\xE2\xA6\x8D\xE2\xA6\x8F\xE2\xA6\x91\xE2\xA6\x93\xE2\xA6\x95\xE2\xA6\x97\xE2\xA6\xA8\xE2\xA6\xAA\xE2\xA6\xB3\xE2\xA7\x80\xE2\xA7\x98\xE2\xA7\x9A\xE2\xA7\xBC\xE2\xA!
9\xB9\xE2\xA9\xBB\xE2\xA9\xBD\xE2\xA9\xBF\xE2\xAA\x81\xE2\xAA\x83\xE2\xAA\x85\xE2\xAA\x87\xE2\xAA\x89\xE2\xAA\x8D\xE2\xAA\x95\xE2\xAA\x97\xE2\xAA\x99\xE2\xAA\x9B\xE2\xAA\x9D\xE2\xAA\x9F\xE2\xAA\xA1\xE2\xAA\xA6\xE2\xAA\xA8\xE2\xAA\xAA\xE2\xAA\xAC\xE2\xAA\xAF\xE2\xAA\xB1\xE2\xAA\xB3\xE2\xAA\xB5\xE2\xAA\xB7\xE2\xAA\xB9\xE2\xAA\xBB\xE2\xAA\xBD\xE2\xAA\xBF\xE2\xAB\x81\xE2\xAB\x83\xE2\xAB\x85\xE2\xAB\x87\xE2\xAB\x89\xE2\xAB\x8B\xE2\xAB\x8F\xE2\xAB\x91\xE2\xAB\x95\xE2\xAB\xA5\xE2\xAB\xB7\xE2\xAB\xB9\xE2\xAD\x86\xE2\xAD\x87\xE2\xAD\x88\xE2\xAD\x8C\xE2\xAD\xA2\xE2\xAD\xAC\xE2\xAD\xB2\xE2\xAD\xBC\xE2\xAE\x86\xE2\xAE\x8A\xE2\xAE\x95\xE2\xAE\x9A\xE2\xAE\x9E\xE2\xAE\xA1\xE2\xAE\xA3\xE2\xAE\xA9\xE2\xAE\xAB\xE2\xAE\xB1\xE2\xAE\xB3\xE2\xAF\xAE\xE2\xB8\x82\xE2\xB8\x83\xE2\xB8\x84\xE2\xB8\x85\xE2\xB8\x89\xE2\xB8\x8A\xE2\xB8\x8C\xE2\xB8\x8D\xE2\xB8\x91\xE2\xB8\x9C\xE2\xB8\x9D\xE2\xB8\xA0\xE2\xB8\xA1\xE2\xB8\xA2\xE2\xB8\xA4\xE2\xB8\xA6\xE2\xB8\xA8\xE2\xB8\xB6\xE2\xB9\x82\xE2\xB9\x95\xE2\xB9\x97\xE2\xB9\x99\xE2\xB9\x9B\xE3\x80\x88\xE3\x80\x8A\xE3\x80\x8C\xE3\x80\x8E\xE3\x80\x90\xE3\x80\x94\xE3\x80\x96\xE3\x80\x98\xE3\x80\x9A\xE3\x80\x9D\xEA\xA7\x81\xEF\xB4\xBE\xEF\xB9\x99\xEF\xB9\x9B\xEF\xB9\x9D\xEF\xB9\xA4\xEF\xBC\x88\xEF\xBC\x9C\xEF\xBC\xBB\xEF\xBD\x9B\xEF\xBD\x9F\xEF\xBD\xA2\xEF\xBF\xAB\xF0\x9D\x84\x83\xF0\x9D\x84\x86\xF0\x9F\x91\x89\xF0\x9F\x94\x88\xF0\x9F\x94\x89\xF0\x9F\x94\x8A\xF0\x9F\x95\xBB\xF0\x9F\x96\x99\xF0\x9F\x96\x9B\xF0\x9F\x96\x9D\xF0\x9F\x97\xA6\xF0\x9F\xA0\x82\xF0\x9F\xA0\x86\xF0\x9F\xA0\x8A\xF0\x9F\xA0\x92\xF0\x9F\xA0\x96\xF0\x9F\xA0\x9A\xF0\x9F\xA0\x9E\xF0\x9F\xA0\xA2\xF0\x9F\xA0\xA6\xF0\x9F\xA0\xAA\xF0\x9F\xA0\xAE\xF0\x9F\xA0\xB2\xF0\x9F\xA0\xB6\xF0\x9F\xA0\xBA\xF0\x9F\xA0\xBE\xF0\x9F\xA1\x82\xF0\x9F\xA1\x86\xF0\x9F\xA1\x92\xF0\x9F\xA1\xA2\xF0\x9F\xA1\xAA\xF0\x9F\xA1\xB2\xF0\x9F\xA1\xBA\xF0\x9F\xA2\x82\xF0\x9F\xA2\x92\xF0\x9F\xA2\x96\xF0\x9F\xA2\x9A\xF0\x9F\xA2\xA1\xF0\x9F\xA2\xA3\xF0\x9F\xA2\xA5\xF0\x9F\xA2\xA7\xF0\x9F\xA2\xA9\xF0\x9F\xA2\xAB"
+# define EXTRA_CLOSING_UTF8_BRACKETS "\x29\x3E\x5D\x7D\xC2\xBB\xC2\xAB\xE0\xBC\xBB\xE0\xBC\xBD\xE1\x9A\x9C\xE2\x80\x99\xE2\x80\x98\xE2\x80\x9D\xE2\x80\x9C\xE2\x80\xB2\xE2\x80\xB3\xE2\x80\xB4\xE2\x80\xBA\xE2\x80\xB9\xE2\x81\x86\xE2\x81\x8C\xE2\x81\xBE\xE2\x82\x8E\xE2\x86\x90\xE2\x86\x9A\xE2\x86\x9C\xE2\x86\x9E\xE2\x86\xA2\xE2\x86\xA4\xE2\x86\xA9\xE2\x86\xAB\xE2\x86\xB0\xE2\x86\xB2\xE2\x86\xBC\xE2\x86\xBD\xE2\x87\x87\xE2\x87\x8D\xE2\x87\x90\xE2\x87\x9A\xE2\x87\x9C\xE2\x87\xA0\xE2\x87\xA4\xE2\x87\xA6\xE2\xAC\xB0\xE2\xAC\xB1\xE2\x87\xB7\xE2\x87\xBA\xE2\x87\xBD\xE2\x88\x8B\xE2\x88\x8C\xE2\x88\x8D\xE2\x89\xA5\xE2\x89\xA7\xE2\x89\xA9\xE2\x89\xAB\xE2\x89\xAF\xE2\x89\xB1\xE2\x89\xB3\xE2\x89\xB5\xE2\x89\xBB\xE2\x89\xBD\xE2\x89\xBF\xE2\x8A\x81\xE2\x8A\x83\xE2\x8A\x85\xE2\x8A\x87\xE2\x8A\x89\xE2\x8A\x8B\xE2\x8A\xA2\xE2\xAB\x9E\xE2\xAB\xA4\xE2\xAB\xA3\xE2\x8A\xB1\xE2\x8B\x91\xE2\x8B\x97\xE2\x8B\x99\xE2\x8B\x9D\xE2\x8B\x9F\xE2\x8B\xA1\xE2\x8B\xA7\xE2\x8B\xA9\xE2\x8B\xBA\xE2\x8B\xBB\xE2\x8B\xBC\xE2\x8B\xBD\xE2\x8B\xBE\xE2\x8C\x89\xE2\x8C\x8B\xE2\x8C\xAB\xE2\x8C\xAA\xE2\x8D\x87\xE2\x8F\xAA\xE2\x8F\xAE\xE2\x98\x9A\xE2\x98\x9C\xE2\x9A\x9F\xE2\x9D\xA9\xE2\x9D\xAB\xE2\x9D\xAD\xE2\x9D\xAF\xE2\x9D\xB1\xE2\x9D\xB3\xE2\x9D\xB5\xE2\x9F\x84\xE2\x9F\x86\xE2\x9F\x89\xE2\x9F\x9D\xE2\x9F\xA7\xE2\x9F\xA9\xE2\x9F\xAB\xE2\x9F\xAD\xE2\x9F\xAF\xE2\xAC\xB2\xE2\x9F\xB5\xE2\x9F\xB8\xE2\x9F\xBB\xE2\x9F\xBD\xE2\xAC\xB3\xE2\xAC\xB4\xE2\xAC\xB5\xE2\xA4\x82\xE2\xAC\xB6\xE2\xA4\x86\xE2\xA4\x8C\xE2\xA4\x8E\xE2\xAC\xB7\xE2\xAC\xB8\xE2\xAC\xB9\xE2\xAC\xBA\xE2\xAC\xBB\xE2\xAC\xBC\xE2\xAC\xBD\xE2\xA4\x99\xE2\xA4\x9B\xE2\xA4\x9D\xE2\xA4\x9F\xE2\xAC\xBF\xE2\xA4\xB6\xE2\xA5\x86\xE2\xAC\xBE\xE2\xA5\x92\xE2\xA5\x96\xE2\xA5\x9A\xE2\xA5\x9E\xE2\xA5\xA2\xE2\xA5\xAA\xE2\xA5\xAB\xE2\xAD\x80\xE2\xAD\x81\xE2\xAD\x8B\xE2\xAD\x82\xE2\xA5\xBB\xE2\xA6\x84\xE2\xA6\x86\xE2\xA6\x88\xE2\xA6\x8A\xE2\xA6\x8C\xE2\xA6\x90\xE2\xA6\x8E\xE2\xA6\x92\xE2\xA6\x94\xE2\xA6\x96\xE2\xA6\x98\xE2\xA6\xA9\xE2\xA6\xAB\xE2\xA6\xB4\xE2\xA7\x81\xE2\xA7\x99\xE2\xA7\x9B\xE2\xA7\xBD\xE2\xA!
9\xBA\xE2\xA9\xBC\xE2\xA9\xBE\xE2\xAA\x80\xE2\xAA\x82\xE2\xAA\x84\xE2\xAA\x86\xE2\xAA\x88\xE2\xAA\x8A\xE2\xAA\x8E\xE2\xAA\x96\xE2\xAA\x98\xE2\xAA\x9A\xE2\xAA\x9C\xE2\xAA\x9E\xE2\xAA\xA0\xE2\xAA\xA2\xE2\xAA\xA7\xE2\xAA\xA9\xE2\xAA\xAB\xE2\xAA\xAD\xE2\xAA\xB0\xE2\xAA\xB2\xE2\xAA\xB4\xE2\xAA\xB6\xE2\xAA\xB8\xE2\xAA\xBA\xE2\xAA\xBC\xE2\xAA\xBE\xE2\xAB\x80\xE2\xAB\x82\xE2\xAB\x84\xE2\xAB\x86\xE2\xAB\x88\xE2\xAB\x8A\xE2\xAB\x8C\xE2\xAB\x90\xE2\xAB\x92\xE2\xAB\x96\xE2\x8A\xAB\xE2\xAB\xB8\xE2\xAB\xBA\xE2\xAD\x85\xE2\xAD\x89\xE2\xAD\x8A\xE2\xA5\xB3\xE2\xAD\xA0\xE2\xAD\xAA\xE2\xAD\xB0\xE2\xAD\xBA\xE2\xAE\x84\xE2\xAE\x88\xE2\xAC\x85\xE2\xAE\x98\xE2\xAE\x9C\xE2\xAE\xA0\xE2\xAE\xA2\xE2\xAE\xA8\xE2\xAE\xAA\xE2\xAE\xB0\xE2\xAE\xB2\xE2\xAF\xAC\xE2\xB8\x83\xE2\xB8\x82\xE2\xB8\x85\xE2\xB8\x84\xE2\xB8\x8A\xE2\xB8\x89\xE2\xB8\x8D\xE2\xB8\x8C\xE2\xB8\x90\xE2\xB8\x9D\xE2\xB8\x9C\xE2\xB8\xA1\xE2\xB8\xA0\xE2\xB8\xA3\xE2\xB8\xA5\xE2\xB8\xA7\xE2\xB8\xA9\xE2\xB8\xB7\xE2\x80\x9E\xE2\xB9\x96\xE2\xB9\x98\xE2\xB9\x9A\xE2\xB9\x9C\xE3\x80\x89\xE3\x80\x8B\xE3\x80\x8D\xE3\x80\x8F\xE3\x80\x91\xE3\x80\x95\xE3\x80\x97\xE3\x80\x99\xE3\x80\x9B\xE3\x80\x9E\xEA\xA7\x82\xEF\xB4\xBF\xEF\xB9\x9A\xEF\xB9\x9C\xEF\xB9\x9E\xEF\xB9\xA5\xEF\xBC\x89\xEF\xBC\x9E\xEF\xBC\xBD\xEF\xBD\x9D\xEF\xBD\xA0\xEF\xBD\xA3\xEF\xBF\xA9\xF0\x9D\x84\x82\xF0\x9D\x84\x87\xF0\x9F\x91\x88\xF0\x9F\x95\xA8\xF0\x9F\x95\xA9\xF0\x9F\x95\xAA\xF0\x9F\x95\xBD\xF0\x9F\x96\x98\xF0\x9F\x96\x9A\xF0\x9F\x96\x9C\xF0\x9F\x97\xA7\xF0\x9F\xA0\x80\xF0\x9F\xA0\x84\xF0\x9F\xA0\x88\xF0\x9F\xA0\x90\xF0\x9F\xA0\x94\xF0\x9F\xA0\x98\xF0\x9F\xA0\x9C\xF0\x9F\xA0\xA0\xF0\x9F\xA0\xA4\xF0\x9F\xA0\xA8\xF0\x9F\xA0\xAC\xF0\x9F\xA0\xB0\xF0\x9F\xA0\xB4\xF0\x9F\xA0\xB8\xF0\x9F\xA0\xBC\xF0\x9F\xA1\x80\xF0\x9F\xA1\x84\xF0\x9F\xA1\x90\xF0\x9F\xA1\xA0\xF0\x9F\xA1\xA8\xF0\x9F\xA1\xB0\xF0\x9F\xA1\xB8\xF0\x9F\xA2\x80\xF0\x9F\xA2\x90\xF0\x9F\xA2\x94\xF0\x9F\xA2\x98\xF0\x9F\xA2\xA0\xF0\x9F\xA2\xA2\xF0\x9F\xA2\xA6\xF0\x9F\xA2\xA4\xF0\x9F\xA2\xA8\xF0\x9F\xA2\xAA"
/* And not in UTF-8 */
# define EXTRA_OPENING_NON_UTF8_BRACKETS "\x28\x3C\x5B\x7B\xAB\xBB"
@@ -99,7 +105,7 @@
# define EXTRA_CLOSING_NON_UTF8_BRACKETS "\x29\x3E\x5D\x7D\xBB\xAB"
/* And what's deprecated */
-# define DEPRECATED_OPENING_UTF8_BRACKETS "\xC2\xAB\xC2\xBB\xC2\xBB\xDC\x86\xDC\x87\xE0\xBC\xBA\xE0\xBC\xBB\xE0\xBC\xBC\xE0\xBC\xBD\xE1\x9A\x9B\xE1\x9A\x9C\xE2\x80\x98\xE2\x80\x99\xE2\x80\x99\xE2\x80\x9C\xE2\x80\x9D\xE2\x80\x9D\xE2\x80\xB5\xE2\x80\xB2\xE2\x80\xB6\xE2\x80\xB3\xE2\x80\xB7\xE2\x80\xB4\xE2\x80\xB9\xE2\x80\xBA\xE2\x80\xBA\xE2\x81\x85\xE2\x81\x86\xE2\x81\x8D\xE2\x81\x8C\xE2\x81\xBD\xE2\x81\xBE\xE2\x82\x8D\xE2\x82\x8E\xE2\x86\x92\xE2\x86\x90\xE2\x86\x9B\xE2\x86\x9A\xE2\x86\x9D\xE2\x86\x9C\xE2\x86\xA0\xE2\x86\x9E\xE2\x86\xA3\xE2\x86\xA2\xE2\x86\xA6\xE2\x86\xA4\xE2\x86\xAA\xE2\x86\xA9\xE2\x86\xAC\xE2\x86\xAB\xE2\x86\xB1\xE2\x86\xB0\xE2\x86\xB3\xE2\x86\xB2\xE2\x87\x80\xE2\x86\xBC\xE2\x87\x81\xE2\x86\xBD\xE2\x87\x89\xE2\x87\x87\xE2\x87\x8F\xE2\x87\x8D\xE2\x87\x92\xE2\x87\x90\xE2\x87\x9B\xE2\x87\x9A\xE2\x87\x9D\xE2\x87\x9C\xE2\x87\xA2\xE2\x87\xA0\xE2\x87\xA5\xE2\x87\xA4\xE2\x87\xA8\xE2\x87\xA6\xE2\x87\xB4\xE2\xAC\xB0\xE2\x87\xB6\xE2\xAC\xB1\xE2\x87\xB8\xE2\x87\xB7\xE2\x87\xBB\xE2\x87\xBA\xE2\x87\xBE\xE2\x87\xBD\xE2\x88\x88\xE2\x88\x8B\xE2\x88\x89\xE2\x88\x8C\xE2\x88\x8A\xE2\x88\x8D\xE2\x89\xA4\xE2\x89\xA5\xE2\x89\xA6\xE2\x89\xA7\xE2\x89\xA8\xE2\x89\xA9\xE2\x89\xAA\xE2\x89\xAB\xE2\x89\xAE\xE2\x89\xAF\xE2\x89\xB0\xE2\x89\xB1\xE2\x89\xB2\xE2\x89\xB3\xE2\x89\xB4\xE2\x89\xB5\xE2\x89\xBA\xE2\x89\xBB\xE2\x89\xBC\xE2\x89\xBD\xE2\x89\xBE\xE2\x89\xBF\xE2\x8A\x80\xE2\x8A\x81\xE2\x8A\x82\xE2\x8A\x83\xE2\x8A\x84\xE2\x8A\x85\xE2\x8A\x86\xE2\x8A\x87\xE2\x8A\x88\xE2\x8A\x89\xE2\x8A\x8A\xE2\x8A\x8B\xE2\x8A\xA3\xE2\x8A\xA2\xE2\x8A\xA6\xE2\xAB\x9E\xE2\x8A\xA8\xE2\xAB\xA4\xE2\x8A\xA9\xE2\xAB\xA3\xE2\x8A\xB0\xE2\x8A\xB1\xE2\x8B\x90\xE2\x8B\x91\xE2\x8B\x96\xE2\x8B\x97\xE2\x8B\x98\xE2\x8B\x99\xE2\x8B\x9C\xE2\x8B\x9D\xE2\x8B\x9E\xE2\x8B\x9F\xE2\x8B\xA0\xE2\x8B\xA1\xE2\x8B\xA6\xE2\x8B\xA7\xE2\x8B\xA8\xE2\x8B\xA9\xE2\x8B\xB2\xE2\x8B\xBA\xE2\x8B\xB3\xE2\x8B\xBB\xE2\x8B\xB4\xE2\x8B\xBC\xE2\x8B\xB6\xE2\x8B\xBD\xE2\x8B\xB7\xE2\x8B\xBE\xE2\x8C\x88\xE2\x8C\x89\xE2\x8C\x8A\xE2\x8C\x8B\xE2\x8C\xA6\xE2\x8C\xAB\xE2\x8C\xA9\xE2\x!
8C\xAA\xE2\x8D\x88\xE2\x8D\x87\xE2\x8F\xA9\xE2\x8F\xAA\xE2\x8F\xAD\xE2\x8F\xAE\xE2\x98\x9B\xE2\x98\x9A\xE2\x98\x9E\xE2\x98\x9C\xE2\x9A\x9E\xE2\x9A\x9F\xE2\x9D\xA8\xE2\x9D\xA9\xE2\x9D\xAA\xE2\x9D\xAB\xE2\x9D\xAC\xE2\x9D\xAD\xE2\x9D\xAE\xE2\x9D\xAF\xE2\x9D\xB0\xE2\x9D\xB1\xE2\x9D\xB2\xE2\x9D\xB3\xE2\x9D\xB4\xE2\x9D\xB5\xE2\x9F\x83\xE2\x9F\x84\xE2\x9F\x85\xE2\x9F\x86\xE2\x9F\x88\xE2\x9F\x89\xE2\x9F\x9E\xE2\x9F\x9D\xE2\x9F\xA6\xE2\x9F\xA7\xE2\x9F\xA8\xE2\x9F\xA9\xE2\x9F\xAA\xE2\x9F\xAB\xE2\x9F\xAC\xE2\x9F\xAD\xE2\x9F\xAE\xE2\x9F\xAF\xE2\x9F\xB4\xE2\xAC\xB2\xE2\x9F\xB6\xE2\x9F\xB5\xE2\x9F\xB9\xE2\x9F\xB8\xE2\x9F\xBC\xE2\x9F\xBB\xE2\x9F\xBE\xE2\x9F\xBD\xE2\x9F\xBF\xE2\xAC\xB3\xE2\xA4\x80\xE2\xAC\xB4\xE2\xA4\x81\xE2\xAC\xB5\xE2\xA4\x83\xE2\xA4\x82\xE2\xA4\x85\xE2\xAC\xB6\xE2\xA4\x87\xE2\xA4\x86\xE2\xA4\x8D\xE2\xA4\x8C\xE2\xA4\x8F\xE2\xA4\x8E\xE2\xA4\x90\xE2\xAC\xB7\xE2\xA4\x91\xE2\xAC\xB8\xE2\xA4\x94\xE2\xAC\xB9\xE2\xA4\x95\xE2\xAC\xBA\xE2\xA4\x96\xE2\xAC\xBB\xE2\xA4\x97\xE2\xAC\xBC\xE2\xA4\x98\xE2\xAC\xBD\xE2\xA4\x9A\xE2\xA4\x99\xE2\xA4\x9C\xE2\xA4\x9B\xE2\xA4\x9E\xE2\xA4\x9D\xE2\xA4\xA0\xE2\xA4\x9F\xE2\xA4\xB3\xE2\xAC\xBF\xE2\xA4\xB7\xE2\xA4\xB6\xE2\xA5\x85\xE2\xA5\x86\xE2\xA5\x87\xE2\xAC\xBE\xE2\xA5\x93\xE2\xA5\x92\xE2\xA5\x97\xE2\xA5\x96\xE2\xA5\x9B\xE2\xA5\x9A\xE2\xA5\x9F\xE2\xA5\x9E\xE2\xA5\xA4\xE2\xA5\xA2\xE2\xA5\xAC\xE2\xA5\xAA\xE2\xA5\xAD\xE2\xA5\xAB\xE2\xA5\xB1\xE2\xAD\x80\xE2\xA5\xB2\xE2\xAD\x81\xE2\xA5\xB4\xE2\xAD\x8B\xE2\xA5\xB5\xE2\xAD\x82\xE2\xA5\xB9\xE2\xA5\xBB\xE2\xA6\x83\xE2\xA6\x84\xE2\xA6\x85\xE2\xA6\x86\xE2\xA6\x87\xE2\xA6\x88\xE2\xA6\x89\xE2\xA6\x8A\xE2\xA6\x8B\xE2\xA6\x8C\xE2\xA6\x8D\xE2\xA6\x90\xE2\xA6\x8F\xE2\xA6\x8E\xE2\xA6\x91\xE2\xA6\x92\xE2\xA6\x93\xE2\xA6\x94\xE2\xA6\x95\xE2\xA6\x96\xE2\xA6\x97\xE2\xA6\x98\xE2\xA6\xA8\xE2\xA6\xA9\xE2\xA6\xAA\xE2\xA6\xAB\xE2\xA6\xB3\xE2\xA6\xB4\xE2\xA7\x80\xE2\xA7\x81\xE2\xA7\x98\xE2\xA7\x99\xE2\xA7\x9A\xE2\xA7\x9B\xE2\xA7\xBC\xE2\xA7\xBD\xE2\xA9\xB9\xE2\xA9\xBA\xE2\xA9\xBB\xE2\xA9\xBC\xE2\xA9\xBD\xE2\xA9\xBE\xE2\xA9\xBF\xE2\xAA\x80\xE2\xAA\x81\xE2\xAA\x82\!
xE2\xAA\x83\xE2\xAA\x84\xE2\xAA\x85\xE2\xAA\x86\xE2\xAA\x87\xE2\xAA\x88\xE2\xAA\x89\xE2\xAA\x8A\xE2\xAA\x8D\xE2\xAA\x8E\xE2\xAA\x95\xE2\xAA\x96\xE2\xAA\x97\xE2\xAA\x98\xE2\xAA\x99\xE2\xAA\x9A\xE2\xAA\x9B\xE2\xAA\x9C\xE2\xAA\x9D\xE2\xAA\x9E\xE2\xAA\x9F\xE2\xAA\xA0\xE2\xAA\xA1\xE2\xAA\xA2\xE2\xAA\xA6\xE2\xAA\xA7\xE2\xAA\xA8\xE2\xAA\xA9\xE2\xAA\xAA\xE2\xAA\xAB\xE2\xAA\xAC\xE2\xAA\xAD\xE2\xAA\xAF\xE2\xAA\xB0\xE2\xAA\xB1\xE2\xAA\xB2\xE2\xAA\xB3\xE2\xAA\xB4\xE2\xAA\xB5\xE2\xAA\xB6\xE2\xAA\xB7\xE2\xAA\xB8\xE2\xAA\xB9\xE2\xAA\xBA\xE2\xAA\xBB\xE2\xAA\xBC\xE2\xAA\xBD\xE2\xAA\xBE\xE2\xAA\xBF\xE2\xAB\x80\xE2\xAB\x81\xE2\xAB\x82\xE2\xAB\x83\xE2\xAB\x84\xE2\xAB\x85\xE2\xAB\x86\xE2\xAB\x87\xE2\xAB\x88\xE2\xAB\x89\xE2\xAB\x8A\xE2\xAB\x8B\xE2\xAB\x8C\xE2\xAB\x8F\xE2\xAB\x90\xE2\xAB\x91\xE2\xAB\x92\xE2\xAB\x95\xE2\xAB\x96\xE2\xAB\xA5\xE2\x8A\xAB\xE2\xAB\xB7\xE2\xAB\xB8\xE2\xAB\xB9\xE2\xAB\xBA\xE2\xAD\x86\xE2\xAD\x85\xE2\xAD\x87\xE2\xAD\x89\xE2\xAD\x88\xE2\xAD\x8A\xE2\xAD\x8C\xE2\xA5\xB3\xE2\xAD\xA2\xE2\xAD\xA0\xE2\xAD\xAC\xE2\xAD\xAA\xE2\xAD\xB2\xE2\xAD\xB0\xE2\xAD\xBC\xE2\xAD\xBA\xE2\xAE\x86\xE2\xAE\x84\xE2\xAE\x8A\xE2\xAE\x88\xE2\xAE\x95\xE2\xAC\x85\xE2\xAE\x9A\xE2\xAE\x98\xE2\xAE\x9E\xE2\xAE\x9C\xE2\xAE\xA1\xE2\xAE\xA0\xE2\xAE\xA3\xE2\xAE\xA2\xE2\xAE\xA9\xE2\xAE\xA8\xE2\xAE\xAB\xE2\xAE\xAA\xE2\xAE\xB1\xE2\xAE\xB0\xE2\xAE\xB3\xE2\xAE\xB2\xE2\xAF\xAE\xE2\xAF\xAC\xE2\xB8\x82\xE2\xB8\x83\xE2\xB8\x83\xE2\xB8\x84\xE2\xB8\x85\xE2\xB8\x85\xE2\xB8\x89\xE2\xB8\x8A\xE2\xB8\x8A\xE2\xB8\x8C\xE2\xB8\x8D\xE2\xB8\x8D\xE2\xB8\x91\xE2\xB8\x90\xE2\xB8\x9C\xE2\xB8\x9D\xE2\xB8\x9D\xE2\xB8\xA0\xE2\xB8\xA1\xE2\xB8\xA1\xE2\xB8\xA2\xE2\xB8\xA3\xE2\xB8\xA4\xE2\xB8\xA5\xE2\xB8\xA6\xE2\xB8\xA7\xE2\xB8\xA8\xE2\xB8\xA9\xE2\xB8\xB6\xE2\xB8\xB7\xE2\xB9\x82\xE2\x80\x9E\xE2\xB9\x95\xE2\xB9\x96\xE2\xB9\x97\xE2\xB9\x98\xE2\xB9\x99\xE2\xB9\x9A\xE2\xB9\x9B\xE2\xB9\x9C\xE3\x80\x88\xE3\x80\x89\xE3\x80\x8A\xE3\x80\x8B\xE3\x80\x8C\xE3\x80\x8D\xE3\x80\x8E\xE3\x80\x8F\xE3\x80\x90\xE3\x80\x91\xE3\x80\x94\xE3\x80\x95\xE3\x80\x96\xE3\x80\x97\xE3\x80\x98\xE3\x80\x99\xE3\x80!
\x9A\xE3\x80\x9B\xE3\x80\x9D\xE3\x80\x9E\xEA\xA7\x81\xEA\xA7\x82\xEF\xB4\xBE\xEF\xB4\xBF\xEF\xB9\x99\xEF\xB9\x9A\xEF\xB9\x9B\xEF\xB9\x9C\xEF\xB9\x9D\xEF\xB9\x9E\xEF\xB9\xA4\xEF\xB9\xA5\xEF\xBC\x88\xEF\xBC\x89\xEF\xBC\x9C\xEF\xBC\x9E\xEF\xBC\xBB\xEF\xBC\xBD\xEF\xBD\x9B\xEF\xBD\x9D\xEF\xBD\x9F\xEF\xBD\xA0\xEF\xBD\xA2\xEF\xBD\xA3\xEF\xBF\xAB\xEF\xBF\xA9\xF0\x9D\x84\x83\xF0\x9D\x84\x82\xF0\x9D\x84\x86\xF0\x9D\x84\x87\xF0\x9F\x91\x89\xF0\x9F\x91\x88\xF0\x9F\x94\x88\xF0\x9F\x95\xA8\xF0\x9F\x94\x89\xF0\x9F\x95\xA9\xF0\x9F\x94\x8A\xF0\x9F\x95\xAA\xF0\x9F\x95\xBB\xF0\x9F\x95\xBD\xF0\x9F\x96\x99\xF0\x9F\x96\x98\xF0\x9F\x96\x9B\xF0\x9F\x96\x9A\xF0\x9F\x96\x9D\xF0\x9F\x96\x9C\xF0\x9F\x97\xA6\xF0\x9F\x97\xA7\xF0\x9F\xA0\x82\xF0\x9F\xA0\x80\xF0\x9F\xA0\x86\xF0\x9F\xA0\x84\xF0\x9F\xA0\x8A\xF0\x9F\xA0\x88\xF0\x9F\xA0\x92\xF0\x9F\xA0\x90\xF0\x9F\xA0\x96\xF0\x9F\xA0\x94\xF0\x9F\xA0\x9A\xF0\x9F\xA0\x98\xF0\x9F\xA0\x9E\xF0\x9F\xA0\x9C\xF0\x9F\xA0\xA2\xF0\x9F\xA0\xA0\xF0\x9F\xA0\xA6\xF0\x9F\xA0\xA4\xF0\x9F\xA0\xAA\xF0\x9F\xA0\xA8\xF0\x9F\xA0\xAE\xF0\x9F\xA0\xAC\xF0\x9F\xA0\xB2\xF0\x9F\xA0\xB0\xF0\x9F\xA0\xB6\xF0\x9F\xA0\xB4\xF0\x9F\xA0\xBA\xF0\x9F\xA0\xB8\xF0\x9F\xA0\xBE\xF0\x9F\xA0\xBC\xF0\x9F\xA1\x82\xF0\x9F\xA1\x80\xF0\x9F\xA1\x86\xF0\x9F\xA1\x84\xF0\x9F\xA1\x92\xF0\x9F\xA1\x90\xF0\x9F\xA1\xA2\xF0\x9F\xA1\xA0\xF0\x9F\xA1\xAA\xF0\x9F\xA1\xA8\xF0\x9F\xA1\xB2\xF0\x9F\xA1\xB0\xF0\x9F\xA1\xBA\xF0\x9F\xA1\xB8\xF0\x9F\xA2\x82\xF0\x9F\xA2\x80\xF0\x9F\xA2\x92\xF0\x9F\xA2\x90\xF0\x9F\xA2\x96\xF0\x9F\xA2\x94\xF0\x9F\xA2\x9A\xF0\x9F\xA2\x98\xF0\x9F\xA2\xA1\xF0\x9F\xA2\xA0\xF0\x9F\xA2\xA3\xF0\x9F\xA2\xA2\xF0\x9F\xA2\xA5\xF0\x9F\xA2\xA6\xF0\x9F\xA2\xA7\xF0\x9F\xA2\xA4\xF0\x9F\xA2\xA9\xF0\x9F\xA2\xA8\xF0\x9F\xA2\xAB\xF0\x9F\xA2\xAA"
+# define DEPRECATED_OPENING_UTF8_BRACKETS "\xC2\xAB\xC2\xBB\xC2\xBB\xE0\xBC\xBA\xE0\xBC\xBB\xE0\xBC\xBC\xE0\xBC\xBD\xE1\x9A\x9B\xE1\x9A\x9C\xE2\x80\x98\xE2\x80\x99\xE2\x80\x99\xE2\x80\x9C\xE2\x80\x9D\xE2\x80\x9D\xE2\x80\xB5\xE2\x80\xB2\xE2\x80\xB6\xE2\x80\xB3\xE2\x80\xB7\xE2\x80\xB4\xE2\x80\xB9\xE2\x80\xBA\xE2\x80\xBA\xE2\x81\x85\xE2\x81\x86\xE2\x81\x8D\xE2\x81\x8C\xE2\x81\xBD\xE2\x81\xBE\xE2\x82\x8D\xE2\x82\x8E\xE2\x86\x92\xE2\x86\x90\xE2\x86\x9B\xE2\x86\x9A\xE2\x86\x9D\xE2\x86\x9C\xE2\x86\xA0\xE2\x86\x9E\xE2\x86\xA3\xE2\x86\xA2\xE2\x86\xA6\xE2\x86\xA4\xE2\x86\xAA\xE2\x86\xA9\xE2\x86\xAC\xE2\x86\xAB\xE2\x86\xB1\xE2\x86\xB0\xE2\x86\xB3\xE2\x86\xB2\xE2\x87\x80\xE2\x86\xBC\xE2\x87\x81\xE2\x86\xBD\xE2\x87\x89\xE2\x87\x87\xE2\x87\x8F\xE2\x87\x8D\xE2\x87\x92\xE2\x87\x90\xE2\x87\x9B\xE2\x87\x9A\xE2\x87\x9D\xE2\x87\x9C\xE2\x87\xA2\xE2\x87\xA0\xE2\x87\xA5\xE2\x87\xA4\xE2\x87\xA8\xE2\x87\xA6\xE2\x87\xB4\xE2\xAC\xB0\xE2\x87\xB6\xE2\xAC\xB1\xE2\x87\xB8\xE2\x87\xB7\xE2\x87\xBB\xE2\x87\xBA\xE2\x87\xBE\xE2\x87\xBD\xE2\x88\x88\xE2\x88\x8B\xE2\x88\x89\xE2\x88\x8C\xE2\x88\x8A\xE2\x88\x8D\xE2\x89\xA4\xE2\x89\xA5\xE2\x89\xA6\xE2\x89\xA7\xE2\x89\xA8\xE2\x89\xA9\xE2\x89\xAA\xE2\x89\xAB\xE2\x89\xAE\xE2\x89\xAF\xE2\x89\xB0\xE2\x89\xB1\xE2\x89\xB2\xE2\x89\xB3\xE2\x89\xB4\xE2\x89\xB5\xE2\x89\xBA\xE2\x89\xBB\xE2\x89\xBC\xE2\x89\xBD\xE2\x89\xBE\xE2\x89\xBF\xE2\x8A\x80\xE2\x8A\x81\xE2\x8A\x82\xE2\x8A\x83\xE2\x8A\x84\xE2\x8A\x85\xE2\x8A\x86\xE2\x8A\x87\xE2\x8A\x88\xE2\x8A\x89\xE2\x8A\x8A\xE2\x8A\x8B\xE2\x8A\xA3\xE2\x8A\xA2\xE2\x8A\xA6\xE2\xAB\x9E\xE2\x8A\xA8\xE2\xAB\xA4\xE2\x8A\xA9\xE2\xAB\xA3\xE2\x8A\xB0\xE2\x8A\xB1\xE2\x8B\x90\xE2\x8B\x91\xE2\x8B\x96\xE2\x8B\x97\xE2\x8B\x98\xE2\x8B\x99\xE2\x8B\x9C\xE2\x8B\x9D\xE2\x8B\x9E\xE2\x8B\x9F\xE2\x8B\xA0\xE2\x8B\xA1\xE2\x8B\xA6\xE2\x8B\xA7\xE2\x8B\xA8\xE2\x8B\xA9\xE2\x8B\xB2\xE2\x8B\xBA\xE2\x8B\xB3\xE2\x8B\xBB\xE2\x8B\xB4\xE2\x8B\xBC\xE2\x8B\xB6\xE2\x8B\xBD\xE2\x8B\xB7\xE2\x8B\xBE\xE2\x8C\x88\xE2\x8C\x89\xE2\x8C\x8A\xE2\x8C\x8B\xE2\x8C\xA6\xE2\x8C\xAB\xE2\x8C\xA9\xE2\x8C\xAA\xE2\x8D\x!
88\xE2\x8D\x87\xE2\x8F\xA9\xE2\x8F\xAA\xE2\x8F\xAD\xE2\x8F\xAE\xE2\x98\x9B\xE2\x98\x9A\xE2\x98\x9E\xE2\x98\x9C\xE2\x9A\x9E\xE2\x9A\x9F\xE2\x9D\xA8\xE2\x9D\xA9\xE2\x9D\xAA\xE2\x9D\xAB\xE2\x9D\xAC\xE2\x9D\xAD\xE2\x9D\xAE\xE2\x9D\xAF\xE2\x9D\xB0\xE2\x9D\xB1\xE2\x9D\xB2\xE2\x9D\xB3\xE2\x9D\xB4\xE2\x9D\xB5\xE2\x9F\x83\xE2\x9F\x84\xE2\x9F\x85\xE2\x9F\x86\xE2\x9F\x88\xE2\x9F\x89\xE2\x9F\x9E\xE2\x9F\x9D\xE2\x9F\xA6\xE2\x9F\xA7\xE2\x9F\xA8\xE2\x9F\xA9\xE2\x9F\xAA\xE2\x9F\xAB\xE2\x9F\xAC\xE2\x9F\xAD\xE2\x9F\xAE\xE2\x9F\xAF\xE2\x9F\xB4\xE2\xAC\xB2\xE2\x9F\xB6\xE2\x9F\xB5\xE2\x9F\xB9\xE2\x9F\xB8\xE2\x9F\xBC\xE2\x9F\xBB\xE2\x9F\xBE\xE2\x9F\xBD\xE2\x9F\xBF\xE2\xAC\xB3\xE2\xA4\x80\xE2\xAC\xB4\xE2\xA4\x81\xE2\xAC\xB5\xE2\xA4\x83\xE2\xA4\x82\xE2\xA4\x85\xE2\xAC\xB6\xE2\xA4\x87\xE2\xA4\x86\xE2\xA4\x8D\xE2\xA4\x8C\xE2\xA4\x8F\xE2\xA4\x8E\xE2\xA4\x90\xE2\xAC\xB7\xE2\xA4\x91\xE2\xAC\xB8\xE2\xA4\x94\xE2\xAC\xB9\xE2\xA4\x95\xE2\xAC\xBA\xE2\xA4\x96\xE2\xAC\xBB\xE2\xA4\x97\xE2\xAC\xBC\xE2\xA4\x98\xE2\xAC\xBD\xE2\xA4\x9A\xE2\xA4\x99\xE2\xA4\x9C\xE2\xA4\x9B\xE2\xA4\x9E\xE2\xA4\x9D\xE2\xA4\xA0\xE2\xA4\x9F\xE2\xA4\xB3\xE2\xAC\xBF\xE2\xA4\xB7\xE2\xA4\xB6\xE2\xA5\x85\xE2\xA5\x86\xE2\xA5\x87\xE2\xAC\xBE\xE2\xA5\x93\xE2\xA5\x92\xE2\xA5\x97\xE2\xA5\x96\xE2\xA5\x9B\xE2\xA5\x9A\xE2\xA5\x9F\xE2\xA5\x9E\xE2\xA5\xA4\xE2\xA5\xA2\xE2\xA5\xAC\xE2\xA5\xAA\xE2\xA5\xAD\xE2\xA5\xAB\xE2\xA5\xB1\xE2\xAD\x80\xE2\xA5\xB2\xE2\xAD\x81\xE2\xA5\xB4\xE2\xAD\x8B\xE2\xA5\xB5\xE2\xAD\x82\xE2\xA5\xB9\xE2\xA5\xBB\xE2\xA6\x83\xE2\xA6\x84\xE2\xA6\x85\xE2\xA6\x86\xE2\xA6\x87\xE2\xA6\x88\xE2\xA6\x89\xE2\xA6\x8A\xE2\xA6\x8B\xE2\xA6\x8C\xE2\xA6\x8D\xE2\xA6\x90\xE2\xA6\x8F\xE2\xA6\x8E\xE2\xA6\x91\xE2\xA6\x92\xE2\xA6\x93\xE2\xA6\x94\xE2\xA6\x95\xE2\xA6\x96\xE2\xA6\x97\xE2\xA6\x98\xE2\xA6\xA8\xE2\xA6\xA9\xE2\xA6\xAA\xE2\xA6\xAB\xE2\xA6\xB3\xE2\xA6\xB4\xE2\xA7\x80\xE2\xA7\x81\xE2\xA7\x98\xE2\xA7\x99\xE2\xA7\x9A\xE2\xA7\x9B\xE2\xA7\xBC\xE2\xA7\xBD\xE2\xA9\xB9\xE2\xA9\xBA\xE2\xA9\xBB\xE2\xA9\xBC\xE2\xA9\xBD\xE2\xA9\xBE\xE2\xA9\xBF\xE2\xAA\x80\xE2\xAA\x81\xE2\xAA\x82\xE2\xAA\x83\xE2\!
xAA\x84\xE2\xAA\x85\xE2\xAA\x86\xE2\xAA\x87\xE2\xAA\x88\xE2\xAA\x89\xE2\xAA\x8A\xE2\xAA\x8D\xE2\xAA\x8E\xE2\xAA\x95\xE2\xAA\x96\xE2\xAA\x97\xE2\xAA\x98\xE2\xAA\x99\xE2\xAA\x9A\xE2\xAA\x9B\xE2\xAA\x9C\xE2\xAA\x9D\xE2\xAA\x9E\xE2\xAA\x9F\xE2\xAA\xA0\xE2\xAA\xA1\xE2\xAA\xA2\xE2\xAA\xA6\xE2\xAA\xA7\xE2\xAA\xA8\xE2\xAA\xA9\xE2\xAA\xAA\xE2\xAA\xAB\xE2\xAA\xAC\xE2\xAA\xAD\xE2\xAA\xAF\xE2\xAA\xB0\xE2\xAA\xB1\xE2\xAA\xB2\xE2\xAA\xB3\xE2\xAA\xB4\xE2\xAA\xB5\xE2\xAA\xB6\xE2\xAA\xB7\xE2\xAA\xB8\xE2\xAA\xB9\xE2\xAA\xBA\xE2\xAA\xBB\xE2\xAA\xBC\xE2\xAA\xBD\xE2\xAA\xBE\xE2\xAA\xBF\xE2\xAB\x80\xE2\xAB\x81\xE2\xAB\x82\xE2\xAB\x83\xE2\xAB\x84\xE2\xAB\x85\xE2\xAB\x86\xE2\xAB\x87\xE2\xAB\x88\xE2\xAB\x89\xE2\xAB\x8A\xE2\xAB\x8B\xE2\xAB\x8C\xE2\xAB\x8F\xE2\xAB\x90\xE2\xAB\x91\xE2\xAB\x92\xE2\xAB\x95\xE2\xAB\x96\xE2\xAB\xA5\xE2\x8A\xAB\xE2\xAB\xB7\xE2\xAB\xB8\xE2\xAB\xB9\xE2\xAB\xBA\xE2\xAD\x86\xE2\xAD\x85\xE2\xAD\x87\xE2\xAD\x89\xE2\xAD\x88\xE2\xAD\x8A\xE2\xAD\x8C\xE2\xA5\xB3\xE2\xAD\xA2\xE2\xAD\xA0\xE2\xAD\xAC\xE2\xAD\xAA\xE2\xAD\xB2\xE2\xAD\xB0\xE2\xAD\xBC\xE2\xAD\xBA\xE2\xAE\x86\xE2\xAE\x84\xE2\xAE\x8A\xE2\xAE\x88\xE2\xAE\x95\xE2\xAC\x85\xE2\xAE\x9A\xE2\xAE\x98\xE2\xAE\x9E\xE2\xAE\x9C\xE2\xAE\xA1\xE2\xAE\xA0\xE2\xAE\xA3\xE2\xAE\xA2\xE2\xAE\xA9\xE2\xAE\xA8\xE2\xAE\xAB\xE2\xAE\xAA\xE2\xAE\xB1\xE2\xAE\xB0\xE2\xAE\xB3\xE2\xAE\xB2\xE2\xAF\xAE\xE2\xAF\xAC\xE2\xB8\x82\xE2\xB8\x83\xE2\xB8\x83\xE2\xB8\x84\xE2\xB8\x85\xE2\xB8\x85\xE2\xB8\x89\xE2\xB8\x8A\xE2\xB8\x8A\xE2\xB8\x8C\xE2\xB8\x8D\xE2\xB8\x8D\xE2\xB8\x91\xE2\xB8\x90\xE2\xB8\x9C\xE2\xB8\x9D\xE2\xB8\x9D\xE2\xB8\xA0\xE2\xB8\xA1\xE2\xB8\xA1\xE2\xB8\xA2\xE2\xB8\xA3\xE2\xB8\xA4\xE2\xB8\xA5\xE2\xB8\xA6\xE2\xB8\xA7\xE2\xB8\xA8\xE2\xB8\xA9\xE2\xB8\xB6\xE2\xB8\xB7\xE2\xB9\x82\xE2\x80\x9E\xE2\xB9\x95\xE2\xB9\x96\xE2\xB9\x97\xE2\xB9\x98\xE2\xB9\x99\xE2\xB9\x9A\xE2\xB9\x9B\xE2\xB9\x9C\xE3\x80\x88\xE3\x80\x89\xE3\x80\x8A\xE3\x80\x8B\xE3\x80\x8C\xE3\x80\x8D\xE3\x80\x8E\xE3\x80\x8F\xE3\x80\x90\xE3\x80\x91\xE3\x80\x94\xE3\x80\x95\xE3\x80\x96\xE3\x80\x97\xE3\x80\x98\xE3\x80\x99\xE3\x80\x9A\xE3\x80\x9B!
\xE3\x80\x9D\xE3\x80\x9E\xEA\xA7\x81\xEA\xA7\x82\xEF\xB4\xBE\xEF\xB4\xBF\xEF\xB9\x99\xEF\xB9\x9A\xEF\xB9\x9B\xEF\xB9\x9C\xEF\xB9\x9D\xEF\xB9\x9E\xEF\xB9\xA4\xEF\xB9\xA5\xEF\xBC\x88\xEF\xBC\x89\xEF\xBC\x9C\xEF\xBC\x9E\xEF\xBC\xBB\xEF\xBC\xBD\xEF\xBD\x9B\xEF\xBD\x9D\xEF\xBD\x9F\xEF\xBD\xA0\xEF\xBD\xA2\xEF\xBD\xA3\xEF\xBF\xAB\xEF\xBF\xA9\xF0\x9D\x84\x83\xF0\x9D\x84\x82\xF0\x9D\x84\x86\xF0\x9D\x84\x87\xF0\x9F\x91\x89\xF0\x9F\x91\x88\xF0\x9F\x94\x88\xF0\x9F\x95\xA8\xF0\x9F\x94\x89\xF0\x9F\x95\xA9\xF0\x9F\x94\x8A\xF0\x9F\x95\xAA\xF0\x9F\x95\xBB\xF0\x9F\x95\xBD\xF0\x9F\x96\x99\xF0\x9F\x96\x98\xF0\x9F\x96\x9B\xF0\x9F\x96\x9A\xF0\x9F\x96\x9D\xF0\x9F\x96\x9C\xF0\x9F\x97\xA6\xF0\x9F\x97\xA7\xF0\x9F\xA0\x82\xF0\x9F\xA0\x80\xF0\x9F\xA0\x86\xF0\x9F\xA0\x84\xF0\x9F\xA0\x8A\xF0\x9F\xA0\x88\xF0\x9F\xA0\x92\xF0\x9F\xA0\x90\xF0\x9F\xA0\x96\xF0\x9F\xA0\x94\xF0\x9F\xA0\x9A\xF0\x9F\xA0\x98\xF0\x9F\xA0\x9E\xF0\x9F\xA0\x9C\xF0\x9F\xA0\xA2\xF0\x9F\xA0\xA0\xF0\x9F\xA0\xA6\xF0\x9F\xA0\xA4\xF0\x9F\xA0\xAA\xF0\x9F\xA0\xA8\xF0\x9F\xA0\xAE\xF0\x9F\xA0\xAC\xF0\x9F\xA0\xB2\xF0\x9F\xA0\xB0\xF0\x9F\xA0\xB6\xF0\x9F\xA0\xB4\xF0\x9F\xA0\xBA\xF0\x9F\xA0\xB8\xF0\x9F\xA0\xBE\xF0\x9F\xA0\xBC\xF0\x9F\xA1\x82\xF0\x9F\xA1\x80\xF0\x9F\xA1\x86\xF0\x9F\xA1\x84\xF0\x9F\xA1\x92\xF0\x9F\xA1\x90\xF0\x9F\xA1\xA2\xF0\x9F\xA1\xA0\xF0\x9F\xA1\xAA\xF0\x9F\xA1\xA8\xF0\x9F\xA1\xB2\xF0\x9F\xA1\xB0\xF0\x9F\xA1\xBA\xF0\x9F\xA1\xB8\xF0\x9F\xA2\x82\xF0\x9F\xA2\x80\xF0\x9F\xA2\x92\xF0\x9F\xA2\x90\xF0\x9F\xA2\x96\xF0\x9F\xA2\x94\xF0\x9F\xA2\x9A\xF0\x9F\xA2\x98\xF0\x9F\xA2\xA1\xF0\x9F\xA2\xA0\xF0\x9F\xA2\xA3\xF0\x9F\xA2\xA2\xF0\x9F\xA2\xA5\xF0\x9F\xA2\xA6\xF0\x9F\xA2\xA7\xF0\x9F\xA2\xA4\xF0\x9F\xA2\xA9\xF0\x9F\xA2\xA8\xF0\x9F\xA2\xAB\xF0\x9F\xA2\xAA"
# define DEPRECATED_OPENING_NON_UTF8_BRACKETS "\xAB\xBB"
# endif
@@ -149,11 +155,15 @@
# define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE 0xDF /* U+00FF */
# define MICRO_SIGN_NATIVE 0xA0 /* U+00B5 */
# define MICRO_SIGN_UTF8 "\x80\x64" /* U+00B5 */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8 "\xB8\x62\x52" /* U+066B */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8_FIRST_BYTE 0xB8 /* U+066B */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8_TAIL "\x62\x52" /* U+066B */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8_FIRST_BYTE_s "\xB8" /* U+066B */
# ifdef PERL_IN_TOKE_C
/* Paired characters for quote-like operators, in UTF-8 */
-# define EXTRA_OPENING_UTF8_BRACKETS "\x4D\x4C\xAD\xC0\x80\x52\x80\x6A\xB8\x67\x47\xBA\x68\x69\xBA\x68\x70\xBC\x63\x6A\xCA\x41\x67\xCA\x41\x68\xCA\x41\x70\xCA\x41\x71\xCA\x42\x64\xCA\x42\x65\xCA\x42\x66\xCA\x42\x68\xCA\x42\x69\xCA\x43\x46\xCA\x43\x54\xCA\x44\x71\xCA\x45\x54\xCA\x53\x59\xCA\x53\x6A\xCA\x53\x71\xCA\x54\x41\xCA\x54\x44\xCA\x54\x47\xCA\x54\x51\xCA\x54\x53\xCA\x54\x58\xCA\x54\x62\xCA\x55\x41\xCA\x55\x42\xCA\x55\x4A\xCA\x55\x56\xCA\x55\x59\xCA\x55\x6A\xCA\x55\x71\xCA\x56\x43\xCA\x56\x46\xCA\x56\x49\xCA\x56\x63\xCA\x56\x65\xCA\x56\x67\xCA\x56\x6A\xCA\x56\x72\xCA\x57\x49\xCA\x57\x4A\xCA\x57\x51\xCA\x62\x45\xCA\x62\x47\xCA\x62\x49\xCA\x62\x51\xCA\x62\x55\xCA\x62\x57\xCA\x62\x59\xCA\x62\x63\xCA\x62\x69\xCA\x62\x70\xCA\x62\x72\xCA\x63\x41\xCA\x63\x43\xCA\x63\x45\xCA\x63\x47\xCA\x63\x49\xCA\x63\x51\xCA\x64\x44\xCA\x64\x47\xCA\x64\x49\xCA\x64\x4A\xCA\x64\x57\xCA\x65\x57\xCA\x65\x65\xCA\x65\x67\xCA\x65\x70\xCA\x65\x72\xCA\x66\x41\xCA\x66\x47\xCA\x66\x49\xCA\x66\x59\xCA\x66\x62\xCA\x66\x63\xCA\x66\x65\xCA\x66\x66\xCA\x67\x49\xCA\x67\x51\xCA\x68\x47\xCA\x68\x4A\xCA\x69\x49\xCA\x73\x4A\xCA\x73\x54\xCB\x57\x6A\xCB\x57\x72\xCB\x63\x72\xCB\x6A\x49\xCB\x6A\x51\xCB\x6A\x53\xCB\x6A\x55\xCB\x6A\x57\xCB\x6A\x59\xCB\x6A\x63\xCB\x72\x44\xCB\x72\x46\xCB\x72\x49\xCB\x72\x72\xCB\x73\x47\xCB\x73\x49\xCB\x73\x51\xCB\x73\x53\xCB\x73\x55\xCB\x73\x63\xCB\x73\x65\xCB\x73\x68\xCB\x73\x70\xCB\x73\x72\xCB\x73\x73\xCC\x49\x41\xCC\x49\x42\xCC\x49\x44\xCC\x49\x46\xCC\x49\x48\xCC\x49\x54\xCC\x49\x56\xCC\x49\x57\xCC\x49\x58\xCC\x49\x63\xCC\x49\x64\xCC\x49\x65\xCC\x49\x66\xCC\x49\x67\xCC\x49\x69\xCC\x49\x70\xCC\x49\x72\xCC\x4A\x41\xCC\x4A\x62\xCC\x4A\x66\xCC\x51\x46\xCC\x51\x48\xCC\x51\x62\xCC\x51\x66\xCC\x51\x6A\xCC\x51\x73\xCC\x52\x45\xCC\x52\x53\xCC\x52\x54\xCC\x52\x58\xCC\x52\x59\xCC\x52\x63\xCC\x52\x64\xCC\x52\x68\xCC\x53\x44\xCC\x53\x46\xCC\x53\x48\xCC\x53\x4A\xCC\x53\x52\xCC\x53\x54\xCC\x53\x56\xCC\x53\x58\xCC\x53\x62\xCC\x53\x64\xCC\x53\x66\xCC\x54\x49\xCC\x54\x51\xCC\x54\x62\xCC\x55\x41\xCC\x55\x67\xCC\x55\x69\xCC\x5!
6\x70\xCC\x62\x68\xCC\x62\x6A\xCC\x62\x71\xCC\x62\x73\xCC\x63\x42\xCC\x63\x44\xCC\x63\x46\xCC\x63\x48\xCC\x63\x4A\xCC\x63\x54\xCC\x63\x64\xCC\x63\x66\xCC\x63\x68\xCC\x63\x6A\xCC\x63\x71\xCC\x63\x73\xCC\x64\x42\xCC\x64\x47\xCC\x64\x49\xCC\x64\x51\xCC\x64\x53\xCC\x64\x56\xCC\x64\x58\xCC\x64\x62\xCC\x64\x64\xCC\x64\x66\xCC\x64\x68\xCC\x64\x6A\xCC\x64\x71\xCC\x64\x73\xCC\x65\x42\xCC\x65\x44\xCC\x65\x46\xCC\x65\x48\xCC\x65\x4A\xCC\x65\x52\xCC\x65\x56\xCC\x65\x58\xCC\x65\x64\xCC\x66\x46\xCC\x66\x66\xCC\x66\x68\xCC\x69\x47\xCC\x69\x48\xCC\x69\x49\xCC\x69\x53\xCC\x6A\x43\xCC\x6A\x53\xCC\x6A\x59\xCC\x6A\x70\xCC\x70\x47\xCC\x70\x51\xCC\x70\x64\xCC\x70\x69\xCC\x70\x72\xCC\x71\x42\xCC\x71\x44\xCC\x71\x4A\xCC\x71\x52\xCC\x71\x58\xCC\x71\x62\xCC\x73\x55\xCD\x57\x43\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x58\xCD\x57\x70\xCD\x57\x71\xCD\x58\x41\xCD\x58\x42\xCD\x58\x43\xCD\x58\x45\xCD\x58\x47\xCD\x58\x49\xCD\x58\x65\xCD\x59\x43\xCD\x59\x64\xCD\x59\x66\xCD\x59\x68\xCD\x59\x6A\xCE\x41\x49\xCE\x41\x51\xCE\x41\x53\xCE\x41\x55\xCE\x41\x57\xCE\x41\x63\xCE\x41\x65\xCE\x41\x67\xCE\x41\x69\xCE\x41\x71\xDD\x51\x55\x42\xDD\x73\x4A\x72\xDD\x73\x59\x68\xDD\x73\x59\x6A\xDD\x73\x59\x71\xDD\x73\x62\x45\xDD\x73\x67\x49\xDD\x73\x67\x70\xDD\x73\x68\x6A\xDD\x73\x69\x6A\xDD\x73\x69\x73\xDD\x73\x6A\x43\xDD\x73\x73\x52\xDF\x63\x49\x44\xDF\x63\x49\x47\xDF\x71\x43\x4A\xDF\x71\x49\x49\xDF\x71\x49\x4A\xDF\x71\x49\x51\xDF\x71\x52\x6A\xDF\x71\x53\x68\xDF\x71\x53\x6A\xDF\x71\x53\x71\xDF\x71\x56\x47\xDF\x72\x41\x43\xDF\x72\x41\x47\xDF\x72\x41\x51\xDF\x72\x41\x59\xDF\x72\x41\x65\xDF\x72\x41\x69\xDF\x72\x41\x72\xDF\x72\x42\x43\xDF\x72\x42\x47\xDF\x72\x42\x51\xDF\x72\x42\x55\xDF\x72\x42\x59\xDF\x72\x42\x65\xDF\x72\x42\x69\xDF\x72\x42\x72\xDF\x72\x43\x43\xDF\x72\x43\x47\xDF\x72\x43\x59\xDF\x72\x44\x43\xDF\x72\x44\x51\xDF\x72\x44\x59\xDF\x72\x44\x69\xDF\x72\x45\x43\xDF\x72\x45\x59\xDF\x72\x45\x65\xDF\x72\x45\x69\xDF\x72\x46\x42\xDF\x72\x46\x44\xDF\x72\x46\x46\xDF\x72\x46\x48\xDF\x72\x46\x4A\xDF\x72\x46\x52"
-# define EXTRA_CLOSING_UTF8_BRACKETS "\x5D\x6E\xBD\xD0\x80\x6A\x80\x52\xB8\x67\x48\xBA\x68\x6A\xBA\x68\x71\xBC\x63\x70\xCA\x41\x68\xCA\x41\x67\xCA\x41\x71\xCA\x41\x70\xCA\x42\x59\xCA\x42\x62\xCA\x42\x63\xCA\x42\x69\xCA\x42\x68\xCA\x43\x47\xCA\x43\x53\xCA\x44\x72\xCA\x45\x55\xCA\x53\x57\xCA\x53\x69\xCA\x53\x70\xCA\x53\x72\xCA\x54\x43\xCA\x54\x45\xCA\x54\x4A\xCA\x54\x52\xCA\x54\x57\xCA\x54\x59\xCA\x54\x70\xCA\x54\x71\xCA\x55\x48\xCA\x55\x54\xCA\x55\x57\xCA\x55\x69\xCA\x55\x70\xCA\x56\x41\xCA\x56\x45\xCA\x56\x47\xCC\x68\x57\xCC\x68\x58\xCA\x56\x66\xCA\x56\x69\xCA\x56\x71\xCA\x57\x52\xCA\x57\x53\xCA\x57\x54\xCA\x62\x46\xCA\x62\x48\xCA\x62\x4A\xCA\x62\x52\xCA\x62\x56\xCA\x62\x58\xCA\x62\x62\xCA\x62\x64\xCA\x62\x6A\xCA\x62\x71\xCA\x62\x73\xCA\x63\x42\xCA\x63\x44\xCA\x63\x46\xCA\x63\x48\xCA\x63\x4A\xCA\x63\x52\xCA\x64\x43\xCC\x65\x72\xCC\x66\x45\xCC\x66\x44\xCA\x64\x58\xCA\x65\x58\xCA\x65\x66\xCA\x65\x68\xCA\x65\x71\xCA\x65\x73\xCA\x66\x42\xCA\x66\x48\xCA\x66\x4A\xCA\x66\x69\xCA\x66\x6A\xCA\x66\x70\xCA\x66\x71\xCA\x66\x72\xCA\x67\x4A\xCA\x67\x52\xCA\x68\x52\xCA\x68\x51\xCA\x69\x48\xCA\x73\x51\xCA\x73\x55\xCB\x57\x69\xCB\x57\x70\xCB\x63\x73\xCB\x6A\x4A\xCB\x6A\x52\xCB\x6A\x54\xCB\x6A\x56\xCB\x6A\x58\xCB\x6A\x62\xCB\x6A\x64\xCB\x72\x45\xCB\x72\x47\xCB\x72\x4A\xCB\x72\x71\xCB\x73\x48\xCB\x73\x4A\xCB\x73\x52\xCB\x73\x54\xCB\x73\x56\xCC\x68\x59\xCB\x73\x64\xCB\x73\x67\xCB\x73\x6A\xCB\x73\x71\xCC\x68\x62\xCC\x68\x63\xCC\x68\x64\xCC\x49\x43\xCC\x68\x65\xCC\x49\x47\xCC\x49\x53\xCC\x49\x55\xCC\x68\x66\xCC\x68\x67\xCC\x68\x68\xCC\x68\x69\xCC\x68\x6A\xCC\x68\x70\xCC\x68\x71\xCC\x49\x68\xCC\x49\x6A\xCC\x49\x71\xCC\x49\x73\xCC\x68\x73\xCC\x4A\x65\xCC\x51\x47\xCC\x68\x72\xCC\x51\x59\xCC\x51\x65\xCC\x51\x69\xCC\x51\x72\xCC\x52\x43\xCC\x52\x51\xCC\x52\x52\xCC\x69\x41\xCC\x69\x42\xCC\x69\x52\xCC\x69\x43\xCC\x52\x6A\xCC\x53\x45\xCC\x53\x47\xCC\x53\x49\xCC\x53\x51\xCC\x53\x53\xCC\x53\x57\xCC\x53\x55\xCC\x53\x59\xCC\x53\x63\xCC\x53\x65\xCC\x53\x67\xCC\x54\x4A\xCC\x54\x52\xCC\x54\x63\xCC\x55\x42\xCC\x55\x68\xCC\x55\x6A\xCC\x5!
6\x71\xCC\x62\x69\xCC\x62\x70\xCC\x62\x72\xCC\x63\x41\xCC\x63\x43\xCC\x63\x45\xCC\x63\x47\xCC\x63\x49\xCC\x63\x51\xCC\x63\x55\xCC\x63\x65\xCC\x63\x67\xCC\x63\x69\xCC\x63\x70\xCC\x63\x72\xCC\x64\x41\xCC\x64\x43\xCC\x64\x48\xCC\x64\x4A\xCC\x64\x52\xCC\x64\x54\xCC\x64\x57\xCC\x64\x59\xCC\x64\x63\xCC\x64\x65\xCC\x64\x67\xCC\x64\x69\xCC\x64\x70\xCC\x64\x72\xCC\x65\x41\xCC\x65\x43\xCC\x65\x45\xCC\x65\x47\xCC\x65\x49\xCC\x65\x51\xCC\x65\x53\xCC\x65\x57\xCC\x65\x59\xCC\x65\x65\xCA\x64\x52\xCC\x66\x67\xCC\x66\x69\xCC\x69\x46\xCC\x69\x4A\xCC\x69\x51\xCC\x52\x62\xCC\x6A\x41\xCC\x6A\x51\xCC\x6A\x57\xCC\x6A\x69\xCC\x70\x45\xCC\x70\x49\xCC\x67\x46\xCC\x70\x67\xCC\x70\x70\xCC\x71\x41\xCC\x71\x43\xCC\x71\x49\xCC\x71\x51\xCC\x71\x57\xCC\x71\x59\xCC\x73\x53\xCD\x57\x44\xCD\x57\x43\xCD\x57\x46\xCD\x57\x45\xCD\x57\x51\xCD\x57\x4A\xCD\x57\x54\xCD\x57\x53\xCD\x57\x57\xCD\x57\x71\xCD\x57\x70\xCD\x58\x42\xCD\x58\x41\xCD\x58\x44\xCD\x58\x46\xCD\x58\x48\xCD\x58\x4A\xCD\x58\x66\xCA\x41\x72\xCD\x59\x65\xCD\x59\x67\xCD\x59\x69\xCD\x59\x70\xCE\x41\x4A\xCE\x41\x52\xCE\x41\x54\xCE\x41\x56\xCE\x41\x58\xCE\x41\x64\xCE\x41\x66\xCE\x41\x68\xCE\x41\x6A\xCE\x41\x72\xDD\x51\x55\x43\xDD\x73\x4A\x73\xDD\x73\x59\x69\xDD\x73\x59\x70\xDD\x73\x59\x72\xDD\x73\x62\x46\xDD\x73\x67\x4A\xDD\x73\x67\x72\xDD\x73\x68\x71\xDD\x73\x69\x71\xDD\x73\x6A\x41\xDD\x73\x6A\x44\xDD\x73\x73\x4A\xDF\x63\x49\x43\xDF\x63\x49\x48\xDF\x71\x43\x49\xDF\x71\x52\x49\xDF\x71\x52\x4A\xDF\x71\x52\x51\xDF\x71\x52\x71\xDF\x71\x53\x67\xDF\x71\x53\x69\xDF\x71\x53\x70\xDF\x71\x56\x48\xDF\x72\x41\x41\xDF\x72\x41\x45\xDF\x72\x41\x49\xDF\x72\x41\x57\xDF\x72\x41\x63\xDF\x72\x41\x67\xDF\x72\x41\x70\xDF\x72\x42\x41\xDF\x72\x42\x45\xDF\x72\x42\x49\xDF\x72\x42\x53\xDF\x72\x42\x57\xDF\x72\x42\x63\xDF\x72\x42\x67\xDF\x72\x42\x70\xDF\x72\x43\x41\xDF\x72\x43\x45\xDF\x72\x43\x57\xDF\x72\x44\x41\xDF\x72\x44\x49\xDF\x72\x44\x57\xDF\x72\x44\x67\xDF\x72\x45\x41\xDF\x72\x45\x57\xDF\x72\x45\x63\xDF\x72\x45\x67\xDF\x72\x46\x41\xDF\x72\x46\x43\xDF\x72\x46\x47\xDF\x72\x46\x45\xDF\x72\x46\x49\xDF\x72\x46\x51"
+# define EXTRA_OPENING_UTF8_BRACKETS "\x4D\x4C\xAD\xC0\x80\x52\x80\x6A\xBA\x68\x69\xBA\x68\x70\xBC\x63\x6A\xCA\x41\x67\xCA\x41\x68\xCA\x41\x70\xCA\x41\x71\xCA\x42\x64\xCA\x42\x65\xCA\x42\x66\xCA\x42\x68\xCA\x42\x69\xCA\x43\x46\xCA\x43\x54\xCA\x44\x71\xCA\x45\x54\xCA\x53\x59\xCA\x53\x6A\xCA\x53\x71\xCA\x54\x41\xCA\x54\x44\xCA\x54\x47\xCA\x54\x51\xCA\x54\x53\xCA\x54\x58\xCA\x54\x62\xCA\x55\x41\xCA\x55\x42\xCA\x55\x4A\xCA\x55\x56\xCA\x55\x59\xCA\x55\x6A\xCA\x55\x71\xCA\x56\x43\xCA\x56\x46\xCA\x56\x49\xCA\x56\x63\xCA\x56\x65\xCA\x56\x67\xCA\x56\x6A\xCA\x56\x72\xCA\x57\x49\xCA\x57\x4A\xCA\x57\x51\xCA\x62\x45\xCA\x62\x47\xCA\x62\x49\xCA\x62\x51\xCA\x62\x55\xCA\x62\x57\xCA\x62\x59\xCA\x62\x63\xCA\x62\x69\xCA\x62\x70\xCA\x62\x72\xCA\x63\x41\xCA\x63\x43\xCA\x63\x45\xCA\x63\x47\xCA\x63\x49\xCA\x63\x51\xCA\x64\x44\xCA\x64\x47\xCA\x64\x49\xCA\x64\x4A\xCA\x64\x57\xCA\x65\x57\xCA\x65\x65\xCA\x65\x67\xCA\x65\x70\xCA\x65\x72\xCA\x66\x41\xCA\x66\x47\xCA\x66\x49\xCA\x66\x59\xCA\x66\x62\xCA\x66\x63\xCA\x66\x65\xCA\x66\x66\xCA\x67\x49\xCA\x67\x51\xCA\x68\x47\xCA\x68\x4A\xCA\x69\x49\xCA\x73\x4A\xCA\x73\x54\xCB\x57\x6A\xCB\x57\x72\xCB\x63\x72\xCB\x6A\x49\xCB\x6A\x51\xCB\x6A\x53\xCB\x6A\x55\xCB\x6A\x57\xCB\x6A\x59\xCB\x6A\x63\xCB\x72\x44\xCB\x72\x46\xCB\x72\x49\xCB\x72\x72\xCB\x73\x47\xCB\x73\x49\xCB\x73\x51\xCB\x73\x53\xCB\x73\x55\xCB\x73\x63\xCB\x73\x65\xCB\x73\x68\xCB\x73\x70\xCB\x73\x72\xCB\x73\x73\xCC\x49\x41\xCC\x49\x42\xCC\x49\x44\xCC\x49\x46\xCC\x49\x48\xCC\x49\x54\xCC\x49\x56\xCC\x49\x57\xCC\x49\x58\xCC\x49\x63\xCC\x49\x64\xCC\x49\x65\xCC\x49\x66\xCC\x49\x67\xCC\x49\x69\xCC\x49\x70\xCC\x49\x72\xCC\x4A\x41\xCC\x4A\x62\xCC\x4A\x66\xCC\x51\x46\xCC\x51\x48\xCC\x51\x62\xCC\x51\x66\xCC\x51\x6A\xCC\x51\x73\xCC\x52\x45\xCC\x52\x53\xCC\x52\x54\xCC\x52\x58\xCC\x52\x59\xCC\x52\x63\xCC\x52\x64\xCC\x52\x68\xCC\x53\x44\xCC\x53\x46\xCC\x53\x48\xCC\x53\x4A\xCC\x53\x52\xCC\x53\x54\xCC\x53\x56\xCC\x53\x58\xCC\x53\x62\xCC\x53\x64\xCC\x53\x66\xCC\x54\x49\xCC\x54\x51\xCC\x54\x62\xCC\x55\x41\xCC\x55\x67\xCC\x55\x69\xCC\x56\x70\xCC\x6!
2\x68\xCC\x62\x6A\xCC\x62\x71\xCC\x62\x73\xCC\x63\x42\xCC\x63\x44\xCC\x63\x46\xCC\x63\x48\xCC\x63\x4A\xCC\x63\x54\xCC\x63\x64\xCC\x63\x66\xCC\x63\x68\xCC\x63\x6A\xCC\x63\x71\xCC\x63\x73\xCC\x64\x42\xCC\x64\x47\xCC\x64\x49\xCC\x64\x51\xCC\x64\x53\xCC\x64\x56\xCC\x64\x58\xCC\x64\x62\xCC\x64\x64\xCC\x64\x66\xCC\x64\x68\xCC\x64\x6A\xCC\x64\x71\xCC\x64\x73\xCC\x65\x42\xCC\x65\x44\xCC\x65\x46\xCC\x65\x48\xCC\x65\x4A\xCC\x65\x52\xCC\x65\x56\xCC\x65\x58\xCC\x65\x64\xCC\x66\x46\xCC\x66\x66\xCC\x66\x68\xCC\x69\x47\xCC\x69\x48\xCC\x69\x49\xCC\x69\x53\xCC\x6A\x43\xCC\x6A\x53\xCC\x6A\x59\xCC\x6A\x70\xCC\x70\x47\xCC\x70\x51\xCC\x70\x64\xCC\x70\x69\xCC\x70\x72\xCC\x71\x42\xCC\x71\x44\xCC\x71\x4A\xCC\x71\x52\xCC\x71\x58\xCC\x71\x62\xCC\x73\x55\xCD\x57\x43\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x58\xCD\x57\x70\xCD\x57\x71\xCD\x58\x41\xCD\x58\x42\xCD\x58\x43\xCD\x58\x45\xCD\x58\x47\xCD\x58\x49\xCD\x58\x65\xCD\x59\x43\xCD\x59\x64\xCD\x59\x66\xCD\x59\x68\xCD\x59\x6A\xCE\x41\x49\xCE\x41\x51\xCE\x41\x53\xCE\x41\x55\xCE\x41\x57\xCE\x41\x63\xCE\x41\x65\xCE\x41\x67\xCE\x41\x69\xCE\x41\x71\xDD\x51\x55\x42\xDD\x73\x4A\x72\xDD\x73\x59\x68\xDD\x73\x59\x6A\xDD\x73\x59\x71\xDD\x73\x62\x45\xDD\x73\x67\x49\xDD\x73\x67\x70\xDD\x73\x68\x6A\xDD\x73\x69\x6A\xDD\x73\x69\x73\xDD\x73\x6A\x43\xDD\x73\x73\x52\xDF\x63\x49\x44\xDF\x63\x49\x47\xDF\x71\x43\x4A\xDF\x71\x49\x49\xDF\x71\x49\x4A\xDF\x71\x49\x51\xDF\x71\x52\x6A\xDF\x71\x53\x68\xDF\x71\x53\x6A\xDF\x71\x53\x71\xDF\x71\x56\x47\xDF\x72\x41\x43\xDF\x72\x41\x47\xDF\x72\x41\x51\xDF\x72\x41\x59\xDF\x72\x41\x65\xDF\x72\x41\x69\xDF\x72\x41\x72\xDF\x72\x42\x43\xDF\x72\x42\x47\xDF\x72\x42\x51\xDF\x72\x42\x55\xDF\x72\x42\x59\xDF\x72\x42\x65\xDF\x72\x42\x69\xDF\x72\x42\x72\xDF\x72\x43\x43\xDF\x72\x43\x47\xDF\x72\x43\x59\xDF\x72\x44\x43\xDF\x72\x44\x51\xDF\x72\x44\x59\xDF\x72\x44\x69\xDF\x72\x45\x43\xDF\x72\x45\x59\xDF\x72\x45\x65\xDF\x72\x45\x69\xDF\x72\x46\x42\xDF\x72\x46\x44\xDF\x72\x46\x46\xDF\x72\x46\x48\xDF\x72\x46\x4A\xDF\x72\x46\x52"
+# define EXTRA_CLOSING_UTF8_BRACKETS "\x5D\x6E\xBD\xD0\x80\x6A\x80\x52\xBA\x68\x6A\xBA\x68\x71\xBC\x63\x70\xCA\x41\x68\xCA\x41\x67\xCA\x41\x71\xCA\x41\x70\xCA\x42\x59\xCA\x42\x62\xCA\x42\x63\xCA\x42\x69\xCA\x42\x68\xCA\x43\x47\xCA\x43\x53\xCA\x44\x72\xCA\x45\x55\xCA\x53\x57\xCA\x53\x69\xCA\x53\x70\xCA\x53\x72\xCA\x54\x43\xCA\x54\x45\xCA\x54\x4A\xCA\x54\x52\xCA\x54\x57\xCA\x54\x59\xCA\x54\x70\xCA\x54\x71\xCA\x55\x48\xCA\x55\x54\xCA\x55\x57\xCA\x55\x69\xCA\x55\x70\xCA\x56\x41\xCA\x56\x45\xCA\x56\x47\xCC\x68\x57\xCC\x68\x58\xCA\x56\x66\xCA\x56\x69\xCA\x56\x71\xCA\x57\x52\xCA\x57\x53\xCA\x57\x54\xCA\x62\x46\xCA\x62\x48\xCA\x62\x4A\xCA\x62\x52\xCA\x62\x56\xCA\x62\x58\xCA\x62\x62\xCA\x62\x64\xCA\x62\x6A\xCA\x62\x71\xCA\x62\x73\xCA\x63\x42\xCA\x63\x44\xCA\x63\x46\xCA\x63\x48\xCA\x63\x4A\xCA\x63\x52\xCA\x64\x43\xCC\x65\x72\xCC\x66\x45\xCC\x66\x44\xCA\x64\x58\xCA\x65\x58\xCA\x65\x66\xCA\x65\x68\xCA\x65\x71\xCA\x65\x73\xCA\x66\x42\xCA\x66\x48\xCA\x66\x4A\xCA\x66\x69\xCA\x66\x6A\xCA\x66\x70\xCA\x66\x71\xCA\x66\x72\xCA\x67\x4A\xCA\x67\x52\xCA\x68\x52\xCA\x68\x51\xCA\x69\x48\xCA\x73\x51\xCA\x73\x55\xCB\x57\x69\xCB\x57\x70\xCB\x63\x73\xCB\x6A\x4A\xCB\x6A\x52\xCB\x6A\x54\xCB\x6A\x56\xCB\x6A\x58\xCB\x6A\x62\xCB\x6A\x64\xCB\x72\x45\xCB\x72\x47\xCB\x72\x4A\xCB\x72\x71\xCB\x73\x48\xCB\x73\x4A\xCB\x73\x52\xCB\x73\x54\xCB\x73\x56\xCC\x68\x59\xCB\x73\x64\xCB\x73\x67\xCB\x73\x6A\xCB\x73\x71\xCC\x68\x62\xCC\x68\x63\xCC\x68\x64\xCC\x49\x43\xCC\x68\x65\xCC\x49\x47\xCC\x49\x53\xCC\x49\x55\xCC\x68\x66\xCC\x68\x67\xCC\x68\x68\xCC\x68\x69\xCC\x68\x6A\xCC\x68\x70\xCC\x68\x71\xCC\x49\x68\xCC\x49\x6A\xCC\x49\x71\xCC\x49\x73\xCC\x68\x73\xCC\x4A\x65\xCC\x51\x47\xCC\x68\x72\xCC\x51\x59\xCC\x51\x65\xCC\x51\x69\xCC\x51\x72\xCC\x52\x43\xCC\x52\x51\xCC\x52\x52\xCC\x69\x41\xCC\x69\x42\xCC\x69\x52\xCC\x69\x43\xCC\x52\x6A\xCC\x53\x45\xCC\x53\x47\xCC\x53\x49\xCC\x53\x51\xCC\x53\x53\xCC\x53\x57\xCC\x53\x55\xCC\x53\x59\xCC\x53\x63\xCC\x53\x65\xCC\x53\x67\xCC\x54\x4A\xCC\x54\x52\xCC\x54\x63\xCC\x55\x42\xCC\x55\x68\xCC\x55\x6A\xCC\x56\x71\xCC\x6!
2\x69\xCC\x62\x70\xCC\x62\x72\xCC\x63\x41\xCC\x63\x43\xCC\x63\x45\xCC\x63\x47\xCC\x63\x49\xCC\x63\x51\xCC\x63\x55\xCC\x63\x65\xCC\x63\x67\xCC\x63\x69\xCC\x63\x70\xCC\x63\x72\xCC\x64\x41\xCC\x64\x43\xCC\x64\x48\xCC\x64\x4A\xCC\x64\x52\xCC\x64\x54\xCC\x64\x57\xCC\x64\x59\xCC\x64\x63\xCC\x64\x65\xCC\x64\x67\xCC\x64\x69\xCC\x64\x70\xCC\x64\x72\xCC\x65\x41\xCC\x65\x43\xCC\x65\x45\xCC\x65\x47\xCC\x65\x49\xCC\x65\x51\xCC\x65\x53\xCC\x65\x57\xCC\x65\x59\xCC\x65\x65\xCA\x64\x52\xCC\x66\x67\xCC\x66\x69\xCC\x69\x46\xCC\x69\x4A\xCC\x69\x51\xCC\x52\x62\xCC\x6A\x41\xCC\x6A\x51\xCC\x6A\x57\xCC\x6A\x69\xCC\x70\x45\xCC\x70\x49\xCC\x67\x46\xCC\x70\x67\xCC\x70\x70\xCC\x71\x41\xCC\x71\x43\xCC\x71\x49\xCC\x71\x51\xCC\x71\x57\xCC\x71\x59\xCC\x73\x53\xCD\x57\x44\xCD\x57\x43\xCD\x57\x46\xCD\x57\x45\xCD\x57\x51\xCD\x57\x4A\xCD\x57\x54\xCD\x57\x53\xCD\x57\x57\xCD\x57\x71\xCD\x57\x70\xCD\x58\x42\xCD\x58\x41\xCD\x58\x44\xCD\x58\x46\xCD\x58\x48\xCD\x58\x4A\xCD\x58\x66\xCA\x41\x72\xCD\x59\x65\xCD\x59\x67\xCD\x59\x69\xCD\x59\x70\xCE\x41\x4A\xCE\x41\x52\xCE\x41\x54\xCE\x41\x56\xCE\x41\x58\xCE\x41\x64\xCE\x41\x66\xCE\x41\x68\xCE\x41\x6A\xCE\x41\x72\xDD\x51\x55\x43\xDD\x73\x4A\x73\xDD\x73\x59\x69\xDD\x73\x59\x70\xDD\x73\x59\x72\xDD\x73\x62\x46\xDD\x73\x67\x4A\xDD\x73\x67\x72\xDD\x73\x68\x71\xDD\x73\x69\x71\xDD\x73\x6A\x41\xDD\x73\x6A\x44\xDD\x73\x73\x4A\xDF\x63\x49\x43\xDF\x63\x49\x48\xDF\x71\x43\x49\xDF\x71\x52\x49\xDF\x71\x52\x4A\xDF\x71\x52\x51\xDF\x71\x52\x71\xDF\x71\x53\x67\xDF\x71\x53\x69\xDF\x71\x53\x70\xDF\x71\x56\x48\xDF\x72\x41\x41\xDF\x72\x41\x45\xDF\x72\x41\x49\xDF\x72\x41\x57\xDF\x72\x41\x63\xDF\x72\x41\x67\xDF\x72\x41\x70\xDF\x72\x42\x41\xDF\x72\x42\x45\xDF\x72\x42\x49\xDF\x72\x42\x53\xDF\x72\x42\x57\xDF\x72\x42\x63\xDF\x72\x42\x67\xDF\x72\x42\x70\xDF\x72\x43\x41\xDF\x72\x43\x45\xDF\x72\x43\x57\xDF\x72\x44\x41\xDF\x72\x44\x49\xDF\x72\x44\x57\xDF\x72\x44\x67\xDF\x72\x45\x41\xDF\x72\x45\x57\xDF\x72\x45\x63\xDF\x72\x45\x67\xDF\x72\x46\x41\xDF\x72\x46\x43\xDF\x72\x46\x47\xDF\x72\x46\x45\xDF\x72\x46\x49\xDF\x72\x46\x51"
/* And not in UTF-8 */
# define EXTRA_OPENING_NON_UTF8_BRACKETS "\x4D\x4C\xAD\xC0\x8A\x8B"
@@ -160,7 +170,7 @@
# define EXTRA_CLOSING_NON_UTF8_BRACKETS "\x5D\x6E\xBD\xD0\x8B\x8A"
/* And what's deprecated */
-# define DEPRECATED_OPENING_UTF8_BRACKETS "\x80\x52\x80\x6A\x80\x6A\xB8\x67\x47\xB8\x67\x48\xBA\x68\x69\xBA\x68\x6A\xBA\x68\x70\xBA\x68\x71\xBC\x63\x6A\xBC\x63\x70\xCA\x41\x67\xCA\x41\x68\xCA\x41\x68\xCA\x41\x70\xCA\x41\x71\xCA\x41\x71\xCA\x42\x64\xCA\x42\x59\xCA\x42\x65\xCA\x42\x62\xCA\x42\x66\xCA\x42\x63\xCA\x42\x68\xCA\x42\x69\xCA\x42\x69\xCA\x43\x46\xCA\x43\x47\xCA\x43\x54\xCA\x43\x53\xCA\x44\x71\xCA\x44\x72\xCA\x45\x54\xCA\x45\x55\xCA\x53\x59\xCA\x53\x57\xCA\x53\x6A\xCA\x53\x69\xCA\x53\x71\xCA\x53\x70\xCA\x54\x41\xCA\x53\x72\xCA\x54\x44\xCA\x54\x43\xCA\x54\x47\xCA\x54\x45\xCA\x54\x51\xCA\x54\x4A\xCA\x54\x53\xCA\x54\x52\xCA\x54\x58\xCA\x54\x57\xCA\x54\x62\xCA\x54\x59\xCA\x55\x41\xCA\x54\x70\xCA\x55\x42\xCA\x54\x71\xCA\x55\x4A\xCA\x55\x48\xCA\x55\x56\xCA\x55\x54\xCA\x55\x59\xCA\x55\x57\xCA\x55\x6A\xCA\x55\x69\xCA\x55\x71\xCA\x55\x70\xCA\x56\x43\xCA\x56\x41\xCA\x56\x46\xCA\x56\x45\xCA\x56\x49\xCA\x56\x47\xCA\x56\x63\xCC\x68\x57\xCA\x56\x65\xCC\x68\x58\xCA\x56\x67\xCA\x56\x66\xCA\x56\x6A\xCA\x56\x69\xCA\x56\x72\xCA\x56\x71\xCA\x57\x49\xCA\x57\x52\xCA\x57\x4A\xCA\x57\x53\xCA\x57\x51\xCA\x57\x54\xCA\x62\x45\xCA\x62\x46\xCA\x62\x47\xCA\x62\x48\xCA\x62\x49\xCA\x62\x4A\xCA\x62\x51\xCA\x62\x52\xCA\x62\x55\xCA\x62\x56\xCA\x62\x57\xCA\x62\x58\xCA\x62\x59\xCA\x62\x62\xCA\x62\x63\xCA\x62\x64\xCA\x62\x69\xCA\x62\x6A\xCA\x62\x70\xCA\x62\x71\xCA\x62\x72\xCA\x62\x73\xCA\x63\x41\xCA\x63\x42\xCA\x63\x43\xCA\x63\x44\xCA\x63\x45\xCA\x63\x46\xCA\x63\x47\xCA\x63\x48\xCA\x63\x49\xCA\x63\x4A\xCA\x63\x51\xCA\x63\x52\xCA\x64\x44\xCA\x64\x43\xCA\x64\x47\xCC\x65\x72\xCA\x64\x49\xCC\x66\x45\xCA\x64\x4A\xCC\x66\x44\xCA\x64\x57\xCA\x64\x58\xCA\x65\x57\xCA\x65\x58\xCA\x65\x65\xCA\x65\x66\xCA\x65\x67\xCA\x65\x68\xCA\x65\x70\xCA\x65\x71\xCA\x65\x72\xCA\x65\x73\xCA\x66\x41\xCA\x66\x42\xCA\x66\x47\xCA\x66\x48\xCA\x66\x49\xCA\x66\x4A\xCA\x66\x59\xCA\x66\x69\xCA\x66\x62\xCA\x66\x6A\xCA\x66\x63\xCA\x66\x70\xCA\x66\x65\xCA\x66\x71\xCA\x66\x66\xCA\x66\x72\xCA\x67\x49\xCA\x67\x4A\xCA\x67\x51\xCA\x67\x52\xCA\x68\x47\xCA\x68\x52\xCA\x68\x!
4A\xCA\x68\x51\xCA\x69\x49\xCA\x69\x48\xCA\x73\x4A\xCA\x73\x51\xCA\x73\x54\xCA\x73\x55\xCB\x57\x6A\xCB\x57\x69\xCB\x57\x72\xCB\x57\x70\xCB\x63\x72\xCB\x63\x73\xCB\x6A\x49\xCB\x6A\x4A\xCB\x6A\x51\xCB\x6A\x52\xCB\x6A\x53\xCB\x6A\x54\xCB\x6A\x55\xCB\x6A\x56\xCB\x6A\x57\xCB\x6A\x58\xCB\x6A\x59\xCB\x6A\x62\xCB\x6A\x63\xCB\x6A\x64\xCB\x72\x44\xCB\x72\x45\xCB\x72\x46\xCB\x72\x47\xCB\x72\x49\xCB\x72\x4A\xCB\x72\x72\xCB\x72\x71\xCB\x73\x47\xCB\x73\x48\xCB\x73\x49\xCB\x73\x4A\xCB\x73\x51\xCB\x73\x52\xCB\x73\x53\xCB\x73\x54\xCB\x73\x55\xCB\x73\x56\xCB\x73\x63\xCC\x68\x59\xCB\x73\x65\xCB\x73\x64\xCB\x73\x68\xCB\x73\x67\xCB\x73\x70\xCB\x73\x6A\xCB\x73\x72\xCB\x73\x71\xCB\x73\x73\xCC\x68\x62\xCC\x49\x41\xCC\x68\x63\xCC\x49\x42\xCC\x68\x64\xCC\x49\x44\xCC\x49\x43\xCC\x49\x46\xCC\x68\x65\xCC\x49\x48\xCC\x49\x47\xCC\x49\x54\xCC\x49\x53\xCC\x49\x56\xCC\x49\x55\xCC\x49\x57\xCC\x68\x66\xCC\x49\x58\xCC\x68\x67\xCC\x49\x63\xCC\x68\x68\xCC\x49\x64\xCC\x68\x69\xCC\x49\x65\xCC\x68\x6A\xCC\x49\x66\xCC\x68\x70\xCC\x49\x67\xCC\x68\x71\xCC\x49\x69\xCC\x49\x68\xCC\x49\x70\xCC\x49\x6A\xCC\x49\x72\xCC\x49\x71\xCC\x4A\x41\xCC\x49\x73\xCC\x4A\x62\xCC\x68\x73\xCC\x4A\x66\xCC\x4A\x65\xCC\x51\x46\xCC\x51\x47\xCC\x51\x48\xCC\x68\x72\xCC\x51\x62\xCC\x51\x59\xCC\x51\x66\xCC\x51\x65\xCC\x51\x6A\xCC\x51\x69\xCC\x51\x73\xCC\x51\x72\xCC\x52\x45\xCC\x52\x43\xCC\x52\x53\xCC\x52\x51\xCC\x52\x54\xCC\x52\x52\xCC\x52\x58\xCC\x69\x41\xCC\x52\x59\xCC\x69\x42\xCC\x52\x63\xCC\x69\x52\xCC\x52\x64\xCC\x69\x43\xCC\x52\x68\xCC\x52\x6A\xCC\x53\x44\xCC\x53\x45\xCC\x53\x46\xCC\x53\x47\xCC\x53\x48\xCC\x53\x49\xCC\x53\x4A\xCC\x53\x51\xCC\x53\x52\xCC\x53\x53\xCC\x53\x54\xCC\x53\x57\xCC\x53\x56\xCC\x53\x55\xCC\x53\x58\xCC\x53\x59\xCC\x53\x62\xCC\x53\x63\xCC\x53\x64\xCC\x53\x65\xCC\x53\x66\xCC\x53\x67\xCC\x54\x49\xCC\x54\x4A\xCC\x54\x51\xCC\x54\x52\xCC\x54\x62\xCC\x54\x63\xCC\x55\x41\xCC\x55\x42\xCC\x55\x67\xCC\x55\x68\xCC\x55\x69\xCC\x55\x6A\xCC\x56\x70\xCC\x56\x71\xCC\x62\x68\xCC\x62\x69\xCC\x62\x6A\xCC\x62\x70\xCC\x62\x71\xCC\x62\x72\xCC\x62\x73\xCC\x63\x41\xCC\x63\x42\xCC\!
x63\x43\xCC\x63\x44\xCC\x63\x45\xCC\x63\x46\xCC\x63\x47\xCC\x63\x48\xCC\x63\x49\xCC\x63\x4A\xCC\x63\x51\xCC\x63\x54\xCC\x63\x55\xCC\x63\x64\xCC\x63\x65\xCC\x63\x66\xCC\x63\x67\xCC\x63\x68\xCC\x63\x69\xCC\x63\x6A\xCC\x63\x70\xCC\x63\x71\xCC\x63\x72\xCC\x63\x73\xCC\x64\x41\xCC\x64\x42\xCC\x64\x43\xCC\x64\x47\xCC\x64\x48\xCC\x64\x49\xCC\x64\x4A\xCC\x64\x51\xCC\x64\x52\xCC\x64\x53\xCC\x64\x54\xCC\x64\x56\xCC\x64\x57\xCC\x64\x58\xCC\x64\x59\xCC\x64\x62\xCC\x64\x63\xCC\x64\x64\xCC\x64\x65\xCC\x64\x66\xCC\x64\x67\xCC\x64\x68\xCC\x64\x69\xCC\x64\x6A\xCC\x64\x70\xCC\x64\x71\xCC\x64\x72\xCC\x64\x73\xCC\x65\x41\xCC\x65\x42\xCC\x65\x43\xCC\x65\x44\xCC\x65\x45\xCC\x65\x46\xCC\x65\x47\xCC\x65\x48\xCC\x65\x49\xCC\x65\x4A\xCC\x65\x51\xCC\x65\x52\xCC\x65\x53\xCC\x65\x56\xCC\x65\x57\xCC\x65\x58\xCC\x65\x59\xCC\x65\x64\xCC\x65\x65\xCC\x66\x46\xCA\x64\x52\xCC\x66\x66\xCC\x66\x67\xCC\x66\x68\xCC\x66\x69\xCC\x69\x47\xCC\x69\x46\xCC\x69\x48\xCC\x69\x4A\xCC\x69\x49\xCC\x69\x51\xCC\x69\x53\xCC\x52\x62\xCC\x6A\x43\xCC\x6A\x41\xCC\x6A\x53\xCC\x6A\x51\xCC\x6A\x59\xCC\x6A\x57\xCC\x6A\x70\xCC\x6A\x69\xCC\x70\x47\xCC\x70\x45\xCC\x70\x51\xCC\x70\x49\xCC\x70\x64\xCC\x67\x46\xCC\x70\x69\xCC\x70\x67\xCC\x70\x72\xCC\x70\x70\xCC\x71\x42\xCC\x71\x41\xCC\x71\x44\xCC\x71\x43\xCC\x71\x4A\xCC\x71\x49\xCC\x71\x52\xCC\x71\x51\xCC\x71\x58\xCC\x71\x57\xCC\x71\x62\xCC\x71\x59\xCC\x73\x55\xCC\x73\x53\xCD\x57\x43\xCD\x57\x44\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x54\xCD\x57\x58\xCD\x57\x57\xCD\x57\x70\xCD\x57\x71\xCD\x57\x71\xCD\x58\x41\xCD\x58\x42\xCD\x58\x42\xCD\x58\x43\xCD\x58\x44\xCD\x58\x45\xCD\x58\x46\xCD\x58\x47\xCD\x58\x48\xCD\x58\x49\xCD\x58\x4A\xCD\x58\x65\xCD\x58\x66\xCD\x59\x43\xCA\x41\x72\xCD\x59\x64\xCD\x59\x65\xCD\x59\x66\xCD\x59\x67\xCD\x59\x68\xCD\x59\x69\xCD\x59\x6A\xCD\x59\x70\xCE\x41\x49\xCE\x41\x4A\xCE\x41\x51\xCE\x41\x52\xCE\x41\x53\xCE\x41\x54\xCE\x41\x55\xCE\x41\x56\xCE\x41\x57\xCE\x41\x58\xCE\x41\x63\xCE\x41\x64\xCE\x41\x65\xCE\x41\x66\xCE\x41\x67\xCE\x41\x68!
\xCE\x41\x69\xCE\x41\x6A\xCE\x41\x71\xCE\x41\x72\xDD\x51\x55\x42\xDD\x51\x55\x43\xDD\x73\x4A\x72\xDD\x73\x4A\x73\xDD\x73\x59\x68\xDD\x73\x59\x69\xDD\x73\x59\x6A\xDD\x73\x59\x70\xDD\x73\x59\x71\xDD\x73\x59\x72\xDD\x73\x62\x45\xDD\x73\x62\x46\xDD\x73\x67\x49\xDD\x73\x67\x4A\xDD\x73\x67\x70\xDD\x73\x67\x72\xDD\x73\x68\x6A\xDD\x73\x68\x71\xDD\x73\x69\x6A\xDD\x73\x69\x71\xDD\x73\x69\x73\xDD\x73\x6A\x41\xDD\x73\x6A\x43\xDD\x73\x6A\x44\xDD\x73\x73\x52\xDD\x73\x73\x4A\xDF\x63\x49\x44\xDF\x63\x49\x43\xDF\x63\x49\x47\xDF\x63\x49\x48\xDF\x71\x43\x4A\xDF\x71\x43\x49\xDF\x71\x49\x49\xDF\x71\x52\x49\xDF\x71\x49\x4A\xDF\x71\x52\x4A\xDF\x71\x49\x51\xDF\x71\x52\x51\xDF\x71\x52\x6A\xDF\x71\x52\x71\xDF\x71\x53\x68\xDF\x71\x53\x67\xDF\x71\x53\x6A\xDF\x71\x53\x69\xDF\x71\x53\x71\xDF\x71\x53\x70\xDF\x71\x56\x47\xDF\x71\x56\x48\xDF\x72\x41\x43\xDF\x72\x41\x41\xDF\x72\x41\x47\xDF\x72\x41\x45\xDF\x72\x41\x51\xDF\x72\x41\x49\xDF\x72\x41\x59\xDF\x72\x41\x57\xDF\x72\x41\x65\xDF\x72\x41\x63\xDF\x72\x41\x69\xDF\x72\x41\x67\xDF\x72\x41\x72\xDF\x72\x41\x70\xDF\x72\x42\x43\xDF\x72\x42\x41\xDF\x72\x42\x47\xDF\x72\x42\x45\xDF\x72\x42\x51\xDF\x72\x42\x49\xDF\x72\x42\x55\xDF\x72\x42\x53\xDF\x72\x42\x59\xDF\x72\x42\x57\xDF\x72\x42\x65\xDF\x72\x42\x63\xDF\x72\x42\x69\xDF\x72\x42\x67\xDF\x72\x42\x72\xDF\x72\x42\x70\xDF\x72\x43\x43\xDF\x72\x43\x41\xDF\x72\x43\x47\xDF\x72\x43\x45\xDF\x72\x43\x59\xDF\x72\x43\x57\xDF\x72\x44\x43\xDF\x72\x44\x41\xDF\x72\x44\x51\xDF\x72\x44\x49\xDF\x72\x44\x59\xDF\x72\x44\x57\xDF\x72\x44\x69\xDF\x72\x44\x67\xDF\x72\x45\x43\xDF\x72\x45\x41\xDF\x72\x45\x59\xDF\x72\x45\x57\xDF\x72\x45\x65\xDF\x72\x45\x63\xDF\x72\x45\x69\xDF\x72\x45\x67\xDF\x72\x46\x42\xDF\x72\x46\x41\xDF\x72\x46\x44\xDF\x72\x46\x43\xDF\x72\x46\x46\xDF\x72\x46\x47\xDF\x72\x46\x48\xDF\x72\x46\x45\xDF\x72\x46\x4A\xDF\x72\x46\x49\xDF\x72\x46\x52\xDF\x72\x46\x51"
+# define DEPRECATED_OPENING_UTF8_BRACKETS "\x80\x52\x80\x6A\x80\x6A\xBA\x68\x69\xBA\x68\x6A\xBA\x68\x70\xBA\x68\x71\xBC\x63\x6A\xBC\x63\x70\xCA\x41\x67\xCA\x41\x68\xCA\x41\x68\xCA\x41\x70\xCA\x41\x71\xCA\x41\x71\xCA\x42\x64\xCA\x42\x59\xCA\x42\x65\xCA\x42\x62\xCA\x42\x66\xCA\x42\x63\xCA\x42\x68\xCA\x42\x69\xCA\x42\x69\xCA\x43\x46\xCA\x43\x47\xCA\x43\x54\xCA\x43\x53\xCA\x44\x71\xCA\x44\x72\xCA\x45\x54\xCA\x45\x55\xCA\x53\x59\xCA\x53\x57\xCA\x53\x6A\xCA\x53\x69\xCA\x53\x71\xCA\x53\x70\xCA\x54\x41\xCA\x53\x72\xCA\x54\x44\xCA\x54\x43\xCA\x54\x47\xCA\x54\x45\xCA\x54\x51\xCA\x54\x4A\xCA\x54\x53\xCA\x54\x52\xCA\x54\x58\xCA\x54\x57\xCA\x54\x62\xCA\x54\x59\xCA\x55\x41\xCA\x54\x70\xCA\x55\x42\xCA\x54\x71\xCA\x55\x4A\xCA\x55\x48\xCA\x55\x56\xCA\x55\x54\xCA\x55\x59\xCA\x55\x57\xCA\x55\x6A\xCA\x55\x69\xCA\x55\x71\xCA\x55\x70\xCA\x56\x43\xCA\x56\x41\xCA\x56\x46\xCA\x56\x45\xCA\x56\x49\xCA\x56\x47\xCA\x56\x63\xCC\x68\x57\xCA\x56\x65\xCC\x68\x58\xCA\x56\x67\xCA\x56\x66\xCA\x56\x6A\xCA\x56\x69\xCA\x56\x72\xCA\x56\x71\xCA\x57\x49\xCA\x57\x52\xCA\x57\x4A\xCA\x57\x53\xCA\x57\x51\xCA\x57\x54\xCA\x62\x45\xCA\x62\x46\xCA\x62\x47\xCA\x62\x48\xCA\x62\x49\xCA\x62\x4A\xCA\x62\x51\xCA\x62\x52\xCA\x62\x55\xCA\x62\x56\xCA\x62\x57\xCA\x62\x58\xCA\x62\x59\xCA\x62\x62\xCA\x62\x63\xCA\x62\x64\xCA\x62\x69\xCA\x62\x6A\xCA\x62\x70\xCA\x62\x71\xCA\x62\x72\xCA\x62\x73\xCA\x63\x41\xCA\x63\x42\xCA\x63\x43\xCA\x63\x44\xCA\x63\x45\xCA\x63\x46\xCA\x63\x47\xCA\x63\x48\xCA\x63\x49\xCA\x63\x4A\xCA\x63\x51\xCA\x63\x52\xCA\x64\x44\xCA\x64\x43\xCA\x64\x47\xCC\x65\x72\xCA\x64\x49\xCC\x66\x45\xCA\x64\x4A\xCC\x66\x44\xCA\x64\x57\xCA\x64\x58\xCA\x65\x57\xCA\x65\x58\xCA\x65\x65\xCA\x65\x66\xCA\x65\x67\xCA\x65\x68\xCA\x65\x70\xCA\x65\x71\xCA\x65\x72\xCA\x65\x73\xCA\x66\x41\xCA\x66\x42\xCA\x66\x47\xCA\x66\x48\xCA\x66\x49\xCA\x66\x4A\xCA\x66\x59\xCA\x66\x69\xCA\x66\x62\xCA\x66\x6A\xCA\x66\x63\xCA\x66\x70\xCA\x66\x65\xCA\x66\x71\xCA\x66\x66\xCA\x66\x72\xCA\x67\x49\xCA\x67\x4A\xCA\x67\x51\xCA\x67\x52\xCA\x68\x47\xCA\x68\x52\xCA\x68\x4A\xCA\x68\x51\xCA\x69\x!
49\xCA\x69\x48\xCA\x73\x4A\xCA\x73\x51\xCA\x73\x54\xCA\x73\x55\xCB\x57\x6A\xCB\x57\x69\xCB\x57\x72\xCB\x57\x70\xCB\x63\x72\xCB\x63\x73\xCB\x6A\x49\xCB\x6A\x4A\xCB\x6A\x51\xCB\x6A\x52\xCB\x6A\x53\xCB\x6A\x54\xCB\x6A\x55\xCB\x6A\x56\xCB\x6A\x57\xCB\x6A\x58\xCB\x6A\x59\xCB\x6A\x62\xCB\x6A\x63\xCB\x6A\x64\xCB\x72\x44\xCB\x72\x45\xCB\x72\x46\xCB\x72\x47\xCB\x72\x49\xCB\x72\x4A\xCB\x72\x72\xCB\x72\x71\xCB\x73\x47\xCB\x73\x48\xCB\x73\x49\xCB\x73\x4A\xCB\x73\x51\xCB\x73\x52\xCB\x73\x53\xCB\x73\x54\xCB\x73\x55\xCB\x73\x56\xCB\x73\x63\xCC\x68\x59\xCB\x73\x65\xCB\x73\x64\xCB\x73\x68\xCB\x73\x67\xCB\x73\x70\xCB\x73\x6A\xCB\x73\x72\xCB\x73\x71\xCB\x73\x73\xCC\x68\x62\xCC\x49\x41\xCC\x68\x63\xCC\x49\x42\xCC\x68\x64\xCC\x49\x44\xCC\x49\x43\xCC\x49\x46\xCC\x68\x65\xCC\x49\x48\xCC\x49\x47\xCC\x49\x54\xCC\x49\x53\xCC\x49\x56\xCC\x49\x55\xCC\x49\x57\xCC\x68\x66\xCC\x49\x58\xCC\x68\x67\xCC\x49\x63\xCC\x68\x68\xCC\x49\x64\xCC\x68\x69\xCC\x49\x65\xCC\x68\x6A\xCC\x49\x66\xCC\x68\x70\xCC\x49\x67\xCC\x68\x71\xCC\x49\x69\xCC\x49\x68\xCC\x49\x70\xCC\x49\x6A\xCC\x49\x72\xCC\x49\x71\xCC\x4A\x41\xCC\x49\x73\xCC\x4A\x62\xCC\x68\x73\xCC\x4A\x66\xCC\x4A\x65\xCC\x51\x46\xCC\x51\x47\xCC\x51\x48\xCC\x68\x72\xCC\x51\x62\xCC\x51\x59\xCC\x51\x66\xCC\x51\x65\xCC\x51\x6A\xCC\x51\x69\xCC\x51\x73\xCC\x51\x72\xCC\x52\x45\xCC\x52\x43\xCC\x52\x53\xCC\x52\x51\xCC\x52\x54\xCC\x52\x52\xCC\x52\x58\xCC\x69\x41\xCC\x52\x59\xCC\x69\x42\xCC\x52\x63\xCC\x69\x52\xCC\x52\x64\xCC\x69\x43\xCC\x52\x68\xCC\x52\x6A\xCC\x53\x44\xCC\x53\x45\xCC\x53\x46\xCC\x53\x47\xCC\x53\x48\xCC\x53\x49\xCC\x53\x4A\xCC\x53\x51\xCC\x53\x52\xCC\x53\x53\xCC\x53\x54\xCC\x53\x57\xCC\x53\x56\xCC\x53\x55\xCC\x53\x58\xCC\x53\x59\xCC\x53\x62\xCC\x53\x63\xCC\x53\x64\xCC\x53\x65\xCC\x53\x66\xCC\x53\x67\xCC\x54\x49\xCC\x54\x4A\xCC\x54\x51\xCC\x54\x52\xCC\x54\x62\xCC\x54\x63\xCC\x55\x41\xCC\x55\x42\xCC\x55\x67\xCC\x55\x68\xCC\x55\x69\xCC\x55\x6A\xCC\x56\x70\xCC\x56\x71\xCC\x62\x68\xCC\x62\x69\xCC\x62\x6A\xCC\x62\x70\xCC\x62\x71\xCC\x62\x72\xCC\x62\x73\xCC\x63\x41\xCC\x63\x42\xCC\x63\x43\xCC\x63\x44\xCC\!
x63\x45\xCC\x63\x46\xCC\x63\x47\xCC\x63\x48\xCC\x63\x49\xCC\x63\x4A\xCC\x63\x51\xCC\x63\x54\xCC\x63\x55\xCC\x63\x64\xCC\x63\x65\xCC\x63\x66\xCC\x63\x67\xCC\x63\x68\xCC\x63\x69\xCC\x63\x6A\xCC\x63\x70\xCC\x63\x71\xCC\x63\x72\xCC\x63\x73\xCC\x64\x41\xCC\x64\x42\xCC\x64\x43\xCC\x64\x47\xCC\x64\x48\xCC\x64\x49\xCC\x64\x4A\xCC\x64\x51\xCC\x64\x52\xCC\x64\x53\xCC\x64\x54\xCC\x64\x56\xCC\x64\x57\xCC\x64\x58\xCC\x64\x59\xCC\x64\x62\xCC\x64\x63\xCC\x64\x64\xCC\x64\x65\xCC\x64\x66\xCC\x64\x67\xCC\x64\x68\xCC\x64\x69\xCC\x64\x6A\xCC\x64\x70\xCC\x64\x71\xCC\x64\x72\xCC\x64\x73\xCC\x65\x41\xCC\x65\x42\xCC\x65\x43\xCC\x65\x44\xCC\x65\x45\xCC\x65\x46\xCC\x65\x47\xCC\x65\x48\xCC\x65\x49\xCC\x65\x4A\xCC\x65\x51\xCC\x65\x52\xCC\x65\x53\xCC\x65\x56\xCC\x65\x57\xCC\x65\x58\xCC\x65\x59\xCC\x65\x64\xCC\x65\x65\xCC\x66\x46\xCA\x64\x52\xCC\x66\x66\xCC\x66\x67\xCC\x66\x68\xCC\x66\x69\xCC\x69\x47\xCC\x69\x46\xCC\x69\x48\xCC\x69\x4A\xCC\x69\x49\xCC\x69\x51\xCC\x69\x53\xCC\x52\x62\xCC\x6A\x43\xCC\x6A\x41\xCC\x6A\x53\xCC\x6A\x51\xCC\x6A\x59\xCC\x6A\x57\xCC\x6A\x70\xCC\x6A\x69\xCC\x70\x47\xCC\x70\x45\xCC\x70\x51\xCC\x70\x49\xCC\x70\x64\xCC\x67\x46\xCC\x70\x69\xCC\x70\x67\xCC\x70\x72\xCC\x70\x70\xCC\x71\x42\xCC\x71\x41\xCC\x71\x44\xCC\x71\x43\xCC\x71\x4A\xCC\x71\x49\xCC\x71\x52\xCC\x71\x51\xCC\x71\x58\xCC\x71\x57\xCC\x71\x62\xCC\x71\x59\xCC\x73\x55\xCC\x73\x53\xCD\x57\x43\xCD\x57\x44\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x54\xCD\x57\x58\xCD\x57\x57\xCD\x57\x70\xCD\x57\x71\xCD\x57\x71\xCD\x58\x41\xCD\x58\x42\xCD\x58\x42\xCD\x58\x43\xCD\x58\x44\xCD\x58\x45\xCD\x58\x46\xCD\x58\x47\xCD\x58\x48\xCD\x58\x49\xCD\x58\x4A\xCD\x58\x65\xCD\x58\x66\xCD\x59\x43\xCA\x41\x72\xCD\x59\x64\xCD\x59\x65\xCD\x59\x66\xCD\x59\x67\xCD\x59\x68\xCD\x59\x69\xCD\x59\x6A\xCD\x59\x70\xCE\x41\x49\xCE\x41\x4A\xCE\x41\x51\xCE\x41\x52\xCE\x41\x53\xCE\x41\x54\xCE\x41\x55\xCE\x41\x56\xCE\x41\x57\xCE\x41\x58\xCE\x41\x63\xCE\x41\x64\xCE\x41\x65\xCE\x41\x66\xCE\x41\x67\xCE\x41\x68\xCE\x41\x69\xCE\x41\x6A!
\xCE\x41\x71\xCE\x41\x72\xDD\x51\x55\x42\xDD\x51\x55\x43\xDD\x73\x4A\x72\xDD\x73\x4A\x73\xDD\x73\x59\x68\xDD\x73\x59\x69\xDD\x73\x59\x6A\xDD\x73\x59\x70\xDD\x73\x59\x71\xDD\x73\x59\x72\xDD\x73\x62\x45\xDD\x73\x62\x46\xDD\x73\x67\x49\xDD\x73\x67\x4A\xDD\x73\x67\x70\xDD\x73\x67\x72\xDD\x73\x68\x6A\xDD\x73\x68\x71\xDD\x73\x69\x6A\xDD\x73\x69\x71\xDD\x73\x69\x73\xDD\x73\x6A\x41\xDD\x73\x6A\x43\xDD\x73\x6A\x44\xDD\x73\x73\x52\xDD\x73\x73\x4A\xDF\x63\x49\x44\xDF\x63\x49\x43\xDF\x63\x49\x47\xDF\x63\x49\x48\xDF\x71\x43\x4A\xDF\x71\x43\x49\xDF\x71\x49\x49\xDF\x71\x52\x49\xDF\x71\x49\x4A\xDF\x71\x52\x4A\xDF\x71\x49\x51\xDF\x71\x52\x51\xDF\x71\x52\x6A\xDF\x71\x52\x71\xDF\x71\x53\x68\xDF\x71\x53\x67\xDF\x71\x53\x6A\xDF\x71\x53\x69\xDF\x71\x53\x71\xDF\x71\x53\x70\xDF\x71\x56\x47\xDF\x71\x56\x48\xDF\x72\x41\x43\xDF\x72\x41\x41\xDF\x72\x41\x47\xDF\x72\x41\x45\xDF\x72\x41\x51\xDF\x72\x41\x49\xDF\x72\x41\x59\xDF\x72\x41\x57\xDF\x72\x41\x65\xDF\x72\x41\x63\xDF\x72\x41\x69\xDF\x72\x41\x67\xDF\x72\x41\x72\xDF\x72\x41\x70\xDF\x72\x42\x43\xDF\x72\x42\x41\xDF\x72\x42\x47\xDF\x72\x42\x45\xDF\x72\x42\x51\xDF\x72\x42\x49\xDF\x72\x42\x55\xDF\x72\x42\x53\xDF\x72\x42\x59\xDF\x72\x42\x57\xDF\x72\x42\x65\xDF\x72\x42\x63\xDF\x72\x42\x69\xDF\x72\x42\x67\xDF\x72\x42\x72\xDF\x72\x42\x70\xDF\x72\x43\x43\xDF\x72\x43\x41\xDF\x72\x43\x47\xDF\x72\x43\x45\xDF\x72\x43\x59\xDF\x72\x43\x57\xDF\x72\x44\x43\xDF\x72\x44\x41\xDF\x72\x44\x51\xDF\x72\x44\x49\xDF\x72\x44\x59\xDF\x72\x44\x57\xDF\x72\x44\x69\xDF\x72\x44\x67\xDF\x72\x45\x43\xDF\x72\x45\x41\xDF\x72\x45\x59\xDF\x72\x45\x57\xDF\x72\x45\x65\xDF\x72\x45\x63\xDF\x72\x45\x69\xDF\x72\x45\x67\xDF\x72\x46\x42\xDF\x72\x46\x41\xDF\x72\x46\x44\xDF\x72\x46\x43\xDF\x72\x46\x46\xDF\x72\x46\x47\xDF\x72\x46\x48\xDF\x72\x46\x45\xDF\x72\x46\x4A\xDF\x72\x46\x49\xDF\x72\x46\x52\xDF\x72\x46\x51"
# define DEPRECATED_OPENING_NON_UTF8_BRACKETS "\x8A\x8B"
# endif
@@ -210,11 +220,15 @@
# define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE 0xDF /* U+00FF */
# define MICRO_SIGN_NATIVE 0xA0 /* U+00B5 */
# define MICRO_SIGN_UTF8 "\x78\x63" /* U+00B5 */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8 "\xB7\x5F\x52" /* U+066B */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8_FIRST_BYTE 0xB7 /* U+066B */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8_TAIL "\x5F\x52" /* U+066B */
+# define ARABIC_DECIMAL_SEPARATOR_UTF8_FIRST_BYTE_s "\xB7" /* U+066B */
# ifdef PERL_IN_TOKE_C
/* Paired characters for quote-like operators, in UTF-8 */
-# define EXTRA_OPENING_UTF8_BRACKETS "\x4D\x4C\xBA\xC0\x78\x52\x78\x69\xB7\x66\x47\xB9\x67\x68\xB9\x67\x6A\xBD\x62\x69\xCA\x41\x66\xCA\x41\x67\xCA\x41\x6A\xCA\x41\x70\xCA\x42\x63\xCA\x42\x64\xCA\x42\x65\xCA\x42\x67\xCA\x42\x68\xCA\x43\x46\xCA\x43\x54\xCA\x44\x70\xCA\x45\x54\xCA\x53\x59\xCA\x53\x69\xCA\x53\x70\xCA\x54\x41\xCA\x54\x44\xCA\x54\x47\xCA\x54\x51\xCA\x54\x53\xCA\x54\x58\xCA\x54\x5F\xCA\x55\x41\xCA\x55\x42\xCA\x55\x4A\xCA\x55\x56\xCA\x55\x59\xCA\x55\x69\xCA\x55\x70\xCA\x56\x43\xCA\x56\x46\xCA\x56\x49\xCA\x56\x62\xCA\x56\x64\xCA\x56\x66\xCA\x56\x69\xCA\x56\x71\xCA\x57\x49\xCA\x57\x4A\xCA\x57\x51\xCA\x5F\x45\xCA\x5F\x47\xCA\x5F\x49\xCA\x5F\x51\xCA\x5F\x55\xCA\x5F\x57\xCA\x5F\x59\xCA\x5F\x62\xCA\x5F\x68\xCA\x5F\x6A\xCA\x5F\x71\xCA\x62\x41\xCA\x62\x43\xCA\x62\x45\xCA\x62\x47\xCA\x62\x49\xCA\x62\x51\xCA\x63\x44\xCA\x63\x47\xCA\x63\x49\xCA\x63\x4A\xCA\x63\x57\xCA\x64\x57\xCA\x64\x64\xCA\x64\x66\xCA\x64\x6A\xCA\x64\x71\xCA\x65\x41\xCA\x65\x47\xCA\x65\x49\xCA\x65\x59\xCA\x65\x5F\xCA\x65\x62\xCA\x65\x64\xCA\x65\x65\xCA\x66\x49\xCA\x66\x51\xCA\x67\x47\xCA\x67\x4A\xCA\x68\x49\xCA\x72\x4A\xCA\x72\x54\xCB\x57\x69\xCB\x57\x71\xCB\x62\x71\xCB\x69\x49\xCB\x69\x51\xCB\x69\x53\xCB\x69\x55\xCB\x69\x57\xCB\x69\x59\xCB\x69\x62\xCB\x71\x44\xCB\x71\x46\xCB\x71\x49\xCB\x71\x71\xCB\x72\x47\xCB\x72\x49\xCB\x72\x51\xCB\x72\x53\xCB\x72\x55\xCB\x72\x62\xCB\x72\x64\xCB\x72\x67\xCB\x72\x6A\xCB\x72\x71\xCB\x72\x72\xCC\x49\x41\xCC\x49\x42\xCC\x49\x44\xCC\x49\x46\xCC\x49\x48\xCC\x49\x54\xCC\x49\x56\xCC\x49\x57\xCC\x49\x58\xCC\x49\x62\xCC\x49\x63\xCC\x49\x64\xCC\x49\x65\xCC\x49\x66\xCC\x49\x68\xCC\x49\x6A\xCC\x49\x71\xCC\x4A\x41\xCC\x4A\x5F\xCC\x4A\x65\xCC\x51\x46\xCC\x51\x48\xCC\x51\x5F\xCC\x51\x65\xCC\x51\x69\xCC\x51\x72\xCC\x52\x45\xCC\x52\x53\xCC\x52\x54\xCC\x52\x58\xCC\x52\x59\xCC\x52\x62\xCC\x52\x63\xCC\x52\x67\xCC\x53\x44\xCC\x53\x46\xCC\x53\x48\xCC\x53\x4A\xCC\x53\x52\xCC\x53\x54\xCC\x53\x56\xCC\x53\x58\xCC\x53\x5F\xCC\x53\x63\xCC\x53\x65\xCC\x54\x49\xCC\x54\x51\xCC\x54\x5F\xCC\x55\x41\xCC\x55\x66\xCC\x55\x68\xCC\x5!
6\x6A\xCC\x5F\x67\xCC\x5F\x69\xCC\x5F\x70\xCC\x5F\x72\xCC\x62\x42\xCC\x62\x44\xCC\x62\x46\xCC\x62\x48\xCC\x62\x4A\xCC\x62\x54\xCC\x62\x63\xCC\x62\x65\xCC\x62\x67\xCC\x62\x69\xCC\x62\x70\xCC\x62\x72\xCC\x63\x42\xCC\x63\x47\xCC\x63\x49\xCC\x63\x51\xCC\x63\x53\xCC\x63\x56\xCC\x63\x58\xCC\x63\x5F\xCC\x63\x63\xCC\x63\x65\xCC\x63\x67\xCC\x63\x69\xCC\x63\x70\xCC\x63\x72\xCC\x64\x42\xCC\x64\x44\xCC\x64\x46\xCC\x64\x48\xCC\x64\x4A\xCC\x64\x52\xCC\x64\x56\xCC\x64\x58\xCC\x64\x63\xCC\x65\x46\xCC\x65\x65\xCC\x65\x67\xCC\x68\x47\xCC\x68\x48\xCC\x68\x49\xCC\x68\x53\xCC\x69\x43\xCC\x69\x53\xCC\x69\x59\xCC\x69\x6A\xCC\x6A\x47\xCC\x6A\x51\xCC\x6A\x63\xCC\x6A\x68\xCC\x6A\x71\xCC\x70\x42\xCC\x70\x44\xCC\x70\x4A\xCC\x70\x52\xCC\x70\x58\xCC\x70\x5F\xCC\x72\x55\xCD\x57\x43\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x58\xCD\x57\x6A\xCD\x57\x70\xCD\x58\x41\xCD\x58\x42\xCD\x58\x43\xCD\x58\x45\xCD\x58\x47\xCD\x58\x49\xCD\x58\x64\xCD\x59\x43\xCD\x59\x63\xCD\x59\x65\xCD\x59\x67\xCD\x59\x69\xCE\x41\x49\xCE\x41\x51\xCE\x41\x53\xCE\x41\x55\xCE\x41\x57\xCE\x41\x62\xCE\x41\x64\xCE\x41\x66\xCE\x41\x68\xCE\x41\x70\xDD\x51\x55\x42\xDD\x72\x4A\x71\xDD\x72\x59\x67\xDD\x72\x59\x69\xDD\x72\x59\x70\xDD\x72\x5F\x45\xDD\x72\x66\x49\xDD\x72\x66\x6A\xDD\x72\x67\x69\xDD\x72\x68\x69\xDD\x72\x68\x72\xDD\x72\x69\x43\xDD\x72\x72\x52\xDF\x62\x49\x44\xDF\x62\x49\x47\xDF\x70\x43\x4A\xDF\x70\x49\x49\xDF\x70\x49\x4A\xDF\x70\x49\x51\xDF\x70\x52\x69\xDF\x70\x53\x67\xDF\x70\x53\x69\xDF\x70\x53\x70\xDF\x70\x56\x47\xDF\x71\x41\x43\xDF\x71\x41\x47\xDF\x71\x41\x51\xDF\x71\x41\x59\xDF\x71\x41\x64\xDF\x71\x41\x68\xDF\x71\x41\x71\xDF\x71\x42\x43\xDF\x71\x42\x47\xDF\x71\x42\x51\xDF\x71\x42\x55\xDF\x71\x42\x59\xDF\x71\x42\x64\xDF\x71\x42\x68\xDF\x71\x42\x71\xDF\x71\x43\x43\xDF\x71\x43\x47\xDF\x71\x43\x59\xDF\x71\x44\x43\xDF\x71\x44\x51\xDF\x71\x44\x59\xDF\x71\x44\x68\xDF\x71\x45\x43\xDF\x71\x45\x59\xDF\x71\x45\x64\xDF\x71\x45\x68\xDF\x71\x46\x42\xDF\x71\x46\x44\xDF\x71\x46\x46\xDF\x71\x46\x48\xDF\x71\x46\x4A\xDF\x71\x46\x52"
-# define EXTRA_CLOSING_UTF8_BRACKETS "\x5D\x6E\xBB\xD0\x78\x69\x78\x52\xB7\x66\x48\xB9\x67\x69\xB9\x67\x70\xBD\x62\x6A\xCA\x41\x67\xCA\x41\x66\xCA\x41\x70\xCA\x41\x6A\xCA\x42\x59\xCA\x42\x5F\xCA\x42\x62\xCA\x42\x68\xCA\x42\x67\xCA\x43\x47\xCA\x43\x53\xCA\x44\x71\xCA\x45\x55\xCA\x53\x57\xCA\x53\x68\xCA\x53\x6A\xCA\x53\x71\xCA\x54\x43\xCA\x54\x45\xCA\x54\x4A\xCA\x54\x52\xCA\x54\x57\xCA\x54\x59\xCA\x54\x6A\xCA\x54\x70\xCA\x55\x48\xCA\x55\x54\xCA\x55\x57\xCA\x55\x68\xCA\x55\x6A\xCA\x56\x41\xCA\x56\x45\xCA\x56\x47\xCC\x67\x57\xCC\x67\x58\xCA\x56\x65\xCA\x56\x68\xCA\x56\x70\xCA\x57\x52\xCA\x57\x53\xCA\x57\x54\xCA\x5F\x46\xCA\x5F\x48\xCA\x5F\x4A\xCA\x5F\x52\xCA\x5F\x56\xCA\x5F\x58\xCA\x5F\x5F\xCA\x5F\x63\xCA\x5F\x69\xCA\x5F\x70\xCA\x5F\x72\xCA\x62\x42\xCA\x62\x44\xCA\x62\x46\xCA\x62\x48\xCA\x62\x4A\xCA\x62\x52\xCA\x63\x43\xCC\x64\x71\xCC\x65\x45\xCC\x65\x44\xCA\x63\x58\xCA\x64\x58\xCA\x64\x65\xCA\x64\x67\xCA\x64\x70\xCA\x64\x72\xCA\x65\x42\xCA\x65\x48\xCA\x65\x4A\xCA\x65\x68\xCA\x65\x69\xCA\x65\x6A\xCA\x65\x70\xCA\x65\x71\xCA\x66\x4A\xCA\x66\x52\xCA\x67\x52\xCA\x67\x51\xCA\x68\x48\xCA\x72\x51\xCA\x72\x55\xCB\x57\x68\xCB\x57\x6A\xCB\x62\x72\xCB\x69\x4A\xCB\x69\x52\xCB\x69\x54\xCB\x69\x56\xCB\x69\x58\xCB\x69\x5F\xCB\x69\x63\xCB\x71\x45\xCB\x71\x47\xCB\x71\x4A\xCB\x71\x70\xCB\x72\x48\xCB\x72\x4A\xCB\x72\x52\xCB\x72\x54\xCB\x72\x56\xCC\x67\x59\xCB\x72\x63\xCB\x72\x66\xCB\x72\x69\xCB\x72\x70\xCC\x67\x5F\xCC\x67\x62\xCC\x67\x63\xCC\x49\x43\xCC\x67\x64\xCC\x49\x47\xCC\x49\x53\xCC\x49\x55\xCC\x67\x65\xCC\x67\x66\xCC\x67\x67\xCC\x67\x68\xCC\x67\x69\xCC\x67\x6A\xCC\x67\x70\xCC\x49\x67\xCC\x49\x69\xCC\x49\x70\xCC\x49\x72\xCC\x67\x72\xCC\x4A\x64\xCC\x51\x47\xCC\x67\x71\xCC\x51\x59\xCC\x51\x64\xCC\x51\x68\xCC\x51\x71\xCC\x52\x43\xCC\x52\x51\xCC\x52\x52\xCC\x68\x41\xCC\x68\x42\xCC\x68\x52\xCC\x68\x43\xCC\x52\x69\xCC\x53\x45\xCC\x53\x47\xCC\x53\x49\xCC\x53\x51\xCC\x53\x53\xCC\x53\x57\xCC\x53\x55\xCC\x53\x59\xCC\x53\x62\xCC\x53\x64\xCC\x53\x66\xCC\x54\x4A\xCC\x54\x52\xCC\x54\x62\xCC\x55\x42\xCC\x55\x67\xCC\x55\x69\xCC\x5!
6\x70\xCC\x5F\x68\xCC\x5F\x6A\xCC\x5F\x71\xCC\x62\x41\xCC\x62\x43\xCC\x62\x45\xCC\x62\x47\xCC\x62\x49\xCC\x62\x51\xCC\x62\x55\xCC\x62\x64\xCC\x62\x66\xCC\x62\x68\xCC\x62\x6A\xCC\x62\x71\xCC\x63\x41\xCC\x63\x43\xCC\x63\x48\xCC\x63\x4A\xCC\x63\x52\xCC\x63\x54\xCC\x63\x57\xCC\x63\x59\xCC\x63\x62\xCC\x63\x64\xCC\x63\x66\xCC\x63\x68\xCC\x63\x6A\xCC\x63\x71\xCC\x64\x41\xCC\x64\x43\xCC\x64\x45\xCC\x64\x47\xCC\x64\x49\xCC\x64\x51\xCC\x64\x53\xCC\x64\x57\xCC\x64\x59\xCC\x64\x64\xCA\x63\x52\xCC\x65\x66\xCC\x65\x68\xCC\x68\x46\xCC\x68\x4A\xCC\x68\x51\xCC\x52\x5F\xCC\x69\x41\xCC\x69\x51\xCC\x69\x57\xCC\x69\x68\xCC\x6A\x45\xCC\x6A\x49\xCC\x66\x46\xCC\x6A\x66\xCC\x6A\x6A\xCC\x70\x41\xCC\x70\x43\xCC\x70\x49\xCC\x70\x51\xCC\x70\x57\xCC\x70\x59\xCC\x72\x53\xCD\x57\x44\xCD\x57\x43\xCD\x57\x46\xCD\x57\x45\xCD\x57\x51\xCD\x57\x4A\xCD\x57\x54\xCD\x57\x53\xCD\x57\x57\xCD\x57\x70\xCD\x57\x6A\xCD\x58\x42\xCD\x58\x41\xCD\x58\x44\xCD\x58\x46\xCD\x58\x48\xCD\x58\x4A\xCD\x58\x65\xCA\x41\x71\xCD\x59\x64\xCD\x59\x66\xCD\x59\x68\xCD\x59\x6A\xCE\x41\x4A\xCE\x41\x52\xCE\x41\x54\xCE\x41\x56\xCE\x41\x58\xCE\x41\x63\xCE\x41\x65\xCE\x41\x67\xCE\x41\x69\xCE\x41\x71\xDD\x51\x55\x43\xDD\x72\x4A\x72\xDD\x72\x59\x68\xDD\x72\x59\x6A\xDD\x72\x59\x71\xDD\x72\x5F\x46\xDD\x72\x66\x4A\xDD\x72\x66\x71\xDD\x72\x67\x70\xDD\x72\x68\x70\xDD\x72\x69\x41\xDD\x72\x69\x44\xDD\x72\x72\x4A\xDF\x62\x49\x43\xDF\x62\x49\x48\xDF\x70\x43\x49\xDF\x70\x52\x49\xDF\x70\x52\x4A\xDF\x70\x52\x51\xDF\x70\x52\x70\xDF\x70\x53\x66\xDF\x70\x53\x68\xDF\x70\x53\x6A\xDF\x70\x56\x48\xDF\x71\x41\x41\xDF\x71\x41\x45\xDF\x71\x41\x49\xDF\x71\x41\x57\xDF\x71\x41\x62\xDF\x71\x41\x66\xDF\x71\x41\x6A\xDF\x71\x42\x41\xDF\x71\x42\x45\xDF\x71\x42\x49\xDF\x71\x42\x53\xDF\x71\x42\x57\xDF\x71\x42\x62\xDF\x71\x42\x66\xDF\x71\x42\x6A\xDF\x71\x43\x41\xDF\x71\x43\x45\xDF\x71\x43\x57\xDF\x71\x44\x41\xDF\x71\x44\x49\xDF\x71\x44\x57\xDF\x71\x44\x66\xDF\x71\x45\x41\xDF\x71\x45\x57\xDF\x71\x45\x62\xDF\x71\x45\x66\xDF\x71\x46\x41\xDF\x71\x46\x43\xDF\x71\x46\x47\xDF\x71\x46\x45\xDF\x71\x46\x49\xDF\x71\x46\x51"
+# define EXTRA_OPENING_UTF8_BRACKETS "\x4D\x4C\xBA\xC0\x78\x52\x78\x69\xB9\x67\x68\xB9\x67\x6A\xBD\x62\x69\xCA\x41\x66\xCA\x41\x67\xCA\x41\x6A\xCA\x41\x70\xCA\x42\x63\xCA\x42\x64\xCA\x42\x65\xCA\x42\x67\xCA\x42\x68\xCA\x43\x46\xCA\x43\x54\xCA\x44\x70\xCA\x45\x54\xCA\x53\x59\xCA\x53\x69\xCA\x53\x70\xCA\x54\x41\xCA\x54\x44\xCA\x54\x47\xCA\x54\x51\xCA\x54\x53\xCA\x54\x58\xCA\x54\x5F\xCA\x55\x41\xCA\x55\x42\xCA\x55\x4A\xCA\x55\x56\xCA\x55\x59\xCA\x55\x69\xCA\x55\x70\xCA\x56\x43\xCA\x56\x46\xCA\x56\x49\xCA\x56\x62\xCA\x56\x64\xCA\x56\x66\xCA\x56\x69\xCA\x56\x71\xCA\x57\x49\xCA\x57\x4A\xCA\x57\x51\xCA\x5F\x45\xCA\x5F\x47\xCA\x5F\x49\xCA\x5F\x51\xCA\x5F\x55\xCA\x5F\x57\xCA\x5F\x59\xCA\x5F\x62\xCA\x5F\x68\xCA\x5F\x6A\xCA\x5F\x71\xCA\x62\x41\xCA\x62\x43\xCA\x62\x45\xCA\x62\x47\xCA\x62\x49\xCA\x62\x51\xCA\x63\x44\xCA\x63\x47\xCA\x63\x49\xCA\x63\x4A\xCA\x63\x57\xCA\x64\x57\xCA\x64\x64\xCA\x64\x66\xCA\x64\x6A\xCA\x64\x71\xCA\x65\x41\xCA\x65\x47\xCA\x65\x49\xCA\x65\x59\xCA\x65\x5F\xCA\x65\x62\xCA\x65\x64\xCA\x65\x65\xCA\x66\x49\xCA\x66\x51\xCA\x67\x47\xCA\x67\x4A\xCA\x68\x49\xCA\x72\x4A\xCA\x72\x54\xCB\x57\x69\xCB\x57\x71\xCB\x62\x71\xCB\x69\x49\xCB\x69\x51\xCB\x69\x53\xCB\x69\x55\xCB\x69\x57\xCB\x69\x59\xCB\x69\x62\xCB\x71\x44\xCB\x71\x46\xCB\x71\x49\xCB\x71\x71\xCB\x72\x47\xCB\x72\x49\xCB\x72\x51\xCB\x72\x53\xCB\x72\x55\xCB\x72\x62\xCB\x72\x64\xCB\x72\x67\xCB\x72\x6A\xCB\x72\x71\xCB\x72\x72\xCC\x49\x41\xCC\x49\x42\xCC\x49\x44\xCC\x49\x46\xCC\x49\x48\xCC\x49\x54\xCC\x49\x56\xCC\x49\x57\xCC\x49\x58\xCC\x49\x62\xCC\x49\x63\xCC\x49\x64\xCC\x49\x65\xCC\x49\x66\xCC\x49\x68\xCC\x49\x6A\xCC\x49\x71\xCC\x4A\x41\xCC\x4A\x5F\xCC\x4A\x65\xCC\x51\x46\xCC\x51\x48\xCC\x51\x5F\xCC\x51\x65\xCC\x51\x69\xCC\x51\x72\xCC\x52\x45\xCC\x52\x53\xCC\x52\x54\xCC\x52\x58\xCC\x52\x59\xCC\x52\x62\xCC\x52\x63\xCC\x52\x67\xCC\x53\x44\xCC\x53\x46\xCC\x53\x48\xCC\x53\x4A\xCC\x53\x52\xCC\x53\x54\xCC\x53\x56\xCC\x53\x58\xCC\x53\x5F\xCC\x53\x63\xCC\x53\x65\xCC\x54\x49\xCC\x54\x51\xCC\x54\x5F\xCC\x55\x41\xCC\x55\x66\xCC\x55\x68\xCC\x56\x6A\xCC\x5!
F\x67\xCC\x5F\x69\xCC\x5F\x70\xCC\x5F\x72\xCC\x62\x42\xCC\x62\x44\xCC\x62\x46\xCC\x62\x48\xCC\x62\x4A\xCC\x62\x54\xCC\x62\x63\xCC\x62\x65\xCC\x62\x67\xCC\x62\x69\xCC\x62\x70\xCC\x62\x72\xCC\x63\x42\xCC\x63\x47\xCC\x63\x49\xCC\x63\x51\xCC\x63\x53\xCC\x63\x56\xCC\x63\x58\xCC\x63\x5F\xCC\x63\x63\xCC\x63\x65\xCC\x63\x67\xCC\x63\x69\xCC\x63\x70\xCC\x63\x72\xCC\x64\x42\xCC\x64\x44\xCC\x64\x46\xCC\x64\x48\xCC\x64\x4A\xCC\x64\x52\xCC\x64\x56\xCC\x64\x58\xCC\x64\x63\xCC\x65\x46\xCC\x65\x65\xCC\x65\x67\xCC\x68\x47\xCC\x68\x48\xCC\x68\x49\xCC\x68\x53\xCC\x69\x43\xCC\x69\x53\xCC\x69\x59\xCC\x69\x6A\xCC\x6A\x47\xCC\x6A\x51\xCC\x6A\x63\xCC\x6A\x68\xCC\x6A\x71\xCC\x70\x42\xCC\x70\x44\xCC\x70\x4A\xCC\x70\x52\xCC\x70\x58\xCC\x70\x5F\xCC\x72\x55\xCD\x57\x43\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x58\xCD\x57\x6A\xCD\x57\x70\xCD\x58\x41\xCD\x58\x42\xCD\x58\x43\xCD\x58\x45\xCD\x58\x47\xCD\x58\x49\xCD\x58\x64\xCD\x59\x43\xCD\x59\x63\xCD\x59\x65\xCD\x59\x67\xCD\x59\x69\xCE\x41\x49\xCE\x41\x51\xCE\x41\x53\xCE\x41\x55\xCE\x41\x57\xCE\x41\x62\xCE\x41\x64\xCE\x41\x66\xCE\x41\x68\xCE\x41\x70\xDD\x51\x55\x42\xDD\x72\x4A\x71\xDD\x72\x59\x67\xDD\x72\x59\x69\xDD\x72\x59\x70\xDD\x72\x5F\x45\xDD\x72\x66\x49\xDD\x72\x66\x6A\xDD\x72\x67\x69\xDD\x72\x68\x69\xDD\x72\x68\x72\xDD\x72\x69\x43\xDD\x72\x72\x52\xDF\x62\x49\x44\xDF\x62\x49\x47\xDF\x70\x43\x4A\xDF\x70\x49\x49\xDF\x70\x49\x4A\xDF\x70\x49\x51\xDF\x70\x52\x69\xDF\x70\x53\x67\xDF\x70\x53\x69\xDF\x70\x53\x70\xDF\x70\x56\x47\xDF\x71\x41\x43\xDF\x71\x41\x47\xDF\x71\x41\x51\xDF\x71\x41\x59\xDF\x71\x41\x64\xDF\x71\x41\x68\xDF\x71\x41\x71\xDF\x71\x42\x43\xDF\x71\x42\x47\xDF\x71\x42\x51\xDF\x71\x42\x55\xDF\x71\x42\x59\xDF\x71\x42\x64\xDF\x71\x42\x68\xDF\x71\x42\x71\xDF\x71\x43\x43\xDF\x71\x43\x47\xDF\x71\x43\x59\xDF\x71\x44\x43\xDF\x71\x44\x51\xDF\x71\x44\x59\xDF\x71\x44\x68\xDF\x71\x45\x43\xDF\x71\x45\x59\xDF\x71\x45\x64\xDF\x71\x45\x68\xDF\x71\x46\x42\xDF\x71\x46\x44\xDF\x71\x46\x46\xDF\x71\x46\x48\xDF\x71\x46\x4A\xDF\x71\x46\x52"
+# define EXTRA_CLOSING_UTF8_BRACKETS "\x5D\x6E\xBB\xD0\x78\x69\x78\x52\xB9\x67\x69\xB9\x67\x70\xBD\x62\x6A\xCA\x41\x67\xCA\x41\x66\xCA\x41\x70\xCA\x41\x6A\xCA\x42\x59\xCA\x42\x5F\xCA\x42\x62\xCA\x42\x68\xCA\x42\x67\xCA\x43\x47\xCA\x43\x53\xCA\x44\x71\xCA\x45\x55\xCA\x53\x57\xCA\x53\x68\xCA\x53\x6A\xCA\x53\x71\xCA\x54\x43\xCA\x54\x45\xCA\x54\x4A\xCA\x54\x52\xCA\x54\x57\xCA\x54\x59\xCA\x54\x6A\xCA\x54\x70\xCA\x55\x48\xCA\x55\x54\xCA\x55\x57\xCA\x55\x68\xCA\x55\x6A\xCA\x56\x41\xCA\x56\x45\xCA\x56\x47\xCC\x67\x57\xCC\x67\x58\xCA\x56\x65\xCA\x56\x68\xCA\x56\x70\xCA\x57\x52\xCA\x57\x53\xCA\x57\x54\xCA\x5F\x46\xCA\x5F\x48\xCA\x5F\x4A\xCA\x5F\x52\xCA\x5F\x56\xCA\x5F\x58\xCA\x5F\x5F\xCA\x5F\x63\xCA\x5F\x69\xCA\x5F\x70\xCA\x5F\x72\xCA\x62\x42\xCA\x62\x44\xCA\x62\x46\xCA\x62\x48\xCA\x62\x4A\xCA\x62\x52\xCA\x63\x43\xCC\x64\x71\xCC\x65\x45\xCC\x65\x44\xCA\x63\x58\xCA\x64\x58\xCA\x64\x65\xCA\x64\x67\xCA\x64\x70\xCA\x64\x72\xCA\x65\x42\xCA\x65\x48\xCA\x65\x4A\xCA\x65\x68\xCA\x65\x69\xCA\x65\x6A\xCA\x65\x70\xCA\x65\x71\xCA\x66\x4A\xCA\x66\x52\xCA\x67\x52\xCA\x67\x51\xCA\x68\x48\xCA\x72\x51\xCA\x72\x55\xCB\x57\x68\xCB\x57\x6A\xCB\x62\x72\xCB\x69\x4A\xCB\x69\x52\xCB\x69\x54\xCB\x69\x56\xCB\x69\x58\xCB\x69\x5F\xCB\x69\x63\xCB\x71\x45\xCB\x71\x47\xCB\x71\x4A\xCB\x71\x70\xCB\x72\x48\xCB\x72\x4A\xCB\x72\x52\xCB\x72\x54\xCB\x72\x56\xCC\x67\x59\xCB\x72\x63\xCB\x72\x66\xCB\x72\x69\xCB\x72\x70\xCC\x67\x5F\xCC\x67\x62\xCC\x67\x63\xCC\x49\x43\xCC\x67\x64\xCC\x49\x47\xCC\x49\x53\xCC\x49\x55\xCC\x67\x65\xCC\x67\x66\xCC\x67\x67\xCC\x67\x68\xCC\x67\x69\xCC\x67\x6A\xCC\x67\x70\xCC\x49\x67\xCC\x49\x69\xCC\x49\x70\xCC\x49\x72\xCC\x67\x72\xCC\x4A\x64\xCC\x51\x47\xCC\x67\x71\xCC\x51\x59\xCC\x51\x64\xCC\x51\x68\xCC\x51\x71\xCC\x52\x43\xCC\x52\x51\xCC\x52\x52\xCC\x68\x41\xCC\x68\x42\xCC\x68\x52\xCC\x68\x43\xCC\x52\x69\xCC\x53\x45\xCC\x53\x47\xCC\x53\x49\xCC\x53\x51\xCC\x53\x53\xCC\x53\x57\xCC\x53\x55\xCC\x53\x59\xCC\x53\x62\xCC\x53\x64\xCC\x53\x66\xCC\x54\x4A\xCC\x54\x52\xCC\x54\x62\xCC\x55\x42\xCC\x55\x67\xCC\x55\x69\xCC\x56\x70\xCC\x5!
F\x68\xCC\x5F\x6A\xCC\x5F\x71\xCC\x62\x41\xCC\x62\x43\xCC\x62\x45\xCC\x62\x47\xCC\x62\x49\xCC\x62\x51\xCC\x62\x55\xCC\x62\x64\xCC\x62\x66\xCC\x62\x68\xCC\x62\x6A\xCC\x62\x71\xCC\x63\x41\xCC\x63\x43\xCC\x63\x48\xCC\x63\x4A\xCC\x63\x52\xCC\x63\x54\xCC\x63\x57\xCC\x63\x59\xCC\x63\x62\xCC\x63\x64\xCC\x63\x66\xCC\x63\x68\xCC\x63\x6A\xCC\x63\x71\xCC\x64\x41\xCC\x64\x43\xCC\x64\x45\xCC\x64\x47\xCC\x64\x49\xCC\x64\x51\xCC\x64\x53\xCC\x64\x57\xCC\x64\x59\xCC\x64\x64\xCA\x63\x52\xCC\x65\x66\xCC\x65\x68\xCC\x68\x46\xCC\x68\x4A\xCC\x68\x51\xCC\x52\x5F\xCC\x69\x41\xCC\x69\x51\xCC\x69\x57\xCC\x69\x68\xCC\x6A\x45\xCC\x6A\x49\xCC\x66\x46\xCC\x6A\x66\xCC\x6A\x6A\xCC\x70\x41\xCC\x70\x43\xCC\x70\x49\xCC\x70\x51\xCC\x70\x57\xCC\x70\x59\xCC\x72\x53\xCD\x57\x44\xCD\x57\x43\xCD\x57\x46\xCD\x57\x45\xCD\x57\x51\xCD\x57\x4A\xCD\x57\x54\xCD\x57\x53\xCD\x57\x57\xCD\x57\x70\xCD\x57\x6A\xCD\x58\x42\xCD\x58\x41\xCD\x58\x44\xCD\x58\x46\xCD\x58\x48\xCD\x58\x4A\xCD\x58\x65\xCA\x41\x71\xCD\x59\x64\xCD\x59\x66\xCD\x59\x68\xCD\x59\x6A\xCE\x41\x4A\xCE\x41\x52\xCE\x41\x54\xCE\x41\x56\xCE\x41\x58\xCE\x41\x63\xCE\x41\x65\xCE\x41\x67\xCE\x41\x69\xCE\x41\x71\xDD\x51\x55\x43\xDD\x72\x4A\x72\xDD\x72\x59\x68\xDD\x72\x59\x6A\xDD\x72\x59\x71\xDD\x72\x5F\x46\xDD\x72\x66\x4A\xDD\x72\x66\x71\xDD\x72\x67\x70\xDD\x72\x68\x70\xDD\x72\x69\x41\xDD\x72\x69\x44\xDD\x72\x72\x4A\xDF\x62\x49\x43\xDF\x62\x49\x48\xDF\x70\x43\x49\xDF\x70\x52\x49\xDF\x70\x52\x4A\xDF\x70\x52\x51\xDF\x70\x52\x70\xDF\x70\x53\x66\xDF\x70\x53\x68\xDF\x70\x53\x6A\xDF\x70\x56\x48\xDF\x71\x41\x41\xDF\x71\x41\x45\xDF\x71\x41\x49\xDF\x71\x41\x57\xDF\x71\x41\x62\xDF\x71\x41\x66\xDF\x71\x41\x6A\xDF\x71\x42\x41\xDF\x71\x42\x45\xDF\x71\x42\x49\xDF\x71\x42\x53\xDF\x71\x42\x57\xDF\x71\x42\x62\xDF\x71\x42\x66\xDF\x71\x42\x6A\xDF\x71\x43\x41\xDF\x71\x43\x45\xDF\x71\x43\x57\xDF\x71\x44\x41\xDF\x71\x44\x49\xDF\x71\x44\x57\xDF\x71\x44\x66\xDF\x71\x45\x41\xDF\x71\x45\x57\xDF\x71\x45\x62\xDF\x71\x45\x66\xDF\x71\x46\x41\xDF\x71\x46\x43\xDF\x71\x46\x47\xDF\x71\x46\x45\xDF\x71\x46\x49\xDF\x71\x46\x51"
/* And not in UTF-8 */
# define EXTRA_OPENING_NON_UTF8_BRACKETS "\x4D\x4C\xBA\xC0\x8A\x8B"
@@ -221,7 +235,7 @@
# define EXTRA_CLOSING_NON_UTF8_BRACKETS "\x5D\x6E\xBB\xD0\x8B\x8A"
/* And what's deprecated */
-# define DEPRECATED_OPENING_UTF8_BRACKETS "\x78\x52\x78\x69\x78\x69\xB7\x66\x47\xB7\x66\x48\xB9\x67\x68\xB9\x67\x69\xB9\x67\x6A\xB9\x67\x70\xBD\x62\x69\xBD\x62\x6A\xCA\x41\x66\xCA\x41\x67\xCA\x41\x67\xCA\x41\x6A\xCA\x41\x70\xCA\x41\x70\xCA\x42\x63\xCA\x42\x59\xCA\x42\x64\xCA\x42\x5F\xCA\x42\x65\xCA\x42\x62\xCA\x42\x67\xCA\x42\x68\xCA\x42\x68\xCA\x43\x46\xCA\x43\x47\xCA\x43\x54\xCA\x43\x53\xCA\x44\x70\xCA\x44\x71\xCA\x45\x54\xCA\x45\x55\xCA\x53\x59\xCA\x53\x57\xCA\x53\x69\xCA\x53\x68\xCA\x53\x70\xCA\x53\x6A\xCA\x54\x41\xCA\x53\x71\xCA\x54\x44\xCA\x54\x43\xCA\x54\x47\xCA\x54\x45\xCA\x54\x51\xCA\x54\x4A\xCA\x54\x53\xCA\x54\x52\xCA\x54\x58\xCA\x54\x57\xCA\x54\x5F\xCA\x54\x59\xCA\x55\x41\xCA\x54\x6A\xCA\x55\x42\xCA\x54\x70\xCA\x55\x4A\xCA\x55\x48\xCA\x55\x56\xCA\x55\x54\xCA\x55\x59\xCA\x55\x57\xCA\x55\x69\xCA\x55\x68\xCA\x55\x70\xCA\x55\x6A\xCA\x56\x43\xCA\x56\x41\xCA\x56\x46\xCA\x56\x45\xCA\x56\x49\xCA\x56\x47\xCA\x56\x62\xCC\x67\x57\xCA\x56\x64\xCC\x67\x58\xCA\x56\x66\xCA\x56\x65\xCA\x56\x69\xCA\x56\x68\xCA\x56\x71\xCA\x56\x70\xCA\x57\x49\xCA\x57\x52\xCA\x57\x4A\xCA\x57\x53\xCA\x57\x51\xCA\x57\x54\xCA\x5F\x45\xCA\x5F\x46\xCA\x5F\x47\xCA\x5F\x48\xCA\x5F\x49\xCA\x5F\x4A\xCA\x5F\x51\xCA\x5F\x52\xCA\x5F\x55\xCA\x5F\x56\xCA\x5F\x57\xCA\x5F\x58\xCA\x5F\x59\xCA\x5F\x5F\xCA\x5F\x62\xCA\x5F\x63\xCA\x5F\x68\xCA\x5F\x69\xCA\x5F\x6A\xCA\x5F\x70\xCA\x5F\x71\xCA\x5F\x72\xCA\x62\x41\xCA\x62\x42\xCA\x62\x43\xCA\x62\x44\xCA\x62\x45\xCA\x62\x46\xCA\x62\x47\xCA\x62\x48\xCA\x62\x49\xCA\x62\x4A\xCA\x62\x51\xCA\x62\x52\xCA\x63\x44\xCA\x63\x43\xCA\x63\x47\xCC\x64\x71\xCA\x63\x49\xCC\x65\x45\xCA\x63\x4A\xCC\x65\x44\xCA\x63\x57\xCA\x63\x58\xCA\x64\x57\xCA\x64\x58\xCA\x64\x64\xCA\x64\x65\xCA\x64\x66\xCA\x64\x67\xCA\x64\x6A\xCA\x64\x70\xCA\x64\x71\xCA\x64\x72\xCA\x65\x41\xCA\x65\x42\xCA\x65\x47\xCA\x65\x48\xCA\x65\x49\xCA\x65\x4A\xCA\x65\x59\xCA\x65\x68\xCA\x65\x5F\xCA\x65\x69\xCA\x65\x62\xCA\x65\x6A\xCA\x65\x64\xCA\x65\x70\xCA\x65\x65\xCA\x65\x71\xCA\x66\x49\xCA\x66\x4A\xCA\x66\x51\xCA\x66\x52\xCA\x67\x47\xCA\x67\x52\xCA\x67\x!
4A\xCA\x67\x51\xCA\x68\x49\xCA\x68\x48\xCA\x72\x4A\xCA\x72\x51\xCA\x72\x54\xCA\x72\x55\xCB\x57\x69\xCB\x57\x68\xCB\x57\x71\xCB\x57\x6A\xCB\x62\x71\xCB\x62\x72\xCB\x69\x49\xCB\x69\x4A\xCB\x69\x51\xCB\x69\x52\xCB\x69\x53\xCB\x69\x54\xCB\x69\x55\xCB\x69\x56\xCB\x69\x57\xCB\x69\x58\xCB\x69\x59\xCB\x69\x5F\xCB\x69\x62\xCB\x69\x63\xCB\x71\x44\xCB\x71\x45\xCB\x71\x46\xCB\x71\x47\xCB\x71\x49\xCB\x71\x4A\xCB\x71\x71\xCB\x71\x70\xCB\x72\x47\xCB\x72\x48\xCB\x72\x49\xCB\x72\x4A\xCB\x72\x51\xCB\x72\x52\xCB\x72\x53\xCB\x72\x54\xCB\x72\x55\xCB\x72\x56\xCB\x72\x62\xCC\x67\x59\xCB\x72\x64\xCB\x72\x63\xCB\x72\x67\xCB\x72\x66\xCB\x72\x6A\xCB\x72\x69\xCB\x72\x71\xCB\x72\x70\xCB\x72\x72\xCC\x67\x5F\xCC\x49\x41\xCC\x67\x62\xCC\x49\x42\xCC\x67\x63\xCC\x49\x44\xCC\x49\x43\xCC\x49\x46\xCC\x67\x64\xCC\x49\x48\xCC\x49\x47\xCC\x49\x54\xCC\x49\x53\xCC\x49\x56\xCC\x49\x55\xCC\x49\x57\xCC\x67\x65\xCC\x49\x58\xCC\x67\x66\xCC\x49\x62\xCC\x67\x67\xCC\x49\x63\xCC\x67\x68\xCC\x49\x64\xCC\x67\x69\xCC\x49\x65\xCC\x67\x6A\xCC\x49\x66\xCC\x67\x70\xCC\x49\x68\xCC\x49\x67\xCC\x49\x6A\xCC\x49\x69\xCC\x49\x71\xCC\x49\x70\xCC\x4A\x41\xCC\x49\x72\xCC\x4A\x5F\xCC\x67\x72\xCC\x4A\x65\xCC\x4A\x64\xCC\x51\x46\xCC\x51\x47\xCC\x51\x48\xCC\x67\x71\xCC\x51\x5F\xCC\x51\x59\xCC\x51\x65\xCC\x51\x64\xCC\x51\x69\xCC\x51\x68\xCC\x51\x72\xCC\x51\x71\xCC\x52\x45\xCC\x52\x43\xCC\x52\x53\xCC\x52\x51\xCC\x52\x54\xCC\x52\x52\xCC\x52\x58\xCC\x68\x41\xCC\x52\x59\xCC\x68\x42\xCC\x52\x62\xCC\x68\x52\xCC\x52\x63\xCC\x68\x43\xCC\x52\x67\xCC\x52\x69\xCC\x53\x44\xCC\x53\x45\xCC\x53\x46\xCC\x53\x47\xCC\x53\x48\xCC\x53\x49\xCC\x53\x4A\xCC\x53\x51\xCC\x53\x52\xCC\x53\x53\xCC\x53\x54\xCC\x53\x57\xCC\x53\x56\xCC\x53\x55\xCC\x53\x58\xCC\x53\x59\xCC\x53\x5F\xCC\x53\x62\xCC\x53\x63\xCC\x53\x64\xCC\x53\x65\xCC\x53\x66\xCC\x54\x49\xCC\x54\x4A\xCC\x54\x51\xCC\x54\x52\xCC\x54\x5F\xCC\x54\x62\xCC\x55\x41\xCC\x55\x42\xCC\x55\x66\xCC\x55\x67\xCC\x55\x68\xCC\x55\x69\xCC\x56\x6A\xCC\x56\x70\xCC\x5F\x67\xCC\x5F\x68\xCC\x5F\x69\xCC\x5F\x6A\xCC\x5F\x70\xCC\x5F\x71\xCC\x5F\x72\xCC\x62\x41\xCC\x62\x42\xCC\!
x62\x43\xCC\x62\x44\xCC\x62\x45\xCC\x62\x46\xCC\x62\x47\xCC\x62\x48\xCC\x62\x49\xCC\x62\x4A\xCC\x62\x51\xCC\x62\x54\xCC\x62\x55\xCC\x62\x63\xCC\x62\x64\xCC\x62\x65\xCC\x62\x66\xCC\x62\x67\xCC\x62\x68\xCC\x62\x69\xCC\x62\x6A\xCC\x62\x70\xCC\x62\x71\xCC\x62\x72\xCC\x63\x41\xCC\x63\x42\xCC\x63\x43\xCC\x63\x47\xCC\x63\x48\xCC\x63\x49\xCC\x63\x4A\xCC\x63\x51\xCC\x63\x52\xCC\x63\x53\xCC\x63\x54\xCC\x63\x56\xCC\x63\x57\xCC\x63\x58\xCC\x63\x59\xCC\x63\x5F\xCC\x63\x62\xCC\x63\x63\xCC\x63\x64\xCC\x63\x65\xCC\x63\x66\xCC\x63\x67\xCC\x63\x68\xCC\x63\x69\xCC\x63\x6A\xCC\x63\x70\xCC\x63\x71\xCC\x63\x72\xCC\x64\x41\xCC\x64\x42\xCC\x64\x43\xCC\x64\x44\xCC\x64\x45\xCC\x64\x46\xCC\x64\x47\xCC\x64\x48\xCC\x64\x49\xCC\x64\x4A\xCC\x64\x51\xCC\x64\x52\xCC\x64\x53\xCC\x64\x56\xCC\x64\x57\xCC\x64\x58\xCC\x64\x59\xCC\x64\x63\xCC\x64\x64\xCC\x65\x46\xCA\x63\x52\xCC\x65\x65\xCC\x65\x66\xCC\x65\x67\xCC\x65\x68\xCC\x68\x47\xCC\x68\x46\xCC\x68\x48\xCC\x68\x4A\xCC\x68\x49\xCC\x68\x51\xCC\x68\x53\xCC\x52\x5F\xCC\x69\x43\xCC\x69\x41\xCC\x69\x53\xCC\x69\x51\xCC\x69\x59\xCC\x69\x57\xCC\x69\x6A\xCC\x69\x68\xCC\x6A\x47\xCC\x6A\x45\xCC\x6A\x51\xCC\x6A\x49\xCC\x6A\x63\xCC\x66\x46\xCC\x6A\x68\xCC\x6A\x66\xCC\x6A\x71\xCC\x6A\x6A\xCC\x70\x42\xCC\x70\x41\xCC\x70\x44\xCC\x70\x43\xCC\x70\x4A\xCC\x70\x49\xCC\x70\x52\xCC\x70\x51\xCC\x70\x58\xCC\x70\x57\xCC\x70\x5F\xCC\x70\x59\xCC\x72\x55\xCC\x72\x53\xCD\x57\x43\xCD\x57\x44\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x54\xCD\x57\x58\xCD\x57\x57\xCD\x57\x6A\xCD\x57\x70\xCD\x57\x70\xCD\x58\x41\xCD\x58\x42\xCD\x58\x42\xCD\x58\x43\xCD\x58\x44\xCD\x58\x45\xCD\x58\x46\xCD\x58\x47\xCD\x58\x48\xCD\x58\x49\xCD\x58\x4A\xCD\x58\x64\xCD\x58\x65\xCD\x59\x43\xCA\x41\x71\xCD\x59\x63\xCD\x59\x64\xCD\x59\x65\xCD\x59\x66\xCD\x59\x67\xCD\x59\x68\xCD\x59\x69\xCD\x59\x6A\xCE\x41\x49\xCE\x41\x4A\xCE\x41\x51\xCE\x41\x52\xCE\x41\x53\xCE\x41\x54\xCE\x41\x55\xCE\x41\x56\xCE\x41\x57\xCE\x41\x58\xCE\x41\x62\xCE\x41\x63\xCE\x41\x64\xCE\x41\x65\xCE\x41\x66\xCE\x41\x67!
\xCE\x41\x68\xCE\x41\x69\xCE\x41\x70\xCE\x41\x71\xDD\x51\x55\x42\xDD\x51\x55\x43\xDD\x72\x4A\x71\xDD\x72\x4A\x72\xDD\x72\x59\x67\xDD\x72\x59\x68\xDD\x72\x59\x69\xDD\x72\x59\x6A\xDD\x72\x59\x70\xDD\x72\x59\x71\xDD\x72\x5F\x45\xDD\x72\x5F\x46\xDD\x72\x66\x49\xDD\x72\x66\x4A\xDD\x72\x66\x6A\xDD\x72\x66\x71\xDD\x72\x67\x69\xDD\x72\x67\x70\xDD\x72\x68\x69\xDD\x72\x68\x70\xDD\x72\x68\x72\xDD\x72\x69\x41\xDD\x72\x69\x43\xDD\x72\x69\x44\xDD\x72\x72\x52\xDD\x72\x72\x4A\xDF\x62\x49\x44\xDF\x62\x49\x43\xDF\x62\x49\x47\xDF\x62\x49\x48\xDF\x70\x43\x4A\xDF\x70\x43\x49\xDF\x70\x49\x49\xDF\x70\x52\x49\xDF\x70\x49\x4A\xDF\x70\x52\x4A\xDF\x70\x49\x51\xDF\x70\x52\x51\xDF\x70\x52\x69\xDF\x70\x52\x70\xDF\x70\x53\x67\xDF\x70\x53\x66\xDF\x70\x53\x69\xDF\x70\x53\x68\xDF\x70\x53\x70\xDF\x70\x53\x6A\xDF\x70\x56\x47\xDF\x70\x56\x48\xDF\x71\x41\x43\xDF\x71\x41\x41\xDF\x71\x41\x47\xDF\x71\x41\x45\xDF\x71\x41\x51\xDF\x71\x41\x49\xDF\x71\x41\x59\xDF\x71\x41\x57\xDF\x71\x41\x64\xDF\x71\x41\x62\xDF\x71\x41\x68\xDF\x71\x41\x66\xDF\x71\x41\x71\xDF\x71\x41\x6A\xDF\x71\x42\x43\xDF\x71\x42\x41\xDF\x71\x42\x47\xDF\x71\x42\x45\xDF\x71\x42\x51\xDF\x71\x42\x49\xDF\x71\x42\x55\xDF\x71\x42\x53\xDF\x71\x42\x59\xDF\x71\x42\x57\xDF\x71\x42\x64\xDF\x71\x42\x62\xDF\x71\x42\x68\xDF\x71\x42\x66\xDF\x71\x42\x71\xDF\x71\x42\x6A\xDF\x71\x43\x43\xDF\x71\x43\x41\xDF\x71\x43\x47\xDF\x71\x43\x45\xDF\x71\x43\x59\xDF\x71\x43\x57\xDF\x71\x44\x43\xDF\x71\x44\x41\xDF\x71\x44\x51\xDF\x71\x44\x49\xDF\x71\x44\x59\xDF\x71\x44\x57\xDF\x71\x44\x68\xDF\x71\x44\x66\xDF\x71\x45\x43\xDF\x71\x45\x41\xDF\x71\x45\x59\xDF\x71\x45\x57\xDF\x71\x45\x64\xDF\x71\x45\x62\xDF\x71\x45\x68\xDF\x71\x45\x66\xDF\x71\x46\x42\xDF\x71\x46\x41\xDF\x71\x46\x44\xDF\x71\x46\x43\xDF\x71\x46\x46\xDF\x71\x46\x47\xDF\x71\x46\x48\xDF\x71\x46\x45\xDF\x71\x46\x4A\xDF\x71\x46\x49\xDF\x71\x46\x52\xDF\x71\x46\x51"
+# define DEPRECATED_OPENING_UTF8_BRACKETS "\x78\x52\x78\x69\x78\x69\xB9\x67\x68\xB9\x67\x69\xB9\x67\x6A\xB9\x67\x70\xBD\x62\x69\xBD\x62\x6A\xCA\x41\x66\xCA\x41\x67\xCA\x41\x67\xCA\x41\x6A\xCA\x41\x70\xCA\x41\x70\xCA\x42\x63\xCA\x42\x59\xCA\x42\x64\xCA\x42\x5F\xCA\x42\x65\xCA\x42\x62\xCA\x42\x67\xCA\x42\x68\xCA\x42\x68\xCA\x43\x46\xCA\x43\x47\xCA\x43\x54\xCA\x43\x53\xCA\x44\x70\xCA\x44\x71\xCA\x45\x54\xCA\x45\x55\xCA\x53\x59\xCA\x53\x57\xCA\x53\x69\xCA\x53\x68\xCA\x53\x70\xCA\x53\x6A\xCA\x54\x41\xCA\x53\x71\xCA\x54\x44\xCA\x54\x43\xCA\x54\x47\xCA\x54\x45\xCA\x54\x51\xCA\x54\x4A\xCA\x54\x53\xCA\x54\x52\xCA\x54\x58\xCA\x54\x57\xCA\x54\x5F\xCA\x54\x59\xCA\x55\x41\xCA\x54\x6A\xCA\x55\x42\xCA\x54\x70\xCA\x55\x4A\xCA\x55\x48\xCA\x55\x56\xCA\x55\x54\xCA\x55\x59\xCA\x55\x57\xCA\x55\x69\xCA\x55\x68\xCA\x55\x70\xCA\x55\x6A\xCA\x56\x43\xCA\x56\x41\xCA\x56\x46\xCA\x56\x45\xCA\x56\x49\xCA\x56\x47\xCA\x56\x62\xCC\x67\x57\xCA\x56\x64\xCC\x67\x58\xCA\x56\x66\xCA\x56\x65\xCA\x56\x69\xCA\x56\x68\xCA\x56\x71\xCA\x56\x70\xCA\x57\x49\xCA\x57\x52\xCA\x57\x4A\xCA\x57\x53\xCA\x57\x51\xCA\x57\x54\xCA\x5F\x45\xCA\x5F\x46\xCA\x5F\x47\xCA\x5F\x48\xCA\x5F\x49\xCA\x5F\x4A\xCA\x5F\x51\xCA\x5F\x52\xCA\x5F\x55\xCA\x5F\x56\xCA\x5F\x57\xCA\x5F\x58\xCA\x5F\x59\xCA\x5F\x5F\xCA\x5F\x62\xCA\x5F\x63\xCA\x5F\x68\xCA\x5F\x69\xCA\x5F\x6A\xCA\x5F\x70\xCA\x5F\x71\xCA\x5F\x72\xCA\x62\x41\xCA\x62\x42\xCA\x62\x43\xCA\x62\x44\xCA\x62\x45\xCA\x62\x46\xCA\x62\x47\xCA\x62\x48\xCA\x62\x49\xCA\x62\x4A\xCA\x62\x51\xCA\x62\x52\xCA\x63\x44\xCA\x63\x43\xCA\x63\x47\xCC\x64\x71\xCA\x63\x49\xCC\x65\x45\xCA\x63\x4A\xCC\x65\x44\xCA\x63\x57\xCA\x63\x58\xCA\x64\x57\xCA\x64\x58\xCA\x64\x64\xCA\x64\x65\xCA\x64\x66\xCA\x64\x67\xCA\x64\x6A\xCA\x64\x70\xCA\x64\x71\xCA\x64\x72\xCA\x65\x41\xCA\x65\x42\xCA\x65\x47\xCA\x65\x48\xCA\x65\x49\xCA\x65\x4A\xCA\x65\x59\xCA\x65\x68\xCA\x65\x5F\xCA\x65\x69\xCA\x65\x62\xCA\x65\x6A\xCA\x65\x64\xCA\x65\x70\xCA\x65\x65\xCA\x65\x71\xCA\x66\x49\xCA\x66\x4A\xCA\x66\x51\xCA\x66\x52\xCA\x67\x47\xCA\x67\x52\xCA\x67\x4A\xCA\x67\x51\xCA\x68\x!
49\xCA\x68\x48\xCA\x72\x4A\xCA\x72\x51\xCA\x72\x54\xCA\x72\x55\xCB\x57\x69\xCB\x57\x68\xCB\x57\x71\xCB\x57\x6A\xCB\x62\x71\xCB\x62\x72\xCB\x69\x49\xCB\x69\x4A\xCB\x69\x51\xCB\x69\x52\xCB\x69\x53\xCB\x69\x54\xCB\x69\x55\xCB\x69\x56\xCB\x69\x57\xCB\x69\x58\xCB\x69\x59\xCB\x69\x5F\xCB\x69\x62\xCB\x69\x63\xCB\x71\x44\xCB\x71\x45\xCB\x71\x46\xCB\x71\x47\xCB\x71\x49\xCB\x71\x4A\xCB\x71\x71\xCB\x71\x70\xCB\x72\x47\xCB\x72\x48\xCB\x72\x49\xCB\x72\x4A\xCB\x72\x51\xCB\x72\x52\xCB\x72\x53\xCB\x72\x54\xCB\x72\x55\xCB\x72\x56\xCB\x72\x62\xCC\x67\x59\xCB\x72\x64\xCB\x72\x63\xCB\x72\x67\xCB\x72\x66\xCB\x72\x6A\xCB\x72\x69\xCB\x72\x71\xCB\x72\x70\xCB\x72\x72\xCC\x67\x5F\xCC\x49\x41\xCC\x67\x62\xCC\x49\x42\xCC\x67\x63\xCC\x49\x44\xCC\x49\x43\xCC\x49\x46\xCC\x67\x64\xCC\x49\x48\xCC\x49\x47\xCC\x49\x54\xCC\x49\x53\xCC\x49\x56\xCC\x49\x55\xCC\x49\x57\xCC\x67\x65\xCC\x49\x58\xCC\x67\x66\xCC\x49\x62\xCC\x67\x67\xCC\x49\x63\xCC\x67\x68\xCC\x49\x64\xCC\x67\x69\xCC\x49\x65\xCC\x67\x6A\xCC\x49\x66\xCC\x67\x70\xCC\x49\x68\xCC\x49\x67\xCC\x49\x6A\xCC\x49\x69\xCC\x49\x71\xCC\x49\x70\xCC\x4A\x41\xCC\x49\x72\xCC\x4A\x5F\xCC\x67\x72\xCC\x4A\x65\xCC\x4A\x64\xCC\x51\x46\xCC\x51\x47\xCC\x51\x48\xCC\x67\x71\xCC\x51\x5F\xCC\x51\x59\xCC\x51\x65\xCC\x51\x64\xCC\x51\x69\xCC\x51\x68\xCC\x51\x72\xCC\x51\x71\xCC\x52\x45\xCC\x52\x43\xCC\x52\x53\xCC\x52\x51\xCC\x52\x54\xCC\x52\x52\xCC\x52\x58\xCC\x68\x41\xCC\x52\x59\xCC\x68\x42\xCC\x52\x62\xCC\x68\x52\xCC\x52\x63\xCC\x68\x43\xCC\x52\x67\xCC\x52\x69\xCC\x53\x44\xCC\x53\x45\xCC\x53\x46\xCC\x53\x47\xCC\x53\x48\xCC\x53\x49\xCC\x53\x4A\xCC\x53\x51\xCC\x53\x52\xCC\x53\x53\xCC\x53\x54\xCC\x53\x57\xCC\x53\x56\xCC\x53\x55\xCC\x53\x58\xCC\x53\x59\xCC\x53\x5F\xCC\x53\x62\xCC\x53\x63\xCC\x53\x64\xCC\x53\x65\xCC\x53\x66\xCC\x54\x49\xCC\x54\x4A\xCC\x54\x51\xCC\x54\x52\xCC\x54\x5F\xCC\x54\x62\xCC\x55\x41\xCC\x55\x42\xCC\x55\x66\xCC\x55\x67\xCC\x55\x68\xCC\x55\x69\xCC\x56\x6A\xCC\x56\x70\xCC\x5F\x67\xCC\x5F\x68\xCC\x5F\x69\xCC\x5F\x6A\xCC\x5F\x70\xCC\x5F\x71\xCC\x5F\x72\xCC\x62\x41\xCC\x62\x42\xCC\x62\x43\xCC\x62\x44\xCC\!
x62\x45\xCC\x62\x46\xCC\x62\x47\xCC\x62\x48\xCC\x62\x49\xCC\x62\x4A\xCC\x62\x51\xCC\x62\x54\xCC\x62\x55\xCC\x62\x63\xCC\x62\x64\xCC\x62\x65\xCC\x62\x66\xCC\x62\x67\xCC\x62\x68\xCC\x62\x69\xCC\x62\x6A\xCC\x62\x70\xCC\x62\x71\xCC\x62\x72\xCC\x63\x41\xCC\x63\x42\xCC\x63\x43\xCC\x63\x47\xCC\x63\x48\xCC\x63\x49\xCC\x63\x4A\xCC\x63\x51\xCC\x63\x52\xCC\x63\x53\xCC\x63\x54\xCC\x63\x56\xCC\x63\x57\xCC\x63\x58\xCC\x63\x59\xCC\x63\x5F\xCC\x63\x62\xCC\x63\x63\xCC\x63\x64\xCC\x63\x65\xCC\x63\x66\xCC\x63\x67\xCC\x63\x68\xCC\x63\x69\xCC\x63\x6A\xCC\x63\x70\xCC\x63\x71\xCC\x63\x72\xCC\x64\x41\xCC\x64\x42\xCC\x64\x43\xCC\x64\x44\xCC\x64\x45\xCC\x64\x46\xCC\x64\x47\xCC\x64\x48\xCC\x64\x49\xCC\x64\x4A\xCC\x64\x51\xCC\x64\x52\xCC\x64\x53\xCC\x64\x56\xCC\x64\x57\xCC\x64\x58\xCC\x64\x59\xCC\x64\x63\xCC\x64\x64\xCC\x65\x46\xCA\x63\x52\xCC\x65\x65\xCC\x65\x66\xCC\x65\x67\xCC\x65\x68\xCC\x68\x47\xCC\x68\x46\xCC\x68\x48\xCC\x68\x4A\xCC\x68\x49\xCC\x68\x51\xCC\x68\x53\xCC\x52\x5F\xCC\x69\x43\xCC\x69\x41\xCC\x69\x53\xCC\x69\x51\xCC\x69\x59\xCC\x69\x57\xCC\x69\x6A\xCC\x69\x68\xCC\x6A\x47\xCC\x6A\x45\xCC\x6A\x51\xCC\x6A\x49\xCC\x6A\x63\xCC\x66\x46\xCC\x6A\x68\xCC\x6A\x66\xCC\x6A\x71\xCC\x6A\x6A\xCC\x70\x42\xCC\x70\x41\xCC\x70\x44\xCC\x70\x43\xCC\x70\x4A\xCC\x70\x49\xCC\x70\x52\xCC\x70\x51\xCC\x70\x58\xCC\x70\x57\xCC\x70\x5F\xCC\x70\x59\xCC\x72\x55\xCC\x72\x53\xCD\x57\x43\xCD\x57\x44\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x54\xCD\x57\x58\xCD\x57\x57\xCD\x57\x6A\xCD\x57\x70\xCD\x57\x70\xCD\x58\x41\xCD\x58\x42\xCD\x58\x42\xCD\x58\x43\xCD\x58\x44\xCD\x58\x45\xCD\x58\x46\xCD\x58\x47\xCD\x58\x48\xCD\x58\x49\xCD\x58\x4A\xCD\x58\x64\xCD\x58\x65\xCD\x59\x43\xCA\x41\x71\xCD\x59\x63\xCD\x59\x64\xCD\x59\x65\xCD\x59\x66\xCD\x59\x67\xCD\x59\x68\xCD\x59\x69\xCD\x59\x6A\xCE\x41\x49\xCE\x41\x4A\xCE\x41\x51\xCE\x41\x52\xCE\x41\x53\xCE\x41\x54\xCE\x41\x55\xCE\x41\x56\xCE\x41\x57\xCE\x41\x58\xCE\x41\x62\xCE\x41\x63\xCE\x41\x64\xCE\x41\x65\xCE\x41\x66\xCE\x41\x67\xCE\x41\x68\xCE\x41\x69!
\xCE\x41\x70\xCE\x41\x71\xDD\x51\x55\x42\xDD\x51\x55\x43\xDD\x72\x4A\x71\xDD\x72\x4A\x72\xDD\x72\x59\x67\xDD\x72\x59\x68\xDD\x72\x59\x69\xDD\x72\x59\x6A\xDD\x72\x59\x70\xDD\x72\x59\x71\xDD\x72\x5F\x45\xDD\x72\x5F\x46\xDD\x72\x66\x49\xDD\x72\x66\x4A\xDD\x72\x66\x6A\xDD\x72\x66\x71\xDD\x72\x67\x69\xDD\x72\x67\x70\xDD\x72\x68\x69\xDD\x72\x68\x70\xDD\x72\x68\x72\xDD\x72\x69\x41\xDD\x72\x69\x43\xDD\x72\x69\x44\xDD\x72\x72\x52\xDD\x72\x72\x4A\xDF\x62\x49\x44\xDF\x62\x49\x43\xDF\x62\x49\x47\xDF\x62\x49\x48\xDF\x70\x43\x4A\xDF\x70\x43\x49\xDF\x70\x49\x49\xDF\x70\x52\x49\xDF\x70\x49\x4A\xDF\x70\x52\x4A\xDF\x70\x49\x51\xDF\x70\x52\x51\xDF\x70\x52\x69\xDF\x70\x52\x70\xDF\x70\x53\x67\xDF\x70\x53\x66\xDF\x70\x53\x69\xDF\x70\x53\x68\xDF\x70\x53\x70\xDF\x70\x53\x6A\xDF\x70\x56\x47\xDF\x70\x56\x48\xDF\x71\x41\x43\xDF\x71\x41\x41\xDF\x71\x41\x47\xDF\x71\x41\x45\xDF\x71\x41\x51\xDF\x71\x41\x49\xDF\x71\x41\x59\xDF\x71\x41\x57\xDF\x71\x41\x64\xDF\x71\x41\x62\xDF\x71\x41\x68\xDF\x71\x41\x66\xDF\x71\x41\x71\xDF\x71\x41\x6A\xDF\x71\x42\x43\xDF\x71\x42\x41\xDF\x71\x42\x47\xDF\x71\x42\x45\xDF\x71\x42\x51\xDF\x71\x42\x49\xDF\x71\x42\x55\xDF\x71\x42\x53\xDF\x71\x42\x59\xDF\x71\x42\x57\xDF\x71\x42\x64\xDF\x71\x42\x62\xDF\x71\x42\x68\xDF\x71\x42\x66\xDF\x71\x42\x71\xDF\x71\x42\x6A\xDF\x71\x43\x43\xDF\x71\x43\x41\xDF\x71\x43\x47\xDF\x71\x43\x45\xDF\x71\x43\x59\xDF\x71\x43\x57\xDF\x71\x44\x43\xDF\x71\x44\x41\xDF\x71\x44\x51\xDF\x71\x44\x49\xDF\x71\x44\x59\xDF\x71\x44\x57\xDF\x71\x44\x68\xDF\x71\x44\x66\xDF\x71\x45\x43\xDF\x71\x45\x41\xDF\x71\x45\x59\xDF\x71\x45\x57\xDF\x71\x45\x64\xDF\x71\x45\x62\xDF\x71\x45\x68\xDF\x71\x45\x66\xDF\x71\x46\x42\xDF\x71\x46\x41\xDF\x71\x46\x44\xDF\x71\x46\x43\xDF\x71\x46\x46\xDF\x71\x46\x47\xDF\x71\x46\x48\xDF\x71\x46\x45\xDF\x71\x46\x4A\xDF\x71\x46\x49\xDF\x71\x46\x52\xDF\x71\x46\x51"
# define DEPRECATED_OPENING_NON_UTF8_BRACKETS "\x8A\x8B"
# endif
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/unixish.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/unixish.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/unixish.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -15,8 +15,6 @@
* here.
*/
-#ifndef PERL_MICRO
-
/* HAS_IOCTL:
* This symbol, if defined, indicates that the ioctl() routine is
* available to set I/O characteristics
@@ -46,8 +44,6 @@
#define HAS_KILL
#define HAS_WAIT
-#endif /* !PERL_MICRO */
-
/* USEMYBINMODE
* This symbol, if defined, indicates that the program should
* use the routine my_binmode(FILE *fp, char iotype) to insure
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/utf8.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/utf8.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/utf8.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -374,7 +374,8 @@
/* For use in UTF8_IS_CONTINUATION(). This turns out to be 0xC0 in UTF-8,
* E0 in UTF-EBCDIC */
-#define UTF_IS_CONTINUATION_MASK ((U8) (0xFF << UTF_ACCUMULATION_SHIFT))
+#define UTF_IS_CONTINUATION_MASK \
+ ((U8) ((0xFF << UTF_ACCUMULATION_SHIFT) & 0xFF))
/* This defines the bits that are to be in the continuation bytes of a
* multi-byte UTF-8 encoded character that mark it is a continuation byte.
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/warnings.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/warnings.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/warnings.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -102,63 +102,69 @@
/* Warnings Categories added in Perl 5.021 */
-#define WARN_EXPERIMENTAL__CONST_ATTR 56
-#define WARN_EXPERIMENTAL__RE_STRICT 57
-#define WARN_EXPERIMENTAL__REFALIASING 58
-#define WARN_LOCALE 59
-#define WARN_MISSING 60
-#define WARN_REDUNDANT 61
+#define WARN_EXPERIMENTAL__RE_STRICT 56
+#define WARN_EXPERIMENTAL__REFALIASING 57
+#define WARN_LOCALE 58
+#define WARN_MISSING 59
+#define WARN_REDUNDANT 60
/* Warnings Categories added in Perl 5.025 */
-#define WARN_EXPERIMENTAL__DECLARED_REFS 62
+#define WARN_EXPERIMENTAL__DECLARED_REFS 61
/* Warnings Categories added in Perl 5.025011 */
-#define WARN_DEPRECATED__DOT_IN_INC 63
+#define WARN_DEPRECATED__DOT_IN_INC 62
/* Warnings Categories added in Perl 5.027 */
-#define WARN_SHADOW 64
+#define WARN_SHADOW 63
/* Warnings Categories added in Perl 5.029 */
-#define WARN_EXPERIMENTAL__PRIVATE_USE 65
-#define WARN_EXPERIMENTAL__UNIPROP_WILDCARDS 66
-#define WARN_EXPERIMENTAL__VLB 67
+#define WARN_EXPERIMENTAL__PRIVATE_USE 64
+#define WARN_EXPERIMENTAL__UNIPROP_WILDCARDS 65
+#define WARN_EXPERIMENTAL__VLB 66
/* Warnings Categories added in Perl 5.033 */
-#define WARN_EXPERIMENTAL__TRY 68
+#define WARN_EXPERIMENTAL__TRY 67
/* Warnings Categories added in Perl 5.035 */
-#define WARN_EXPERIMENTAL__ARGS_ARRAY_WITH_SIGNATURES 69
-#define WARN_EXPERIMENTAL__BUILTIN 70
-#define WARN_EXPERIMENTAL__DEFER 71
-#define WARN_EXPERIMENTAL__EXTRA_PAIRED_DELIMITERS 72
-#define WARN_EXPERIMENTAL__FOR_LIST 73
-#define WARN_SCALAR 74
+#define WARN_EXPERIMENTAL__ARGS_ARRAY_WITH_SIGNATURES 68
+#define WARN_EXPERIMENTAL__BUILTIN 69
+#define WARN_EXPERIMENTAL__DEFER 70
+#define WARN_EXPERIMENTAL__EXTRA_PAIRED_DELIMITERS 71
+#define WARN_SCALAR 72
/* Warnings Categories added in Perl 5.035009 */
-#define WARN_DEPRECATED__VERSION_DOWNGRADE 75
+#define WARN_DEPRECATED__VERSION_DOWNGRADE 73
/* Warnings Categories added in Perl 5.03501 */
-#define WARN_DEPRECATED__DELIMITER_WILL_BE_PAIRED 76
+#define WARN_DEPRECATED__DELIMITER_WILL_BE_PAIRED 74
/* Warnings Categories added in Perl 5.037 */
-#define WARN_EXPERIMENTAL__CLASS 77
+#define WARN_EXPERIMENTAL__CLASS 75
/* Warnings Categories added in Perl 5.037009 */
-#define WARN_DEPRECATED__APOSTROPHE_AS_PACKAGE_SEPARATOR 78
+#define WARN_DEPRECATED__APOSTROPHE_AS_PACKAGE_SEPARATOR 76
/* Warnings Categories added in Perl 5.03701 */
-#define WARN_DEPRECATED__SMARTMATCH 79
+#define WARN_DEPRECATED__SMARTMATCH 77
+
+/* Warnings Categories added in Perl 5.039002 */
+
+#define WARN_DEPRECATED__MISSING_IMPORT_CALLED_WITH_ARGS 78
+
+/* Warnings Categories added in Perl 5.039008 */
+
+#define WARN_DEPRECATED__SUBSEQUENT_USE_VERSION 79
#define WARNsize 20
#define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125"
#define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
@@ -329,7 +335,6 @@
=for apidoc Amnh||WARN_EXPERIMENTAL
=for apidoc Amnh||WARN_EXPERIMENTAL__REGEX_SETS
=for apidoc Amnh||WARN_SYSCALLS
-=for apidoc Amnh||WARN_EXPERIMENTAL__CONST_ATTR
=for apidoc Amnh||WARN_EXPERIMENTAL__RE_STRICT
=for apidoc Amnh||WARN_EXPERIMENTAL__REFALIASING
=for apidoc Amnh||WARN_LOCALE
@@ -346,7 +351,6 @@
=for apidoc Amnh||WARN_EXPERIMENTAL__BUILTIN
=for apidoc Amnh||WARN_EXPERIMENTAL__DEFER
=for apidoc Amnh||WARN_EXPERIMENTAL__EXTRA_PAIRED_DELIMITERS
-=for apidoc Amnh||WARN_EXPERIMENTAL__FOR_LIST
=for apidoc Amnh||WARN_SCALAR
=for apidoc Amnh||WARN_DEPRECATED__VERSION_DOWNGRADE
=for apidoc Amnh||WARN_DEPRECATED__DELIMITER_WILL_BE_PAIRED
@@ -353,6 +357,8 @@
=for apidoc Amnh||WARN_EXPERIMENTAL__CLASS
=for apidoc Amnh||WARN_DEPRECATED__APOSTROPHE_AS_PACKAGE_SEPARATOR
=for apidoc Amnh||WARN_DEPRECATED__SMARTMATCH
+=for apidoc Amnh||WARN_DEPRECATED__MISSING_IMPORT_CALLED_WITH_ARGS
+=for apidoc Amnh||WARN_DEPRECATED__SUBSEQUENT_USE_VERSION
=cut
*/
Modified: trunk/Master/tlpkg/tlperl/lib/CORE/win32.h
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CORE/win32.h 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CORE/win32.h 2025-02-24 14:12:21 UTC (rev 74256)
@@ -259,8 +259,10 @@
extern const __declspec(selectany) union PerlNan __PL_nan_u = { 0x7FF8000000000000UI64 };
#define NV_NAN ((NV)__PL_nan_u.__d)
+#endif /* ifdef _MSC_VER */
+
/* The CRT was rewritten in VS2015. */
-#if _MSC_VER >= 1900
+#ifdef _UCRT
/* No longer declared in stdio.h */
EXTERN_C char *gets(char* buffer);
@@ -274,7 +276,7 @@
{
FILE _public_file;
char* _ptr;
- };
+ } u;
char* _base;
int _cnt;
@@ -289,18 +291,14 @@
#define PERLIO_FILE_flag_RD 0x0001 /* _IOREAD */
#define PERLIO_FILE_flag_WR 0x0002 /* _IOWRITE */
#define PERLIO_FILE_flag_RW 0x0004 /* _IOUPDATE */
-#define PERLIO_FILE_ptr(f) (((__crt_stdio_stream_data*)(f))->_ptr)
+#define PERLIO_FILE_ptr(f) (((__crt_stdio_stream_data*)(f))->u._ptr)
#define PERLIO_FILE_base(f) (((__crt_stdio_stream_data*)(f))->_base)
#define PERLIO_FILE_cnt(f) (((__crt_stdio_stream_data*)(f))->_cnt)
#define PERLIO_FILE_flag(f) ((int)(((__crt_stdio_stream_data*)(f))->_flags))
#define PERLIO_FILE_file(f) (*(int*)(&((__crt_stdio_stream_data*)(f))->_file))
-#endif
+#else /* ifdef _UCRT */
-#endif /* _MSC_VER */
-
-#if (!defined(_MSC_VER)) || (defined(_MSC_VER) && _MSC_VER < 1900)
-
/* Note: PERLIO_FILE_ptr/base/cnt are not actually used for GCC or <VS2015
* since FILE_ptr/base/cnt do the same thing anyway but it doesn't hurt to
* define them all here for completeness. */
Added: trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Requirements/Range.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Requirements/Range.pm (rev 0)
+++ trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Requirements/Range.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -0,0 +1,776 @@
+use v5.10;
+use strict;
+use warnings;
+package CPAN::Meta::Requirements::Range;
+# ABSTRACT: a set of version requirements for a CPAN dist
+
+our $VERSION = '2.143';
+
+use Carp ();
+
+#pod =head1 SYNOPSIS
+#pod
+#pod use CPAN::Meta::Requirements::Range;
+#pod
+#pod my $range = CPAN::Meta::Requirements::Range->with_minimum(1);
+#pod
+#pod $range = $range->with_maximum('v2.2');
+#pod
+#pod my $stringified = $range->as_string;
+#pod
+#pod =head1 DESCRIPTION
+#pod
+#pod A CPAN::Meta::Requirements::Range object models a set of version constraints like
+#pod those specified in the F<META.yml> or F<META.json> files in CPAN distributions,
+#pod and as defined by L<CPAN::Meta::Spec>;
+#pod It can be built up by adding more and more constraints, and it will reduce them
+#pod to the simplest representation.
+#pod
+#pod Logically impossible constraints will be identified immediately by thrown
+#pod exceptions.
+#pod
+#pod =cut
+
+use Carp ();
+
+package
+ CPAN::Meta::Requirements::Range::_Base;
+
+# To help ExtUtils::MakeMaker bootstrap CPAN::Meta::Requirements on perls
+# before 5.10, we fall back to the EUMM bundled compatibility version module if
+# that's the only thing available. This shouldn't ever happen in a normal CPAN
+# install of CPAN::Meta::Requirements, as version.pm will be picked up from
+# prereqs and be available at runtime.
+
+BEGIN {
+ eval "use version ()"; ## no critic
+ if ( my $err = $@ ) {
+ eval "use ExtUtils::MakeMaker::version" or die $err; ## no critic
+ }
+}
+
+# from version::vpp
+sub _find_magic_vstring {
+ my $value = shift;
+ my $tvalue = '';
+ require B;
+ my $sv = B::svref_2object(\$value);
+ my $magic = ref($sv) eq 'B::PVMG' ? $sv->MAGIC : undef;
+ while ( $magic ) {
+ if ( $magic->TYPE eq 'V' ) {
+ $tvalue = $magic->PTR;
+ $tvalue =~ s/^v?(.+)$/v$1/;
+ last;
+ }
+ else {
+ $magic = $magic->MOREMAGIC;
+ }
+ }
+ return $tvalue;
+}
+
+# Perl 5.10.0 didn't have "is_qv" in version.pm
+*_is_qv = version->can('is_qv') ? sub { $_[0]->is_qv } : sub { exists $_[0]->{qv} };
+
+# construct once, reuse many times
+my $V0 = version->new(0);
+
+# safe if given an unblessed reference
+sub _isa_version {
+ UNIVERSAL::isa( $_[0], 'UNIVERSAL' ) && $_[0]->isa('version')
+}
+
+sub _version_object {
+ my ($self, $version, $module, $bad_version_hook) = @_;
+
+ my ($vobj, $err);
+
+ if (not defined $version or (!ref($version) && $version eq '0')) {
+ return $V0;
+ }
+ elsif ( ref($version) eq 'version' || ( ref($version) && _isa_version($version) ) ) {
+ $vobj = $version;
+ }
+ else {
+ # hack around version::vpp not handling <3 character vstring literals
+ if ( $INC{'version/vpp.pm'} || $INC{'ExtUtils/MakeMaker/version/vpp.pm'} ) {
+ my $magic = _find_magic_vstring( $version );
+ $version = $magic if length $magic;
+ }
+ # pad to 3 characters if before 5.8.1 and appears to be a v-string
+ if ( $] < 5.008001 && $version !~ /\A[0-9]/ && substr($version,0,1) ne 'v' && length($version) < 3 ) {
+ $version .= "\0" x (3 - length($version));
+ }
+ eval {
+ local $SIG{__WARN__} = sub { die "Invalid version: $_[0]" };
+ # avoid specific segfault on some older version.pm versions
+ die "Invalid version: $version" if $version eq 'version';
+ $vobj = version->new($version);
+ };
+ if ( my $err = $@ ) {
+ $vobj = eval { $bad_version_hook->($version, $module) }
+ if ref $bad_version_hook eq 'CODE';
+ unless (eval { $vobj->isa("version") }) {
+ $err =~ s{ at .* line \d+.*$}{};
+ die "Can't convert '$version': $err";
+ }
+ }
+ }
+
+ # ensure no leading '.'
+ if ( $vobj =~ m{\A\.} ) {
+ $vobj = version->new("0$vobj");
+ }
+
+ # ensure normal v-string form
+ if ( _is_qv($vobj) ) {
+ $vobj = version->new($vobj->normal);
+ }
+
+ return $vobj;
+}
+
+#pod =method with_string_requirement
+#pod
+#pod $req->with_string_requirement('>= 1.208, <= 2.206');
+#pod $req->with_string_requirement(v1.208);
+#pod
+#pod This method parses the passed in string and adds the appropriate requirement.
+#pod A version can be a Perl "v-string". It understands version ranges as described
+#pod in the L<CPAN::Meta::Spec/Version Ranges>. For example:
+#pod
+#pod =over 4
+#pod
+#pod =item 1.3
+#pod
+#pod =item >= 1.3
+#pod
+#pod =item <= 1.3
+#pod
+#pod =item == 1.3
+#pod
+#pod =item != 1.3
+#pod
+#pod =item > 1.3
+#pod
+#pod =item < 1.3
+#pod
+#pod =item >= 1.3, != 1.5, <= 2.0
+#pod
+#pod A version number without an operator is equivalent to specifying a minimum
+#pod (C<E<gt>=>). Extra whitespace is allowed.
+#pod
+#pod =back
+#pod
+#pod =cut
+
+my %methods_for_op = (
+ '==' => [ qw(with_exact_version) ],
+ '!=' => [ qw(with_exclusion) ],
+ '>=' => [ qw(with_minimum) ],
+ '<=' => [ qw(with_maximum) ],
+ '>' => [ qw(with_minimum with_exclusion) ],
+ '<' => [ qw(with_maximum with_exclusion) ],
+);
+
+sub with_string_requirement {
+ my ($self, $req, $module, $bad_version_hook) = @_;
+ $module //= 'module';
+
+ unless ( defined $req && length $req ) {
+ $req = 0;
+ Carp::carp("Undefined requirement for $module treated as '0'");
+ }
+
+ my $magic = _find_magic_vstring( $req );
+ if (length $magic) {
+ return $self->with_minimum($magic, $module, $bad_version_hook);
+ }
+
+ my @parts = split qr{\s*,\s*}, $req;
+
+ for my $part (@parts) {
+ my ($op, $ver) = $part =~ m{\A\s*(==|>=|>|<=|<|!=)\s*(.*)\z};
+
+ if (! defined $op) {
+ $self = $self->with_minimum($part, $module, $bad_version_hook);
+ } else {
+ Carp::croak("illegal requirement string: $req")
+ unless my $methods = $methods_for_op{ $op };
+
+ $self = $self->$_($ver, $module, $bad_version_hook) for @$methods;
+ }
+ }
+
+ return $self;
+}
+
+#pod =method with_range
+#pod
+#pod $range->with_range($other_range)
+#pod
+#pod This creates a new range object that is a merge two others.
+#pod
+#pod =cut
+
+sub with_range {
+ my ($self, $other, $module, $bad_version_hook) = @_;
+ for my $modifier($other->_as_modifiers) {
+ my ($method, $arg) = @$modifier;
+ $self = $self->$method($arg, $module, $bad_version_hook);
+ }
+ return $self;
+}
+
+package CPAN::Meta::Requirements::Range;
+
+our @ISA = 'CPAN::Meta::Requirements::Range::_Base';
+
+sub _clone {
+ return (bless { } => $_[0]) unless ref $_[0];
+
+ my ($s) = @_;
+ my %guts = (
+ (exists $s->{minimum} ? (minimum => version->new($s->{minimum})) : ()),
+ (exists $s->{maximum} ? (maximum => version->new($s->{maximum})) : ()),
+
+ (exists $s->{exclusions}
+ ? (exclusions => [ map { version->new($_) } @{ $s->{exclusions} } ])
+ : ()),
+ );
+
+ bless \%guts => ref($s);
+}
+
+#pod =method with_exact_version
+#pod
+#pod $range->with_exact_version( $version );
+#pod
+#pod This sets the version required to I<exactly> the given
+#pod version. No other version would be considered acceptable.
+#pod
+#pod This method returns the version range object.
+#pod
+#pod =cut
+
+sub with_exact_version {
+ my ($self, $version, $module, $bad_version_hook) = @_;
+ $module //= 'module';
+ $self = $self->_clone;
+ $version = $self->_version_object($version, $module, $bad_version_hook);
+
+ unless ($self->accepts($version)) {
+ $self->_reject_requirements(
+ $module,
+ "exact specification $version outside of range " . $self->as_string
+ );
+ }
+
+ return CPAN::Meta::Requirements::Range::_Exact->_new($version);
+}
+
+sub _simplify {
+ my ($self, $module) = @_;
+
+ if (defined $self->{minimum} and defined $self->{maximum}) {
+ if ($self->{minimum} == $self->{maximum}) {
+ if (grep { $_ == $self->{minimum} } @{ $self->{exclusions} || [] }) {
+ $self->_reject_requirements(
+ $module,
+ "minimum and maximum are both $self->{minimum}, which is excluded",
+ );
+ }
+
+ return CPAN::Meta::Requirements::Range::_Exact->_new($self->{minimum});
+ }
+
+ if ($self->{minimum} > $self->{maximum}) {
+ $self->_reject_requirements(
+ $module,
+ "minimum $self->{minimum} exceeds maximum $self->{maximum}",
+ );
+ }
+ }
+
+ # eliminate irrelevant exclusions
+ if ($self->{exclusions}) {
+ my %seen;
+ @{ $self->{exclusions} } = grep {
+ (! defined $self->{minimum} or $_ >= $self->{minimum})
+ and
+ (! defined $self->{maximum} or $_ <= $self->{maximum})
+ and
+ ! $seen{$_}++
+ } @{ $self->{exclusions} };
+ }
+
+ return $self;
+}
+
+#pod =method with_minimum
+#pod
+#pod $range->with_minimum( $version );
+#pod
+#pod This adds a new minimum version requirement. If the new requirement is
+#pod redundant to the existing specification, this has no effect.
+#pod
+#pod Minimum requirements are inclusive. C<$version> is required, along with any
+#pod greater version number.
+#pod
+#pod This method returns the version range object.
+#pod
+#pod =cut
+
+sub with_minimum {
+ my ($self, $minimum, $module, $bad_version_hook) = @_;
+ $module //= 'module';
+ $self = $self->_clone;
+ $minimum = $self->_version_object( $minimum, $module, $bad_version_hook );
+
+ if (defined (my $old_min = $self->{minimum})) {
+ $self->{minimum} = (sort { $b cmp $a } ($minimum, $old_min))[0];
+ } else {
+ $self->{minimum} = $minimum;
+ }
+
+ return $self->_simplify($module);
+}
+
+#pod =method with_maximum
+#pod
+#pod $range->with_maximum( $version );
+#pod
+#pod This adds a new maximum version requirement. If the new requirement is
+#pod redundant to the existing specification, this has no effect.
+#pod
+#pod Maximum requirements are inclusive. No version strictly greater than the given
+#pod version is allowed.
+#pod
+#pod This method returns the version range object.
+#pod
+#pod =cut
+
+sub with_maximum {
+ my ($self, $maximum, $module, $bad_version_hook) = @_;
+ $module //= 'module';
+ $self = $self->_clone;
+ $maximum = $self->_version_object( $maximum, $module, $bad_version_hook );
+
+ if (defined (my $old_max = $self->{maximum})) {
+ $self->{maximum} = (sort { $a cmp $b } ($maximum, $old_max))[0];
+ } else {
+ $self->{maximum} = $maximum;
+ }
+
+ return $self->_simplify($module);
+}
+
+#pod =method with_exclusion
+#pod
+#pod $range->with_exclusion( $version );
+#pod
+#pod This adds a new excluded version. For example, you might use these three
+#pod method calls:
+#pod
+#pod $range->with_minimum( '1.00' );
+#pod $range->with_maximum( '1.82' );
+#pod
+#pod $range->with_exclusion( '1.75' );
+#pod
+#pod Any version between 1.00 and 1.82 inclusive would be acceptable, except for
+#pod 1.75.
+#pod
+#pod This method returns the requirements object.
+#pod
+#pod =cut
+
+sub with_exclusion {
+ my ($self, $exclusion, $module, $bad_version_hook) = @_;
+ $module //= 'module';
+ $self = $self->_clone;
+ $exclusion = $self->_version_object( $exclusion, $module, $bad_version_hook );
+
+ push @{ $self->{exclusions} ||= [] }, $exclusion;
+
+ return $self->_simplify($module);
+}
+
+sub _as_modifiers {
+ my ($self) = @_;
+ my @mods;
+ push @mods, [ with_minimum => $self->{minimum} ] if exists $self->{minimum};
+ push @mods, [ with_maximum => $self->{maximum} ] if exists $self->{maximum};
+ push @mods, map {; [ with_exclusion => $_ ] } @{$self->{exclusions} || []};
+ return @mods;
+}
+
+#pod =method as_struct
+#pod
+#pod $range->as_struct( $module );
+#pod
+#pod This returns a data structure containing the version requirements. This should
+#pod not be used for version checks (see L</accepts_module> instead).
+#pod
+#pod =cut
+
+sub as_struct {
+ my ($self) = @_;
+
+ return 0 if ! keys %$self;
+
+ my @exclusions = @{ $self->{exclusions} || [] };
+
+ my @parts;
+
+ for my $tuple (
+ [ qw( >= > minimum ) ],
+ [ qw( <= < maximum ) ],
+ ) {
+ my ($op, $e_op, $k) = @$tuple;
+ if (exists $self->{$k}) {
+ my @new_exclusions = grep { $_ != $self->{ $k } } @exclusions;
+ if (@new_exclusions == @exclusions) {
+ push @parts, [ $op, "$self->{ $k }" ];
+ } else {
+ push @parts, [ $e_op, "$self->{ $k }" ];
+ @exclusions = @new_exclusions;
+ }
+ }
+ }
+
+ push @parts, map {; [ "!=", "$_" ] } @exclusions;
+
+ return \@parts;
+}
+
+#pod =method as_string
+#pod
+#pod $range->as_string;
+#pod
+#pod This returns a string containing the version requirements in the format
+#pod described in L<CPAN::Meta::Spec>. This should only be used for informational
+#pod purposes such as error messages and should not be interpreted or used for
+#pod comparison (see L</accepts> instead).
+#pod
+#pod =cut
+
+sub as_string {
+ my ($self) = @_;
+
+ my @parts = @{ $self->as_struct };
+
+ return $parts[0][1] if @parts == 1 and $parts[0][0] eq '>=';
+
+ return join q{, }, map {; join q{ }, @$_ } @parts;
+}
+
+sub _reject_requirements {
+ my ($self, $module, $error) = @_;
+ Carp::croak("illegal requirements for $module: $error")
+}
+
+#pod =method accepts
+#pod
+#pod my $bool = $range->accepts($version);
+#pod
+#pod Given a version, this method returns true if the version specification
+#pod accepts the provided version. In other words, given:
+#pod
+#pod '>= 1.00, < 2.00'
+#pod
+#pod We will accept 1.00 and 1.75 but not 0.50 or 2.00.
+#pod
+#pod =cut
+
+sub accepts {
+ my ($self, $version) = @_;
+
+ return if defined $self->{minimum} and $version < $self->{minimum};
+ return if defined $self->{maximum} and $version > $self->{maximum};
+ return if defined $self->{exclusions}
+ and grep { $version == $_ } @{ $self->{exclusions} };
+
+ return 1;
+}
+
+#pod =method is_simple
+#pod
+#pod This method returns true if and only if the range is an inclusive minimum
+#pod -- that is, if their string expression is just the version number.
+#pod
+#pod =cut
+
+sub is_simple {
+ my ($self) = @_;
+ # XXX: This is a complete hack, but also entirely correct.
+ return if $self->as_string =~ /\s/;
+
+ return 1;
+}
+
+package
+ CPAN::Meta::Requirements::Range::_Exact;
+
+our @ISA = 'CPAN::Meta::Requirements::Range::_Base';
+
+our $VERSION = '2.141';
+
+BEGIN {
+ eval "use version ()"; ## no critic
+ if ( my $err = $@ ) {
+ eval "use ExtUtils::MakeMaker::version" or die $err; ## no critic
+ }
+}
+
+sub _new { bless { version => $_[1] } => $_[0] }
+
+sub accepts { return $_[0]{version} == $_[1] }
+
+sub _reject_requirements {
+ my ($self, $module, $error) = @_;
+ Carp::croak("illegal requirements for $module: $error")
+}
+
+sub _clone {
+ (ref $_[0])->_new( version->new( $_[0]{version} ) )
+}
+
+sub with_exact_version {
+ my ($self, $version, $module, $bad_version_hook) = @_;
+ $module //= 'module';
+ $version = $self->_version_object($version, $module, $bad_version_hook);
+
+ return $self->_clone if $self->accepts($version);
+
+ $self->_reject_requirements(
+ $module,
+ "can't be exactly $version when exact requirement is already $self->{version}",
+ );
+}
+
+sub with_minimum {
+ my ($self, $minimum, $module, $bad_version_hook) = @_;
+ $module //= 'module';
+ $minimum = $self->_version_object( $minimum, $module, $bad_version_hook );
+
+ return $self->_clone if $self->{version} >= $minimum;
+ $self->_reject_requirements(
+ $module,
+ "minimum $minimum exceeds exact specification $self->{version}",
+ );
+}
+
+sub with_maximum {
+ my ($self, $maximum, $module, $bad_version_hook) = @_;
+ $module //= 'module';
+ $maximum = $self->_version_object( $maximum, $module, $bad_version_hook );
+
+ return $self->_clone if $self->{version} <= $maximum;
+ $self->_reject_requirements(
+ $module,
+ "maximum $maximum below exact specification $self->{version}",
+ );
+}
+
+sub with_exclusion {
+ my ($self, $exclusion, $module, $bad_version_hook) = @_;
+ $module //= 'module';
+ $exclusion = $self->_version_object( $exclusion, $module, $bad_version_hook );
+
+ return $self->_clone unless $exclusion == $self->{version};
+ $self->_reject_requirements(
+ $module,
+ "tried to exclude $exclusion, which is already exactly specified",
+ );
+}
+
+sub as_string { return "== $_[0]{version}" }
+
+sub as_struct { return [ [ '==', "$_[0]{version}" ] ] }
+
+sub _as_modifiers { return [ with_exact_version => $_[0]{version} ] }
+
+
+1;
+
+# vim: ts=2 sts=2 sw=2 et:
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+CPAN::Meta::Requirements::Range - a set of version requirements for a CPAN dist
+
+=head1 VERSION
+
+version 2.143
+
+=head1 SYNOPSIS
+
+ use CPAN::Meta::Requirements::Range;
+
+ my $range = CPAN::Meta::Requirements::Range->with_minimum(1);
+
+ $range = $range->with_maximum('v2.2');
+
+ my $stringified = $range->as_string;
+
+=head1 DESCRIPTION
+
+A CPAN::Meta::Requirements::Range object models a set of version constraints like
+those specified in the F<META.yml> or F<META.json> files in CPAN distributions,
+and as defined by L<CPAN::Meta::Spec>;
+It can be built up by adding more and more constraints, and it will reduce them
+to the simplest representation.
+
+Logically impossible constraints will be identified immediately by thrown
+exceptions.
+
+=head1 METHODS
+
+=head2 with_string_requirement
+
+ $req->with_string_requirement('>= 1.208, <= 2.206');
+ $req->with_string_requirement(v1.208);
+
+This method parses the passed in string and adds the appropriate requirement.
+A version can be a Perl "v-string". It understands version ranges as described
+in the L<CPAN::Meta::Spec/Version Ranges>. For example:
+
+=over 4
+
+=item 1.3
+
+=item >= 1.3
+
+=item <= 1.3
+
+=item == 1.3
+
+=item != 1.3
+
+=item > 1.3
+
+=item < 1.3
+
+=item >= 1.3, != 1.5, <= 2.0
+
+A version number without an operator is equivalent to specifying a minimum
+(C<E<gt>=>). Extra whitespace is allowed.
+
+=back
+
+=head2 with_range
+
+ $range->with_range($other_range)
+
+This creates a new range object that is a merge two others.
+
+=head2 with_exact_version
+
+ $range->with_exact_version( $version );
+
+This sets the version required to I<exactly> the given
+version. No other version would be considered acceptable.
+
+This method returns the version range object.
+
+=head2 with_minimum
+
+ $range->with_minimum( $version );
+
+This adds a new minimum version requirement. If the new requirement is
+redundant to the existing specification, this has no effect.
+
+Minimum requirements are inclusive. C<$version> is required, along with any
+greater version number.
+
+This method returns the version range object.
+
+=head2 with_maximum
+
+ $range->with_maximum( $version );
+
+This adds a new maximum version requirement. If the new requirement is
+redundant to the existing specification, this has no effect.
+
+Maximum requirements are inclusive. No version strictly greater than the given
+version is allowed.
+
+This method returns the version range object.
+
+=head2 with_exclusion
+
+ $range->with_exclusion( $version );
+
+This adds a new excluded version. For example, you might use these three
+method calls:
+
+ $range->with_minimum( '1.00' );
+ $range->with_maximum( '1.82' );
+
+ $range->with_exclusion( '1.75' );
+
+Any version between 1.00 and 1.82 inclusive would be acceptable, except for
+1.75.
+
+This method returns the requirements object.
+
+=head2 as_struct
+
+ $range->as_struct( $module );
+
+This returns a data structure containing the version requirements. This should
+not be used for version checks (see L</accepts_module> instead).
+
+=head2 as_string
+
+ $range->as_string;
+
+This returns a string containing the version requirements in the format
+described in L<CPAN::Meta::Spec>. This should only be used for informational
+purposes such as error messages and should not be interpreted or used for
+comparison (see L</accepts> instead).
+
+=head2 accepts
+
+ my $bool = $range->accepts($version);
+
+Given a version, this method returns true if the version specification
+accepts the provided version. In other words, given:
+
+ '>= 1.00, < 2.00'
+
+We will accept 1.00 and 1.75 but not 0.50 or 2.00.
+
+=head2 is_simple
+
+This method returns true if and only if the range is an inclusive minimum
+-- that is, if their string expression is just the version number.
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+David Golden <dagolden at cpan.org>
+
+=item *
+
+Ricardo Signes <rjbs at cpan.org>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2010 by David Golden and Ricardo Signes.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
Property changes on: trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Requirements/Range.pm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Requirements.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Requirements.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/CPAN/Meta/Requirements.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,11 +1,13 @@
-use 5.006; # keep at v5.6 for CPAN.pm
+use v5.10;
use strict;
use warnings;
package CPAN::Meta::Requirements;
# ABSTRACT: a set of version requirements for a CPAN dist
-our $VERSION = '2.140';
+our $VERSION = '2.143';
+use CPAN::Meta::Requirements::Range;
+
#pod =head1 SYNOPSIS
#pod
#pod use CPAN::Meta::Requirements;
@@ -24,7 +26,7 @@
#pod
#pod A CPAN::Meta::Requirements object models a set of version constraints like
#pod those specified in the F<META.yml> or F<META.json> files in CPAN distributions,
-#pod and as defined by L<CPAN::Meta::Spec>;
+#pod and as defined by L<CPAN::Meta::Spec>.
#pod It can be built up by adding more and more constraints, and it will reduce them
#pod to the simplest representation.
#pod
@@ -35,25 +37,6 @@
use Carp ();
-# To help ExtUtils::MakeMaker bootstrap CPAN::Meta::Requirements on perls
-# before 5.10, we fall back to the EUMM bundled compatibility version module if
-# that's the only thing available. This shouldn't ever happen in a normal CPAN
-# install of CPAN::Meta::Requirements, as version.pm will be picked up from
-# prereqs and be available at runtime.
-
-BEGIN {
- eval "use version ()"; ## no critic
- if ( my $err = $@ ) {
- eval "use ExtUtils::MakeMaker::version" or die $err; ## no critic
- }
-}
-
-# Perl 5.10.0 didn't have "is_qv" in version.pm
-*_is_qv = version->can('is_qv') ? sub { $_[0]->is_qv } : sub { exists $_[0]->{qv} };
-
-# construct once, reuse many times
-my $V0 = version->new(0);
-
#pod =method new
#pod
#pod my $req = CPAN::Meta::Requirements->new;
@@ -83,82 +66,6 @@
return bless \%self => $class;
}
-# from version::vpp
-sub _find_magic_vstring {
- my $value = shift;
- my $tvalue = '';
- require B;
- my $sv = B::svref_2object(\$value);
- my $magic = ref($sv) eq 'B::PVMG' ? $sv->MAGIC : undef;
- while ( $magic ) {
- if ( $magic->TYPE eq 'V' ) {
- $tvalue = $magic->PTR;
- $tvalue =~ s/^v?(.+)$/v$1/;
- last;
- }
- else {
- $magic = $magic->MOREMAGIC;
- }
- }
- return $tvalue;
-}
-
-# safe if given an unblessed reference
-sub _isa_version {
- UNIVERSAL::isa( $_[0], 'UNIVERSAL' ) && $_[0]->isa('version')
-}
-
-sub _version_object {
- my ($self, $module, $version) = @_;
-
- my ($vobj, $err);
-
- if (not defined $version or (!ref($version) && $version eq '0')) {
- return $V0;
- }
- elsif ( ref($version) eq 'version' || ( ref($version) && _isa_version($version) ) ) {
- $vobj = $version;
- }
- else {
- # hack around version::vpp not handling <3 character vstring literals
- if ( $INC{'version/vpp.pm'} || $INC{'ExtUtils/MakeMaker/version/vpp.pm'} ) {
- my $magic = _find_magic_vstring( $version );
- $version = $magic if length $magic;
- }
- # pad to 3 characters if before 5.8.1 and appears to be a v-string
- if ( $] < 5.008001 && $version !~ /\A[0-9]/ && substr($version,0,1) ne 'v' && length($version) < 3 ) {
- $version .= "\0" x (3 - length($version));
- }
- eval {
- local $SIG{__WARN__} = sub { die "Invalid version: $_[0]" };
- # avoid specific segfault on some older version.pm versions
- die "Invalid version: $version" if $version eq 'version';
- $vobj = version->new($version);
- };
- if ( my $err = $@ ) {
- my $hook = $self->{bad_version_hook};
- $vobj = eval { $hook->($version, $module) }
- if ref $hook eq 'CODE';
- unless (eval { $vobj->isa("version") }) {
- $err =~ s{ at .* line \d+.*$}{};
- die "Can't convert '$version': $err";
- }
- }
- }
-
- # ensure no leading '.'
- if ( $vobj =~ m{\A\.} ) {
- $vobj = version->new("0$vobj");
- }
-
- # ensure normal v-string form
- if ( _is_qv($vobj) ) {
- $vobj = version->new($vobj->normal);
- }
-
- return $vobj;
-}
-
#pod =method add_minimum
#pod
#pod $req->add_minimum( $module => $version );
@@ -219,8 +126,6 @@
my $code = sub {
my ($self, $name, $version) = @_;
- $version = $self->_version_object( $name, $version );
-
$self->__modify_entry_for($name, $method, $version);
return $self;
@@ -240,20 +145,29 @@
# which preserves the user's choice of "0.00" as the requirement
if (not defined $version or "$version" eq '0') {
return $self if $self->__entry_for($name);
- Carp::confess("can't add new requirements to finalized requirements")
+ Carp::croak("can't add new requirements to finalized requirements")
if $self->is_finalized;
$self->{requirements}{ $name } =
- CPAN::Meta::Requirements::_Range::Range->with_minimum($V0, $name);
+ CPAN::Meta::Requirements::Range->with_minimum('0', $name);
}
else {
- $version = $self->_version_object( $name, $version );
-
$self->__modify_entry_for($name, 'with_minimum', $version);
}
return $self;
}
+#pod =method version_range_for_module
+#pod
+#pod $req->version_range_for_module( $another_req_object );
+#pod
+#pod =cut
+
+sub version_range_for_module {
+ my ($self, $module) = @_;
+ return $self->{requirements}{$module};
+}
+
#pod =method add_requirements
#pod
#pod $req->add_requirements( $another_req_object );
@@ -270,11 +184,8 @@
my ($self, $req) = @_;
for my $module ($req->required_modules) {
- my $modifiers = $req->__entry_for($module)->as_modifiers;
- for my $modifier (@$modifiers) {
- my ($method, @args) = @$modifier;
- $self->$method($module => @args);
- };
+ my $new_range = $req->version_range_for_module($module);
+ $self->__modify_entry_for($module, 'with_range', $new_range);
}
return $self;
@@ -300,10 +211,8 @@
sub accepts_module {
my ($self, $module, $version) = @_;
- $version = $self->_version_object( $module, $version );
-
return 1 unless my $range = $self->__entry_for($module);
- return $range->_accepts($version);
+ return $range->accepts($version);
}
#pod =method clear_requirement
@@ -321,7 +230,7 @@
return $self unless $self->__entry_for($module);
- Carp::confess("can't clear requirements on finalized requirements")
+ Carp::croak("can't clear requirements on finalized requirements")
if $self->is_finalized;
delete $self->{requirements}{ $module };
@@ -400,13 +309,13 @@
my $fin = $self->is_finalized;
my $old = $self->__entry_for($name);
- Carp::confess("can't add new requirements to finalized requirements")
+ Carp::croak("can't add new requirements to finalized requirements")
if $fin and not $old;
- my $new = ($old || 'CPAN::Meta::Requirements::_Range::Range')
- ->$method($version, $name);
+ my $new = ($old || 'CPAN::Meta::Requirements::Range')
+ ->$method($version, $name, $self->{bad_version_hook});
- Carp::confess("can't modify finalized requirements")
+ Carp::croak("can't modify finalized requirements")
if $fin and $old->as_string ne $new->as_string;
$self->{requirements}{ $name } = $new;
@@ -423,7 +332,7 @@
my ($self) = @_;
for my $module ($self->required_modules) {
# XXX: This is a complete hack, but also entirely correct.
- return if $self->__entry_for($module)->as_string =~ /\s/;
+ return if not $self->__entry_for($module)->is_simple;
}
return 1;
@@ -529,43 +438,10 @@
#pod
#pod =cut
-my %methods_for_op = (
- '==' => [ qw(exact_version) ],
- '!=' => [ qw(add_exclusion) ],
- '>=' => [ qw(add_minimum) ],
- '<=' => [ qw(add_maximum) ],
- '>' => [ qw(add_minimum add_exclusion) ],
- '<' => [ qw(add_maximum add_exclusion) ],
-);
-
sub add_string_requirement {
my ($self, $module, $req) = @_;
- unless ( defined $req && length $req ) {
- $req = 0;
- $self->_blank_carp($module);
- }
-
- my $magic = _find_magic_vstring( $req );
- if (length $magic) {
- $self->add_minimum($module => $magic);
- return;
- }
-
- my @parts = split qr{\s*,\s*}, $req;
-
- for my $part (@parts) {
- my ($op, $ver) = $part =~ m{\A\s*(==|>=|>|<=|<|!=)\s*(.*)\z};
-
- if (! defined $op) {
- $self->add_minimum($module => $part);
- } else {
- Carp::confess("illegal requirement string: $req")
- unless my $methods = $methods_for_op{ $op };
-
- $self->$_($module => $ver) for @$methods;
- }
- }
+ $self->__modify_entry_for($module, 'with_string_requirement', $req);
}
#pod =method from_string_hash
@@ -582,11 +458,6 @@
#pod
#pod =cut
-sub _blank_carp {
- my ($self, $module) = @_;
- Carp::carp("Undefined requirement for $module treated as '0'");
-}
-
sub from_string_hash {
my ($class, $hash, $options) = @_;
@@ -594,10 +465,6 @@
for my $module (keys %$hash) {
my $req = $hash->{$module};
- unless ( defined $req && length $req ) {
- $req = 0;
- $class->_blank_carp($module);
- }
$self->add_string_requirement($module, $req);
}
@@ -604,257 +471,6 @@
return $self;
}
-##############################################################
-
-{
- package
- CPAN::Meta::Requirements::_Range::Exact;
- sub _new { bless { version => $_[1] } => $_[0] }
-
- sub _accepts { return $_[0]{version} == $_[1] }
-
- sub as_string { return "== $_[0]{version}" }
-
- sub as_struct { return [ [ '==', "$_[0]{version}" ] ] }
-
- sub as_modifiers { return [ [ exact_version => $_[0]{version} ] ] }
-
- sub _reject_requirements {
- my ($self, $module, $error) = @_;
- Carp::confess("illegal requirements for $module: $error")
- }
-
- sub _clone {
- (ref $_[0])->_new( version->new( $_[0]{version} ) )
- }
-
- sub with_exact_version {
- my ($self, $version, $module) = @_;
- $module = 'module' unless defined $module;
-
- return $self->_clone if $self->_accepts($version);
-
- $self->_reject_requirements(
- $module,
- "can't be exactly $version when exact requirement is already $self->{version}",
- );
- }
-
- sub with_minimum {
- my ($self, $minimum, $module) = @_;
- $module = 'module' unless defined $module;
-
- return $self->_clone if $self->{version} >= $minimum;
- $self->_reject_requirements(
- $module,
- "minimum $minimum exceeds exact specification $self->{version}",
- );
- }
-
- sub with_maximum {
- my ($self, $maximum, $module) = @_;
- $module = 'module' unless defined $module;
-
- return $self->_clone if $self->{version} <= $maximum;
- $self->_reject_requirements(
- $module,
- "maximum $maximum below exact specification $self->{version}",
- );
- }
-
- sub with_exclusion {
- my ($self, $exclusion, $module) = @_;
- $module = 'module' unless defined $module;
-
- return $self->_clone unless $exclusion == $self->{version};
- $self->_reject_requirements(
- $module,
- "tried to exclude $exclusion, which is already exactly specified",
- );
- }
-}
-
-##############################################################
-
-{
- package
- CPAN::Meta::Requirements::_Range::Range;
-
- sub _self { ref($_[0]) ? $_[0] : (bless { } => $_[0]) }
-
- sub _clone {
- return (bless { } => $_[0]) unless ref $_[0];
-
- my ($s) = @_;
- my %guts = (
- (exists $s->{minimum} ? (minimum => version->new($s->{minimum})) : ()),
- (exists $s->{maximum} ? (maximum => version->new($s->{maximum})) : ()),
-
- (exists $s->{exclusions}
- ? (exclusions => [ map { version->new($_) } @{ $s->{exclusions} } ])
- : ()),
- );
-
- bless \%guts => ref($s);
- }
-
- sub as_modifiers {
- my ($self) = @_;
- my @mods;
- push @mods, [ add_minimum => $self->{minimum} ] if exists $self->{minimum};
- push @mods, [ add_maximum => $self->{maximum} ] if exists $self->{maximum};
- push @mods, map {; [ add_exclusion => $_ ] } @{$self->{exclusions} || []};
- return \@mods;
- }
-
- sub as_struct {
- my ($self) = @_;
-
- return 0 if ! keys %$self;
-
- my @exclusions = @{ $self->{exclusions} || [] };
-
- my @parts;
-
- for my $tuple (
- [ qw( >= > minimum ) ],
- [ qw( <= < maximum ) ],
- ) {
- my ($op, $e_op, $k) = @$tuple;
- if (exists $self->{$k}) {
- my @new_exclusions = grep { $_ != $self->{ $k } } @exclusions;
- if (@new_exclusions == @exclusions) {
- push @parts, [ $op, "$self->{ $k }" ];
- } else {
- push @parts, [ $e_op, "$self->{ $k }" ];
- @exclusions = @new_exclusions;
- }
- }
- }
-
- push @parts, map {; [ "!=", "$_" ] } @exclusions;
-
- return \@parts;
- }
-
- sub as_string {
- my ($self) = @_;
-
- my @parts = @{ $self->as_struct };
-
- return $parts[0][1] if @parts == 1 and $parts[0][0] eq '>=';
-
- return join q{, }, map {; join q{ }, @$_ } @parts;
- }
-
- sub _reject_requirements {
- my ($self, $module, $error) = @_;
- Carp::confess("illegal requirements for $module: $error")
- }
-
- sub with_exact_version {
- my ($self, $version, $module) = @_;
- $module = 'module' unless defined $module;
- $self = $self->_clone;
-
- unless ($self->_accepts($version)) {
- $self->_reject_requirements(
- $module,
- "exact specification $version outside of range " . $self->as_string
- );
- }
-
- return CPAN::Meta::Requirements::_Range::Exact->_new($version);
- }
-
- sub _simplify {
- my ($self, $module) = @_;
-
- if (defined $self->{minimum} and defined $self->{maximum}) {
- if ($self->{minimum} == $self->{maximum}) {
- if (grep { $_ == $self->{minimum} } @{ $self->{exclusions} || [] }) {
- $self->_reject_requirements(
- $module,
- "minimum and maximum are both $self->{minimum}, which is excluded",
- );
- }
-
- return CPAN::Meta::Requirements::_Range::Exact->_new($self->{minimum})
- }
-
- if ($self->{minimum} > $self->{maximum}) {
- $self->_reject_requirements(
- $module,
- "minimum $self->{minimum} exceeds maximum $self->{maximum}",
- );
- }
- }
-
- # eliminate irrelevant exclusions
- if ($self->{exclusions}) {
- my %seen;
- @{ $self->{exclusions} } = grep {
- (! defined $self->{minimum} or $_ >= $self->{minimum})
- and
- (! defined $self->{maximum} or $_ <= $self->{maximum})
- and
- ! $seen{$_}++
- } @{ $self->{exclusions} };
- }
-
- return $self;
- }
-
- sub with_minimum {
- my ($self, $minimum, $module) = @_;
- $module = 'module' unless defined $module;
- $self = $self->_clone;
-
- if (defined (my $old_min = $self->{minimum})) {
- $self->{minimum} = (sort { $b cmp $a } ($minimum, $old_min))[0];
- } else {
- $self->{minimum} = $minimum;
- }
-
- return $self->_simplify($module);
- }
-
- sub with_maximum {
- my ($self, $maximum, $module) = @_;
- $module = 'module' unless defined $module;
- $self = $self->_clone;
-
- if (defined (my $old_max = $self->{maximum})) {
- $self->{maximum} = (sort { $a cmp $b } ($maximum, $old_max))[0];
- } else {
- $self->{maximum} = $maximum;
- }
-
- return $self->_simplify($module);
- }
-
- sub with_exclusion {
- my ($self, $exclusion, $module) = @_;
- $module = 'module' unless defined $module;
- $self = $self->_clone;
-
- push @{ $self->{exclusions} ||= [] }, $exclusion;
-
- return $self->_simplify($module);
- }
-
- sub _accepts {
- my ($self, $version) = @_;
-
- return if defined $self->{minimum} and $version < $self->{minimum};
- return if defined $self->{maximum} and $version > $self->{maximum};
- return if defined $self->{exclusions}
- and grep { $version == $_ } @{ $self->{exclusions} };
-
- return 1;
- }
-}
-
1;
# vim: ts=2 sts=2 sw=2 et:
@@ -870,7 +486,7 @@
=head1 VERSION
-version 2.140
+version 2.143
=head1 SYNOPSIS
@@ -890,7 +506,7 @@
A CPAN::Meta::Requirements object models a set of version constraints like
those specified in the F<META.yml> or F<META.json> files in CPAN distributions,
-and as defined by L<CPAN::Meta::Spec>;
+and as defined by L<CPAN::Meta::Spec>.
It can be built up by adding more and more constraints, and it will reduce them
to the simplest representation.
@@ -966,6 +582,10 @@
This method returns the requirements object.
+=head2 version_range_for_module
+
+ $req->version_range_for_module( $another_req_object );
+
=head2 add_requirements
$req->add_requirements( $another_req_object );
@@ -1127,7 +747,7 @@
you can supply a hash-reference of options, exactly as with the L</new>
method.
-=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+=for :stopwords cpan testmatrix url bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
=head1 SUPPORT
@@ -1162,7 +782,7 @@
=head1 CONTRIBUTORS
-=for stopwords Ed J Karen Etheridge Leon Timmermans robario
+=for stopwords Ed J Graham Knop Karen Etheridge Leon Timmermans Paul Howarth Ricardo Signes robario Tatsuhiko Miyagawa
=over 4
@@ -1172,6 +792,10 @@
=item *
+Graham Knop <haarg at haarg.org>
+
+=item *
+
Karen Etheridge <ether at cpan.org>
=item *
@@ -1180,8 +804,24 @@
=item *
+Paul Howarth <paul at city-fan.org>
+
+=item *
+
+Ricardo Signes <rjbs at semiotic.systems>
+
+=item *
+
robario <webmaster at robario.com>
+=item *
+
+Tatsuhiko Miyagawa <miyagawa at bulknews.net>
+
+=item *
+
+Tatsuhiko Miyagawa <miyagawa at gmail.com>
+
=back
=head1 COPYRIGHT AND LICENSE
Modified: trunk/Master/tlpkg/tlperl/lib/Compress/Raw/Bzip2.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Compress/Raw/Bzip2.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Compress/Raw/Bzip2.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -11,7 +11,7 @@
use bytes ;
our ($VERSION, $XS_VERSION, @ISA, @EXPORT, $AUTOLOAD);
-$VERSION = '2.204_001';
+$VERSION = '2.212';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -384,7 +384,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/Compress/Raw/Zlib.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Compress/Raw/Zlib.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Compress/Raw/Zlib.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -10,7 +10,7 @@
use bytes ;
our ($VERSION, $XS_VERSION, @ISA, @EXPORT, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD, %DEFLATE_CONSTANTS, @DEFLATE_CONSTANTS);
-$VERSION = '2.204_001';
+$VERSION = '2.212';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -1282,7 +1282,7 @@
last OUTER
unless $status == Z_OK || $status == Z_BUF_ERROR ;
}
- while ($status == Z_OK && length $input);
+ while length $input;
}
die "inflation failed\n"
@@ -1453,7 +1453,7 @@
last OUTER
unless $status == Z_OK || $status == Z_BUF_ERROR ;
}
- while ($status == Z_OK && length $input);
+ while length $input;
}
die "inflation failed\n"
@@ -1637,7 +1637,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/Compress/Zlib.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Compress/Zlib.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Compress/Zlib.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -7,10 +7,10 @@
use IO::Handle ;
use Scalar::Util qw(dualvar);
-use IO::Compress::Base::Common 2.204 ;
-use Compress::Raw::Zlib 2.204 ;
-use IO::Compress::Gzip 2.204 ;
-use IO::Uncompress::Gunzip 2.204 ;
+use IO::Compress::Base::Common 2.212 ;
+use Compress::Raw::Zlib 2.212 ;
+use IO::Compress::Gzip 2.212 ;
+use IO::Uncompress::Gunzip 2.212 ;
use strict ;
use warnings ;
@@ -17,7 +17,7 @@
use bytes ;
our ($VERSION, $XS_VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-$VERSION = '2.204';
+$VERSION = '2.212';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -461,7 +461,7 @@
package Compress::Zlib ;
-use IO::Compress::Gzip::Constants 2.204 ;
+use IO::Compress::Gzip::Constants 2.212 ;
sub memGzip($)
{
@@ -1509,7 +1509,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 1995-2023 Paul Marquess. All rights reserved.
+Copyright (c) 1995-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Deleted: trunk/Master/tlpkg/tlperl/lib/Config.orig.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Config.orig.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Config.orig.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,111 +0,0 @@
-# This file was created by configpm when Perl was built. Any changes
-# made to this file will be lost the next time perl is built.
-
-# for a description of the variables, please have a look at the
-# Glossary file, as written in the Porting folder, or use the url:
-# https://github.com/Perl/perl5/blob/blead/Porting/Glossary
-
-package Config;
-use strict;
-use warnings;
-our ( %Config, $VERSION );
-
-$VERSION = "5.038002";
-
-# Skip @Config::EXPORT because it only contains %Config, which we special
-# case below as it's not a function. @Config::EXPORT won't change in the
-# lifetime of Perl 5.
-my %Export_Cache = (myconfig => 1, config_sh => 1, config_vars => 1,
- config_re => 1, compile_date => 1, local_patches => 1,
- bincompat_options => 1, non_bincompat_options => 1,
- header_files => 1);
-
- at Config::EXPORT = qw(%Config);
- at Config::EXPORT_OK = keys %Export_Cache;
-
-# Need to stub all the functions to make code such as print Config::config_sh
-# keep working
-
-sub bincompat_options;
-sub compile_date;
-sub config_re;
-sub config_sh;
-sub config_vars;
-sub header_files;
-sub local_patches;
-sub myconfig;
-sub non_bincompat_options;
-
-# Define our own import method to avoid pulling in the full Exporter:
-sub import {
- shift;
- @_ = @Config::EXPORT unless @_;
-
- my @funcs = grep $_ ne '%Config', @_;
- my $export_Config = @funcs < @_ ? 1 : 0;
-
- no strict 'refs';
- my $callpkg = caller(0);
- foreach my $func (@funcs) {
- die qq{"$func" is not exported by the Config module\n}
- unless $Export_Cache{$func};
- *{$callpkg.'::'.$func} = \&{$func};
- }
-
- *{"$callpkg\::Config"} = \%Config if $export_Config;
- return;
-}
-
-die "$0: Perl lib version (5.38.2) doesn't match executable '$^X' version ($])"
- unless $^V;
-
-$^V eq 5.38.2
- or die sprintf "%s: Perl lib version (5.38.2) doesn't match executable '$^X' version (%vd)", $0, $^V;
-
-
-sub FETCH {
- my($self, $key) = @_;
-
- # check for cached value (which may be undef so we use exists not defined)
- return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key);
-}
-
-sub TIEHASH {
- bless $_[1], $_[0];
-}
-
-sub DESTROY { }
-
-sub AUTOLOAD {
- require 'Config_heavy.pl';
- goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/;
- die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
-}
-
-# tie returns the object, so the value returned to require will be true.
-tie %Config, 'Config', {
- archlibexp => 'd:\\tlperl\\lib',
- archname => 'MSWin32-x64-multi-thread',
- cc => 'cl',
- d_readlink => 'define',
- d_symlink => 'define',
- dlext => 'dll',
- dlsrc => 'dl_win32.xs',
- dont_use_nlink => undef,
- exe_ext => '.exe',
- inc_version_list => '',
- intsize => '4',
- ldlibpthname => '',
- libpth => '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.38.33130\\\\lib\\x64"',
- osname => 'MSWin32',
- osvers => '10.0.22631.3085',
- path_sep => ';',
- privlibexp => 'd:\\tlperl\\lib',
- scriptdir => 'd:\\tlperl\\bin',
- sitearchexp => 'd:\\tlperl\\site\\lib',
- sitelibexp => 'd:\\tlperl\\site\\lib',
- so => 'dll',
- useithreads => 'define',
- usevendorprefix => undef,
- version => '5.38.2',
-};
Modified: trunk/Master/tlpkg/tlperl/lib/Config.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Config.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Config.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -10,7 +10,7 @@
use warnings;
our ( %Config, $VERSION );
-$VERSION = "5.038002";
+$VERSION = "5.040001";
# Skip @Config::EXPORT because it only contains %Config, which we special
# case below as it's not a function. @Config::EXPORT won't change in the
@@ -56,11 +56,11 @@
return;
}
-die "$0: Perl lib version (5.38.2) doesn't match executable '$^X' version ($])"
+die "$0: Perl lib version (5.40.1) doesn't match executable '$^X' version ($])"
unless $^V;
-$^V eq 5.38.2
- or die sprintf "%s: Perl lib version (5.38.2) doesn't match executable '$^X' version (%vd)", $0, $^V;
+$^V eq 5.40.1
+ or die sprintf "%s: Perl lib version (5.40.1) doesn't match executable '$^X' version (%vd)", $0, $^V;
sub FETCH {
@@ -100,9 +100,9 @@
inc_version_list => '',
intsize => '4',
ldlibpthname => '',
- libpth => '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.38.33130\\\\lib\\x64"',
+ libpth => '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.42.34433\\\\lib\\x64"',
osname => 'MSWin32',
- osvers => '10.0.22631.3085',
+ osvers => '10.0.26100.3194',
path_sep => ';',
privlibexp => "$rootdir\\lib",
scriptdir => "$rootdir\\bin",
@@ -111,5 +111,5 @@
so => 'dll',
useithreads => 'define',
usevendorprefix => undef,
- version => '5.38.2',
+ version => '5.40.1',
};
Added: trunk/Master/tlpkg/tlperl/lib/Config.pm.orig
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Config.pm.orig (rev 0)
+++ trunk/Master/tlpkg/tlperl/lib/Config.pm.orig 2025-02-24 14:12:21 UTC (rev 74256)
@@ -0,0 +1,111 @@
+# This file was created by configpm when Perl was built. Any changes
+# made to this file will be lost the next time perl is built.
+
+# for a description of the variables, please have a look at the
+# Glossary file, as written in the Porting folder, or use the url:
+# https://github.com/Perl/perl5/blob/blead/Porting/Glossary
+
+package Config;
+use strict;
+use warnings;
+our ( %Config, $VERSION );
+
+$VERSION = "5.040001";
+
+# Skip @Config::EXPORT because it only contains %Config, which we special
+# case below as it's not a function. @Config::EXPORT won't change in the
+# lifetime of Perl 5.
+my %Export_Cache = (myconfig => 1, config_sh => 1, config_vars => 1,
+ config_re => 1, compile_date => 1, local_patches => 1,
+ bincompat_options => 1, non_bincompat_options => 1,
+ header_files => 1);
+
+ at Config::EXPORT = qw(%Config);
+ at Config::EXPORT_OK = keys %Export_Cache;
+
+# Need to stub all the functions to make code such as print Config::config_sh
+# keep working
+
+sub bincompat_options;
+sub compile_date;
+sub config_re;
+sub config_sh;
+sub config_vars;
+sub header_files;
+sub local_patches;
+sub myconfig;
+sub non_bincompat_options;
+
+# Define our own import method to avoid pulling in the full Exporter:
+sub import {
+ shift;
+ @_ = @Config::EXPORT unless @_;
+
+ my @funcs = grep $_ ne '%Config', @_;
+ my $export_Config = @funcs < @_ ? 1 : 0;
+
+ no strict 'refs';
+ my $callpkg = caller(0);
+ foreach my $func (@funcs) {
+ die qq{"$func" is not exported by the Config module\n}
+ unless $Export_Cache{$func};
+ *{$callpkg.'::'.$func} = \&{$func};
+ }
+
+ *{"$callpkg\::Config"} = \%Config if $export_Config;
+ return;
+}
+
+die "$0: Perl lib version (5.40.1) doesn't match executable '$^X' version ($])"
+ unless $^V;
+
+$^V eq 5.40.1
+ or die sprintf "%s: Perl lib version (5.40.1) doesn't match executable '$^X' version (%vd)", $0, $^V;
+
+
+sub FETCH {
+ my($self, $key) = @_;
+
+ # check for cached value (which may be undef so we use exists not defined)
+ return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key);
+}
+
+sub TIEHASH {
+ bless $_[1], $_[0];
+}
+
+sub DESTROY { }
+
+sub AUTOLOAD {
+ require 'Config_heavy.pl';
+ goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/;
+ die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
+}
+
+# tie returns the object, so the value returned to require will be true.
+tie %Config, 'Config', {
+ archlibexp => 'D:\\tlperl\\lib',
+ archname => 'MSWin32-x64-multi-thread',
+ cc => 'cl',
+ d_readlink => 'define',
+ d_symlink => 'define',
+ dlext => 'dll',
+ dlsrc => 'dl_win32.xs',
+ dont_use_nlink => undef,
+ exe_ext => '.exe',
+ inc_version_list => '',
+ intsize => '4',
+ ldlibpthname => '',
+ libpth => '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.42.34433\\\\lib\\x64"',
+ osname => 'MSWin32',
+ osvers => '10.0.26100.3194',
+ path_sep => ';',
+ privlibexp => 'D:\\tlperl\\lib',
+ scriptdir => 'D:\\tlperl\\bin',
+ sitearchexp => 'D:\\tlperl\\site\\lib',
+ sitelibexp => 'D:\\tlperl\\site\\lib',
+ so => 'dll',
+ useithreads => 'define',
+ usevendorprefix => undef,
+ version => '5.40.1',
+};
Property changes on: trunk/Master/tlpkg/tlperl/lib/Config.pm.orig
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: trunk/Master/tlpkg/tlperl/lib/Config.pod
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Config.pod 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Config.pod 2025-02-24 14:12:21 UTC (rev 74256)
@@ -3420,11 +3420,10 @@
=item C<d_nl_langinfo_l>
-From F<d_nl_langinfo_l.U>:
+From F<d_nl_langinfo.U>:
-This variable contains the eventual value of the
-C<HAS_NL_LANGINFO_L> symbol, which indicates if the
-nl_langinfo_l() function exists.
+This variable conditionally defines the C<HAS_NL_LANGINFO_L> symbol, which
+indicates to the C program that the nl_langinfo_l() routine is available.
=item C<d_non_int_bitfields>
@@ -3509,6 +3508,28 @@
indicates to the C program that the pause() routine is available
to suspend a process until a signal is received.
+=item C<d_perl_lc_all_category_positions_init>
+
+From F<disparate_lc_all.U>:
+
+This symbol, if defined, indicates that $lc_all_category_positions_init
+is valid
+
+=item C<d_perl_lc_all_separator>
+
+From F<disparate_lc_all.U>:
+
+This symbol, if defined, indicates that $perl_lc_all_separator is valid
+
+=item C<d_perl_lc_all_uses_name_value_pairs>
+
+From F<disparate_lc_all.U>:
+
+This symbol, if defined, indicates that the string returned by
+setlocale(C<LC_ALL>, C<NULL>) uses C<name=value;> pairs to indicate what each
+category's locale is when they aren't all set to the same locale.
+When not defined, the platform uses positional notation.
+
=item C<d_perl_otherlibdirs>
From F<otherlibdirs.U>:
@@ -4808,14 +4829,6 @@
This variable conditionally defines the C<PERL_THREAD_LOCAL> symbol. In
turn that gives a linkage specification for thread-local storage.
-=item C<d_thread_safe_nl_langinfo_l>
-
-From F<d_nl_langinfo_l.U>:
-
-This variable contains the eventual value of the
-C<HAS_THREAD_SAFE_NL_LANGINFO_L> symbol, which indicates if the
-nl_langinfo_l() function exists and is thread-safe.
-
=item C<d_time>
From F<d_time.U>:
@@ -7865,6 +7878,25 @@
installed F<perl5.005> or later suitable for running the script
to determine inc_version_list.
+=item C<perl_lc_all_category_positions_init>
+
+From F<disparate_lc_all.U>:
+
+This symbol, when defined, gives the C initializer for an array whose
+element [0] is the first category in the string returned by
+setlocale(C<LC_ALL>, C<NULL>) when not all categories are the same, on
+systems that use a positional notation. After element [0] is
+$lc_all_separator_init, then the category given by element [1], and so on.
+
+=item C<perl_lc_all_separator>
+
+From F<disparate_lc_all.U>:
+
+This symbol, when defined, gives the substring used to separate
+categories in the aggregated string returned by setlocale(C<LC_ALL>, C<NULL>)
+when not all categories are in the same locale. This is for systems
+that use a positional notation as opposed to C<name=value> pairs.
+
=item C<perl_patchlevel>
From F<patchlevel.U>:
Deleted: trunk/Master/tlpkg/tlperl/lib/Config_heavy.orig.pl
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Config_heavy.orig.pl 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Config_heavy.orig.pl 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,1507 +0,0 @@
-# This file was created by configpm when Perl was built. Any changes
-# made to this file will be lost the next time perl is built.
-
-package Config;
-use strict;
-use warnings;
-our %Config;
-
-sub bincompat_options {
- return split ' ', (Internals::V())[0];
-}
-
-sub non_bincompat_options {
- return split ' ', (Internals::V())[1];
-}
-
-sub compile_date {
- return (Internals::V())[2]
-}
-
-sub local_patches {
- my (undef, undef, undef, @patches) = Internals::V();
- return @patches;
-}
-
-sub _V {
- die "Perl lib was built for 'MSWin32' but is being run on '$^O'"
- unless "MSWin32" eq $^O;
-
- my ($bincompat, $non_bincompat, $date, @patches) = Internals::V();
-
- my @opts = sort split ' ', "$bincompat $non_bincompat";
-
- print Config::myconfig();
- print "\nCharacteristics of this binary (from libperl): \n";
-
- print " Compile-time options:\n";
- print " $_\n" for @opts;
-
- if (@patches) {
- print " Locally applied patches:\n";
- print " $_\n" foreach @patches;
- }
-
- print " Built under MSWin32\n";
-
- print " $date\n" if defined $date;
-
- my @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %ENV;
-
- if (@env) {
- print " \%ENV:\n";
- print " $_\n" foreach @env;
- }
- print " \@INC:\n";
- print " $_\n" foreach @INC;
-}
-
-sub header_files {
- return qw(EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h
- dosish.h embed.h embedvar.h form.h gv.h handy.h hv.h hv_func.h
- intrpvar.h iperlsys.h keywords.h mg.h nostdio.h op.h opcode.h
- pad.h parser.h patchlevel.h perl.h perlio.h perliol.h perlsdio.h
- perlvars.h perly.h pp.h pp_proto.h proto.h regcomp.h regexp.h
- regnodes.h scope.h sv.h thread.h time64.h unixish.h utf8.h
- util.h);
-}
-
-### Configured by: tex-live at tug.org
-### Target system: WIN32
-
-our $summary = <<'!END!';
-Summary of my $package (revision $revision $version_patchlevel_string) configuration:
- $git_commit_id_title $git_commit_id$git_ancestor_line
- Platform:
- osname=$osname
- osvers=$osvers
- archname=$archname
- uname='$myuname'
- config_args='$config_args'
- hint=$hint
- useposix=$useposix
- d_sigaction=$d_sigaction
- useithreads=$useithreads
- usemultiplicity=$usemultiplicity
- use64bitint=$use64bitint
- use64bitall=$use64bitall
- uselongdouble=$uselongdouble
- usemymalloc=$usemymalloc
- default_inc_excludes_dot=$default_inc_excludes_dot
- Compiler:
- cc='$cc'
- ccflags ='$ccflags'
- optimize='$optimize'
- cppflags='$cppflags'
- ccversion='$ccversion'
- gccversion='$gccversion'
- gccosandvers='$gccosandvers'
- intsize=$intsize
- longsize=$longsize
- ptrsize=$ptrsize
- doublesize=$doublesize
- byteorder=$byteorder
- doublekind=$doublekind
- d_longlong=$d_longlong
- longlongsize=$longlongsize
- d_longdbl=$d_longdbl
- longdblsize=$longdblsize
- longdblkind=$longdblkind
- ivtype='$ivtype'
- ivsize=$ivsize
- nvtype='$nvtype'
- nvsize=$nvsize
- Off_t='$lseektype'
- lseeksize=$lseeksize
- alignbytes=$alignbytes
- prototype=$prototype
- Linker and Libraries:
- ld='$ld'
- ldflags ='$ldflags'
- libpth=$libpth
- libs=$libs
- perllibs=$perllibs
- libc=$libc
- so=$so
- useshrplib=$useshrplib
- libperl=$libperl
- gnulibc_version='$gnulibc_version'
- Dynamic Linking:
- dlsrc=$dlsrc
- dlext=$dlext
- d_dlsymun=$d_dlsymun
- ccdlflags='$ccdlflags'
- cccdlflags='$cccdlflags'
- lddlflags='$lddlflags'
-
-!END!
-my $summary_expanded;
-
-sub myconfig {
- return $summary_expanded if $summary_expanded;
- ($summary_expanded = $summary) =~ s{\$(\w+)}
- {
- my $c;
- if ($1 eq 'git_ancestor_line') {
- if ($Config::Config{git_ancestor}) {
- $c= "\n Ancestor: $Config::Config{git_ancestor}";
- } else {
- $c= "";
- }
- } else {
- $c = $Config::Config{$1};
- }
- defined($c) ? $c : 'undef'
- }ge;
- $summary_expanded;
-}
-
-local *_ = \my $a;
-$_ = <<'!END!';
-Author=''
-CONFIG='true'
-Date='$Date'
-Header=''
-Id='$Id'
-Locker=''
-Log='$Log'
-PATCHLEVEL='38'
-PERL_API_REVISION='5'
-PERL_API_SUBVERSION='0'
-PERL_API_VERSION='38'
-PERL_CONFIG_SH='true'
-PERL_PATCHLEVEL=''
-PERL_REVISION='5'
-PERL_SUBVERSION='2'
-PERL_VERSION='38'
-RCSfile='$RCSfile'
-Revision='$Revision'
-SUBVERSION='2'
-Source=''
-State=''
-_a='.lib'
-_exe='.exe'
-_o='.obj'
-afs='false'
-afsroot='/afs'
-alignbytes='8'
-aphostname=''
-api_revision='5'
-api_subversion='0'
-api_version='38'
-api_versionstring='5.38.0'
-ar='lib -ltcg'
-archlib='d:\tlperl\lib'
-archlibexp='d:\tlperl\lib'
-archname='MSWin32-x64-multi-thread'
-archname64=''
-archobjs=''
-asctime_r_proto='0'
-awk='awk'
-baserev='5'
-bash=''
-bin='d:\tlperl\bin'
-binexp='d:\tlperl\bin'
-bison=''
-bootstrap_charset='undef'
-byacc='byacc'
-byteorder='1234'
-c=''
-castflags='0'
-cat='type'
-cc='cl'
-cccdlflags=' '
-ccdlflags=' '
-ccflags='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
-ccflags_uselargefiles=''
-ccname='cl'
-ccsymbols=''
-ccversion='19.38.33135'
-cf_by='siepo'
-cf_email='tex-live at tug.org'
-cf_time='Mon Feb 12 11:14:47 2024'
-charbits='8'
-chgrp=''
-chmod=''
-chown=''
-clocktype='clock_t'
-comm=''
-compress=''
-contains='grep'
-cp='copy'
-cpio=''
-cpp='cl -nologo -E'
-cpp_stuff='42'
-cppccsymbols=''
-cppflags='-DWIN32'
-cpplast=''
-cppminus=''
-cpprun='cl -nologo -E'
-cppstdin='cppstdin'
-cppsymbols=''
-crypt_r_proto='0'
-cryptlib=''
-csh='undef'
-ctermid_r_proto='0'
-ctime_r_proto='0'
-d_Gconvert='sprintf((b),"%.*g",(n),(x))'
-d_PRIEUldbl='undef'
-d_PRIFUldbl='undef'
-d_PRIGUldbl='undef'
-d_PRIXU64='define'
-d_PRId64='define'
-d_PRIeldbl='undef'
-d_PRIfldbl='undef'
-d_PRIgldbl='undef'
-d_PRIi64='define'
-d_PRIo64='define'
-d_PRIu64='define'
-d_PRIx64='define'
-d_SCNfldbl='undef'
-d__fwalk='undef'
-d_accept4='undef'
-d_access='define'
-d_accessx='undef'
-d_acosh='undef'
-d_aintl='undef'
-d_alarm='define'
-d_archlib='define'
-d_asctime64='undef'
-d_asctime_r='undef'
-d_asinh='undef'
-d_atanh='undef'
-d_atolf='undef'
-d_atoll='define'
-d_attribute_always_inline='undef'
-d_attribute_deprecated='undef'
-d_attribute_format='undef'
-d_attribute_malloc='undef'
-d_attribute_nonnull='undef'
-d_attribute_noreturn='undef'
-d_attribute_pure='undef'
-d_attribute_unused='undef'
-d_attribute_visibility='undef'
-d_attribute_warn_unused_result='undef'
-d_backtrace='undef'
-d_bsd='define'
-d_bsdgetpgrp='undef'
-d_bsdsetpgrp='undef'
-d_builtin_add_overflow='undef'
-d_builtin_choose_expr='undef'
-d_builtin_expect='undef'
-d_builtin_mul_overflow='undef'
-d_builtin_sub_overflow='undef'
-d_c99_variadic_macros='undef'
-d_casti32='undef'
-d_castneg='define'
-d_cbrt='undef'
-d_chown='undef'
-d_chroot='undef'
-d_chsize='define'
-d_class='undef'
-d_clearenv='undef'
-d_closedir='define'
-d_cmsghdr_s='undef'
-d_copysign='undef'
-d_copysignl='undef'
-d_cplusplus='undef'
-d_crypt='define'
-d_crypt_r='undef'
-d_csh='undef'
-d_ctermid='undef'
-d_ctermid_r='undef'
-d_ctime64='undef'
-d_ctime_r='undef'
-d_cuserid='undef'
-d_dbl_dig='define'
-d_dbminitproto='undef'
-d_difftime='define'
-d_difftime64='undef'
-d_dir_dd_fd='undef'
-d_dirfd='undef'
-d_dirnamlen='define'
-d_dladdr='undef'
-d_dlerror='define'
-d_dlopen='define'
-d_dlsymun='undef'
-d_dosuid='undef'
-d_double_has_inf='define'
-d_double_has_nan='define'
-d_double_has_negative_zero='define'
-d_double_has_subnormals='define'
-d_double_style_cray='undef'
-d_double_style_ibm='undef'
-d_double_style_ieee='define'
-d_double_style_vax='undef'
-d_drand48_r='undef'
-d_drand48proto='undef'
-d_dup2='define'
-d_dup3='undef'
-d_duplocale='undef'
-d_eaccess='undef'
-d_endgrent='undef'
-d_endgrent_r='undef'
-d_endhent='undef'
-d_endhostent_r='undef'
-d_endnent='undef'
-d_endnetent_r='undef'
-d_endpent='undef'
-d_endprotoent_r='undef'
-d_endpwent='undef'
-d_endpwent_r='undef'
-d_endsent='undef'
-d_endservent_r='undef'
-d_eofnblk='define'
-d_erf='undef'
-d_erfc='undef'
-d_eunice='undef'
-d_exp2='undef'
-d_expm1='undef'
-d_faststdio='define'
-d_fchdir='undef'
-d_fchmod='undef'
-d_fchmodat='undef'
-d_fchown='undef'
-d_fcntl='undef'
-d_fcntl_can_lock='undef'
-d_fd_macros='define'
-d_fd_set='define'
-d_fdclose='undef'
-d_fdim='undef'
-d_fds_bits='define'
-d_fegetround='undef'
-d_ffs='undef'
-d_ffsl='undef'
-d_fgetpos='define'
-d_finite='undef'
-d_finitel='undef'
-d_flexfnam='define'
-d_flock='define'
-d_flockproto='define'
-d_fma='undef'
-d_fmax='undef'
-d_fmin='undef'
-d_fork='undef'
-d_fp_class='undef'
-d_fp_classify='undef'
-d_fp_classl='undef'
-d_fpathconf='undef'
-d_fpclass='undef'
-d_fpclassify='undef'
-d_fpclassl='undef'
-d_fpgetround='undef'
-d_fpos64_t='undef'
-d_freelocale='undef'
-d_frexpl='undef'
-d_fs_data_s='undef'
-d_fseeko='undef'
-d_fsetpos='define'
-d_fstatfs='undef'
-d_fstatvfs='undef'
-d_fsync='undef'
-d_ftello='undef'
-d_ftime='define'
-d_futimes='undef'
-d_gai_strerror='undef'
-d_gdbm_ndbm_h_uses_prototypes='undef'
-d_gdbmndbm_h_uses_prototypes='undef'
-d_getaddrinfo='undef'
-d_getcwd='define'
-d_getenv_preserves_other_thread='define'
-d_getespwnam='undef'
-d_getfsstat='undef'
-d_getgrent='undef'
-d_getgrent_r='undef'
-d_getgrgid_r='undef'
-d_getgrnam_r='undef'
-d_getgrps='undef'
-d_gethbyaddr='define'
-d_gethbyname='define'
-d_gethent='undef'
-d_gethname='define'
-d_gethostbyaddr_r='undef'
-d_gethostbyname_r='undef'
-d_gethostent_r='undef'
-d_gethostprotos='define'
-d_getitimer='undef'
-d_getlogin='define'
-d_getlogin_r='undef'
-d_getmnt='undef'
-d_getmntent='undef'
-d_getnameinfo='undef'
-d_getnbyaddr='undef'
-d_getnbyname='undef'
-d_getnent='undef'
-d_getnetbyaddr_r='undef'
-d_getnetbyname_r='undef'
-d_getnetent_r='undef'
-d_getnetprotos='undef'
-d_getpagsz='undef'
-d_getpbyname='define'
-d_getpbynumber='define'
-d_getpent='undef'
-d_getpgid='undef'
-d_getpgrp='undef'
-d_getpgrp2='undef'
-d_getppid='undef'
-d_getprior='undef'
-d_getprotobyname_r='undef'
-d_getprotobynumber_r='undef'
-d_getprotoent_r='undef'
-d_getprotoprotos='define'
-d_getprpwnam='undef'
-d_getpwent='undef'
-d_getpwent_r='undef'
-d_getpwnam_r='undef'
-d_getpwuid_r='undef'
-d_getsbyname='define'
-d_getsbyport='define'
-d_getsent='undef'
-d_getservbyname_r='undef'
-d_getservbyport_r='undef'
-d_getservent_r='undef'
-d_getservprotos='define'
-d_getspnam='undef'
-d_getspnam_r='undef'
-d_gettimeod='define'
-d_gmtime64='undef'
-d_gmtime_r='undef'
-d_gnulibc='undef'
-d_grpasswd='undef'
-d_has_C_UTF8='undef'
-d_hasmntopt='undef'
-d_htonl='define'
-d_hypot='undef'
-d_ilogb='undef'
-d_ilogbl='undef'
-d_inc_version_list='undef'
-d_index='undef'
-d_inetaton='undef'
-d_inetntop='undef'
-d_inetpton='undef'
-d_int64_t='undef'
-d_ip_mreq='undef'
-d_ip_mreq_source='undef'
-d_ipv6_mreq='undef'
-d_ipv6_mreq_source='undef'
-d_isascii='define'
-d_isblank='undef'
-d_isfinite='undef'
-d_isfinitel='undef'
-d_isinf='undef'
-d_isinfl='undef'
-d_isless='undef'
-d_isnan='define'
-d_isnanl='undef'
-d_isnormal='undef'
-d_j0='undef'
-d_j0l='undef'
-d_killpg='define'
-d_lc_monetary_2008='undef'
-d_lchown='undef'
-d_ldbl_dig='define'
-d_ldexpl='undef'
-d_lgamma='undef'
-d_lgamma_r='undef'
-d_libm_lib_version='undef'
-d_link='define'
-d_linkat='undef'
-d_llrint='undef'
-d_llrintl='undef'
-d_llround='undef'
-d_llroundl='undef'
-d_localeconv_l='undef'
-d_localtime64='undef'
-d_localtime_r='undef'
-d_localtime_r_needs_tzset='undef'
-d_locconv='define'
-d_lockf='undef'
-d_log1p='undef'
-d_log2='undef'
-d_logb='undef'
-d_long_double_style_ieee='undef'
-d_long_double_style_ieee_doubledouble='undef'
-d_long_double_style_ieee_extended='define'
-d_long_double_style_ieee_std='undef'
-d_long_double_style_vax='undef'
-d_longdbl='define'
-d_longlong='undef'
-d_lrint='undef'
-d_lrintl='undef'
-d_lround='undef'
-d_lroundl='undef'
-d_lseekproto='define'
-d_lstat='define'
-d_madvise='undef'
-d_malloc_good_size='undef'
-d_malloc_size='undef'
-d_mblen='define'
-d_mbrlen='undef'
-d_mbrtowc='undef'
-d_mbstowcs='define'
-d_mbtowc='define'
-d_memmem='undef'
-d_memrchr='undef'
-d_mkdir='define'
-d_mkdtemp='undef'
-d_mkfifo='undef'
-d_mkostemp='undef'
-d_mkstemp='undef'
-d_mkstemps='undef'
-d_mktime='define'
-d_mktime64='undef'
-d_mmap='undef'
-d_modfl='undef'
-d_modfl_pow32_bug='undef'
-d_modflproto='undef'
-d_mprotect='undef'
-d_msg='undef'
-d_msg_ctrunc='undef'
-d_msg_dontroute='undef'
-d_msg_oob='undef'
-d_msg_peek='undef'
-d_msg_proxy='undef'
-d_msgctl='undef'
-d_msgget='undef'
-d_msghdr_s='undef'
-d_msgrcv='undef'
-d_msgsnd='undef'
-d_msync='undef'
-d_munmap='undef'
-d_mymalloc='undef'
-d_nan='undef'
-d_nanosleep='undef'
-d_ndbm='undef'
-d_ndbm_h_uses_prototypes='undef'
-d_nearbyint='undef'
-d_newlocale='undef'
-d_nextafter='undef'
-d_nexttoward='undef'
-d_nice='undef'
-d_nl_langinfo='undef'
-d_nl_langinfo_l='undef'
-d_non_int_bitfields='define'
-d_nv_preserves_uv='undef'
-d_nv_zero_is_allbits_zero='define'
-d_off64_t='undef'
-d_old_pthread_create_joinable='undef'
-d_oldpthreads='undef'
-d_oldsock='undef'
-d_open3='undef'
-d_openat='undef'
-d_pathconf='undef'
-d_pause='define'
-d_perl_otherlibdirs='undef'
-d_phostname='undef'
-d_pipe='define'
-d_pipe2='undef'
-d_poll='undef'
-d_portable='define'
-d_prctl='undef'
-d_prctl_set_name='undef'
-d_printf_format_null='undef'
-d_procselfexe='undef'
-d_pseudofork='define'
-d_pthread_atfork='undef'
-d_pthread_attr_setscope='undef'
-d_pthread_yield='undef'
-d_ptrdiff_t='define'
-d_pwage='undef'
-d_pwchange='undef'
-d_pwclass='undef'
-d_pwcomment='undef'
-d_pwexpire='undef'
-d_pwgecos='undef'
-d_pwpasswd='undef'
-d_pwquota='undef'
-d_qgcvt='undef'
-d_quad='define'
-d_querylocale='undef'
-d_random_r='undef'
-d_readdir='define'
-d_readdir64_r='undef'
-d_readdir_r='undef'
-d_readlink='define'
-d_readv='undef'
-d_recvmsg='undef'
-d_regcomp='undef'
-d_remainder='undef'
-d_remquo='undef'
-d_rename='define'
-d_renameat='undef'
-d_rewinddir='define'
-d_rint='undef'
-d_rmdir='define'
-d_round='undef'
-d_sbrkproto='undef'
-d_scalbn='undef'
-d_scalbnl='undef'
-d_sched_yield='undef'
-d_scm_rights='undef'
-d_seekdir='define'
-d_select='define'
-d_sem='undef'
-d_semctl='undef'
-d_semctl_semid_ds='undef'
-d_semctl_semun='undef'
-d_semget='undef'
-d_semop='undef'
-d_sendmsg='undef'
-d_setegid='undef'
-d_setenv='undef'
-d_seteuid='undef'
-d_setgrent='undef'
-d_setgrent_r='undef'
-d_setgrps='undef'
-d_sethent='undef'
-d_sethostent_r='undef'
-d_setitimer='undef'
-d_setlinebuf='undef'
-d_setlocale='define'
-d_setlocale_accepts_any_locale_name='undef'
-d_setlocale_r='undef'
-d_setnent='undef'
-d_setnetent_r='undef'
-d_setpent='undef'
-d_setpgid='undef'
-d_setpgrp='undef'
-d_setpgrp2='undef'
-d_setprior='undef'
-d_setproctitle='undef'
-d_setprotoent_r='undef'
-d_setpwent='undef'
-d_setpwent_r='undef'
-d_setregid='undef'
-d_setresgid='undef'
-d_setresuid='undef'
-d_setreuid='undef'
-d_setrgid='undef'
-d_setruid='undef'
-d_setsent='undef'
-d_setservent_r='undef'
-d_setsid='undef'
-d_setvbuf='define'
-d_shm='undef'
-d_shmat='undef'
-d_shmatprototype='undef'
-d_shmctl='undef'
-d_shmdt='undef'
-d_shmget='undef'
-d_sigaction='undef'
-d_siginfo_si_addr='undef'
-d_siginfo_si_band='undef'
-d_siginfo_si_errno='undef'
-d_siginfo_si_pid='undef'
-d_siginfo_si_status='undef'
-d_siginfo_si_uid='undef'
-d_siginfo_si_value='undef'
-d_signbit='undef'
-d_sigprocmask='undef'
-d_sigsetjmp='undef'
-d_sin6_scope_id='define'
-d_sitearch='define'
-d_snprintf='define'
-d_sockaddr_in6='undef'
-d_sockaddr_sa_len='undef'
-d_sockaddr_storage='define'
-d_sockatmark='undef'
-d_sockatmarkproto='undef'
-d_socket='define'
-d_socklen_t='undef'
-d_sockpair='undef'
-d_socks5_init='undef'
-d_sqrtl='undef'
-d_srand48_r='undef'
-d_srandom_r='undef'
-d_sresgproto='undef'
-d_sresuproto='undef'
-d_stat='define'
-d_statblks='undef'
-d_statfs_f_flags='undef'
-d_statfs_s='undef'
-d_static_inline='define'
-d_statvfs='undef'
-d_stdio_cnt_lval='define'
-d_stdio_ptr_lval='define'
-d_stdio_ptr_lval_nochange_cnt='define'
-d_stdio_ptr_lval_sets_cnt='undef'
-d_stdio_stream_array='undef'
-d_stdiobase='define'
-d_stdstdio='define'
-d_strcoll='define'
-d_strerror_l='undef'
-d_strerror_r='undef'
-d_strftime='define'
-d_strlcat='undef'
-d_strlcpy='undef'
-d_strnlen='undef'
-d_strtod='define'
-d_strtod_l='undef'
-d_strtol='define'
-d_strtold='undef'
-d_strtold_l='undef'
-d_strtoll='define'
-d_strtoq='undef'
-d_strtoul='define'
-d_strtoull='define'
-d_strtouq='undef'
-d_strxfrm='define'
-d_strxfrm_l='undef'
-d_suidsafe='undef'
-d_symlink='define'
-d_syscall='undef'
-d_syscallproto='undef'
-d_sysconf='undef'
-d_sysernlst=''
-d_syserrlst='define'
-d_system='define'
-d_tcgetpgrp='undef'
-d_tcsetpgrp='undef'
-d_telldir='define'
-d_telldirproto='define'
-d_tgamma='undef'
-d_thread_local='undef'
-d_thread_safe_nl_langinfo_l='undef'
-d_time='define'
-d_timegm='undef'
-d_times='define'
-d_tm_tm_gmtoff='undef'
-d_tm_tm_zone='undef'
-d_tmpnam_r='undef'
-d_towlower='undef'
-d_towupper='undef'
-d_trunc='undef'
-d_truncate='undef'
-d_truncl='undef'
-d_ttyname_r='undef'
-d_tzname='define'
-d_u32align='define'
-d_ualarm='undef'
-d_umask='define'
-d_uname='define'
-d_union_semun='define'
-d_unlinkat='undef'
-d_unordered='undef'
-d_unsetenv='undef'
-d_uselocale='undef'
-d_usleep='undef'
-d_usleepproto='undef'
-d_ustat='undef'
-d_vendorarch='undef'
-d_vendorbin='undef'
-d_vendorlib='undef'
-d_vendorscript='undef'
-d_vfork='undef'
-d_void_closedir='undef'
-d_voidsig='define'
-d_voidtty=''
-d_vsnprintf='define'
-d_wait4='undef'
-d_waitpid='define'
-d_wcrtomb='undef'
-d_wcscmp='define'
-d_wcstombs='define'
-d_wcsxfrm='define'
-d_wctomb='define'
-d_writev='undef'
-d_xenix='undef'
-date='date'
-db_hashtype='int'
-db_prefixtype='int'
-db_version_major='0'
-db_version_minor='0'
-db_version_patch='0'
-default_inc_excludes_dot='define'
-direntrytype='struct direct'
-dlext='dll'
-dlsrc='dl_win32.xs'
-doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
-doublekind='3'
-doublemantbits='52'
-doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f'
-doublesize='8'
-drand01='Perl_drand48()'
-drand48_r_proto='0'
-dtrace=''
-dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File XS/APItest XS/Typemap attributes mro re threads threads/shared'
-eagain='EAGAIN'
-ebcdic='undef'
-echo='echo'
-egrep='egrep'
-emacs=''
-endgrent_r_proto='0'
-endhostent_r_proto='0'
-endnetent_r_proto='0'
-endprotoent_r_proto='0'
-endpwent_r_proto='0'
-endservent_r_proto='0'
-eunicefix=':'
-exe_ext='.exe'
-expr='expr'
-extensions='Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
-extern_C='extern'
-extras=''
-fflushNULL='define'
-fflushall='undef'
-find='find'
-firstmakefile='makefile'
-flex=''
-fpossize='8'
-fpostype='fpos_t'
-freetype='void'
-from=':'
-full_ar=''
-full_csh=''
-full_sed=''
-gccansipedantic=''
-gccosandvers=''
-gccversion=''
-getgrent_r_proto='0'
-getgrgid_r_proto='0'
-getgrnam_r_proto='0'
-gethostbyaddr_r_proto='0'
-gethostbyname_r_proto='0'
-gethostent_r_proto='0'
-getlogin_r_proto='0'
-getnetbyaddr_r_proto='0'
-getnetbyname_r_proto='0'
-getnetent_r_proto='0'
-getprotobyname_r_proto='0'
-getprotobynumber_r_proto='0'
-getprotoent_r_proto='0'
-getpwent_r_proto='0'
-getpwnam_r_proto='0'
-getpwuid_r_proto='0'
-getservbyname_r_proto='0'
-getservbyport_r_proto='0'
-getservent_r_proto='0'
-getspnam_r_proto='0'
-gidformat='"ld"'
-gidsign='-1'
-gidsize='4'
-gidtype='gid_t'
-glibpth='/usr/shlib /lib/pa1.1 /usr/lib/large /lib /usr/lib /usr/lib/386 /lib/386 /lib/large /usr/lib/small /lib/small /usr/ccs/lib /usr/ucblib /usr/shlib '
-gmake='gmake'
-gmtime_r_proto='0'
-gnulibc_version=''
-grep='grep'
-groupcat=''
-groupstype='gid_t'
-gzip='gzip'
-h_fcntl='false'
-h_sysfile='true'
-hint='recommended'
-hostcat='ypcat hosts'
-html1dir=' '
-html1direxp=''
-html3dir=' '
-html3direxp=''
-i16size='2'
-i16type='short'
-i32dformat='"ld"'
-i32size='4'
-i32type='long'
-i64size='8'
-i64type='__int64'
-i8size='1'
-i8type='char'
-i_arpainet='define'
-i_bfd='undef'
-i_bsdioctl=''
-i_crypt='undef'
-i_db='undef'
-i_dbm='undef'
-i_dirent='define'
-i_dlfcn='define'
-i_execinfo='undef'
-i_fcntl='define'
-i_fenv='undef'
-i_fp='undef'
-i_fp_class='undef'
-i_gdbm='undef'
-i_gdbm_ndbm='undef'
-i_gdbmndbm='undef'
-i_grp='undef'
-i_ieeefp='undef'
-i_inttypes='undef'
-i_langinfo='undef'
-i_libutil='undef'
-i_limits='define'
-i_locale='define'
-i_machcthr='undef'
-i_malloc='define'
-i_mallocmalloc='undef'
-i_mntent='undef'
-i_ndbm='undef'
-i_netdb='undef'
-i_neterrno='undef'
-i_netinettcp='undef'
-i_niin='undef'
-i_poll='undef'
-i_prot='undef'
-i_pthread='undef'
-i_pwd='undef'
-i_quadmath='undef'
-i_rpcsvcdbm='undef'
-i_sgtty='undef'
-i_shadow='undef'
-i_socks='undef'
-i_stdbool='define'
-i_stdint='define'
-i_stdlib='define'
-i_string='define'
-i_sunmath='undef'
-i_sysaccess='undef'
-i_sysdir='undef'
-i_sysfile='undef'
-i_sysfilio='define'
-i_sysin='undef'
-i_sysioctl='undef'
-i_syslog='undef'
-i_sysmman='undef'
-i_sysmode='undef'
-i_sysmount='undef'
-i_sysndir='undef'
-i_sysparam='undef'
-i_syspoll='undef'
-i_sysresrc='undef'
-i_syssecrt='undef'
-i_sysselct='undef'
-i_syssockio='undef'
-i_sysstat='define'
-i_sysstatfs='undef'
-i_sysstatvfs='undef'
-i_syssyscall='undef'
-i_systime='undef'
-i_systimek='undef'
-i_systimes='undef'
-i_systypes='define'
-i_sysuio='undef'
-i_sysun='undef'
-i_sysutsname='undef'
-i_sysvfs='undef'
-i_syswait='undef'
-i_termio='undef'
-i_termios='undef'
-i_time='define'
-i_unistd='undef'
-i_ustat='undef'
-i_utime='define'
-i_vfork='undef'
-i_wchar='undef'
-i_wctype='undef'
-i_xlocale='undef'
-ignore_versioned_solibs=''
-inc_version_list=''
-inc_version_list_init='0'
-incpath='"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\\include"'
-inews=''
-initialinstalllocation=''
-installarchlib='d:\tlperl\lib'
-installbin='d:\tlperl\bin'
-installhtml1dir=''
-installhtml3dir=''
-installhtmldir='d:\tlperl\html'
-installhtmlhelpdir='d:\tlperl\htmlhelp'
-installman1dir='d:\tlperl\man\man1'
-installman3dir='d:\tlperl\man\man3'
-installprefix='d:\tlperl'
-installprefixexp='d:\tlperl'
-installprivlib='d:\tlperl\lib'
-installscript='d:\tlperl\bin'
-installsitearch='d:\tlperl\site\lib'
-installsitebin='d:\tlperl\bin'
-installsitehtml1dir=''
-installsitehtml3dir=''
-installsitelib='d:\tlperl\site\lib'
-installsiteman1dir=''
-installsiteman3dir=''
-installsitescript=''
-installstyle='lib'
-installusrbinperl='undef'
-installvendorarch=''
-installvendorbin=''
-installvendorhtml1dir=''
-installvendorhtml3dir=''
-installvendorlib=''
-installvendorman1dir=''
-installvendorman3dir=''
-installvendorscript=''
-intsize='4'
-issymlink=''
-ivdformat='"I64d"'
-ivsize='8'
-ivtype='__int64'
-known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
-ksh=''
-ld='link'
-lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"d:\tlperl\lib\CORE" -machine:AMD64 -subsystem:console,"5.02"'
-ldflags='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"d:\tlperl\lib\CORE" -machine:AMD64 -subsystem:console,"5.02"'
-ldflags_uselargefiles=''
-ldlibpthname=''
-less='less'
-lib_ext='.lib'
-libc='ucrt.lib'
-libperl='perl538.lib'
-libpth='"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\\lib\x64"'
-libs='oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib vcruntime.lib ucrt.lib'
-libsdirs=''
-libsfiles=''
-libsfound=''
-libspath=''
-libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
-libswanted_uselargefiles='net socket inet nsl nm ndbm gdbm dbm db malloc dl ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
-line='line'
-lint=''
-lkflags=''
-ln=''
-lns='copy'
-localtime_r_proto='0'
-locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
-loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
-longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
-longdblkind='0'
-longdblmantbits='52'
-longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f'
-longdblsize='8'
-longlongsize='8'
-longsize='4'
-lp=''
-lpr=''
-ls='dir'
-lseeksize='8'
-lseektype='__int64'
-mad='undef'
-mail=''
-mailx=''
-make='nmake'
-make_set_make='#'
-mallocobj='malloc.o'
-mallocsrc='malloc.c'
-malloctype='void *'
-man1dir='d:\tlperl\man\man1'
-man1direxp='d:\tlperl\man\man1'
-man1ext='1'
-man3dir='d:\tlperl\man\man3'
-man3direxp='d:\tlperl\man\man3'
-man3ext='3'
-mips_type=''
-mistrustnm=''
-mkdir='mkdir'
-mmaptype='void *'
-modetype='mode_t'
-more='more /e'
-multiarch='undef'
-mv=''
-myarchname='MSWin32'
-mydomain=''
-myhostname=''
-myuname=''
-n='-n'
-need_va_copy='undef'
-netdb_hlen_type='int'
-netdb_host_type='char *'
-netdb_name_type='char *'
-netdb_net_type='long'
-nm=''
-nm_opt=''
-nm_so_opt=''
-nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version'
-nroff=''
-nvEUformat='"E"'
-nvFUformat='"F"'
-nvGUformat='"G"'
-nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0'
-nv_preserves_uv_bits='53'
-nveformat='"e"'
-nvfformat='"f"'
-nvgformat='"g"'
-nvmantbits='52'
-nvsize='8'
-nvtype='double'
-o_nonblock='O_NONBLOCK'
-obj_ext='.obj'
-old_pthread_create_joinable=''
-optimize='-O1 -Zi -GL -fp:precise'
-orderlib='false'
-osname='MSWin32'
-osvers='10.0.22631.3085'
-otherlibdirs=''
-package='perl5'
-pager='more /e'
-passcat=''
-patchlevel='38'
-path_sep=';'
-perl='perl'
-perl5=''
-perl_patchlevel=''
-perl_static_inline='static __inline'
-perl_thread_local=''
-perladmin=''
-perllibs='oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib vcruntime.lib ucrt.lib'
-perlpath='d:\tlperl\bin\perl.exe'
-pg=''
-phostname='hostname'
-pidtype='int'
-plibpth=''
-pmake=''
-pr=''
-prefix='d:\tlperl'
-prefixexp='d:\tlperl'
-privlib='d:\tlperl\lib'
-privlibexp='d:\tlperl\lib'
-procselfexe=''
-prototype='define'
-ptrsize='8'
-quadkind='5'
-quadtype='__int64'
-randbits='48'
-randfunc='Perl_drand48'
-random_r_proto='0'
-randseedtype='U32'
-ranlib='rem'
-rd_nodata='-1'
-readdir64_r_proto='0'
-readdir_r_proto='0'
-revision='5'
-rm='del'
-rm_try=''
-rmail=''
-run=''
-runnm='true'
-sGMTIME_max='32535291599'
-sGMTIME_min="0"
-sLOCALTIME_max='32535244799'
-sLOCALTIME_min="0"
-sPRIEUldbl='"E"'
-sPRIFUldbl='"F"'
-sPRIGUldbl='"G"'
-sPRIXU64='"I64X"'
-sPRId64='"I64d"'
-sPRIeldbl='"e"'
-sPRIfldbl='"f"'
-sPRIgldbl='"g"'
-sPRIi64='"I64i"'
-sPRIo64='"I64o"'
-sPRIu64='"I64u"'
-sPRIx64='"I64x"'
-sSCNfldbl='"f"'
-sched_yield=''
-scriptdir='d:\tlperl\bin'
-scriptdirexp='d:\tlperl\bin'
-sed='sed'
-seedfunc='Perl_drand48_init'
-selectminbits='32'
-selecttype='Perl_fd_set *'
-sendmail='blat'
-setgrent_r_proto='0'
-sethostent_r_proto='0'
-setlocale_r_proto='0'
-setnetent_r_proto='0'
-setprotoent_r_proto='0'
-setpwent_r_proto='0'
-setservent_r_proto='0'
-sh='cmd /x /c'
-shar=''
-sharpbang='#!'
-shmattype='void *'
-shortsize='2'
-shrpenv=''
-shsharp='true'
-sig_count='26'
-sig_name='ZERO HUP INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE ALRM TERM NUM16 NUM17 NUM18 NUM19 CHLD BREAK ABRT STOP NUM24 CONT CLD'
-sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
-sig_num='0 1 2 21 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20'
-sig_num_init='0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0'
-sig_size='27'
-signal_t='void'
-sitearch='d:\tlperl\site\lib'
-sitearchexp='d:\tlperl\site\lib'
-sitebin='d:\tlperl\site\bin'
-sitebinexp='d:\tlperl\site\bin'
-sitehtml1dir=''
-sitehtml1direxp=''
-sitehtml3dir=''
-sitehtml3direxp=''
-sitelib='d:\tlperl\site\lib'
-sitelib_stem=''
-sitelibexp='d:\tlperl\site\lib'
-siteman1dir=''
-siteman1direxp=''
-siteman3dir=''
-siteman3direxp=''
-siteprefix='d:\tlperl\site'
-siteprefixexp='d:\tlperl\site'
-sitescript=''
-sitescriptexp=''
-sizesize='8'
-sizetype='size_t'
-sleep=''
-smail=''
-so='dll'
-sockethdr=''
-socketlib=''
-socksizetype='int'
-sort='sort'
-spackage='Perl5'
-spitshell=''
-srand48_r_proto='0'
-srandom_r_proto='0'
-src=''
-ssizetype='__int64'
-st_dev_sign='1'
-st_dev_size='4'
-st_ino_sign='1'
-st_ino_size='8'
-startperl='#!perl'
-startsh='#!/bin/sh'
-static_ext='Win32CORE'
-stdchar='char'
-stdio_base='PERLIO_FILE_base(fp)'
-stdio_bufsiz='(PERLIO_FILE_cnt(fp) + PERLIO_FILE_ptr(fp) - PERLIO_FILE_base(fp))'
-stdio_cnt='PERLIO_FILE_cnt(fp)'
-stdio_filbuf=''
-stdio_ptr='PERLIO_FILE_ptr(fp)'
-stdio_stream_array=''
-strerror_r_proto='0'
-strings='/usr/include/string.h'
-submit=''
-subversion='2'
-sysman='/usr/man/man1'
-tail=''
-taint_disabled=''
-taint_support=''
-tar=''
-targetarch=''
-targetsh='cmd /x /c'
-tbl=''
-tee=''
-test=''
-timeincl='/usr/include/sys/time.h '
-timetype='time_t'
-tmpnam_r_proto='0'
-to=':'
-touch='touch'
-tr=''
-trnl='\012'
-troff=''
-ttyname_r_proto='0'
-u16size='2'
-u16type='unsigned short'
-u32XUformat='"lX"'
-u32oformat='"lo"'
-u32size='4'
-u32type='unsigned long'
-u32uformat='"lu"'
-u32xformat='"lx"'
-u64size='8'
-u64type='unsigned __int64'
-u8size='1'
-u8type='unsigned char'
-uidformat='"ld"'
-uidsign='-1'
-uidsize='4'
-uidtype='uid_t'
-uname='uname'
-uniq='uniq'
-uquadtype='unsigned __int64'
-use64bitall='undef'
-use64bitint='define'
-usecbacktrace='undef'
-usecrosscompile='undef'
-usedefaultstrict='undef'
-usedevel='undef'
-usedl='define'
-usedtrace='undef'
-usefaststdio='undef'
-useithreads='define'
-usekernprocpathname='undef'
-uselargefiles='define'
-uselongdouble='undef'
-usemallocwrap='define'
-usemorebits='undef'
-usemultiplicity='define'
-usemymalloc='n'
-usenm='false'
-usensgetexecutablepath='undef'
-useopcode='true'
-useperlio='define'
-useposix='true'
-usequadmath='undef'
-usereentrant='undef'
-userelocatableinc='undef'
-useshrplib='true'
-usesitecustomize='undef'
-usesocks='undef'
-usethreads='define'
-usevendorprefix='undef'
-usevfork='false'
-usrinc='/usr/include'
-uuname=''
-uvXUformat='"I64X"'
-uvoformat='"I64o"'
-uvsize='8'
-uvtype='unsigned __int64'
-uvuformat='"I64u"'
-uvxformat='"I64x"'
-vendorarch=''
-vendorarchexp=''
-vendorbin=''
-vendorbinexp=''
-vendorhtml1dir=' '
-vendorhtml1direxp=''
-vendorhtml3dir=' '
-vendorhtml3direxp=''
-vendorlib=''
-vendorlib_stem=''
-vendorlibexp=''
-vendorman1dir=' '
-vendorman1direxp=''
-vendorman3dir=' '
-vendorman3direxp=''
-vendorprefix=''
-vendorprefixexp=''
-vendorscript=''
-vendorscriptexp=''
-version='5.38.2'
-version_patchlevel_string='version 38 subversion 2'
-versiononly='undef'
-vi=''
-xlibpth='/usr/lib/386 /lib/386'
-xlocale_needed='undef'
-yacc='yacc'
-yaccflags=''
-zcat=''
-zip='zip'
-!END!
-
-my $i = ord(8);
-foreach my $c (7,6,5,4,3,2,1) { $i <<= 8; $i |= ord($c); }
-our $byteorder = join('', unpack('aaaaaaaa', pack('Q', $i)));
-s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m;
-
-{
- # We have to set this up late as Win32 does not build miniperl
- # with the same defines and CC flags as it builds perl itself.
- my $defines = join " ", (Internals::V)[0,1];
- if (
- $defines =~ /\b(SILENT_NO_TAINT_SUPPORT)\b/ ||
- $defines =~ /\b(NO_TAINT_SUPPORT)\b/
- ){
- my $which = $1;
- my $taint_disabled = ($which eq "SILENT_NO_TAINT_SUPPORT")
- ? "silent" : "define";
- s/^(taint_disabled=['"])(["'])/$1$taint_disabled$2/m;
- }
- else {
- my $taint_support = 'define';
- s/^(taint_support=['"])(["'])/$1$taint_support$2/m;
- }
-}
-my $config_sh_len = length $_;
-
-our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL';
-ccflags_nolargefiles='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
-ldflags_nolargefiles='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"d:\tlperl\lib\CORE" -machine:AMD64 -subsystem:console,"5.02"'
-libs_nolargefiles=''
-libswanted_nolargefiles=''
-EOVIRTUAL
-eval {
- # do not have hairy conniptions if this isnt available
- require 'Config_git.pl';
- $Config_SH_expanded .= $Config::Git_Data;
- 1;
-} or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n";
-
-# Search for it in the big string
-sub fetch_string {
- my($self, $key) = @_;
-
- return undef unless my ($quote_type, $value) = $Config_SH_expanded =~ /\n$key=(['"])(.*?)\1\n/s;
-
- # If we had a double-quote, we'd better eval it so escape
- # sequences and such can be interpolated. Since the incoming
- # value is supposed to follow shell rules and not perl rules,
- # we escape any perl variable markers
-
- # Historically, since " 'support' was added in change 1409, the
- # interpolation was done before the undef. Stick to this arguably buggy
- # behaviour as we're refactoring.
- if ($quote_type eq '"') {
- $value =~ s/\$/\\\$/g;
- $value =~ s/\@/\\\@/g;
- eval "\$value = \"$value\"";
- }
-
- # So we can say "if $Config{'foo'}".
- $self->{$key} = $value eq 'undef' ? undef : $value; # cache it
-}
-
-my $prevpos = 0;
-
-sub FIRSTKEY {
- $prevpos = 0;
- substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 );
-}
-
-sub NEXTKEY {
- # Find out how the current key's quoted so we can skip to its end.
- my $quote = substr($Config_SH_expanded,
- index($Config_SH_expanded, "=", $prevpos)+1, 1);
- my $pos = index($Config_SH_expanded, qq($quote\n), $prevpos) + 2;
- my $len = index($Config_SH_expanded, "=", $pos) - $pos;
- $prevpos = $pos;
- $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef;
-}
-
-sub EXISTS {
- return 1 if exists($_[0]->{$_[1]});
-
- return(index($Config_SH_expanded, "\n$_[1]='") != -1
- or index($Config_SH_expanded, "\n$_[1]=\"") != -1
- );
-}
-
-sub STORE { die "\%Config::Config is read-only\n" }
-*DELETE = *CLEAR = \*STORE; # Typeglob aliasing uses less space
-
-sub config_sh {
- substr $Config_SH_expanded, 1, $config_sh_len;
-}
-
-sub config_re {
- my $re = shift;
- return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/,
- $Config_SH_expanded;
-}
-
-sub config_vars {
- # implements -V:cfgvar option (see perlrun -V:)
- foreach (@_) {
- # find optional leading, trailing colons; and query-spec
- my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft,
- # map colon-flags to print decorations
- my $prfx = $notag ? '': "$qry="; # tag-prefix for print
- my $lnend = $lncont ? ' ' : ";\n"; # line ending for print
-
- # all config-vars are by definition \w only, any \W means regex
- if ($qry =~ /\W/) {
- my @matches = config_re($qry);
- print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag;
- print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag;
- } else {
- my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry}
- : 'UNKNOWN';
- $v = 'undef' unless defined $v;
- print "${prfx}'${v}'$lnend";
- }
- }
-}
-
-# Called by the real AUTOLOAD
-sub launcher {
- undef &AUTOLOAD;
- goto \&$Config::AUTOLOAD;
-}
-
-1;
Modified: trunk/Master/tlpkg/tlperl/lib/Config_heavy.pl
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Config_heavy.pl 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Config_heavy.pl 2025-02-24 14:12:21 UTC (rev 74256)
@@ -68,6 +68,8 @@
### Configured by: tex-live at tug.org
### Target system: WIN32
+#perl_lc_all_category_positions_init=
+#perl_lc_all_separator=
our $summary = <<'!END!';
Summary of my $package (revision $revision $version_patchlevel_string) configuration:
@@ -169,18 +171,18 @@
Id='\$Id'
Locker=''
Log='\$Log'
-PATCHLEVEL='38'
+PATCHLEVEL='40'
PERL_API_REVISION='5'
PERL_API_SUBVERSION='0'
-PERL_API_VERSION='38'
+PERL_API_VERSION='40'
PERL_CONFIG_SH='true'
PERL_PATCHLEVEL=''
PERL_REVISION='5'
-PERL_SUBVERSION='2'
-PERL_VERSION='38'
+PERL_SUBVERSION='1'
+PERL_VERSION='40'
RCSfile='\$RCSfile'
Revision='\$Revision'
-SUBVERSION='2'
+SUBVERSION='1'
Source=''
State=''
_a='.lib'
@@ -192,8 +194,8 @@
aphostname=''
api_revision='5'
api_subversion='0'
-api_version='38'
-api_versionstring='5.38.0'
+api_version='40'
+api_versionstring='5.40.0'
ar='lib -ltcg'
archlib='$rootdir\\lib'
archlibexp='$rootdir\\lib'
@@ -216,14 +218,14 @@
cc='cl'
cccdlflags=' '
ccdlflags=' '
-ccflags='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
+ccflags='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
ccflags_uselargefiles=''
ccname='cl'
ccsymbols=''
-ccversion='19.38.33135'
+ccversion='19.42.34436'
cf_by='siepo'
cf_email='tex-live\@tug.org'
-cf_time='Mon Feb 12 11:14:47 2024'
+cf_time='Sat Feb 15 21:04:51 2025'
charbits='8'
chgrp=''
chmod=''
@@ -266,14 +268,14 @@
d_accept4='undef'
d_access='define'
d_accessx='undef'
-d_acosh='undef'
+d_acosh='define'
d_aintl='undef'
d_alarm='define'
d_archlib='define'
d_asctime64='undef'
d_asctime_r='undef'
-d_asinh='undef'
-d_atanh='undef'
+d_asinh='define'
+d_atanh='define'
d_atolf='undef'
d_atoll='define'
d_attribute_always_inline='undef'
@@ -306,8 +308,8 @@
d_clearenv='undef'
d_closedir='define'
d_cmsghdr_s='undef'
-d_copysign='undef'
-d_copysignl='undef'
+d_copysign='define'
+d_copysignl='define'
d_cplusplus='undef'
d_crypt='define'
d_crypt_r='undef'
@@ -359,7 +361,7 @@
d_erf='undef'
d_erfc='undef'
d_eunice='undef'
-d_exp2='undef'
+d_exp2='define'
d_expm1='undef'
d_faststdio='define'
d_fchdir='undef'
@@ -595,6 +597,9 @@
d_openat='undef'
d_pathconf='undef'
d_pause='define'
+d_perl_lc_all_category_positions_init='undef'
+d_perl_lc_all_separator='undef'
+d_perl_lc_all_uses_name_value_pairs='define'
d_perl_otherlibdirs='undef'
d_phostname='undef'
d_pipe='define'
@@ -699,7 +704,7 @@
d_siginfo_si_status='undef'
d_siginfo_si_uid='undef'
d_siginfo_si_value='undef'
-d_signbit='undef'
+d_signbit='define'
d_sigprocmask='undef'
d_sigsetjmp='undef'
d_sin6_scope_id='define'
@@ -763,7 +768,7 @@
d_tcsetpgrp='undef'
d_telldir='define'
d_telldirproto='define'
-d_tgamma='undef'
+d_tgamma='define'
d_thread_local='undef'
d_thread_safe_nl_langinfo_l='undef'
d_time='define'
@@ -774,7 +779,7 @@
d_tmpnam_r='undef'
d_towlower='undef'
d_towupper='undef'
-d_trunc='undef'
+d_trunc='define'
d_truncate='undef'
d_truncl='undef'
d_ttyname_r='undef'
@@ -827,7 +832,7 @@
drand01='Perl_drand48()'
drand48_r_proto='0'
dtrace=''
-dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File XS/APItest XS/Typemap attributes mro re threads threads/shared'
+dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/via SDBM_File Socket Storable Sys/Hostname Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File XS/APItest XS/Typemap attributes mro re threads threads/shared'
eagain='EAGAIN'
ebcdic='undef'
echo='echo'
@@ -842,7 +847,7 @@
eunicefix=':'
exe_ext='.exe'
expr='expr'
-extensions='Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
+extensions='Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Term/Table Test Test/Harness Test/Simple Test2/Suite Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
extern_C='extern'
extras=''
fflushNULL='define'
@@ -998,7 +1003,7 @@
ignore_versioned_solibs=''
inc_version_list=''
inc_version_list_init='0'
-incpath='"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.38.33130\\include"'
+incpath='"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.42.34433\\\\include"'
inews=''
initialinstalllocation=''
installarchlib='$rootdir\\lib'
@@ -1036,7 +1041,7 @@
ivdformat='"I64d"'
ivsize='8'
ivtype='__int64'
-known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
+known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Term/Table Test Test/Harness Test/Simple Test2/Suite Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
ksh=''
ld='link'
lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"$rootdir\\lib\\CORE" -machine:AMD64 -subsystem:console,"5.02"'
@@ -1046,8 +1051,8 @@
less='less'
lib_ext='.lib'
libc='ucrt.lib'
-libperl='perl538.lib'
-libpth='"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.38.33130\\lib\\x64"'
+libperl='perl540.lib'
+libpth='"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.42.34433\\\\lib\\x64"'
libs='oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib vcruntime.lib ucrt.lib'
libsdirs=''
libsfiles=''
@@ -1110,7 +1115,7 @@
nm=''
nm_opt=''
nm_so_opt=''
-nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version'
+nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/scalar PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Term/Table Test Test/Harness Test/Simple Test2/Suite Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version'
nroff=''
nvEUformat='"E"'
nvFUformat='"F"'
@@ -1129,12 +1134,12 @@
optimize='-O1 -Zi -GL -fp:precise'
orderlib='false'
osname='MSWin32'
-osvers='10.0.22631.3085'
+osvers='10.0.26100.3194'
otherlibdirs=''
package='perl5'
pager='more /e'
passcat=''
-patchlevel='38'
+patchlevel='40'
path_sep=';'
perl='perl'
perl5=''
@@ -1270,7 +1275,7 @@
strerror_r_proto='0'
strings='/usr/include/string.h'
submit=''
-subversion='2'
+subversion='1'
sysman='/usr/man/man1'
tail=''
taint_disabled=''
@@ -1367,8 +1372,8 @@
vendorprefixexp=''
vendorscript=''
vendorscriptexp=''
-version='5.38.2'
-version_patchlevel_string='version 38 subversion 2'
+version='5.40.1'
+version_patchlevel_string='version 40 subversion 1'
versiononly='undef'
vi=''
xlibpth='/usr/lib/386 /lib/386'
@@ -1405,7 +1410,7 @@
my $config_sh_len = length $_;
our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL';
-ccflags_nolargefiles='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
+ccflags_nolargefiles='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
ldflags_nolargefiles='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"$rootdir\\lib\\CORE" -machine:AMD64 -subsystem:console,"5.02"'
libs_nolargefiles=''
libswanted_nolargefiles=''
Added: trunk/Master/tlpkg/tlperl/lib/Config_heavy.pl.orig
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Config_heavy.pl.orig (rev 0)
+++ trunk/Master/tlpkg/tlperl/lib/Config_heavy.pl.orig 2025-02-24 14:12:21 UTC (rev 74256)
@@ -0,0 +1,1512 @@
+# This file was created by configpm when Perl was built. Any changes
+# made to this file will be lost the next time perl is built.
+
+package Config;
+use strict;
+use warnings;
+our %Config;
+
+sub bincompat_options {
+ return split ' ', (Internals::V())[0];
+}
+
+sub non_bincompat_options {
+ return split ' ', (Internals::V())[1];
+}
+
+sub compile_date {
+ return (Internals::V())[2]
+}
+
+sub local_patches {
+ my (undef, undef, undef, @patches) = Internals::V();
+ return @patches;
+}
+
+sub _V {
+ die "Perl lib was built for 'MSWin32' but is being run on '$^O'"
+ unless "MSWin32" eq $^O;
+
+ my ($bincompat, $non_bincompat, $date, @patches) = Internals::V();
+
+ my @opts = sort split ' ', "$bincompat $non_bincompat";
+
+ print Config::myconfig();
+ print "\nCharacteristics of this binary (from libperl): \n";
+
+ print " Compile-time options:\n";
+ print " $_\n" for @opts;
+
+ if (@patches) {
+ print " Locally applied patches:\n";
+ print " $_\n" foreach @patches;
+ }
+
+ print " Built under MSWin32\n";
+
+ print " $date\n" if defined $date;
+
+ my @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %ENV;
+
+ if (@env) {
+ print " \%ENV:\n";
+ print " $_\n" foreach @env;
+ }
+ print " \@INC:\n";
+ print " $_\n" foreach @INC;
+}
+
+sub header_files {
+ return qw(EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h
+ dosish.h embed.h embedvar.h form.h gv.h handy.h hv.h hv_func.h
+ intrpvar.h iperlsys.h keywords.h mg.h nostdio.h op.h opcode.h
+ pad.h parser.h patchlevel.h perl.h perlio.h perliol.h perlsdio.h
+ perlvars.h perly.h pp.h pp_proto.h proto.h regcomp.h regexp.h
+ regnodes.h scope.h sv.h thread.h time64.h unixish.h utf8.h
+ util.h);
+}
+
+### Configured by: tex-live at tug.org
+### Target system: WIN32
+#perl_lc_all_category_positions_init=
+#perl_lc_all_separator=
+
+our $summary = <<'!END!';
+Summary of my $package (revision $revision $version_patchlevel_string) configuration:
+ $git_commit_id_title $git_commit_id$git_ancestor_line
+ Platform:
+ osname=$osname
+ osvers=$osvers
+ archname=$archname
+ uname='$myuname'
+ config_args='$config_args'
+ hint=$hint
+ useposix=$useposix
+ d_sigaction=$d_sigaction
+ useithreads=$useithreads
+ usemultiplicity=$usemultiplicity
+ use64bitint=$use64bitint
+ use64bitall=$use64bitall
+ uselongdouble=$uselongdouble
+ usemymalloc=$usemymalloc
+ default_inc_excludes_dot=$default_inc_excludes_dot
+ Compiler:
+ cc='$cc'
+ ccflags ='$ccflags'
+ optimize='$optimize'
+ cppflags='$cppflags'
+ ccversion='$ccversion'
+ gccversion='$gccversion'
+ gccosandvers='$gccosandvers'
+ intsize=$intsize
+ longsize=$longsize
+ ptrsize=$ptrsize
+ doublesize=$doublesize
+ byteorder=$byteorder
+ doublekind=$doublekind
+ d_longlong=$d_longlong
+ longlongsize=$longlongsize
+ d_longdbl=$d_longdbl
+ longdblsize=$longdblsize
+ longdblkind=$longdblkind
+ ivtype='$ivtype'
+ ivsize=$ivsize
+ nvtype='$nvtype'
+ nvsize=$nvsize
+ Off_t='$lseektype'
+ lseeksize=$lseeksize
+ alignbytes=$alignbytes
+ prototype=$prototype
+ Linker and Libraries:
+ ld='$ld'
+ ldflags ='$ldflags'
+ libpth=$libpth
+ libs=$libs
+ perllibs=$perllibs
+ libc=$libc
+ so=$so
+ useshrplib=$useshrplib
+ libperl=$libperl
+ gnulibc_version='$gnulibc_version'
+ Dynamic Linking:
+ dlsrc=$dlsrc
+ dlext=$dlext
+ d_dlsymun=$d_dlsymun
+ ccdlflags='$ccdlflags'
+ cccdlflags='$cccdlflags'
+ lddlflags='$lddlflags'
+
+!END!
+my $summary_expanded;
+
+sub myconfig {
+ return $summary_expanded if $summary_expanded;
+ ($summary_expanded = $summary) =~ s{\$(\w+)}
+ {
+ my $c;
+ if ($1 eq 'git_ancestor_line') {
+ if ($Config::Config{git_ancestor}) {
+ $c= "\n Ancestor: $Config::Config{git_ancestor}";
+ } else {
+ $c= "";
+ }
+ } else {
+ $c = $Config::Config{$1};
+ }
+ defined($c) ? $c : 'undef'
+ }ge;
+ $summary_expanded;
+}
+
+local *_ = \my $a;
+$_ = <<'!END!';
+Author=''
+CONFIG='true'
+Date='$Date'
+Header=''
+Id='$Id'
+Locker=''
+Log='$Log'
+PATCHLEVEL='40'
+PERL_API_REVISION='5'
+PERL_API_SUBVERSION='0'
+PERL_API_VERSION='40'
+PERL_CONFIG_SH='true'
+PERL_PATCHLEVEL=''
+PERL_REVISION='5'
+PERL_SUBVERSION='1'
+PERL_VERSION='40'
+RCSfile='$RCSfile'
+Revision='$Revision'
+SUBVERSION='1'
+Source=''
+State=''
+_a='.lib'
+_exe='.exe'
+_o='.obj'
+afs='false'
+afsroot='/afs'
+alignbytes='8'
+aphostname=''
+api_revision='5'
+api_subversion='0'
+api_version='40'
+api_versionstring='5.40.0'
+ar='lib -ltcg'
+archlib='D:\tlperl\lib'
+archlibexp='D:\tlperl\lib'
+archname='MSWin32-x64-multi-thread'
+archname64=''
+archobjs=''
+asctime_r_proto='0'
+awk='awk'
+baserev='5'
+bash=''
+bin='D:\tlperl\bin'
+binexp='D:\tlperl\bin'
+bison=''
+bootstrap_charset='undef'
+byacc='byacc'
+byteorder='1234'
+c=''
+castflags='0'
+cat='type'
+cc='cl'
+cccdlflags=' '
+ccdlflags=' '
+ccflags='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
+ccflags_uselargefiles=''
+ccname='cl'
+ccsymbols=''
+ccversion='19.42.34436'
+cf_by='siepo'
+cf_email='tex-live at tug.org'
+cf_time='Sat Feb 15 21:04:51 2025'
+charbits='8'
+chgrp=''
+chmod=''
+chown=''
+clocktype='clock_t'
+comm=''
+compress=''
+contains='grep'
+cp='copy'
+cpio=''
+cpp='cl -nologo -E'
+cpp_stuff='42'
+cppccsymbols=''
+cppflags='-DWIN32'
+cpplast=''
+cppminus=''
+cpprun='cl -nologo -E'
+cppstdin='cppstdin'
+cppsymbols=''
+crypt_r_proto='0'
+cryptlib=''
+csh='undef'
+ctermid_r_proto='0'
+ctime_r_proto='0'
+d_Gconvert='sprintf((b),"%.*g",(n),(x))'
+d_PRIEUldbl='undef'
+d_PRIFUldbl='undef'
+d_PRIGUldbl='undef'
+d_PRIXU64='define'
+d_PRId64='define'
+d_PRIeldbl='undef'
+d_PRIfldbl='undef'
+d_PRIgldbl='undef'
+d_PRIi64='define'
+d_PRIo64='define'
+d_PRIu64='define'
+d_PRIx64='define'
+d_SCNfldbl='undef'
+d__fwalk='undef'
+d_accept4='undef'
+d_access='define'
+d_accessx='undef'
+d_acosh='define'
+d_aintl='undef'
+d_alarm='define'
+d_archlib='define'
+d_asctime64='undef'
+d_asctime_r='undef'
+d_asinh='define'
+d_atanh='define'
+d_atolf='undef'
+d_atoll='define'
+d_attribute_always_inline='undef'
+d_attribute_deprecated='undef'
+d_attribute_format='undef'
+d_attribute_malloc='undef'
+d_attribute_nonnull='undef'
+d_attribute_noreturn='undef'
+d_attribute_pure='undef'
+d_attribute_unused='undef'
+d_attribute_visibility='undef'
+d_attribute_warn_unused_result='undef'
+d_backtrace='undef'
+d_bsd='define'
+d_bsdgetpgrp='undef'
+d_bsdsetpgrp='undef'
+d_builtin_add_overflow='undef'
+d_builtin_choose_expr='undef'
+d_builtin_expect='undef'
+d_builtin_mul_overflow='undef'
+d_builtin_sub_overflow='undef'
+d_c99_variadic_macros='undef'
+d_casti32='undef'
+d_castneg='define'
+d_cbrt='undef'
+d_chown='undef'
+d_chroot='undef'
+d_chsize='define'
+d_class='undef'
+d_clearenv='undef'
+d_closedir='define'
+d_cmsghdr_s='undef'
+d_copysign='define'
+d_copysignl='define'
+d_cplusplus='undef'
+d_crypt='define'
+d_crypt_r='undef'
+d_csh='undef'
+d_ctermid='undef'
+d_ctermid_r='undef'
+d_ctime64='undef'
+d_ctime_r='undef'
+d_cuserid='undef'
+d_dbl_dig='define'
+d_dbminitproto='undef'
+d_difftime='define'
+d_difftime64='undef'
+d_dir_dd_fd='undef'
+d_dirfd='undef'
+d_dirnamlen='define'
+d_dladdr='undef'
+d_dlerror='define'
+d_dlopen='define'
+d_dlsymun='undef'
+d_dosuid='undef'
+d_double_has_inf='define'
+d_double_has_nan='define'
+d_double_has_negative_zero='define'
+d_double_has_subnormals='define'
+d_double_style_cray='undef'
+d_double_style_ibm='undef'
+d_double_style_ieee='define'
+d_double_style_vax='undef'
+d_drand48_r='undef'
+d_drand48proto='undef'
+d_dup2='define'
+d_dup3='undef'
+d_duplocale='undef'
+d_eaccess='undef'
+d_endgrent='undef'
+d_endgrent_r='undef'
+d_endhent='undef'
+d_endhostent_r='undef'
+d_endnent='undef'
+d_endnetent_r='undef'
+d_endpent='undef'
+d_endprotoent_r='undef'
+d_endpwent='undef'
+d_endpwent_r='undef'
+d_endsent='undef'
+d_endservent_r='undef'
+d_eofnblk='define'
+d_erf='undef'
+d_erfc='undef'
+d_eunice='undef'
+d_exp2='define'
+d_expm1='undef'
+d_faststdio='define'
+d_fchdir='undef'
+d_fchmod='undef'
+d_fchmodat='undef'
+d_fchown='undef'
+d_fcntl='undef'
+d_fcntl_can_lock='undef'
+d_fd_macros='define'
+d_fd_set='define'
+d_fdclose='undef'
+d_fdim='undef'
+d_fds_bits='define'
+d_fegetround='undef'
+d_ffs='undef'
+d_ffsl='undef'
+d_fgetpos='define'
+d_finite='undef'
+d_finitel='undef'
+d_flexfnam='define'
+d_flock='define'
+d_flockproto='define'
+d_fma='undef'
+d_fmax='undef'
+d_fmin='undef'
+d_fork='undef'
+d_fp_class='undef'
+d_fp_classify='undef'
+d_fp_classl='undef'
+d_fpathconf='undef'
+d_fpclass='undef'
+d_fpclassify='undef'
+d_fpclassl='undef'
+d_fpgetround='undef'
+d_fpos64_t='undef'
+d_freelocale='undef'
+d_frexpl='undef'
+d_fs_data_s='undef'
+d_fseeko='undef'
+d_fsetpos='define'
+d_fstatfs='undef'
+d_fstatvfs='undef'
+d_fsync='undef'
+d_ftello='undef'
+d_ftime='define'
+d_futimes='undef'
+d_gai_strerror='undef'
+d_gdbm_ndbm_h_uses_prototypes='undef'
+d_gdbmndbm_h_uses_prototypes='undef'
+d_getaddrinfo='undef'
+d_getcwd='define'
+d_getenv_preserves_other_thread='define'
+d_getespwnam='undef'
+d_getfsstat='undef'
+d_getgrent='undef'
+d_getgrent_r='undef'
+d_getgrgid_r='undef'
+d_getgrnam_r='undef'
+d_getgrps='undef'
+d_gethbyaddr='define'
+d_gethbyname='define'
+d_gethent='undef'
+d_gethname='define'
+d_gethostbyaddr_r='undef'
+d_gethostbyname_r='undef'
+d_gethostent_r='undef'
+d_gethostprotos='define'
+d_getitimer='undef'
+d_getlogin='define'
+d_getlogin_r='undef'
+d_getmnt='undef'
+d_getmntent='undef'
+d_getnameinfo='undef'
+d_getnbyaddr='undef'
+d_getnbyname='undef'
+d_getnent='undef'
+d_getnetbyaddr_r='undef'
+d_getnetbyname_r='undef'
+d_getnetent_r='undef'
+d_getnetprotos='undef'
+d_getpagsz='undef'
+d_getpbyname='define'
+d_getpbynumber='define'
+d_getpent='undef'
+d_getpgid='undef'
+d_getpgrp='undef'
+d_getpgrp2='undef'
+d_getppid='undef'
+d_getprior='undef'
+d_getprotobyname_r='undef'
+d_getprotobynumber_r='undef'
+d_getprotoent_r='undef'
+d_getprotoprotos='define'
+d_getprpwnam='undef'
+d_getpwent='undef'
+d_getpwent_r='undef'
+d_getpwnam_r='undef'
+d_getpwuid_r='undef'
+d_getsbyname='define'
+d_getsbyport='define'
+d_getsent='undef'
+d_getservbyname_r='undef'
+d_getservbyport_r='undef'
+d_getservent_r='undef'
+d_getservprotos='define'
+d_getspnam='undef'
+d_getspnam_r='undef'
+d_gettimeod='define'
+d_gmtime64='undef'
+d_gmtime_r='undef'
+d_gnulibc='undef'
+d_grpasswd='undef'
+d_has_C_UTF8='undef'
+d_hasmntopt='undef'
+d_htonl='define'
+d_hypot='undef'
+d_ilogb='undef'
+d_ilogbl='undef'
+d_inc_version_list='undef'
+d_index='undef'
+d_inetaton='undef'
+d_inetntop='undef'
+d_inetpton='undef'
+d_int64_t='undef'
+d_ip_mreq='undef'
+d_ip_mreq_source='undef'
+d_ipv6_mreq='undef'
+d_ipv6_mreq_source='undef'
+d_isascii='define'
+d_isblank='undef'
+d_isfinite='undef'
+d_isfinitel='undef'
+d_isinf='undef'
+d_isinfl='undef'
+d_isless='undef'
+d_isnan='define'
+d_isnanl='undef'
+d_isnormal='undef'
+d_j0='undef'
+d_j0l='undef'
+d_killpg='define'
+d_lc_monetary_2008='undef'
+d_lchown='undef'
+d_ldbl_dig='define'
+d_ldexpl='undef'
+d_lgamma='undef'
+d_lgamma_r='undef'
+d_libm_lib_version='undef'
+d_link='define'
+d_linkat='undef'
+d_llrint='undef'
+d_llrintl='undef'
+d_llround='undef'
+d_llroundl='undef'
+d_localeconv_l='undef'
+d_localtime64='undef'
+d_localtime_r='undef'
+d_localtime_r_needs_tzset='undef'
+d_locconv='define'
+d_lockf='undef'
+d_log1p='undef'
+d_log2='undef'
+d_logb='undef'
+d_long_double_style_ieee='undef'
+d_long_double_style_ieee_doubledouble='undef'
+d_long_double_style_ieee_extended='define'
+d_long_double_style_ieee_std='undef'
+d_long_double_style_vax='undef'
+d_longdbl='define'
+d_longlong='undef'
+d_lrint='undef'
+d_lrintl='undef'
+d_lround='undef'
+d_lroundl='undef'
+d_lseekproto='define'
+d_lstat='define'
+d_madvise='undef'
+d_malloc_good_size='undef'
+d_malloc_size='undef'
+d_mblen='define'
+d_mbrlen='undef'
+d_mbrtowc='undef'
+d_mbstowcs='define'
+d_mbtowc='define'
+d_memmem='undef'
+d_memrchr='undef'
+d_mkdir='define'
+d_mkdtemp='undef'
+d_mkfifo='undef'
+d_mkostemp='undef'
+d_mkstemp='undef'
+d_mkstemps='undef'
+d_mktime='define'
+d_mktime64='undef'
+d_mmap='undef'
+d_modfl='undef'
+d_modfl_pow32_bug='undef'
+d_modflproto='undef'
+d_mprotect='undef'
+d_msg='undef'
+d_msg_ctrunc='undef'
+d_msg_dontroute='undef'
+d_msg_oob='undef'
+d_msg_peek='undef'
+d_msg_proxy='undef'
+d_msgctl='undef'
+d_msgget='undef'
+d_msghdr_s='undef'
+d_msgrcv='undef'
+d_msgsnd='undef'
+d_msync='undef'
+d_munmap='undef'
+d_mymalloc='undef'
+d_nan='undef'
+d_nanosleep='undef'
+d_ndbm='undef'
+d_ndbm_h_uses_prototypes='undef'
+d_nearbyint='undef'
+d_newlocale='undef'
+d_nextafter='undef'
+d_nexttoward='undef'
+d_nice='undef'
+d_nl_langinfo='undef'
+d_nl_langinfo_l='undef'
+d_non_int_bitfields='define'
+d_nv_preserves_uv='undef'
+d_nv_zero_is_allbits_zero='define'
+d_off64_t='undef'
+d_old_pthread_create_joinable='undef'
+d_oldpthreads='undef'
+d_oldsock='undef'
+d_open3='undef'
+d_openat='undef'
+d_pathconf='undef'
+d_pause='define'
+d_perl_lc_all_category_positions_init='undef'
+d_perl_lc_all_separator='undef'
+d_perl_lc_all_uses_name_value_pairs='define'
+d_perl_otherlibdirs='undef'
+d_phostname='undef'
+d_pipe='define'
+d_pipe2='undef'
+d_poll='undef'
+d_portable='define'
+d_prctl='undef'
+d_prctl_set_name='undef'
+d_printf_format_null='undef'
+d_procselfexe='undef'
+d_pseudofork='define'
+d_pthread_atfork='undef'
+d_pthread_attr_setscope='undef'
+d_pthread_yield='undef'
+d_ptrdiff_t='define'
+d_pwage='undef'
+d_pwchange='undef'
+d_pwclass='undef'
+d_pwcomment='undef'
+d_pwexpire='undef'
+d_pwgecos='undef'
+d_pwpasswd='undef'
+d_pwquota='undef'
+d_qgcvt='undef'
+d_quad='define'
+d_querylocale='undef'
+d_random_r='undef'
+d_readdir='define'
+d_readdir64_r='undef'
+d_readdir_r='undef'
+d_readlink='define'
+d_readv='undef'
+d_recvmsg='undef'
+d_regcomp='undef'
+d_remainder='undef'
+d_remquo='undef'
+d_rename='define'
+d_renameat='undef'
+d_rewinddir='define'
+d_rint='undef'
+d_rmdir='define'
+d_round='undef'
+d_sbrkproto='undef'
+d_scalbn='undef'
+d_scalbnl='undef'
+d_sched_yield='undef'
+d_scm_rights='undef'
+d_seekdir='define'
+d_select='define'
+d_sem='undef'
+d_semctl='undef'
+d_semctl_semid_ds='undef'
+d_semctl_semun='undef'
+d_semget='undef'
+d_semop='undef'
+d_sendmsg='undef'
+d_setegid='undef'
+d_setenv='undef'
+d_seteuid='undef'
+d_setgrent='undef'
+d_setgrent_r='undef'
+d_setgrps='undef'
+d_sethent='undef'
+d_sethostent_r='undef'
+d_setitimer='undef'
+d_setlinebuf='undef'
+d_setlocale='define'
+d_setlocale_accepts_any_locale_name='undef'
+d_setlocale_r='undef'
+d_setnent='undef'
+d_setnetent_r='undef'
+d_setpent='undef'
+d_setpgid='undef'
+d_setpgrp='undef'
+d_setpgrp2='undef'
+d_setprior='undef'
+d_setproctitle='undef'
+d_setprotoent_r='undef'
+d_setpwent='undef'
+d_setpwent_r='undef'
+d_setregid='undef'
+d_setresgid='undef'
+d_setresuid='undef'
+d_setreuid='undef'
+d_setrgid='undef'
+d_setruid='undef'
+d_setsent='undef'
+d_setservent_r='undef'
+d_setsid='undef'
+d_setvbuf='define'
+d_shm='undef'
+d_shmat='undef'
+d_shmatprototype='undef'
+d_shmctl='undef'
+d_shmdt='undef'
+d_shmget='undef'
+d_sigaction='undef'
+d_siginfo_si_addr='undef'
+d_siginfo_si_band='undef'
+d_siginfo_si_errno='undef'
+d_siginfo_si_pid='undef'
+d_siginfo_si_status='undef'
+d_siginfo_si_uid='undef'
+d_siginfo_si_value='undef'
+d_signbit='define'
+d_sigprocmask='undef'
+d_sigsetjmp='undef'
+d_sin6_scope_id='define'
+d_sitearch='define'
+d_snprintf='define'
+d_sockaddr_in6='undef'
+d_sockaddr_sa_len='undef'
+d_sockaddr_storage='define'
+d_sockatmark='undef'
+d_sockatmarkproto='undef'
+d_socket='define'
+d_socklen_t='undef'
+d_sockpair='undef'
+d_socks5_init='undef'
+d_sqrtl='undef'
+d_srand48_r='undef'
+d_srandom_r='undef'
+d_sresgproto='undef'
+d_sresuproto='undef'
+d_stat='define'
+d_statblks='undef'
+d_statfs_f_flags='undef'
+d_statfs_s='undef'
+d_static_inline='define'
+d_statvfs='undef'
+d_stdio_cnt_lval='define'
+d_stdio_ptr_lval='define'
+d_stdio_ptr_lval_nochange_cnt='define'
+d_stdio_ptr_lval_sets_cnt='undef'
+d_stdio_stream_array='undef'
+d_stdiobase='define'
+d_stdstdio='define'
+d_strcoll='define'
+d_strerror_l='undef'
+d_strerror_r='undef'
+d_strftime='define'
+d_strlcat='undef'
+d_strlcpy='undef'
+d_strnlen='undef'
+d_strtod='define'
+d_strtod_l='undef'
+d_strtol='define'
+d_strtold='undef'
+d_strtold_l='undef'
+d_strtoll='define'
+d_strtoq='undef'
+d_strtoul='define'
+d_strtoull='define'
+d_strtouq='undef'
+d_strxfrm='define'
+d_strxfrm_l='undef'
+d_suidsafe='undef'
+d_symlink='define'
+d_syscall='undef'
+d_syscallproto='undef'
+d_sysconf='undef'
+d_sysernlst=''
+d_syserrlst='define'
+d_system='define'
+d_tcgetpgrp='undef'
+d_tcsetpgrp='undef'
+d_telldir='define'
+d_telldirproto='define'
+d_tgamma='define'
+d_thread_local='undef'
+d_thread_safe_nl_langinfo_l='undef'
+d_time='define'
+d_timegm='undef'
+d_times='define'
+d_tm_tm_gmtoff='undef'
+d_tm_tm_zone='undef'
+d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
+d_trunc='define'
+d_truncate='undef'
+d_truncl='undef'
+d_ttyname_r='undef'
+d_tzname='define'
+d_u32align='define'
+d_ualarm='undef'
+d_umask='define'
+d_uname='define'
+d_union_semun='define'
+d_unlinkat='undef'
+d_unordered='undef'
+d_unsetenv='undef'
+d_uselocale='undef'
+d_usleep='undef'
+d_usleepproto='undef'
+d_ustat='undef'
+d_vendorarch='undef'
+d_vendorbin='undef'
+d_vendorlib='undef'
+d_vendorscript='undef'
+d_vfork='undef'
+d_void_closedir='undef'
+d_voidsig='define'
+d_voidtty=''
+d_vsnprintf='define'
+d_wait4='undef'
+d_waitpid='define'
+d_wcrtomb='undef'
+d_wcscmp='define'
+d_wcstombs='define'
+d_wcsxfrm='define'
+d_wctomb='define'
+d_writev='undef'
+d_xenix='undef'
+date='date'
+db_hashtype='int'
+db_prefixtype='int'
+db_version_major='0'
+db_version_minor='0'
+db_version_patch='0'
+default_inc_excludes_dot='define'
+direntrytype='struct direct'
+dlext='dll'
+dlsrc='dl_win32.xs'
+doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
+doublekind='3'
+doublemantbits='52'
+doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f'
+doublesize='8'
+drand01='Perl_drand48()'
+drand48_r_proto='0'
+dtrace=''
+dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/via SDBM_File Socket Storable Sys/Hostname Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File XS/APItest XS/Typemap attributes mro re threads threads/shared'
+eagain='EAGAIN'
+ebcdic='undef'
+echo='echo'
+egrep='egrep'
+emacs=''
+endgrent_r_proto='0'
+endhostent_r_proto='0'
+endnetent_r_proto='0'
+endprotoent_r_proto='0'
+endpwent_r_proto='0'
+endservent_r_proto='0'
+eunicefix=':'
+exe_ext='.exe'
+expr='expr'
+extensions='Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Term/Table Test Test/Harness Test/Simple Test2/Suite Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
+extern_C='extern'
+extras=''
+fflushNULL='define'
+fflushall='undef'
+find='find'
+firstmakefile='makefile'
+flex=''
+fpossize='8'
+fpostype='fpos_t'
+freetype='void'
+from=':'
+full_ar=''
+full_csh=''
+full_sed=''
+gccansipedantic=''
+gccosandvers=''
+gccversion=''
+getgrent_r_proto='0'
+getgrgid_r_proto='0'
+getgrnam_r_proto='0'
+gethostbyaddr_r_proto='0'
+gethostbyname_r_proto='0'
+gethostent_r_proto='0'
+getlogin_r_proto='0'
+getnetbyaddr_r_proto='0'
+getnetbyname_r_proto='0'
+getnetent_r_proto='0'
+getprotobyname_r_proto='0'
+getprotobynumber_r_proto='0'
+getprotoent_r_proto='0'
+getpwent_r_proto='0'
+getpwnam_r_proto='0'
+getpwuid_r_proto='0'
+getservbyname_r_proto='0'
+getservbyport_r_proto='0'
+getservent_r_proto='0'
+getspnam_r_proto='0'
+gidformat='"ld"'
+gidsign='-1'
+gidsize='4'
+gidtype='gid_t'
+glibpth='/usr/shlib /lib/pa1.1 /usr/lib/large /lib /usr/lib /usr/lib/386 /lib/386 /lib/large /usr/lib/small /lib/small /usr/ccs/lib /usr/ucblib /usr/shlib '
+gmake='gmake'
+gmtime_r_proto='0'
+gnulibc_version=''
+grep='grep'
+groupcat=''
+groupstype='gid_t'
+gzip='gzip'
+h_fcntl='false'
+h_sysfile='true'
+hint='recommended'
+hostcat='ypcat hosts'
+html1dir=' '
+html1direxp=''
+html3dir=' '
+html3direxp=''
+i16size='2'
+i16type='short'
+i32dformat='"ld"'
+i32size='4'
+i32type='long'
+i64size='8'
+i64type='__int64'
+i8size='1'
+i8type='char'
+i_arpainet='define'
+i_bfd='undef'
+i_bsdioctl=''
+i_crypt='undef'
+i_db='undef'
+i_dbm='undef'
+i_dirent='define'
+i_dlfcn='define'
+i_execinfo='undef'
+i_fcntl='define'
+i_fenv='undef'
+i_fp='undef'
+i_fp_class='undef'
+i_gdbm='undef'
+i_gdbm_ndbm='undef'
+i_gdbmndbm='undef'
+i_grp='undef'
+i_ieeefp='undef'
+i_inttypes='undef'
+i_langinfo='undef'
+i_libutil='undef'
+i_limits='define'
+i_locale='define'
+i_machcthr='undef'
+i_malloc='define'
+i_mallocmalloc='undef'
+i_mntent='undef'
+i_ndbm='undef'
+i_netdb='undef'
+i_neterrno='undef'
+i_netinettcp='undef'
+i_niin='undef'
+i_poll='undef'
+i_prot='undef'
+i_pthread='undef'
+i_pwd='undef'
+i_quadmath='undef'
+i_rpcsvcdbm='undef'
+i_sgtty='undef'
+i_shadow='undef'
+i_socks='undef'
+i_stdbool='define'
+i_stdint='define'
+i_stdlib='define'
+i_string='define'
+i_sunmath='undef'
+i_sysaccess='undef'
+i_sysdir='undef'
+i_sysfile='undef'
+i_sysfilio='define'
+i_sysin='undef'
+i_sysioctl='undef'
+i_syslog='undef'
+i_sysmman='undef'
+i_sysmode='undef'
+i_sysmount='undef'
+i_sysndir='undef'
+i_sysparam='undef'
+i_syspoll='undef'
+i_sysresrc='undef'
+i_syssecrt='undef'
+i_sysselct='undef'
+i_syssockio='undef'
+i_sysstat='define'
+i_sysstatfs='undef'
+i_sysstatvfs='undef'
+i_syssyscall='undef'
+i_systime='undef'
+i_systimek='undef'
+i_systimes='undef'
+i_systypes='define'
+i_sysuio='undef'
+i_sysun='undef'
+i_sysutsname='undef'
+i_sysvfs='undef'
+i_syswait='undef'
+i_termio='undef'
+i_termios='undef'
+i_time='define'
+i_unistd='undef'
+i_ustat='undef'
+i_utime='define'
+i_vfork='undef'
+i_wchar='undef'
+i_wctype='undef'
+i_xlocale='undef'
+ignore_versioned_solibs=''
+inc_version_list=''
+inc_version_list_init='0'
+incpath='"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.42.34433\\include"'
+inews=''
+initialinstalllocation=''
+installarchlib='D:\tlperl\lib'
+installbin='D:\tlperl\bin'
+installhtml1dir=''
+installhtml3dir=''
+installhtmldir='D:\tlperl\html'
+installhtmlhelpdir='D:\tlperl\htmlhelp'
+installman1dir='D:\tlperl\man\man1'
+installman3dir='D:\tlperl\man\man3'
+installprefix='D:\tlperl'
+installprefixexp='D:\tlperl'
+installprivlib='D:\tlperl\lib'
+installscript='D:\tlperl\bin'
+installsitearch='D:\tlperl\site\lib'
+installsitebin='D:\tlperl\bin'
+installsitehtml1dir=''
+installsitehtml3dir=''
+installsitelib='D:\tlperl\site\lib'
+installsiteman1dir=''
+installsiteman3dir=''
+installsitescript=''
+installstyle='lib'
+installusrbinperl='undef'
+installvendorarch=''
+installvendorbin=''
+installvendorhtml1dir=''
+installvendorhtml3dir=''
+installvendorlib=''
+installvendorman1dir=''
+installvendorman3dir=''
+installvendorscript=''
+intsize='4'
+issymlink=''
+ivdformat='"I64d"'
+ivsize='8'
+ivtype='__int64'
+known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Term/Table Test Test/Harness Test/Simple Test2/Suite Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
+ksh=''
+ld='link'
+lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"D:\tlperl\lib\CORE" -machine:AMD64 -subsystem:console,"5.02"'
+ldflags='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"D:\tlperl\lib\CORE" -machine:AMD64 -subsystem:console,"5.02"'
+ldflags_uselargefiles=''
+ldlibpthname=''
+less='less'
+lib_ext='.lib'
+libc='ucrt.lib'
+libperl='perl540.lib'
+libpth='"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.42.34433\\lib\x64"'
+libs='oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib vcruntime.lib ucrt.lib'
+libsdirs=''
+libsfiles=''
+libsfound=''
+libspath=''
+libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
+libswanted_uselargefiles='net socket inet nsl nm ndbm gdbm dbm db malloc dl ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
+line='line'
+lint=''
+lkflags=''
+ln=''
+lns='copy'
+localtime_r_proto='0'
+locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
+loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
+longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
+longdblkind='0'
+longdblmantbits='52'
+longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f'
+longdblsize='8'
+longlongsize='8'
+longsize='4'
+lp=''
+lpr=''
+ls='dir'
+lseeksize='8'
+lseektype='__int64'
+mad='undef'
+mail=''
+mailx=''
+make='nmake'
+make_set_make='#'
+mallocobj='malloc.o'
+mallocsrc='malloc.c'
+malloctype='void *'
+man1dir='D:\tlperl\man\man1'
+man1direxp='D:\tlperl\man\man1'
+man1ext='1'
+man3dir='D:\tlperl\man\man3'
+man3direxp='D:\tlperl\man\man3'
+man3ext='3'
+mips_type=''
+mistrustnm=''
+mkdir='mkdir'
+mmaptype='void *'
+modetype='mode_t'
+more='more /e'
+multiarch='undef'
+mv=''
+myarchname='MSWin32'
+mydomain=''
+myhostname=''
+myuname=''
+n='-n'
+need_va_copy='undef'
+netdb_hlen_type='int'
+netdb_host_type='char *'
+netdb_name_type='char *'
+netdb_net_type='long'
+nm=''
+nm_opt=''
+nm_so_opt=''
+nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/scalar PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Term/Table Test Test/Harness Test/Simple Test2/Suite Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version'
+nroff=''
+nvEUformat='"E"'
+nvFUformat='"F"'
+nvGUformat='"G"'
+nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0'
+nv_preserves_uv_bits='53'
+nveformat='"e"'
+nvfformat='"f"'
+nvgformat='"g"'
+nvmantbits='52'
+nvsize='8'
+nvtype='double'
+o_nonblock='O_NONBLOCK'
+obj_ext='.obj'
+old_pthread_create_joinable=''
+optimize='-O1 -Zi -GL -fp:precise'
+orderlib='false'
+osname='MSWin32'
+osvers='10.0.26100.3194'
+otherlibdirs=''
+package='perl5'
+pager='more /e'
+passcat=''
+patchlevel='40'
+path_sep=';'
+perl='perl'
+perl5=''
+perl_patchlevel=''
+perl_static_inline='static __inline'
+perl_thread_local=''
+perladmin=''
+perllibs='oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib vcruntime.lib ucrt.lib'
+perlpath='D:\tlperl\bin\perl.exe'
+pg=''
+phostname='hostname'
+pidtype='int'
+plibpth=''
+pmake=''
+pr=''
+prefix='D:\tlperl'
+prefixexp='D:\tlperl'
+privlib='D:\tlperl\lib'
+privlibexp='D:\tlperl\lib'
+procselfexe=''
+prototype='define'
+ptrsize='8'
+quadkind='5'
+quadtype='__int64'
+randbits='48'
+randfunc='Perl_drand48'
+random_r_proto='0'
+randseedtype='U32'
+ranlib='rem'
+rd_nodata='-1'
+readdir64_r_proto='0'
+readdir_r_proto='0'
+revision='5'
+rm='del'
+rm_try=''
+rmail=''
+run=''
+runnm='true'
+sGMTIME_max='32535291599'
+sGMTIME_min="0"
+sLOCALTIME_max='32535244799'
+sLOCALTIME_min="0"
+sPRIEUldbl='"E"'
+sPRIFUldbl='"F"'
+sPRIGUldbl='"G"'
+sPRIXU64='"I64X"'
+sPRId64='"I64d"'
+sPRIeldbl='"e"'
+sPRIfldbl='"f"'
+sPRIgldbl='"g"'
+sPRIi64='"I64i"'
+sPRIo64='"I64o"'
+sPRIu64='"I64u"'
+sPRIx64='"I64x"'
+sSCNfldbl='"f"'
+sched_yield=''
+scriptdir='D:\tlperl\bin'
+scriptdirexp='D:\tlperl\bin'
+sed='sed'
+seedfunc='Perl_drand48_init'
+selectminbits='32'
+selecttype='Perl_fd_set *'
+sendmail='blat'
+setgrent_r_proto='0'
+sethostent_r_proto='0'
+setlocale_r_proto='0'
+setnetent_r_proto='0'
+setprotoent_r_proto='0'
+setpwent_r_proto='0'
+setservent_r_proto='0'
+sh='cmd /x /c'
+shar=''
+sharpbang='#!'
+shmattype='void *'
+shortsize='2'
+shrpenv=''
+shsharp='true'
+sig_count='26'
+sig_name='ZERO HUP INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE ALRM TERM NUM16 NUM17 NUM18 NUM19 CHLD BREAK ABRT STOP NUM24 CONT CLD'
+sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
+sig_num='0 1 2 21 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20'
+sig_num_init='0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0'
+sig_size='27'
+signal_t='void'
+sitearch='D:\tlperl\site\lib'
+sitearchexp='D:\tlperl\site\lib'
+sitebin='D:\tlperl\site\bin'
+sitebinexp='D:\tlperl\site\bin'
+sitehtml1dir=''
+sitehtml1direxp=''
+sitehtml3dir=''
+sitehtml3direxp=''
+sitelib='D:\tlperl\site\lib'
+sitelib_stem=''
+sitelibexp='D:\tlperl\site\lib'
+siteman1dir=''
+siteman1direxp=''
+siteman3dir=''
+siteman3direxp=''
+siteprefix='D:\tlperl\site'
+siteprefixexp='D:\tlperl\site'
+sitescript=''
+sitescriptexp=''
+sizesize='8'
+sizetype='size_t'
+sleep=''
+smail=''
+so='dll'
+sockethdr=''
+socketlib=''
+socksizetype='int'
+sort='sort'
+spackage='Perl5'
+spitshell=''
+srand48_r_proto='0'
+srandom_r_proto='0'
+src=''
+ssizetype='__int64'
+st_dev_sign='1'
+st_dev_size='4'
+st_ino_sign='1'
+st_ino_size='8'
+startperl='#!perl'
+startsh='#!/bin/sh'
+static_ext='Win32CORE'
+stdchar='char'
+stdio_base='PERLIO_FILE_base(fp)'
+stdio_bufsiz='(PERLIO_FILE_cnt(fp) + PERLIO_FILE_ptr(fp) - PERLIO_FILE_base(fp))'
+stdio_cnt='PERLIO_FILE_cnt(fp)'
+stdio_filbuf=''
+stdio_ptr='PERLIO_FILE_ptr(fp)'
+stdio_stream_array=''
+strerror_r_proto='0'
+strings='/usr/include/string.h'
+submit=''
+subversion='1'
+sysman='/usr/man/man1'
+tail=''
+taint_disabled=''
+taint_support=''
+tar=''
+targetarch=''
+targetsh='cmd /x /c'
+tbl=''
+tee=''
+test=''
+timeincl='/usr/include/sys/time.h '
+timetype='time_t'
+tmpnam_r_proto='0'
+to=':'
+touch='touch'
+tr=''
+trnl='\012'
+troff=''
+ttyname_r_proto='0'
+u16size='2'
+u16type='unsigned short'
+u32XUformat='"lX"'
+u32oformat='"lo"'
+u32size='4'
+u32type='unsigned long'
+u32uformat='"lu"'
+u32xformat='"lx"'
+u64size='8'
+u64type='unsigned __int64'
+u8size='1'
+u8type='unsigned char'
+uidformat='"ld"'
+uidsign='-1'
+uidsize='4'
+uidtype='uid_t'
+uname='uname'
+uniq='uniq'
+uquadtype='unsigned __int64'
+use64bitall='undef'
+use64bitint='define'
+usecbacktrace='undef'
+usecrosscompile='undef'
+usedefaultstrict='undef'
+usedevel='undef'
+usedl='define'
+usedtrace='undef'
+usefaststdio='undef'
+useithreads='define'
+usekernprocpathname='undef'
+uselargefiles='define'
+uselongdouble='undef'
+usemallocwrap='define'
+usemorebits='undef'
+usemultiplicity='define'
+usemymalloc='n'
+usenm='false'
+usensgetexecutablepath='undef'
+useopcode='true'
+useperlio='define'
+useposix='true'
+usequadmath='undef'
+usereentrant='undef'
+userelocatableinc='undef'
+useshrplib='true'
+usesitecustomize='undef'
+usesocks='undef'
+usethreads='define'
+usevendorprefix='undef'
+usevfork='false'
+usrinc='/usr/include'
+uuname=''
+uvXUformat='"I64X"'
+uvoformat='"I64o"'
+uvsize='8'
+uvtype='unsigned __int64'
+uvuformat='"I64u"'
+uvxformat='"I64x"'
+vendorarch=''
+vendorarchexp=''
+vendorbin=''
+vendorbinexp=''
+vendorhtml1dir=' '
+vendorhtml1direxp=''
+vendorhtml3dir=' '
+vendorhtml3direxp=''
+vendorlib=''
+vendorlib_stem=''
+vendorlibexp=''
+vendorman1dir=' '
+vendorman1direxp=''
+vendorman3dir=' '
+vendorman3direxp=''
+vendorprefix=''
+vendorprefixexp=''
+vendorscript=''
+vendorscriptexp=''
+version='5.40.1'
+version_patchlevel_string='version 40 subversion 1'
+versiononly='undef'
+vi=''
+xlibpth='/usr/lib/386 /lib/386'
+xlocale_needed='undef'
+yacc='yacc'
+yaccflags=''
+zcat=''
+zip='zip'
+!END!
+
+my $i = ord(8);
+foreach my $c (7,6,5,4,3,2,1) { $i <<= 8; $i |= ord($c); }
+our $byteorder = join('', unpack('aaaaaaaa', pack('Q', $i)));
+s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m;
+
+{
+ # We have to set this up late as Win32 does not build miniperl
+ # with the same defines and CC flags as it builds perl itself.
+ my $defines = join " ", (Internals::V)[0,1];
+ if (
+ $defines =~ /\b(SILENT_NO_TAINT_SUPPORT)\b/ ||
+ $defines =~ /\b(NO_TAINT_SUPPORT)\b/
+ ){
+ my $which = $1;
+ my $taint_disabled = ($which eq "SILENT_NO_TAINT_SUPPORT")
+ ? "silent" : "define";
+ s/^(taint_disabled=['"])(["'])/$1$taint_disabled$2/m;
+ }
+ else {
+ my $taint_support = 'define';
+ s/^(taint_support=['"])(["'])/$1$taint_support$2/m;
+ }
+}
+my $config_sh_len = length $_;
+
+our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL';
+ccflags_nolargefiles='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
+ldflags_nolargefiles='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"D:\tlperl\lib\CORE" -machine:AMD64 -subsystem:console,"5.02"'
+libs_nolargefiles=''
+libswanted_nolargefiles=''
+EOVIRTUAL
+eval {
+ # do not have hairy conniptions if this isnt available
+ require 'Config_git.pl';
+ $Config_SH_expanded .= $Config::Git_Data;
+ 1;
+} or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n";
+
+# Search for it in the big string
+sub fetch_string {
+ my($self, $key) = @_;
+
+ return undef unless my ($quote_type, $value) = $Config_SH_expanded =~ /\n$key=(['"])(.*?)\1\n/s;
+
+ # If we had a double-quote, we'd better eval it so escape
+ # sequences and such can be interpolated. Since the incoming
+ # value is supposed to follow shell rules and not perl rules,
+ # we escape any perl variable markers
+
+ # Historically, since " 'support' was added in change 1409, the
+ # interpolation was done before the undef. Stick to this arguably buggy
+ # behaviour as we're refactoring.
+ if ($quote_type eq '"') {
+ $value =~ s/\$/\\\$/g;
+ $value =~ s/\@/\\\@/g;
+ eval "\$value = \"$value\"";
+ }
+
+ # So we can say "if $Config{'foo'}".
+ $self->{$key} = $value eq 'undef' ? undef : $value; # cache it
+}
+
+my $prevpos = 0;
+
+sub FIRSTKEY {
+ $prevpos = 0;
+ substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 );
+}
+
+sub NEXTKEY {
+ # Find out how the current key's quoted so we can skip to its end.
+ my $quote = substr($Config_SH_expanded,
+ index($Config_SH_expanded, "=", $prevpos)+1, 1);
+ my $pos = index($Config_SH_expanded, qq($quote\n), $prevpos) + 2;
+ my $len = index($Config_SH_expanded, "=", $pos) - $pos;
+ $prevpos = $pos;
+ $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef;
+}
+
+sub EXISTS {
+ return 1 if exists($_[0]->{$_[1]});
+
+ return(index($Config_SH_expanded, "\n$_[1]='") != -1
+ or index($Config_SH_expanded, "\n$_[1]=\"") != -1
+ );
+}
+
+sub STORE { die "\%Config::Config is read-only\n" }
+*DELETE = *CLEAR = \*STORE; # Typeglob aliasing uses less space
+
+sub config_sh {
+ substr $Config_SH_expanded, 1, $config_sh_len;
+}
+
+sub config_re {
+ my $re = shift;
+ return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/,
+ $Config_SH_expanded;
+}
+
+sub config_vars {
+ # implements -V:cfgvar option (see perlrun -V:)
+ foreach (@_) {
+ # find optional leading, trailing colons; and query-spec
+ my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft,
+ # map colon-flags to print decorations
+ my $prfx = $notag ? '': "$qry="; # tag-prefix for print
+ my $lnend = $lncont ? ' ' : ";\n"; # line ending for print
+
+ # all config-vars are by definition \w only, any \W means regex
+ if ($qry =~ /\W/) {
+ my @matches = config_re($qry);
+ print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag;
+ print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag;
+ } else {
+ my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry}
+ : 'UNKNOWN';
+ $v = 'undef' unless defined $v;
+ print "${prfx}'${v}'$lnend";
+ }
+ }
+}
+
+# Called by the real AUTOLOAD
+sub launcher {
+ undef &AUTOLOAD;
+ goto \&$Config::AUTOLOAD;
+}
+
+1;
Property changes on: trunk/Master/tlpkg/tlperl/lib/Config_heavy.pl.orig
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: trunk/Master/tlpkg/tlperl/lib/Cwd.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Cwd.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Cwd.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -3,7 +3,7 @@
use Exporter;
-our $VERSION = '3.89';
+our $VERSION = '3.91';
my $xs_version = $VERSION;
$VERSION =~ tr/_//d;
Modified: trunk/Master/tlpkg/tlperl/lib/Data/Dumper.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Data/Dumper.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Data/Dumper.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -30,7 +30,7 @@
our ( @ISA, @EXPORT, @EXPORT_OK, $VERSION );
BEGIN {
- $VERSION = '2.188'; # Don't forget to set version and release
+ $VERSION = '2.189'; # Don't forget to set version and release
# date in POD below!
@ISA = qw(Exporter);
@@ -924,7 +924,7 @@
Returns a newly created C<Data::Dumper> object. The first argument is an
anonymous array of values to be dumped. The optional second argument is an
anonymous array of names for the values. The names need not have a leading
-C<$> sign, and must be comprised of alphanumeric characters. You can begin
+C<$> sign, and must be composed of alphanumeric characters. You can begin
a name with a C<*> to specify that the dereferenced type must be dumped
instead of the reference itself, for ARRAY and HASH references.
@@ -1455,7 +1455,7 @@
=head1 VERSION
-Version 2.188
+Version 2.189
=head1 SEE ALSO
Modified: trunk/Master/tlpkg/tlperl/lib/Devel/PPPort.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Devel/PPPort.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Devel/PPPort.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -527,6 +527,7 @@
PERL_SHORT_MAX
PERL_SHORT_MIN
PERL_SIGNALS_UNSAFE_FLAG
+ PERL_STACK_OFFSET_DEFINED
PERL_STATIC_INLINE
PERL_UCHAR_MAX
PERL_UCHAR_MIN
@@ -624,6 +625,8 @@
REPLACEMENT_CHARACTER_UTF8
RESTORE_LC_NUMERIC
SAVE_DEFSV
+ Stack_off_t
+ Stack_off_t_MAX
START_EXTERN_C
START_MY_CXT
start_subparse
@@ -632,6 +635,7 @@
STORE_LC_NUMERIC_SET_STANDARD
STORE_NUMERIC_SET_STANDARD
STR_WITH_LEN
+ sv_2pv
sv_2pvbyte
sv_2pvbyte_nolen
sv_2pv_flags
@@ -3918,6 +3922,9 @@
NUM2PTR (undocumented)
PERLIO_FUNCS_CAST (undocumented)
PERLIO_FUNCS_DECL (undocumented)
+ PERL_STACK_OFFSET_DEFINED (undocumented)
+ Stack_off_t (undocumented)
+ Stack_off_t_MAX (undocumented)
STORE_LC_NUMERIC_SET_STANDARD (undocumented)
STORE_NUMERIC_SET_STANDARD (undocumented)
SvPV_flags_const_nolen (undocumented)
@@ -3978,7 +3985,7 @@
use strict;
use vars qw($VERSION $data);
-$VERSION = '3.71';
+$VERSION = '3.72';
sub _init_data
{
@@ -11102,6 +11109,7 @@
PerlSock_socketpair|5.005000||Viu
PerlSock_socketpair_cloexec|5.027008||Viu
Perl_sqrt|5.006000|5.006000|n
+PERL_STACK_OFFSET_DEFINED|||piu
PERL_STACK_OVERFLOW_CHECK|5.006000||Viu
PERL_STATIC_FORCE_INLINE|5.031011||Viu
PERL_STATIC_FORCE_INLINE_NO_RET|5.031011||Viu
@@ -12910,6 +12918,8 @@
SSPUSHUV|5.013001||Viu
ST|5.003007|5.003007|
stack_grow|5.003007||cVu
+Stack_off_t_MAX|||piu
+Stack_off_t|||piu
STANDARD_C|5.003007||Viu
STAR|5.003007||Viu
STAR_t8|5.035004||Viu
@@ -13035,7 +13045,7 @@
sv_2num|5.010000||xVi
sv_2nv|5.013001||Viu
sv_2nv_flags|5.013001|5.013001|
-sv_2pv|5.005000||cVu
+sv_2pv|5.005000||pcVu
sv_2pvbyte|5.006000|5.003007|p
sv_2pvbyte_flags|5.031004|5.031004|u
sv_2pvbyte_nolen|5.009003||pcV
@@ -15582,7 +15592,7 @@
#define DPPP_CAT2(x,y) CAT2(x,y)
#define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)
-#define D_PPP_RELEASE_DATE 1647561600 /* 2022-03-18 */
+#define D_PPP_RELEASE_DATE 1693785600 /* 2023-09-04 */
#if ! defined(PERL_REVISION) && ! defined(PERL_VERSION_MAJOR)
# if ! defined(__PATCHLEVEL_H_INCLUDED__) \
@@ -15694,8 +15704,8 @@
* is in ASCII and EBCDIC respectively */
#ifndef PERL_VERSION_EQ
# define PERL_VERSION_EQ(j,n,p) \
- (((p) == '*') ? ( (j) == D_PPP_VERSION_MAJOR \
- && (n) == D_PPP_VERSION_MINOR) \
+ (((p) == '*') ? ( (j) == D_PPP_MAJOR \
+ && (n) == D_PPP_MINOR) \
: (PERL_BCDVERSION == D_PPP_JNP_TO_BCD(j,n,p)))
#endif
@@ -15704,7 +15714,7 @@
#endif
#ifndef PERL_VERSION_LT
# define PERL_VERSION_LT(j,n,p) /* p=='*' means _LT(j,n,0) */ \
- (PERL_BCDVERSION < D_PPP_JNP_TO_BCD( (j), \
+ (PERL_BCDVERSION < D_PPP_JNP_TO_BCD( (j), \
(n), \
(((p) == '*') ? 0 : (p))))
#endif
@@ -15713,10 +15723,10 @@
# define PERL_VERSION_GE(j,n,p) (! PERL_VERSION_LT(j,n,p))
#endif
#ifndef PERL_VERSION_LE
-# define PERL_VERSION_LE(j,n,p) /* p=='*' means _LT(j,n+1,0) */ \
- (PERL_BCDVERSION < D_PPP_JNP_TO_BCD( (j), \
- (((p) == '*') ? ((n)+1) : (n)), \
- (((p) == '*') ? 0 : (p))))
+# define PERL_VERSION_LE(j,n,p) /* p=='*' means _LE(j,n,999) */ \
+ (PERL_BCDVERSION <= D_PPP_JNP_TO_BCD( (j), \
+ (n), \
+ (((p) == '*') ? 999 : (p))))
#endif
#ifndef PERL_VERSION_GT
@@ -16785,6 +16795,12 @@
# define PTR2ul(p) INT2PTR(unsigned long,p)
# endif
#endif
+
+#ifndef PERL_STACK_OFFSET_DEFINED
+ typedef I32 Stack_off_t;
+# define Stack_off_t_MAX I32_MAX
+# define PERL_STACK_OFFSET_DEFINED
+#endif
#ifndef PTR2nat
# define PTR2nat(p) (PTRV)(p)
#endif
@@ -16805,19 +16821,40 @@
# define PTR2NV(p) NUM2PTR(NV,p)
#endif
+#ifdef __cplusplus
#undef START_EXTERN_C
+#ifndef START_EXTERN_C
+# define START_EXTERN_C extern "C" {
+#endif
+
#undef END_EXTERN_C
+#ifndef END_EXTERN_C
+# define END_EXTERN_C }
+#endif
+
#undef EXTERN_C
-#ifdef __cplusplus
-# define START_EXTERN_C extern "C" {
-# define END_EXTERN_C }
-# define EXTERN_C extern "C"
+#ifndef EXTERN_C
+# define EXTERN_C extern "C"
+#endif
+
#else
+#undef START_EXTERN_C
+#ifndef START_EXTERN_C
# define START_EXTERN_C
+#endif
+
+#undef END_EXTERN_C
+#ifndef END_EXTERN_C
# define END_EXTERN_C
-# define EXTERN_C extern
#endif
+#undef EXTERN_C
+#ifndef EXTERN_C
+# define EXTERN_C extern
+#endif
+
+#endif
+
#if (PERL_BCDVERSION < 0x5004000) || defined(PERL_GCC_PEDANTIC)
# ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN
#ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN
@@ -16835,15 +16872,29 @@
# endif
#endif
+#if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__)
#undef STMT_START
+#ifndef STMT_START
+# define STMT_START if (1)
+#endif
+
#undef STMT_END
-#if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__)
-# define STMT_START if (1)
-# define STMT_END else (void)0
+#ifndef STMT_END
+# define STMT_END else (void)0
+#endif
+
#else
-# define STMT_START do
-# define STMT_END while (0)
+#undef STMT_START
+#ifndef STMT_START
+# define STMT_START do
#endif
+
+#undef STMT_END
+#ifndef STMT_END
+# define STMT_END while (0)
+#endif
+
+#endif
#ifndef boolSV
# define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no)
#endif
@@ -16934,13 +16985,16 @@
#endif
#if (PERL_BCDVERSION < 0x5005000)
-# undef XSRETURN
-# define XSRETURN(off) \
+#undef XSRETURN
+#ifndef XSRETURN
+# define XSRETURN(off) \
STMT_START { \
PL_stack_sp = PL_stack_base + ax + ((off) - 1); \
return; \
} STMT_END
#endif
+
+#endif
#ifndef XSPROTO
# define XSPROTO(name) void name(pTHX_ CV* cv)
#endif
@@ -17747,7 +17801,8 @@
# define isPRINT_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, PRINT)
#endif
-# undef isPSXSPC_utf8_safe /* Use the modern definition */
+/* Use the modern definition */
+#undef isPSXSPC_utf8_safe
#ifndef isPSXSPC_utf8_safe
# define isPSXSPC_utf8_safe(s,e) isSPACE_utf8_safe(s,e)
#endif
@@ -17871,7 +17926,8 @@
# define isPRINT_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, PRINT)
#endif
-# undef isPSXSPC_LC_utf8_safe /* Use the modern definition */
+/* Use the modern definition */
+#undef isPSXSPC_LC_utf8_safe
#ifndef isPSXSPC_LC_utf8_safe
# define isPSXSPC_LC_utf8_safe(s,e) isSPACE_LC_utf8_safe(s,e)
#endif
@@ -18414,13 +18470,39 @@
# define SV_COW_SHARED_HASH_KEYS 0
#endif
+#if (PERL_BCDVERSION < 0x5007002)
+#
+/* Fix sv_2pv for Perl < 5.7.2 - view https://github.com/Dual-Life/Devel-PPPort/issues/231 */
+
+# ifdef sv_2pv
+# undef sv_2pv
+# endif
+
+# if defined(PERL_USE_GCC_BRACE_GROUPS)
+#ifndef sv_2pv
+# define sv_2pv(sv, lp) ({ SV *_sv_2pv = (sv); STRLEN sv_2pv_dummy_; STRLEN *_lp_2pv = (lp); _lp_2pv = _lp_2pv ? : &sv_2pv_dummy_; SvPOKp(_sv_2pv) ? ((*(_lp_2pv) = SvCUR(_sv_2pv)), SvPVX(_sv_2pv)) : Perl_sv_2pv(aTHX_ _sv_2pv, (_lp_2pv)); })
+#endif
+
+# else
+#ifndef sv_2pv
+# define sv_2pv(sv, lp) (SvPOKp(sv) ? ((*((lp) ? (lp) : &PL_na) = SvCUR(sv)), SvPVX(sv)) : Perl_sv_2pv(aTHX_ (sv), (lp)))
+#endif
+
+# endif
+
+#endif
+
+#if (PERL_BCDVERSION < 0x5007002)
+
+/* Define sv_2pv_flags for Perl < 5.7.2 which does not have it at all */
+
#if defined(PERL_USE_GCC_BRACE_GROUPS)
#ifndef sv_2pv_flags
-# define sv_2pv_flags(sv, lp, flags) ({ SV *_sv = (sv); const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &PL_na; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_2pv(_sv, _lp); SvGMAGICAL_on(_sv); _pv; }) : sv_2pv(_sv, _lp); })
+# define sv_2pv_flags(sv, lp, flags) ({ SV *_sv = (sv); STRLEN sv_2pv_dummy_; const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &sv_2pv_dummy_; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_2pv(_sv, _lp); SvGMAGICAL_on(_sv); _pv; }) : sv_2pv(_sv, _lp); })
#endif
#ifndef sv_pvn_force_flags
-# define sv_pvn_force_flags(sv, lp, flags) ({ SV *_sv = (sv); const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &PL_na; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_pvn_force(_sv, _lp); SvGMAGICAL_on(_sv); _pv; }) : sv_pvn_force(_sv, _lp); })
+# define sv_pvn_force_flags(sv, lp, flags) ({ SV *_sv = (sv); STRLEN sv_2pv_dummy_; const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &sv_2pv_dummy_; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_pvn_force(_sv, _lp); SvGMAGICAL_on(_sv); _pv; }) : sv_pvn_force(_sv, _lp); })
#endif
#else
@@ -18434,6 +18516,28 @@
#endif
+#elif (PERL_BCDVERSION < 0x5017002)
+
+/* Fix sv_2pv_flags for Perl < 5.17.2 */
+
+# ifdef sv_2pv_flags
+# undef sv_2pv_flags
+# endif
+
+# if defined(PERL_USE_GCC_BRACE_GROUPS)
+#ifndef sv_2pv_flags
+# define sv_2pv_flags(sv, lp, flags) ({ SV *_sv_2pv = (sv); STRLEN sv_2pv_dummy_; const I32 _flags_2pv = (flags); STRLEN *_lp_2pv = (lp); _lp_2pv = _lp_2pv ? : &sv_2pv_dummy_; ((!(_flags_2pv & SV_GMAGIC) || !SvGMAGICAL(_sv_2pv)) && SvPOKp(_sv_2pv)) ? ((*(_lp_2pv) = SvCUR(_sv_2pv)), SvPVX(_sv_2pv)) : Perl_sv_2pv_flags(aTHX_ _sv_2pv, (_lp_2pv), (_flags_2pv)); })
+#endif
+
+# else
+#ifndef sv_2pv_flags
+# define sv_2pv_flags(sv, lp, flags) (((!((flags) & SV_GMAGIC) || !SvGMAGICAL(sv)) && SvPOKp(sv)) ? ((*((lp) ? (lp) : &PL_na) = SvCUR(sv)), SvPVX(sv)) : Perl_sv_2pv_flags(aTHX_ (sv), (lp), (flags)))
+#endif
+
+# endif
+
+#endif
+
#if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) )
# define D_PPP_SVPV_NOLEN_LP_ARG &PL_na
#else
Modified: trunk/Master/tlpkg/tlperl/lib/Devel/Peek.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Devel/Peek.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Devel/Peek.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -3,7 +3,7 @@
package Devel::Peek;
-$VERSION = '1.33';
+$VERSION = '1.34';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
Modified: trunk/Master/tlpkg/tlperl/lib/DynaLoader.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/DynaLoader.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/DynaLoader.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -18,7 +18,7 @@
# Tim.Bunce at ig.co.uk, August 1994
BEGIN {
- our $VERSION = '1.54';
+ our $VERSION = '1.56';
}
# Note: in almost any other piece of code "our" would have been a better
Modified: trunk/Master/tlpkg/tlperl/lib/Encode/Supported.pod
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Encode/Supported.pod 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Encode/Supported.pod 2025-02-24 14:12:21 UTC (rev 74256)
@@ -315,7 +315,7 @@
posix-bc
----------------------------------------------------------------
-=item Encode::Symbols
+=item Encode::Symbol
For symbols and dingbats.
Modified: trunk/Master/tlpkg/tlperl/lib/Encode.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Encode.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Encode.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,5 +1,5 @@
#
-# $Id: Encode.pm,v 3.19 2022/08/04 04:42:30 dankogai Exp $
+# $Id: Encode.pm,v 3.21 2024/02/25 22:17:32 dankogai Exp $
#
package Encode;
use strict;
@@ -7,7 +7,7 @@
use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG};
our $VERSION;
BEGIN {
- $VERSION = sprintf "%d.%02d", q$Revision: 3.19 $ =~ /(\d+)/g;
+ $VERSION = sprintf "%d.%02d", q$Revision: 3.21 $ =~ /(\d+)/g;
require XSLoader;
XSLoader::load( __PACKAGE__, $VERSION );
}
@@ -431,10 +431,10 @@
match to I<MIME_ENCODING>. So as opposite of C<find_encoding()>
canonical names and aliases are not used when searching for object.
- find_mime_encoding("utf8"); # returns undef because "utf8" is not valid I<MIME_ENCODING>
+ find_mime_encoding("utf8"); # returns undef because "utf8" is not a valid MIME_ENCODING
find_mime_encoding("utf-8"); # returns encode object "utf-8-strict"
- find_mime_encoding("UTF-8"); # same as "utf-8" because I<MIME_ENCODING> is case insensitive
- find_mime_encoding("utf-8-strict"); returns undef because "utf-8-strict" is not valid I<MIME_ENCODING>
+ find_mime_encoding("UTF-8"); # same as "utf-8" because MIME_ENCODING is case insensitive
+ find_mime_encoding("utf-8-strict"); returns undef because "utf-8-strict" is not a valid MIME_ENCODING
=head3 from_to
@@ -645,7 +645,7 @@
=head3 FB_DEFAULT
- I<CHECK> = Encode::FB_DEFAULT ( == 0)
+ CHECK = Encode::FB_DEFAULT ( == 0)
If I<CHECK> is 0, encoding and decoding replace any malformed character
with a I<substitution character>. When you encode, I<SUBCHAR> is used.
@@ -655,7 +655,7 @@
=head3 FB_CROAK
- I<CHECK> = Encode::FB_CROAK ( == 1)
+ CHECK = Encode::FB_CROAK ( == 1)
If I<CHECK> is 1, methods immediately die with an error
message. Therefore, when I<CHECK> is 1, you should trap
@@ -663,7 +663,7 @@
=head3 FB_QUIET
- I<CHECK> = Encode::FB_QUIET
+ CHECK = Encode::FB_QUIET
If I<CHECK> is set to C<Encode::FB_QUIET>, encoding and decoding immediately
return the portion of the data that has been processed so far when an
@@ -682,7 +682,7 @@
=head3 FB_WARN
- I<CHECK> = Encode::FB_WARN
+ CHECK = Encode::FB_WARN
This is the same as C<FB_QUIET> above, except that instead of being silent
on errors, it issues a warning. This is handy for when you are debugging.
@@ -780,7 +780,7 @@
=head1 The UTF8 flag
-Before the introduction of Unicode support in Perl, The C<eq> operator
+Before the introduction of Unicode support in Perl, the C<eq> operator
just compared the strings represented by two scalars. Beginning with
Perl 5.8, C<eq> compares two strings with simultaneous consideration of
I<the UTF8 flag>. To explain why we made it so, I quote from page 402 of
Modified: trunk/Master/tlpkg/tlperl/lib/Errno.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Errno.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Errno.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -10,10 +10,10 @@
use Config;
"$Config{'archname'}-$Config{'osvers'}" eq
-"MSWin32-x64-multi-thread-10.0.22631.3085" or
- die "Errno architecture (MSWin32-x64-multi-thread-10.0.22631.3085) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})";
+"MSWin32\-x64\-multi\-thread-10\.0\.26100\.3194" or
+ die "Errno architecture (MSWin32\-x64\-multi\-thread-10\.0\.26100\.3194) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})";
-our $VERSION = "1.37";
+our $VERSION = "1.38";
$VERSION = eval $VERSION;
my %err;
Modified: trunk/Master/tlpkg/tlperl/lib/Exporter/Heavy.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Exporter/Heavy.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Exporter/Heavy.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,7 +4,7 @@
no strict 'refs';
# On one line so MakeMaker will see it.
-our $VERSION = '5.77';
+our $VERSION = '5.78';
=head1 NAME
Modified: trunk/Master/tlpkg/tlperl/lib/Exporter.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Exporter.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Exporter.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -6,7 +6,7 @@
our $Debug = 0;
our $ExportLevel = 0;
our $Verbose ||= 0;
-our $VERSION = '5.77';
+our $VERSION = '5.78';
our %Cache;
sub as_heavy {
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Base.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Base.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Base.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -9,7 +9,7 @@
use IPC::Cmd qw(can_run);
use File::Temp qw(tempfile);
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
# More details about C/C++ compilers:
# http://developers.sun.com/sunstudio/documentation/product/compiler.jsp
@@ -202,10 +202,16 @@
binmode $FH;
if ( $is_cplusplus ) {
- print $FH "class Bogus { public: int boot_compilet() { return 1; } };\n";
+ print $FH q<namespace Bogus { extern "C" int boot_compilet() { return 1; } };> . "\n";
}
else {
- print $FH "int boot_compilet() { return 1; }\n";
+ # Use extern "C" if "cc" was set to a C++ compiler.
+ print $FH <<EOF;
+#ifdef __cplusplus
+extern "C"
+#endif
+int boot_compilet(void) { return 1; }
+EOF
}
close $FH;
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Unix.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Unix.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Unix.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,7 +4,7 @@
use strict;
use ExtUtils::CBuilder::Base;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Base);
sub link_executable {
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/VMS.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/VMS.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/VMS.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,7 +4,7 @@
use strict;
use ExtUtils::CBuilder::Base;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Base);
use File::Spec::Functions qw(catfile catdir);
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,6 +1,6 @@
package ExtUtils::CBuilder::Platform::Windows::BCC;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
use strict;
use warnings;
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,6 +1,6 @@
package ExtUtils::CBuilder::Platform::Windows::GCC;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
use warnings;
use strict;
@@ -47,22 +47,13 @@
$path = "-L$path";
}
- my @cmds; # Stores the series of commands needed to build the module.
-
- my $DLLTOOL = $cf->{dlltool} || 'dlltool';
-
- push @cmds, [
- $DLLTOOL, '--def' , $spec{def_file},
- '--output-exp' , $spec{explib}
- ];
-
# split off any -arguments included in ld
my @ld = split / (?=-)/, $spec{ld};
- push @cmds, [ grep {defined && length} (
+ return [ grep {defined && length} (
@ld ,
+ $spec{def_file} ,
'-o', $spec{output} ,
- "-Wl,--base-file,$spec{base_file}" ,
"-Wl,--enable-auto-image-base" ,
@{$spec{lddlflags}} ,
@{$spec{libpath}} ,
@@ -71,32 +62,8 @@
@{$spec{other_ldflags}} ,
$spec{libperl} ,
@{$spec{perllibs}} ,
- $spec{explib} ,
$spec{map_file} ? ('-Map', $spec{map_file}) : ''
) ];
-
- push @cmds, [
- $DLLTOOL, '--def' , $spec{def_file},
- '--output-exp' , $spec{explib},
- '--base-file' , $spec{base_file}
- ];
-
- push @cmds, [ grep {defined && length} (
- @ld ,
- '-o', $spec{output} ,
- "-Wl,--enable-auto-image-base" ,
- @{$spec{lddlflags}} ,
- @{$spec{libpath}} ,
- @{$spec{startup}} ,
- @{$spec{objects}} ,
- @{$spec{other_ldflags}} ,
- $spec{libperl} ,
- @{$spec{perllibs}} ,
- $spec{explib} ,
- $spec{map_file} ? ('-Map', $spec{map_file}) : ''
- ) ];
-
- return @cmds;
}
sub write_linker_script {
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,6 +1,6 @@
package ExtUtils::CBuilder::Platform::Windows::MSVC;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
use warnings;
use strict;
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -8,7 +8,7 @@
use ExtUtils::CBuilder::Base;
use IO::File;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Base);
=begin comment
@@ -238,7 +238,7 @@
my @cmds = $self->format_linker_cmd(%spec);
while ( my $cmd = shift @cmds ) {
- $self->do_system( @$cmd );
+ $self->do_system( @$cmd ) or die "error building $output from @objects"
}
$spec{output} =~ tr/'"//d;
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/aix.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/aix.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/aix.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -5,7 +5,7 @@
use ExtUtils::CBuilder::Platform::Unix;
use File::Spec;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub need_prelink { 1 }
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/android.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/android.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/android.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -6,7 +6,7 @@
use ExtUtils::CBuilder::Platform::Unix;
use Config;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
# The Android linker will not recognize symbols from
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/cygwin.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/cygwin.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/cygwin.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -5,7 +5,7 @@
use File::Spec;
use ExtUtils::CBuilder::Platform::Unix;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
# TODO: If a specific exe_file name is requested, if the exe created
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/darwin.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/darwin.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/darwin.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -5,7 +5,7 @@
use ExtUtils::CBuilder::Platform::Unix;
use Config;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
my ($osver) = split /\./, $Config{osvers};
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/dec_osf.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/dec_osf.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -5,7 +5,7 @@
use ExtUtils::CBuilder::Platform::Unix;
use File::Spec;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub link_executable {
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/os2.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/os2.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/os2.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,7 +4,7 @@
use strict;
use ExtUtils::CBuilder::Platform::Unix;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub need_prelink { 1 }
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -7,7 +7,7 @@
use warnings;
use strict;
-our $VERSION = '0.280238'; # VERSION
+our $VERSION = '0.280240'; # VERSION
our @ISA;
# We only use this once - don't waste a symbol table entry on it.
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/MANIFEST.SKIP
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/MANIFEST.SKIP 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/MANIFEST.SKIP 2025-02-24 14:12:21 UTC (rev 74256)
@@ -9,6 +9,8 @@
\B\.gitignore\b
\b_darcs\b
\B\.cvsignore$
+\B\.bzr\b
+\B\.bzrignore$
# Avoid VMS specific MakeMaker generated files
\bDescrip.MMS$
@@ -46,6 +48,7 @@
\.#
\.rej$
\..*\.sw.?$
+\.~\d+~$
# Avoid OS-specific files/dirs
# Mac OSX metadata
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/Manifest.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/Manifest.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/Manifest.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,4 +1,4 @@
-package ExtUtils::Manifest; # git description: 1.72-7-g54209ce
+package ExtUtils::Manifest; # git description: 1.74-10-g1bddbb0
require Exporter;
use Config;
@@ -10,7 +10,7 @@
use strict;
use warnings;
-our $VERSION = '1.73';
+our $VERSION = '1.75';
our @ISA = ('Exporter');
our @EXPORT_OK = qw(mkmanifest
manicheck filecheck fullcheck skipcheck
@@ -18,7 +18,6 @@
maniskip
);
-our $Is_MacOS = $^O eq 'MacOS';
our $Is_VMS = $^O eq 'VMS';
our $Is_VMS_mode = 0;
our $Is_VMS_lc = 0;
@@ -65,7 +64,7 @@
=head1 VERSION
-version 1.73
+version 1.75
=head1 SYNOPSIS
@@ -120,12 +119,11 @@
my $manimiss = 0;
my $read = (-r 'MANIFEST' && maniread()) or $manimiss++;
$read = {} if $manimiss;
- local *M;
my $bakbase = $MANIFEST;
$bakbase =~ s/\./_/g if $Is_VMS_nodot; # avoid double dots
rename $MANIFEST, "$bakbase.bak" unless $manimiss;
- open M, "> $MANIFEST" or die "Could not open $MANIFEST: $!";
- binmode M, ':raw';
+ open my $fh, '>', $MANIFEST or die "Could not open $MANIFEST: $!";
+ binmode $fh, ':raw';
my $skip = maniskip();
my $found = manifind();
my($key,$val,$file,%all);
@@ -134,27 +132,25 @@
'This list of files'
if $manimiss; # add new MANIFEST to known file list
foreach $file (_sort keys %all) {
- if ($skip->($file)) {
- # Policy: only remove files if they're listed in MANIFEST.SKIP.
- # Don't remove files just because they don't exist.
- warn "Removed from $MANIFEST: $file\n" if $Verbose and exists $read->{$file};
- next;
- }
- if ($Verbose){
- warn "Added to $MANIFEST: $file\n" unless exists $read->{$file};
- }
- my $text = $all{$file};
- $file = _unmacify($file);
- my $tabs = (5 - (length($file)+1)/8);
- $tabs = 1 if $tabs < 1;
- $tabs = 0 unless $text;
+ if ($skip->($file)) {
+ # Policy: only remove files if they're listed in MANIFEST.SKIP.
+ # Don't remove files just because they don't exist.
+ warn "Removed from $MANIFEST: $file\n" if $Verbose and exists $read->{$file};
+ next;
+ }
+ if ($Verbose){
+ warn "Added to $MANIFEST: $file\n" unless exists $read->{$file};
+ }
+ my $text = $all{$file};
+ my $tabs = (5 - (length($file)+1)/8);
+ $tabs = 1 if $tabs < 1;
+ $tabs = 0 unless $text;
if ($file =~ /\s/) {
$file =~ s/([\\'])/\\$1/g;
$file = "'$file'";
}
- print M $file, "\t" x $tabs, $text, "\n";
+ print $fh $file, "\t" x $tabs, $text, "\n";
}
- close M;
}
# Geez, shouldn't this use File::Spec or File::Basename or something?
@@ -162,7 +158,6 @@
sub clean_up_filename {
my $filename = shift;
$filename =~ s|^\./||;
- $filename =~ s/^:([^:]+)$/$1/ if $Is_MacOS;
if ( $Is_VMS ) {
$filename =~ s/\.$//; # trim trailing dot
$filename = VMS::Filespec::unixify($filename); # unescape spaces, etc.
@@ -189,10 +184,10 @@
my $found = {};
my $wanted = sub {
- my $name = clean_up_filename($File::Find::name);
- warn "Debug: diskfile $name\n" if $Debug;
- return if -d $_;
- $found->{$name} = "";
+ my $name = clean_up_filename($File::Find::name);
+ warn "Debug: diskfile $name\n" if $Debug;
+ return if -d $_;
+ $found->{$name} = "";
};
# We have to use "$File::Find::dir/$_" in preprocess, because
@@ -199,8 +194,7 @@
# $File::Find::name is unavailable.
# Also, it's okay to use / here, because MANIFEST files use Unix-style
# paths.
- find({wanted => $wanted, follow_fast => 1},
- $Is_MacOS ? ":" : ".");
+ find({wanted => $wanted, follow_fast => 1}, ".");
return $found;
}
@@ -318,8 +312,7 @@
next if $skip->($file);
warn "Debug: manicheck checking from disk $file\n" if $Debug;
unless ( exists $read->{$file} ) {
- my $canon = $Is_MacOS ? "\t" . _unmacify($file) : '';
- warn "Not in $MANIFEST: $file$canon\n" unless $Quiet;
+ warn "Not in $MANIFEST: $file\n" unless $Quiet;
push @missentry, $file;
}
}
@@ -344,13 +337,13 @@
my ($mfile) = @_;
$mfile ||= $MANIFEST;
my $read = {};
- local *M;
- unless (open M, "< $mfile"){
+ my $fh;
+ unless (open $fh, '<', $mfile){
warn "Problem opening $mfile: $!";
return $read;
}
local $_;
- while (<M>){
+ while (<$fh>){
chomp;
next if /^\s*#/;
@@ -366,11 +359,7 @@
}
next unless $file;
- if ($Is_MacOS) {
- $file = _macify($file);
- $file =~ s/\\([0-3][0-7][0-7])/sprintf("%c", oct($1))/ge;
- }
- elsif ($Is_VMS_mode) {
+ if ($Is_VMS_mode) {
require File::Basename;
my($base,$dir) = File::Basename::fileparse($file);
# Resolve illegal file specifications in the same way as tar
@@ -391,7 +380,6 @@
$read->{$file} = $comment;
}
- close M;
$read;
}
@@ -408,27 +396,39 @@
=cut
+sub _process_skipline {
+ local $_ = shift;
+ chomp;
+ s/\r//;
+ $_ =~ qr{^\s*(?:(?:'([^\\']*(?:\\.[^\\']*)*)')|([^#\s]\S*))?(?:(?:\s*)|(?:\s+(.*?)\s*))$};
+ #my $comment = $3;
+ my $filename = $2;
+ if ( defined($1) ) {
+ $filename = $1;
+ $filename =~ s/\\(['\\])/$1/g;
+ }
+ $filename;
+}
+
# returns an anonymous sub that decides if an argument matches
sub maniskip {
my @skip ;
my $mfile = shift || "$MANIFEST.SKIP";
_check_mskip_directives($mfile) if -f $mfile;
- local(*M, $_);
- open M, "< $mfile" or open M, "< $DEFAULT_MSKIP" or return sub {0};
- while (<M>){
- chomp;
- s/\r//;
- $_ =~ qr{^\s*(?:(?:'([^\\']*(?:\\.[^\\']*)*)')|([^#\s]\S*))?(?:(?:\s*)|(?:\s+(.*?)\s*))$};
- #my $comment = $3;
- my $filename = $2;
- if ( defined($1) ) {
- $filename = $1;
- $filename =~ s/\\(['\\])/$1/g;
- }
- next if (not defined($filename) or not $filename);
- push @skip, _macify($filename);
+ local $_;
+ my $fh;
+ open $fh, '<', $mfile or open $fh, '<', $DEFAULT_MSKIP or return sub {0};
+ while (<$fh>){
+ if (/^#!include_default\s*$/) {
+ if (my @default = _include_mskip_file()) {
+ warn "Debug: Including default MANIFEST.SKIP\n" if $Debug;
+ push @skip, grep $_, map _process_skipline($_), @default;
+ }
+ next;
+ }
+ next unless my $filename = _process_skipline($_);
+ push @skip, $filename;
}
- close M;
return sub {0} unless (scalar @skip > 0);
my $opts = $Is_VMS_mode ? '(?i)' : '';
@@ -440,6 +440,10 @@
return sub { $_[0] =~ qr{$opts$regex} };
}
+sub _get_homedir {
+ $^O eq 'MSWin32' && "$]" < 5.016 ? $ENV{HOME} || $ENV{USERPROFILE} : (glob('~'))[0];
+}
+
# checks for the special directives
# #!include_default
# #!include /path/to/some/manifest.skip
@@ -448,46 +452,39 @@
# and an external manifest.skip file
sub _check_mskip_directives {
my $mfile = shift;
- local (*M, $_);
+ local $_;
+ my $fh;
my @lines = ();
my $flag = 0;
- unless (open M, "< $mfile") {
+ unless (open $fh, '<', $mfile) {
warn "Problem opening $mfile: $!";
return;
}
- while (<M>) {
- if (/^#!include_default\s*$/) {
- if (my @default = _include_mskip_file()) {
- push @lines, @default;
- warn "Debug: Including default MANIFEST.SKIP\n" if $Debug;
- $flag++;
- }
- next;
- }
- if (/^#!include\s+(.*)\s*$/) {
- my $external_file = $1;
- if (my @external = _include_mskip_file($external_file)) {
- push @lines, @external;
- warn "Debug: Including external $external_file\n" if $Debug;
- $flag++;
- }
+ while (<$fh>) {
+ if (/^#!include\s+(.*)\s*$/) {
+ my $external_file = $1;
+ $external_file =~ s{^~/}{_get_homedir().'/'}e;
+ if (my @external = _include_mskip_file($external_file)) {
+ push @lines, @external;
+ warn "Debug: Including external $external_file\n" if $Debug;
+ $flag++;
+ }
next;
}
push @lines, $_;
}
- close M;
+ close $fh;
return unless $flag;
my $bakbase = $mfile;
$bakbase =~ s/\./_/g if $Is_VMS_nodot; # avoid double dots
rename $mfile, "$bakbase.bak";
warn "Debug: Saving original $mfile as $bakbase.bak\n" if $Debug;
- unless (open M, "> $mfile") {
+ unless (open $fh, '>', $mfile) {
warn "Problem opening $mfile: $!";
return;
}
- binmode M, ':raw';
- print M $_ for (@lines);
- close M;
+ binmode $fh, ':raw';
+ print $fh $_ for (@lines);
return;
}
@@ -499,15 +496,15 @@
warn qq{Included file "$mskip" not found - skipping};
return;
}
- local (*M, $_);
- unless (open M, "< $mskip") {
+ local $_;
+ my $fh;
+ unless (open $fh, '<', $mskip) {
warn "Problem opening $mskip: $!";
return;
}
my @lines = ();
push @lines, "\n#!start included $mskip\n";
- push @lines, $_ while <M>;
- close M;
+ push @lines, $_ while <$fh>;
push @lines, "#!end included $mskip\n\n";
return @lines;
}
@@ -543,22 +540,13 @@
$target = VMS::Filespec::unixify($target) if $Is_VMS_mode;
File::Path::mkpath([ $target ],! $Quiet,$Is_VMS ? undef : 0755);
foreach my $file (keys %$read){
- if ($Is_MacOS) {
- if ($file =~ m!:!) {
- my $dir = _maccat($target, $file);
- $dir =~ s/[^:]+$//;
- File::Path::mkpath($dir,1,0755);
- }
- cp_if_diff($file, _maccat($target, $file), $how);
- } else {
- $file = VMS::Filespec::unixify($file) if $Is_VMS_mode;
- if ($file =~ m!/!) { # Ilya, that hurts, I fear, or maybe not?
- my $dir = File::Basename::dirname($file);
- $dir = VMS::Filespec::unixify($dir) if $Is_VMS_mode;
- File::Path::mkpath(["$target/$dir"],! $Quiet,$Is_VMS ? undef : 0755);
- }
- cp_if_diff($file, "$target/$file", $how);
- }
+ $file = VMS::Filespec::unixify($file) if $Is_VMS_mode;
+ if ($file =~ m!/!) { # Ilya, that hurts, I fear, or maybe not?
+ my $dir = File::Basename::dirname($file);
+ $dir = VMS::Filespec::unixify($dir) if $Is_VMS_mode;
+ File::Path::mkpath(["$target/$dir"],! $Quiet,$Is_VMS ? undef : 0755);
+ }
+ cp_if_diff($file, "$target/$file", $how);
}
}
@@ -569,28 +557,28 @@
return;
}
my($diff) = 0;
- local(*F,*T);
- open(F,"< $from\0") or die "Can't read $from: $!\n";
- if (open(T,"< $to\0")) {
+ my ($fromfh, $tofh);
+ open($fromfh, '<', $from) or die "Can't read $from: $!\n";
+ if (open($tofh, '<', $to)) {
local $_;
- while (<F>) { $diff++,last if $_ ne <T>; }
- $diff++ unless eof(T);
- close T;
+ while (<$fromfh>) { $diff++,last if $_ ne <$tofh>; }
+ $diff++ unless eof($tofh);
+ close $tofh;
}
else { $diff++; }
- close F;
+ close $fromfh;
if ($diff) {
- if (-e $to) {
- unlink($to) or confess "unlink $to: $!";
- }
+ if (-e $to) {
+ unlink($to) or confess "unlink $to: $!";
+ }
STRICT_SWITCH: {
- best($from,$to), last STRICT_SWITCH if $how eq 'best';
- cp($from,$to), last STRICT_SWITCH if $how eq 'cp';
- ln($from,$to), last STRICT_SWITCH if $how eq 'ln';
- croak("ExtUtils::Manifest::cp_if_diff " .
- "called with illegal how argument [$how]. " .
- "Legal values are 'best', 'cp', and 'ln'.");
- }
+ best($from,$to), last STRICT_SWITCH if $how eq 'best';
+ cp($from,$to), last STRICT_SWITCH if $how eq 'cp';
+ ln($from,$to), last STRICT_SWITCH if $how eq 'ln';
+ croak("ExtUtils::Manifest::cp_if_diff " .
+ "called with illegal how argument [$how]. " .
+ "Legal values are 'best', 'cp', and 'ln'.");
+ }
}
}
@@ -634,49 +622,12 @@
my $is_exception = grep $srcFile =~ /$_/, @Exceptions;
if ($is_exception or !$Config{d_link} or -l $srcFile) {
- cp($srcFile, $dstFile);
+ cp($srcFile, $dstFile);
} else {
- ln($srcFile, $dstFile) or cp($srcFile, $dstFile);
+ ln($srcFile, $dstFile) or cp($srcFile, $dstFile);
}
}
-sub _macify {
- my($file) = @_;
-
- return $file unless $Is_MacOS;
-
- $file =~ s|^\./||;
- if ($file =~ m|/|) {
- $file =~ s|/+|:|g;
- $file = ":$file";
- }
-
- $file;
-}
-
-sub _maccat {
- my($f1, $f2) = @_;
-
- return "$f1/$f2" unless $Is_MacOS;
-
- $f1 .= ":$f2";
- $f1 =~ s/([^:]:):/$1/g;
- return $f1;
-}
-
-sub _unmacify {
- my($file) = @_;
-
- return $file unless $Is_MacOS;
-
- $file =~ s|^:||;
- $file =~ s|([/ \n])|sprintf("\\%03o", unpack("c", $1))|ge;
- $file =~ y|:|/|;
-
- $file;
-}
-
-
=head2 maniadd
maniadd({ $file => $comment, ...});
@@ -697,9 +648,9 @@
my @needed = grep !exists $manifest->{$_}, keys %$additions;
return 1 unless @needed;
- open(MANIFEST, ">>$MANIFEST") or
+ open(my $fh, '>>', $MANIFEST) or
die "maniadd() could not open $MANIFEST: $!";
- binmode MANIFEST, ':raw';
+ binmode $fh, ':raw';
foreach my $file (_sort @needed) {
my $comment = $additions->{$file} || '';
@@ -707,9 +658,9 @@
$file =~ s/([\\'])/\\$1/g;
$file = "'$file'";
}
- printf MANIFEST "%-40s %s\n", $file, $comment;
+ printf $fh "%-40s %s\n", $file, $comment;
}
- close MANIFEST or die "Error closing $MANIFEST: $!";
+ close $fh or die "Error closing $MANIFEST: $!";
return 1;
}
@@ -720,10 +671,10 @@
sub _fix_manifest {
my $manifest_file = shift;
- open MANIFEST, $MANIFEST or die "Could not open $MANIFEST: $!";
+ open my $fh, '<', $MANIFEST or die "Could not open $MANIFEST: $!";
local $/;
- my @manifest = split /(\015\012|\012|\015)/, <MANIFEST>, -1;
- close MANIFEST;
+ my @manifest = split /(\015\012|\012|\015)/, <$fh>, -1;
+ close $fh;
my $must_rewrite = "";
if ($manifest[-1] eq ""){
# sane case: last line had a terminal newline
@@ -740,12 +691,12 @@
if ( $must_rewrite ) {
1 while unlink $MANIFEST; # avoid multiple versions on VMS
- open MANIFEST, ">", $MANIFEST or die "(must_rewrite=$must_rewrite) Could not open >$MANIFEST: $!";
- binmode MANIFEST, ':raw';
+ open $fh, ">", $MANIFEST or die "(must_rewrite=$must_rewrite) Could not open >$MANIFEST: $!";
+ binmode $fh, ':raw';
for (my $i=0; $i<=$#manifest; $i+=2) {
- print MANIFEST "$manifest[$i]\n";
+ print $fh "$manifest[$i]\n";
}
- close MANIFEST or die "could not write $MANIFEST: $!";
+ close $fh or die "could not write $MANIFEST: $!";
}
}
@@ -813,11 +764,17 @@
=item #!include_default
-This inserts the contents of the default MANIFEST.SKIP file
+This tells ExtUtils::Manifest to read the default F<MANIFEST.SKIP>
+file and skip files accordingly, but I<not> to include it in the local
+F<MANIFEST.SKIP>. This is intended to skip files according to a system
+default, which can change over time without requiring further changes
+to the distribution's F<MANIFEST.SKIP>.
=item #!include /Path/to/another/manifest.skip
-This inserts the contents of the specified external file
+This inserts the contents of the specified external file in the local
+F<MANIFEST.SKIP>. This is intended for authors to have a central
+F<MANIFEST.SKIP> file, and to include it with their various distributions.
=back
Modified: trunk/Master/tlpkg/tlperl/lib/ExtUtils/Miniperl.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/ExtUtils/Miniperl.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/ExtUtils/Miniperl.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -5,7 +5,7 @@
use ExtUtils::Embed 1.31, qw(xsi_header xsi_protos xsi_body);
our @EXPORT = qw(writemain);
-our $VERSION = '1.13';
+our $VERSION = '1.14';
# blead will run this with miniperl, hence we can't use autodie or File::Temp
my $temp;
@@ -159,7 +159,6 @@
perl_run(my_perl);
}
-#ifndef PERL_MICRO
/* Unregister our signal handler before destroying my_perl */
for (i = 1; PL_sig_name[i]; i++) {
if (rsignal_state(PL_sig_num[i]) == (Sighandler_t) PL_csighandlerp) {
@@ -166,7 +165,6 @@
rsignal(PL_sig_num[i], (Sighandler_t) SIG_DFL);
}
}
-#endif
exitstatus = perl_destruct(my_perl);
Modified: trunk/Master/tlpkg/tlperl/lib/Fatal.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Fatal.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Fatal.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -17,7 +17,12 @@
on_end_of_compile_scope
);
-use constant PERL510 => ( $] >= 5.010 );
+use constant SMARTMATCH_ALLOWED => ( $] >= 5.010 && $] < 5.041 );
+use constant SMARTMATCH_CATEGORY => (
+ !SMARTMATCH_ALLOWED || $] < 5.018 ? undef
+ : exists $warnings::Offsets{'experimental::smartmatch'} ? 'experimental::smartmatch'
+ : 'deprecated'
+);
use constant LEXICAL_TAG => q{:lexical};
use constant VOID_TAG => q{:void};
@@ -48,14 +53,16 @@
use constant ERROR_FATAL_CONFLICT => q{"use Fatal '%s'" is not allowed while "no autodie '%s'" is in effect};
-use constant ERROR_58_HINTS => q{Non-subroutine %s hints for %s are not supported under Perl 5.8.x};
+use constant ERROR_SMARTMATCH_HINTS => q{%s hints for %s must be code, regexp, or undef. Use of other values is deprecated and only supported on Perl 5.10 through 5.40.};
+use constant WARNING_SMARTMATCH_DEPRECATED => q{%s hints for %s must be code, regexp, or undef. Use of other values is deprecated and will be removed before Perl 5.42.};
+
# Older versions of IPC::System::Simple don't support all the
# features we need.
use constant MIN_IPC_SYS_SIMPLE_VER => 0.12;
-our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg::Version
+our $VERSION = '2.37'; # VERSION: Generated by DZP::OurPkg::Version
our $Debug ||= 0;
@@ -172,6 +179,7 @@
':2.34' => [qw(:default)],
':2.35' => [qw(:default)],
':2.36' => [qw(:default)],
+ ':2.37' => [qw(:default)],
);
@@ -1089,8 +1097,6 @@
my $code = qq[
no warnings qw(unopened uninitialized numeric);
- no if \$\] >= 5.017011, warnings => "experimental::smartmatch";
- no if \$warnings::Offsets{"deprecated::smartmatch"}, warnings => "deprecated";
if (wantarray) {
my \@results = $call(@argv);
@@ -1101,25 +1107,37 @@
my $retval_action = $Retval_action{$call} || '';
- if ( $hints and ( ref($hints->{list} ) || "" ) eq 'CODE' ) {
+ if ( $hints && exists $hints->{list} ) {
+ my $match;
+ if ( ref($hints->{list}) eq 'CODE' ) {
+ # NB: Subroutine hints are passed as a full list.
+ # This differs from the 5.10.0 smart-match behaviour,
+ # but means that context unaware subroutines can use
+ # the same hints in both list and scalar context.
- # NB: Subroutine hints are passed as a full list.
- # This differs from the 5.10.0 smart-match behaviour,
- # but means that context unaware subroutines can use
- # the same hints in both list and scalar context.
+ $match = q[ $hints->{list}->(@results) ];
+ }
+ elsif ( ref($hints->{list}) eq 'Regexp' ) {
+ $match = q[ grep $_ =~ $hints->{list}, @results ];
+ }
+ elsif ( !defined $hints->{list} ) {
+ $match = q[ grep !defined, @results ];
+ }
+ elsif ( SMARTMATCH_ALLOWED ) {
+ $match = q[ @results ~~ $hints->{list} ];
+ warnings::warnif('deprecated', sprintf(WARNING_SMARTMATCH_DEPRECATED, 'list', $sub));
+ if (SMARTMATCH_CATEGORY) {
+ $match = sprintf q[ do { no warnings '%s'; %s } ], SMARTMATCH_CATEGORY, $match;
+ }
+ }
+ else {
+ croak sprintf(ERROR_SMARTMATCH_HINTS, 'list', $sub);
+ }
$code .= qq{
- if ( \$hints->{list}->(\@results) ) { $die };
+ if ( $match ) { $die };
};
}
- elsif ( PERL510 and $hints ) {
- $code .= qq{
- if ( \@results ~~ \$hints->{list} ) { $die };
- };
- }
- elsif ( $hints ) {
- croak sprintf(ERROR_58_HINTS, 'list', $sub);
- }
else {
$code .= qq{
# An empty list, or a single undef is failure
@@ -1146,29 +1164,37 @@
my \$context = "scalar";
};
- if ( $hints and ( ref($hints->{scalar} ) || "" ) eq 'CODE' ) {
+ if ( $hints && exists $hints->{scalar} ) {
+ my $match;
- # We always call code refs directly, since that always
- # works in 5.8.x, and always works in 5.10.1
+ if ( ref($hints->{scalar}) eq 'CODE' ) {
+ # We always call code refs directly, since that always
+ # works in 5.8.x, and always works in 5.10.1
+ $match = q[ $hints->{scalar}->($retval) ];
+ }
+ elsif ( ref($hints->{scalar}) eq 'Regexp' ) {
+ $match = q[ $retval =~ $hints->{scalar} ];
+ }
+ elsif ( !defined $hints->{scalar} ) {
+ $match = q[ !defined $retval ];
+ }
+ elsif (SMARTMATCH_ALLOWED) {
+ $match = q[ $retval ~~ $hints->{scalar} ];
+ warnings::warnif('deprecated', sprintf(WARNING_SMARTMATCH_DEPRECATED, 'scalar', $sub));
+ if (SMARTMATCH_CATEGORY) {
+ $match = sprintf q[ do { no warnings '%s'; %s } ], SMARTMATCH_CATEGORY, $match;
+ }
+ }
+ else {
+ croak sprintf(ERROR_SMARTMATCH_HINTS, 'scalar', $sub);
+ }
- return $code .= qq{
- if ( \$hints->{scalar}->(\$retval) ) { $die };
- $retval_action
- return \$retval;
- };
-
- }
- elsif (PERL510 and $hints) {
return $code . qq{
-
- if ( \$retval ~~ \$hints->{scalar} ) { $die };
+ if ( $match ) { $die };
$retval_action
return \$retval;
};
}
- elsif ( $hints ) {
- croak sprintf(ERROR_58_HINTS, 'scalar', $sub);
- }
return $code .
( $use_defined_or ? qq{
Modified: trunk/Master/tlpkg/tlperl/lib/Fcntl.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Fcntl.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Fcntl.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -2,57 +2,855 @@
=head1 NAME
-Fcntl - load the C Fcntl.h defines
+Fcntl - various flag constants and helper functions from C's fcntl.h
=head1 SYNOPSIS
use Fcntl;
use Fcntl qw(:DEFAULT :flock);
+ use Fcntl qw(F_GETFD F_SETFD FD_CLOEXEC);
=head1 DESCRIPTION
-This module is just a translation of the C F<fcntl.h> file.
-Unlike the old mechanism of requiring a translated F<fcntl.ph>
-file, this uses the B<h2xs> program (see the Perl source distribution)
-and your native C compiler. This means that it has a
-far more likely chance of getting the numbers right.
+This module provides flags and helper functions for use with L<perlfunc/chmod>
+(S_*), L<perlfunc/fcntl> (F_*), L<perlfunc/flock> (LOCK_*), L<perlfunc/seek>
+(SEEK_*), L<perlfunc/stat> (S_*), L<perlfunc/sysopen> (O_*), and
+L<perlfunc/sysseek> (SEEK_*). They correspond to the C macros defined in
+F<fcntl.h>.
-=head1 NOTE
+Not all symbols are available on all systems. Except where noted otherwise,
+the constants and functions provided by this module will throw a runtime
+exception if the corresponding C macro is not available. Consult your system
+documentation to see the full description of each symbol and whether it is
+available on your platform: L<chmod(2)>, L<fcntl(2)>, L<flock(2)>,
+L<lseek(2)>, L<open(2)>, L<stat(2)>.
-Only C<#define> symbols get translated; you must still correctly
-pack up your own arguments to pass as args for locking functions, etc.
+(In particular, some of the F_* symbols are highly non-portable because they
+only exist on a single platform or require system-specific C data structures to
+be passed as the third argument to C<fcntl>, which can't be portably
+constructed in pure Perl.)
=head1 EXPORTED SYMBOLS
-By default your system's F_* and O_* constants (eg, F_DUPFD and
-O_CREAT) and the FD_CLOEXEC constant are exported into your namespace.
+=head2 Default exports and export tags
-You can request that the flock() constants (LOCK_SH, LOCK_EX, LOCK_NB
-and LOCK_UN) be provided by using the tag C<:flock>. See L<Exporter>.
+The full list of default exports can be found below in L</APPENDIX A>.
-You can request that the old constants (FAPPEND, FASYNC, FCREAT,
-FDEFER, FEXCL, FNDELAY, FNONBLOCK, FSYNC, FTRUNC) be provided for
-compatibility reasons by using the tag C<:Fcompat>. For new
-applications the newer versions of these constants are suggested
-(O_APPEND, O_ASYNC, O_CREAT, O_DEFER, O_EXCL, O_NDELAY, O_NONBLOCK,
-O_SYNC, O_TRUNC).
+In addition, the following export tags are available (see L<Exporter> for more
+information on export tags):
-For ease of use also the SEEK_* constants (for seek() and sysseek(),
-e.g. SEEK_END) and the S_I* constants (for chmod() and stat()) are
-available for import. They can be imported either separately or using
-the tags C<:seek> and C<:mode>.
+=over
-Please refer to your native fcntl(2), open(2), fseek(3), lseek(2)
-(equal to Perl's seek() and sysseek(), respectively), and chmod(2)
-documentation to see what constants are implemented in your system.
+=item C<:DEFAULT>
-See L<perlopentut> to learn about the uses of the O_* constants
-with sysopen().
+Equivalent to the list of default export symbols (see L</APPENDIX A>).
-See L<perlfunc/seek> and L<perlfunc/sysseek> about the SEEK_* constants.
+=item C<:flock>
-See L<perlfunc/stat> about the S_I* constants.
+Equivalent to all LOCK_* symbols listed below.
+=item C<:mode>
+
+Equivalent to all S_* symbols listed below.
+
+=item C<:seek>
+
+Equivalent to all SEEK_* symbols listed below.
+
+=item C<:Fcompat>
+
+Equivalent to C<qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE FNDELAY
+FNONBLOCK FRSYNC FSYNC FTRUNC)>. These only exist for compatibility with old
+code (if your platform defines them at all) and should not be used in new code.
+
+=back
+
+=head2 Symbols for use with C<fcntl>
+
+=over
+
+=item C<F_ALLOCSP>
+
+File storage manipulation.
+
+=item C<F_ALLOCSP64>
+
+File storage manipulation.
+
+=item C<F_DUP2FD>
+
+Duplicate a file descriptor to the number specified in the third argument to
+C<fcntl> (if it refers to an open file, it is automatically closed first).
+
+=item C<F_DUPFD>
+
+Duplicate a file descriptor to the lowest unused number greater than or equal
+to the third argument of C<fcntl>.
+
+=item C<F_FREESP>
+
+File storage manipulation.
+
+=item C<F_FREESP64>
+
+File storage manipulation.
+
+=item C<F_FSYNC>
+
+Synchronize file data to disk.
+
+=item C<F_FSYNC64>
+
+Synchronize file data to disk.
+
+=item C<F_GETFD>
+
+Return (as a number) the set of file descriptor flags, in which the following
+bits may be set:
+
+=over
+
+=item C<FD_CLOEXEC>
+
+During a successful C<exec> call, the file descriptor will be closed
+automatically.
+
+=back
+
+=item C<F_GETFL>
+
+Return (as a number) the set of file description status flags (O_*) as set by
+C<open> and C<fcntl>. To determine the file access mode, perform a bitwise AND
+with L</C<O_ACCMODE>> and see whether the result is equal to C<O_RDONLY>,
+C<O_WRONLY>, or C<O_RDWR>.
+
+=item C<F_GETLEASE>
+
+Indicate the type of lease associated with the filehandle (if any) by returning
+one of the following flags:
+
+=over
+
+=item C<F_RDLCK>
+
+A read lease.
+
+=item C<F_WRLCK>
+
+A write lease.
+
+=item C<F_UNLCK>
+
+No lease.
+
+=back
+
+=item C<F_GETLK>
+
+Test for the existence of record locks on the file.
+
+=item C<F_GETLK64>
+
+Test for the existence of record locks on the file.
+
+=item C<F_GETOWN>
+
+Return the ID of the process (as a positive number) or group (as a negative
+number) that is currently receiving signals for events on the file descriptor.
+
+=item C<F_GETPIPE_SZ>
+
+Return the capacity of the pipe associated with the filehandle.
+
+=item C<F_GETSIG>
+
+Return the number of the signal sent when input or output becomes possible on
+the filehandle. A return value of C<0> means C<SIGIO>.
+
+=item C<F_NOTIFY>
+
+File and directory change notification with signals.
+
+=over
+
+=item C<DN_ACCESS>
+
+=item C<DN_ATTRIB>
+
+=item C<DN_CREATE>
+
+=item C<DN_DELETE>
+
+=item C<DN_MODIFY>
+
+=item C<DN_MULTISHOT>
+
+=item C<DN_RENAME>
+
+=back
+
+Z<>
+
+=item C<F_SETFD>
+
+Set the file descriptor flags. See L</C<F_GETFD>> for the list of available
+flags.
+
+=item C<F_SETFL>
+
+Set the file description status flags (O_*). Only some flags can be changed
+this way.
+
+=item C<F_SETLEASE>
+
+Set a file lease as specified by the third C<fnctl> argument, which must be one
+of the following:
+
+=over
+
+=item C<F_RDLCK>
+
+Set a read lease.
+
+=item C<F_WRLCK>
+
+Set a write lease.
+
+=item C<F_UNLCK>
+
+Remove a lease.
+
+=back
+
+=item C<F_SETLK>
+
+Acquire a record lock.
+
+=item C<F_SETLK64>
+
+Acquire a record lock.
+
+=item C<F_SETLKW>
+
+Acquire a record lock and wait for conflicting locks to be released.
+
+=item C<F_SETLKW64>
+
+Acquire a record lock and wait for conflicting locks to be released.
+
+=item C<F_SETOWN>
+
+Set the ID of the process (as a positive number) or group (as a negative
+number) that will receive signals for events on the file descriptor.
+
+=item C<F_SETPIPE_SZ>
+
+Set the capacity of the pipe associated with the filehandle. Return the actual
+capacity reserved for the pipe, which may be higher than requested.
+
+=item C<F_SETSIG>
+
+Set the number of the signal sent when input or output becomes possible on the
+filehandle. An argument of C<0> means C<SIGIO>.
+
+=item C<F_SHARE>
+
+Set share reservation.
+
+=item C<F_UNSHARE>
+
+Remove share reservation.
+
+=item C<F_COMPAT>
+
+=item C<F_EXLCK>
+
+=item C<F_NODNY>
+
+=item C<F_POSIX>
+
+=item C<F_RDACC>
+
+=item C<F_RDDNY>
+
+=item C<F_RWACC>
+
+=item C<F_RWDNY>
+
+=item C<F_SHLCK>
+
+=item C<F_WRACC>
+
+=item C<F_WRDNY>
+
+=back
+
+=head2 Symbols for use with C<flock>
+
+=over
+
+=item C<LOCK_EX>
+
+Request an exclusive lock.
+
+=item C<LOCK_MAND>
+
+Request a mandatory lock.
+
+=item C<LOCK_NB>
+
+Make lock request non-blocking (can be combined with other LOCK_* flags using bitwise OR).
+
+=item C<LOCK_READ>
+
+With C<LOCK_MAND>: Allow concurrent reads.
+
+=item C<LOCK_RW>
+
+With C<LOCK_MAND>: Allow concurrent reads and writes.
+
+=item C<LOCK_SH>
+
+Request a shared lock.
+
+=item C<LOCK_UN>
+
+Release a held lock.
+
+=item C<LOCK_WRITE>
+
+With C<LOCK_MAND>: Allow concurrent writes.
+
+=back
+
+=head2 Symbols for use with C<sysopen>
+
+=over
+
+=item C<O_ACCMODE>
+
+Bit mask for extracting the file access mode (read-only, write-only, or
+read/write) from the other flags. This is mainly useful in combination with
+L</C<F_GETFL>>.
+
+=item C<O_ALIAS>
+
+(Mac OS) Open alias file (instead of the file that the alias refers to).
+
+=item C<O_ALT_IO>
+
+(NetBSD) Use alternative I/O semantics.
+
+=item C<O_APPEND>
+
+Open the file in append mode. Writes always go to the end of the file.
+
+=item C<O_ASYNC>
+
+Enable signal-based I/O. When the file becomes readable or writable, a signal
+is sent.
+
+=item C<O_BINARY>
+
+(Windows) Open the file in binary mode.
+
+=item C<O_CREAT>
+
+If the file to be opened does not exist yet, create it.
+
+=item C<O_DEFER>
+
+(AIX) Changes to the file are kept in memory and not written to disk until the
+program performs an explicit L<< C<< $fh->sync() >>|IO::Handle/$io->sync >>.
+
+=item C<O_DIRECT>
+
+Perform direct I/O to/from user-space buffers; avoid caching at the OS level.
+
+=item C<O_DIRECTORY>
+
+Fail if the filename to be opened does not refer to a directory.
+
+=item C<O_DSYNC>
+
+Synchronize file data immediately, like calling L<fdatasync(2)> after each
+write.
+
+=item C<O_EVTONLY>
+
+(Mac OS) Open the file for event notifications, not reading or writing.
+
+=item C<O_EXCL>
+
+If the file already exists, fail and set C<$!> to L<C<EEXIST>|Errno> (this only
+makes sense in combination with C<O_CREAT>).
+
+=item C<O_EXLOCK>
+
+When the file is opened, atomically obtain an exclusive lock.
+
+=item C<O_IGNORE_CTTY>
+
+(Hurd) If the file to be opened is the controlling terminal for this process,
+don't recognize it as such. Operations on this filehandle won't trigger job
+control signals.
+
+=item C<O_LARGEFILE>
+
+On 32-bit platforms, allow opening files whose size exceeds 2 GiB
+(2,147,483,647 bytes).
+
+=item C<O_NDELAY>
+
+Compatibility symbol. Use C<O_NONBLOCK> instead.
+
+=item C<O_NOATIME>
+
+Don't update the access time of the file when reading from it.
+
+=item C<O_NOCTTY>
+
+If the process does not have a controlling terminal and the file to be opened
+is a terminal device, don't make it the controlling terminal of the process.
+
+=item C<O_NOFOLLOW>
+
+If the final component of the filename is a symbolic link, fail and set C<$!>
+to L<C<ELOOP>|Errno>.
+
+=item C<O_NOINHERIT>
+
+(Windows) Don't let child processes inherit the opened file descriptor.
+
+=item C<O_NOLINK>
+
+(Hurd) If the file to be opened is a symbolic link, don't follow it; open the
+link itself.
+
+=item C<O_NONBLOCK>
+
+Open the file in non-blocking mode. Neither the open itself nor any read/write
+operations on the filehandle will block. (This is mainly useful for pipes and
+sockets. It has no effect on regular files.)
+
+=item C<O_NOSIGPIPE>
+
+If the file to be opened is a pipe, then don't raise C<SIGPIPE> for write
+operations when the read end of the pipe is closed; make the write fail with
+C<EPIPE> instead.
+
+=item C<O_NOTRANS>
+
+(Hurd) If the file to be opened is specially translated, don't invoke the
+translator; open the bare file itself.
+
+=item C<O_RANDOM>
+
+(Windows) Indicate that the program intends to access the file contents
+randomly (without a predictable pattern). This is an optimization hint for the
+file cache (but may cause excessive memory use on large files).
+
+=item C<O_RAW>
+
+(Windows) Same as C<O_BINARY>.
+
+=item C<O_RDONLY>
+
+Open the file for reading (only).
+
+=item C<O_RDWR>
+
+Open the file for reading and writing.
+
+=item C<O_RSRC>
+
+(Mac OS) Open the resource fork of the file.
+
+=item C<O_RSYNC>
+
+Extend the effects of C<O_SYNC> and C<O_DSYNC> to read operations. In
+particular, reading from a filehandle opened with C<O_SYNC | O_RSYNC> will wait
+until the access time of the file has been modified on disk.
+
+=item C<O_SEQUENTIAL>
+
+(Windows) Indicate that the program intends to access the file contents
+sequentially. This is an optimization hint for the file cache.
+
+=item C<O_SHLOCK>
+
+When the file is opened, atomically obtain a shared lock.
+
+=item C<O_SYMLINK>
+
+If the file to be opened is a symbolic link, don't follow it; open the link
+itself.
+
+=item C<O_SYNC>
+
+Synchronize file data and metadata immediately, like calling L<fsync(2)> after
+each write.
+
+=item C<O_TEMPORARY>
+
+(Windows) Delete the file when its last open file descriptor is closed.
+
+=item C<O_TEXT>
+
+(Windows) Open the file in text mode.
+
+=item C<O_TMPFILE>
+
+Create an unnamed temporary file. The filename argument specifies the directory
+the unnamed file should be placed in.
+
+=item C<O_TRUNC>
+
+If the file already exists, truncate its contents to length 0.
+
+=item C<O_TTY_INIT>
+
+If the file to be opened is a terminal that is not already open in any process,
+initialize its L<termios|POSIX/C<POSIX::Termios>> parameters.
+
+=item C<O_WRONLY>
+
+Open the file for writing (only).
+
+=item C<FAPPEND>
+
+Compatibility symbol. Use C<O_APPEND> instead.
+
+=item C<FASYNC>
+
+Compatibility symbol. Use C<O_ASYNC> instead.
+
+=item C<FCREAT>
+
+Compatibility symbol. Use C<O_CREAT> instead.
+
+=item C<FDEFER>
+
+Compatibility symbol. Use C<O_DEFER> instead.
+
+=item C<FDSYNC>
+
+Compatibility symbol. Use C<O_DSYNC> instead.
+
+=item C<FEXCL>
+
+Compatibility symbol. Use C<O_EXCL> instead.
+
+=item C<FLARGEFILE>
+
+Compatibility symbol. Use C<O_LARGEFILE> instead.
+
+=item C<FNDELAY>
+
+Compatibility symbol. Use C<O_NDELAY> instead.
+
+=item C<FNONBLOCK>
+
+Compatibility symbol. Use C<O_NONBLOCK> instead.
+
+=item C<FRSYNC>
+
+Compatibility symbol. Use C<O_RSYNC> instead.
+
+=item C<FSYNC>
+
+Compatibility symbol. Use C<O_SYNC> instead.
+
+=item C<FTRUNC>
+
+Compatibility symbol. Use C<O_TRUNC> instead.
+
+=back
+
+=head2 Symbols for use with C<seek> and C<sysseek>
+
+=over
+
+=item C<SEEK_CUR>
+
+File offsets are relative to the current position in the file.
+
+=item C<SEEK_END>
+
+File offsets are relative to the end of the file (i.e. mostly negative).
+
+=item C<SEEK_SET>
+
+File offsets are absolute (i.e. relative to the beginning of the file).
+
+=back
+
+=head2 Symbols for use with C<stat> and C<chmod>
+
+=over
+
+=item C<S_ENFMT>
+
+Enforce mandatory file locks. (This symbol typically shares its value with
+C<S_ISGID>.)
+
+=item C<S_IEXEC>
+
+Compatibility symbol. Use C<S_IXUSR> instead.
+
+=item C<S_IFBLK>
+
+File type: Block device.
+
+=item C<S_IFCHR>
+
+File type: Character device.
+
+=item C<S_IFDIR>
+
+File type: Directory.
+
+=item C<S_IFIFO>
+
+File type: Fifo/pipe.
+
+=item C<S_IFLNK>
+
+File type: Symbolic link.
+
+=item C<S_IFMT>
+
+Bit mask for extracting the file type bits. This symbol can also be used as a
+function: C<S_IFMT($mode)> acts like C<$mode & S_IFMT>. The result will be
+equal to one of the other S_IF* constants.
+
+=item C<_S_IFMT>
+
+Bit mask for extracting the file type bits. This symbol is an actual constant
+and cannot be used as a function; otherwise it is identical to C<S_IFMT>.
+
+=item C<S_IFREG>
+
+File type: Regular file.
+
+=item C<S_IFSOCK>
+
+File type: Socket.
+
+=item C<S_IFWHT>
+
+File type: Whiteout file (used to mark the absence/deletion of a file in overlays).
+
+=item C<S_IMODE>
+
+Function for extracting the permission bits from a file mode.
+
+=item C<S_IREAD>
+
+Compatibility symbol. Use C<S_IRUSR> instead.
+
+=item C<S_IRGRP>
+
+Permissions: Readable by group.
+
+=item C<S_IROTH>
+
+Permissions: Readable by others.
+
+=item C<S_IRUSR>
+
+Permissions: Readable by owner.
+
+=item C<S_IRWXG>
+
+Bit mask for extracting group permissions.
+
+=item C<S_IRWXO>
+
+Bit mask for extracting other permissions.
+
+=item C<S_IRWXU>
+
+Bit mask for extracting owner ("user") permissions.
+
+=item C<S_ISBLK>
+
+Convenience function to check for block devices: C<S_ISBLK($mode)> is
+equivalent to C<S_IFMT($mode) == S_IFBLK>.
+
+=item C<S_ISCHR>
+
+Convenience function to check for character devices: C<S_ISCHR($mode)> is
+equivalent to C<S_IFMT($mode) == S_IFCHR>.
+
+=item C<S_ISDIR>
+
+Convenience function to check for directories: C<S_ISDIR($mode)> is
+equivalent to C<S_IFMT($mode) == S_IFDIR>.
+
+=item C<S_ISENFMT>
+
+Broken function; do not use. (C<S_ISENFMT($mode)> should always return false,
+anyway.)
+
+=item C<S_ISFIFO>
+
+Convenience function to check for fifos: C<S_ISFIFO($mode)> is
+equivalent to C<S_IFMT($mode) == S_IFIFO>.
+
+=item C<S_ISGID>
+
+Permissions: Set effective group ID from file (when running executables);
+mandatory locking (on non-group-executable files); new files inherit their
+group from the directory (on directories).
+
+=item C<S_ISLNK>
+
+Convenience function to check for symbolic links: C<S_ISLNK($mode)> is
+equivalent to C<S_IFMT($mode) == S_IFLNK>.
+
+=item C<S_ISREG>
+
+Convenience function to check for regular files: C<S_ISREG($mode)> is
+equivalent to C<S_IFMT($mode) == S_IFREG>.
+
+=item C<S_ISSOCK>
+
+Convenience function to check for sockets: C<S_ISSOCK($mode)> is
+equivalent to C<S_IFMT($mode) == S_IFSOCK>.
+
+=item C<S_ISTXT>
+
+Compatibility symbol. Use C<S_ISVTX> instead.
+
+=item C<S_ISUID>
+
+Permissions: Set effective user ID from file (when running executables).
+
+=item C<S_ISVTX>
+
+Permissions: Files in this directory can only be deleted/renamed by their owner
+(or the directory's owner), even if other users have write permissions to the
+directory ("sticky bit").
+
+=item C<S_ISWHT>
+
+Convenience function to check for whiteout files: C<S_ISWHT($mode)> is
+equivalent to C<S_IFMT($mode) == S_IFWHT>.
+
+=item C<S_IWGRP>
+
+Permissions: Writable by group.
+
+=item C<S_IWOTH>
+
+Permissions: Writable by others.
+
+=item C<S_IWRITE>
+
+Compatibility symbol. Use C<S_IWUSR> instead.
+
+=item C<S_IWUSR>
+
+Permissions: Writable by owner.
+
+=item C<S_IXGRP>
+
+Permissions: Executable/searchable by group.
+
+=item C<S_IXOTH>
+
+Permissions: Executable/searchable by others.
+
+=item C<S_IXUSR>
+
+Permissions: Executable/searchable by owner.
+
+=back
+
+=head1 SEE ALSO
+
+L<perlfunc/chmod>, L<chmod(2)>,
+L<perlfunc/fcntl>, L<fcntl(2)>,
+L<perlfunc/flock>, L<flock(2)>,
+L<perlfunc/seek>, L<fseek(3)>,
+L<perlfunc/stat>, L<stat(2)>,
+L<perlfunc/sysopen>, L<open(2)>,
+L<perlfunc/sysseek>, L<lseek(2)>
+
+=head1 APPENDIX A
+
+By default, if you say C<use Fcntl;>, the following symbols are exported:
+
+ FD_CLOEXEC
+ F_ALLOCSP
+ F_ALLOCSP64
+ F_COMPAT
+ F_DUP2FD
+ F_DUPFD
+ F_EXLCK
+ F_FREESP
+ F_FREESP64
+ F_FSYNC
+ F_FSYNC64
+ F_GETFD
+ F_GETFL
+ F_GETLK
+ F_GETLK64
+ F_GETOWN
+ F_NODNY
+ F_POSIX
+ F_RDACC
+ F_RDDNY
+ F_RDLCK
+ F_RWACC
+ F_RWDNY
+ F_SETFD
+ F_SETFL
+ F_SETLK
+ F_SETLK64
+ F_SETLKW
+ F_SETLKW64
+ F_SETOWN
+ F_SHARE
+ F_SHLCK
+ F_UNLCK
+ F_UNSHARE
+ F_WRACC
+ F_WRDNY
+ F_WRLCK
+ O_ACCMODE
+ O_ALIAS
+ O_APPEND
+ O_ASYNC
+ O_BINARY
+ O_CREAT
+ O_DEFER
+ O_DIRECT
+ O_DIRECTORY
+ O_DSYNC
+ O_EXCL
+ O_EXLOCK
+ O_LARGEFILE
+ O_NDELAY
+ O_NOCTTY
+ O_NOFOLLOW
+ O_NOINHERIT
+ O_NONBLOCK
+ O_RANDOM
+ O_RAW
+ O_RDONLY
+ O_RDWR
+ O_RSRC
+ O_RSYNC
+ O_SEQUENTIAL
+ O_SHLOCK
+ O_SYNC
+ O_TEMPORARY
+ O_TEXT
+ O_TRUNC
+ O_WRONLY
+
=cut
use strict;
@@ -59,7 +857,7 @@
use Exporter 'import';
require XSLoader;
-our $VERSION = '1.15';
+our $VERSION = '1.18';
XSLoader::load();
@@ -78,7 +876,7 @@
S_IREAD S_IWRITE S_IEXEC
S_ISREG S_ISDIR S_ISLNK S_ISSOCK
S_ISBLK S_ISCHR S_ISFIFO
- S_ISWHT S_ISENFMT
+ S_ISWHT S_ISENFMT
S_IFMT S_IMODE
)],
);
@@ -166,10 +964,17 @@
DN_MODIFY
DN_MULTISHOT
DN_RENAME
+ F_ADD_SEALS
F_GETLEASE
F_GETPIPE_SZ
+ F_GET_SEALS
F_GETSIG
F_NOTIFY
+ F_SEAL_FUTURE_WRITE
+ F_SEAL_GROW
+ F_SEAL_SEAL
+ F_SEAL_SHRINK
+ F_SEAL_WRITE
F_SETLEASE
F_SETPIPE_SZ
F_SETSIG
@@ -185,6 +990,7 @@
O_NOSIGPIPE
O_NOTRANS
O_SYMLINK
+ O_TMPFILE
O_TTY_INIT
), map {@{$_}} values %EXPORT_TAGS);
Modified: trunk/Master/tlpkg/tlperl/lib/File/Compare.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Compare.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Compare.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,4 +1,4 @@
-package File::Compare 1.1007;
+package File::Compare 1.1008;
use v5.12;
use warnings;
@@ -19,10 +19,10 @@
croak("Usage: compare( file1, file2 [, buffersize]) ")
unless(@_ == 2 || @_ == 3);
- my ($from,$to,$size) = @_;
+ my ($from, $to, $size) = @_;
my $text_mode = defined($size) && (ref($size) eq 'CODE' || $size < 0);
- my ($fromsize,$closefrom,$closeto);
+ my ($fromsize, $closefrom, $closeto);
local (*FROM, *TO);
croak("from undefined") unless (defined $from);
@@ -29,12 +29,12 @@
croak("to undefined") unless (defined $to);
if (ref($from) &&
- (UNIVERSAL::isa($from,'GLOB') || UNIVERSAL::isa($from,'IO::Handle'))) {
+ (UNIVERSAL::isa($from, 'GLOB') || UNIVERSAL::isa($from, 'IO::Handle'))) {
*FROM = *$from;
} elsif (ref(\$from) eq 'GLOB') {
*FROM = $from;
} else {
- open(FROM,"<",$from) or goto fail_open1;
+ open(FROM, '<', $from) or goto fail_open1;
unless ($text_mode) {
binmode FROM;
$fromsize = -s FROM;
@@ -43,12 +43,12 @@
}
if (ref($to) &&
- (UNIVERSAL::isa($to,'GLOB') || UNIVERSAL::isa($to,'IO::Handle'))) {
+ (UNIVERSAL::isa($to, 'GLOB') || UNIVERSAL::isa($to, 'IO::Handle'))) {
*TO = *$to;
} elsif (ref(\$to) eq 'GLOB') {
*TO = $to;
} else {
- open(TO,"<",$to) or goto fail_open2;
+ open(TO, '<', $to) or goto fail_open2;
binmode TO unless $text_mode;
$closeto = 1;
}
@@ -60,7 +60,7 @@
if ($text_mode) {
local $/ = "\n";
- my ($fline,$tline);
+ my ($fline, $tline);
while (defined($fline = <FROM>)) {
goto fail_inner unless defined($tline = <TO>);
if (ref $size) {
@@ -79,14 +79,14 @@
$size = $Too_Big if $size > $Too_Big;
}
- my ($fr,$tr,$fbuf,$tbuf);
+ my ($fr, $tr, $fbuf, $tbuf);
$fbuf = $tbuf = '';
- while(defined($fr = read(FROM,$fbuf,$size)) && $fr > 0) {
- unless (defined($tr = read(TO,$tbuf,$fr)) && $tbuf eq $fbuf) {
+ while(defined($fr = read(FROM, $fbuf, $size)) && $fr > 0) {
+ unless (defined($tr = read(TO, $tbuf, $fr)) && $tbuf eq $fbuf) {
goto fail_inner;
}
}
- goto fail_inner if defined($tr = read(TO,$tbuf,$size)) && $tr > 0;
+ goto fail_inner if defined($tr = read(TO, $tbuf, $size)) && $tr > 0;
}
close(TO) || goto fail_open2 if $closeto;
@@ -116,7 +116,7 @@
*cmp = \&compare;
sub compare_text {
- my ($from,$to,$cmp) = @_;
+ my ($from, $to, $cmp) = @_;
croak("Usage: compare_text( file1, file2 [, cmp-function])")
unless @_ == 2 || @_ == 3;
croak("Third arg to compare_text() function must be a code reference")
@@ -138,23 +138,23 @@
use File::Compare;
- if (compare("file1","file2") == 0) {
+ if (compare("file1", "file2") == 0) {
print "They're equal\n";
}
=head1 DESCRIPTION
-The File::Compare::compare function compares the contents of two
+The C<File::Compare::compare> function compares the contents of two
sources, each of which can be a file or a file handle. It is exported
-from File::Compare by default.
+from C<File::Compare> by default.
-File::Compare::cmp is a synonym for File::Compare::compare. It is
-exported from File::Compare only by request.
+C<File::Compare::cmp> is a synonym for C<File::Compare::compare>. It is
+exported from C<File::Compare> only by request.
-File::Compare::compare_text does a line by line comparison of the two
-files. It stops as soon as a difference is detected. compare_text()
+C<File::Compare::compare_text> does a line by line comparison of the two
+files. It stops as soon as a difference is detected. C<compare_text()>
accepts an optional third argument: This must be a CODE reference to
-a line comparison function, which returns 0 when both lines are considered
+a line comparison function, which returns C<0> when both lines are considered
equal. For example:
compare_text($file1, $file2)
@@ -165,10 +165,10 @@
=head1 RETURN
-File::Compare::compare and its sibling functions return 0 if the files
-are equal, 1 if the files are unequal, or -1 if an error was encountered.
+C<File::Compare::compare> and its sibling functions return C<0> if the files
+are equal, C<1> if the files are unequal, or C<-1> if an error was encountered.
=head1 AUTHOR
-File::Compare was written by Nick Ing-Simmons.
+C<File::Compare> was written by Nick Ing-Simmons.
Its original documentation was written by Chip Salzenberg.
Modified: trunk/Master/tlpkg/tlperl/lib/File/Find.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Find.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Find.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,21 +1,21 @@
package File::Find;
+
use 5.006;
use strict;
use warnings;
use warnings::register;
-our $VERSION = '1.43';
+
use Exporter 'import';
require Cwd;
+require File::Basename;
+require File::Spec;
+our $VERSION = '1.44';
our @EXPORT = qw(find finddepth);
-
-use strict;
my $Is_VMS = $^O eq 'VMS';
my $Is_Win32 = $^O eq 'MSWin32';
-require File::Basename;
-require File::Spec;
# Should ideally be my() not our() but local() currently
# refuses to operate on lexicals
@@ -812,7 +812,7 @@
=head1 DESCRIPTION
These are functions for searching through directory trees doing work
-on each file found similar to the Unix I<find> command. File::Find
+on each file found similar to the Unix L<find(1)> command. C<File::Find>
exports two functions, C<find> and C<finddepth>. They work similarly
but have subtle differences.
@@ -846,7 +846,7 @@
Despite the name of the C<finddepth()> function, both C<find()> and
C<finddepth()> perform a depth-first search of the directory hierarchy.
-=head2 %options
+=head2 C<%options>
The first argument to C<find()> is either a code reference to your
C<&wanted> function, or a hash reference describing the operations
@@ -853,7 +853,7 @@
to be performed for each file. The
code reference is described in L</The wanted function> below.
-Here are the possible keys for the hash:
+Here are the possible B<keys> for the hash:
=over 4
@@ -879,7 +879,7 @@
names) and is expected to return a list of strings. The code can be
used to sort the file/directory names alphabetically, numerically,
or to filter out directory entries based on their name alone. When
-I<follow> or I<follow_fast> are in effect, C<preprocess> is a no-op.
+C<follow> or C<follow_fast> are in effect, C<preprocess> is a no-op.
=item C<postprocess>
@@ -887,7 +887,7 @@
the currently processed directory. It is called in void context with no
arguments. The name of the current directory is in C<$File::Find::dir>. This
hook is handy for summarizing a directory, such as calculating its disk
-usage. When I<follow> or I<follow_fast> are in effect, C<postprocess> is a
+usage. When C<follow> or C<follow_fast> are in effect, C<postprocess> is a
no-op.
=item C<follow>
@@ -897,15 +897,15 @@
cycles, a hash has to be built up with an entry for each file.
This might be expensive both in space and time for a large
directory tree. See L</follow_fast> and L</follow_skip> below.
-If either I<follow> or I<follow_fast> is in effect:
+If either C<follow> or C<follow_fast> is in effect:
=over 4
=item *
-It is guaranteed that an I<lstat> has been called before the user's
+It is guaranteed that an C<lstat> has been called before the user's
C<wanted()> function is called. This enables fast file checks involving C<_>.
-Note that this guarantee no longer holds if I<follow> or I<follow_fast>
+Note that this guarantee no longer holds if C<follow> or C<follow_fast>
are not set.
=item *
@@ -918,11 +918,11 @@
=item C<follow_fast>
-This is similar to I<follow> except that it may report some files more
+This is similar to C<follow> except that it may report some files more
than once. It does detect cycles, however. Since only symbolic links
have to be hashed, this is much cheaper both in space and time. If
processing a file more than once (by the user's C<wanted()> function)
-is worse than just taking time, the option I<follow> should be used.
+is worse than just taking time, the option C<follow> should be used.
=item C<follow_skip>
@@ -929,12 +929,12 @@
C<follow_skip==1>, which is the default, causes all files which are
neither directories nor symbolic links to be ignored if they are about
to be processed a second time. If a directory or a symbolic link
-are about to be processed a second time, File::Find dies.
+are about to be processed a second time, C<File::Find> dies.
-C<follow_skip==0> causes File::Find to die if any file is about to be
+C<follow_skip==0> causes C<File::Find> to die if any file is about to be
processed a second time.
-C<follow_skip==2> causes File::Find to ignore any duplicate files and
+C<follow_skip==2> causes C<File::Find> to ignore any duplicate files and
directories but to proceed normally otherwise.
=item C<dangling_symlinks>
@@ -954,12 +954,13 @@
=item C<untaint>
-If find is used in L<taint-mode|perlsec/Taint mode> (-T command line switch or
-if EUID != UID or if EGID != GID), then internally directory names have to be
-untainted before they can be C<chdir>'d to. Therefore they are checked against
-a regular expression I<untaint_pattern>. Note that all names passed to the
-user's C<wanted()> function are still tainted. If this option is used while not
-in taint-mode, C<untaint> is a no-op.
+If find is used in L<taint-mode|perlsec/Taint mode> (C<-T> command line
+switch or C<if EUID != UID> or C<if EGID != GID>), then internally
+directory names have to be untainted before they can be C<chdir>'d to.
+Therefore they are checked against a regular expression C<untaint_pattern>.
+Note that all names passed to the user's C<wanted()> function are still
+tainted. If this option is used while not in taint-mode, C<untaint>
+is a no-op.
=item C<untaint_pattern>
@@ -969,7 +970,7 @@
=item C<untaint_skip>
-If set, a directory which fails the I<untaint_pattern> is skipped,
+If set, a directory which fails the C<untaint_pattern> is skipped,
including all its sub-directories. The default is to C<die> in such a case.
=back
@@ -979,10 +980,10 @@
The C<wanted()> function does whatever verifications you want on
each file and directory. Note that despite its name, the C<wanted()>
function is a generic callback function, and does B<not> tell
-File::Find if a file is "wanted" or not. In fact, its return value
+C<File::Find> if a file is "wanted" or not. In fact, its return value
is ignored.
-The wanted function takes no arguments but rather does its work
+The C<wanted> function takes no arguments but rather does its work
through a collection of variables.
=over 4
@@ -1004,7 +1005,7 @@
$_ = foo.ext
$File::Find::name = /some/path/foo.ext
-You are chdir()'d to C<$File::Find::dir> when the function is called,
+You are C<chdir()>'d to C<$File::Find::dir> when the function is called,
unless C<no_chdir> was specified. Note that when changing to
directories is in effect, the root directory (F</>) is a somewhat
special case inasmuch as the concatenation of C<$File::Find::dir>,
@@ -1025,13 +1026,13 @@
also a C<$File::Find::fullname>. The function may set
C<$File::Find::prune> to prune the tree unless C<bydepth> was
specified. Unless C<follow> or C<follow_fast> is specified, for
-compatibility reasons (find.pl, find2perl) there are in addition the
-following globals available: C<$File::Find::topdir>,
+compatibility reasons (C<find.pl>, L<find2perl>) there are
+in addition the following globals available: C<$File::Find::topdir>,
C<$File::Find::topdev>, C<$File::Find::topino>,
C<$File::Find::topmode> and C<$File::Find::topnlink>.
-This library is useful for the C<find2perl> tool (distributed as part of the
-App-find2perl CPAN distribution), which when fed,
+This library is useful for the C<find2perl> tool (distributed with the
+L<App::find2perl> CPAN module), which when fed:
find2perl / -name .nfs\* -mtime +7 \
-exec rm -f {} \; -o -fstype nfs -prune
@@ -1086,9 +1087,9 @@
=over 4
-=item $dont_use_nlink
+=item C<$dont_use_nlink>
-You can set the variable C<$File::Find::dont_use_nlink> to 0 if you
+You can set the variable C<$File::Find::dont_use_nlink> to C<0> if you
are sure the filesystem you are scanning reflects the number of
subdirectories in the parent directory's C<nlink> count.
@@ -1098,7 +1099,7 @@
C<$File::Find::dont_use_nlink> now defaults to 1 on all platforms.
-=item symlinks
+=item Symlinks
Be aware that the option to follow symbolic links can be dangerous.
Depending on the structure of the directory tree (including symbolic
@@ -1112,12 +1113,12 @@
=head1 HISTORY
-File::Find used to produce incorrect results if called recursively.
+C<File::Find> used to produce incorrect results if called recursively.
During the development of perl 5.8 this bug was fixed.
-The first fixed version of File::Find was 1.01.
+The first fixed version of C<File::Find> was 1.01.
=head1 SEE ALSO
-L<find(1)>, find2perl.
+L<find(1)>, L<find2perl>
=cut
Modified: trunk/Master/tlpkg/tlperl/lib/File/Glob.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Glob.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Glob.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -33,7 +33,7 @@
our @EXPORT_OK = (@{$EXPORT_TAGS{'glob'}}, 'csh_glob');
-our $VERSION = '1.40';
+our $VERSION = '1.42';
sub import {
require Exporter;
@@ -190,7 +190,7 @@
=head2 POSIX FLAGS
-If no flags argument is give then C<GLOB_CSH> is set, and on VMS and
+If no flags argument is given then C<GLOB_CSH> is set, and on VMS and
Windows systems, C<GLOB_NOCASE> too. Otherwise the flags to use are
determined solely by the flags argument. The POSIX defined flags are:
Modified: trunk/Master/tlpkg/tlperl/lib/File/GlobMapper.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/GlobMapper.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/GlobMapper.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -10,14 +10,14 @@
{
if ($] < 5.006)
{
- require File::BSDGlob; import File::BSDGlob qw(:glob) ;
- $CSH_GLOB = File::BSDGlob::GLOB_CSH() ;
+ require File::BSDGlob; File::BSDGlob->import(':glob');
+ $CSH_GLOB = File::BSDGlob::GLOB_CSH();
*globber = \&File::BSDGlob::csh_glob;
}
else
{
- require File::Glob; import File::Glob qw(:glob) ;
- $CSH_GLOB = File::Glob::GLOB_CSH() ;
+ require File::Glob; File::Glob->import(':glob');
+ $CSH_GLOB = File::Glob::GLOB_CSH();
#*globber = \&File::Glob::bsd_glob;
*globber = \&File::Glob::csh_glob;
}
Modified: trunk/Master/tlpkg/tlperl/lib/File/Spec/AmigaOS.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Spec/AmigaOS.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Spec/AmigaOS.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -3,7 +3,7 @@
use strict;
require File::Spec::Unix;
-our $VERSION = '3.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
Modified: trunk/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -3,7 +3,7 @@
use strict;
require File::Spec::Unix;
-our $VERSION = '3.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
Modified: trunk/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -2,7 +2,7 @@
use strict;
-our $VERSION = '3.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
require File::Spec::Unix;
Modified: trunk/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -3,7 +3,7 @@
use File::Spec;
use strict;
-our $VERSION = '3.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
require Exporter;
@@ -72,7 +72,7 @@
=head1 SYNOPSIS
use File::Spec::Functions;
- $x = catfile('a','b');
+ my $x = catfile('a', 'b');
=head1 DESCRIPTION
Modified: trunk/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,7 +4,7 @@
use Cwd ();
require File::Spec::Unix;
-our $VERSION = '3.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
Modified: trunk/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,7 +4,7 @@
use Cwd ();
require File::Spec::Unix;
-our $VERSION = '3.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
Modified: trunk/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -3,7 +3,7 @@
use strict;
use Cwd ();
-our $VERSION = '3.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
=head1 NAME
Modified: trunk/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,7 +4,7 @@
use Cwd ();
require File::Spec::Unix;
-our $VERSION = '3.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
Modified: trunk/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -5,7 +5,7 @@
use Cwd ();
require File::Spec::Unix;
-our $VERSION = '3.88';
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
@@ -249,7 +249,7 @@
trailing directory entries can be returned, because these are significant
on some OSs. So,
- File::Spec->splitdir( "/a/b/c" );
+ File::Spec->splitdir( "/a/b//c/" );
Yields:
Modified: trunk/Master/tlpkg/tlperl/lib/File/Spec.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/Spec.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/Spec.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -2,7 +2,9 @@
use strict;
-our $VERSION = '3.88';
+# Keep $VERSION consistent in all *.pm files in this distribution, including
+# Cwd.pm.
+our $VERSION = '3.91';
$VERSION =~ tr/_//d;
my %module = (
Modified: trunk/Master/tlpkg/tlperl/lib/File/stat.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/File/stat.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/File/stat.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -1,8 +1,6 @@
-package File::stat;
-use 5.006;
+package File::stat 1.14;
+use v5.38;
-use strict;
-use warnings;
use warnings::register;
use Carp;
use constant _IS_CYGWIN => $^O eq "cygwin";
@@ -9,11 +7,6 @@
BEGIN { *warnif = \&warnings::warnif }
-our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-
-our $VERSION = '1.13';
-
-our @fields;
our ( $st_dev, $st_ino, $st_mode,
$st_nlink, $st_uid, $st_gid,
$st_rdev, $st_size,
@@ -21,18 +14,16 @@
$st_blksize, $st_blocks
);
-BEGIN {
- use Exporter ();
- @EXPORT = qw(stat lstat);
- @fields = qw( $st_dev $st_ino $st_mode
+use Exporter 'import';
+our @EXPORT = qw(stat lstat);
+our @fields = qw( $st_dev $st_ino $st_mode
$st_nlink $st_uid $st_gid
$st_rdev $st_size
$st_atime $st_mtime $st_ctime
$st_blksize $st_blocks
);
- @EXPORT_OK = ( @fields, "stat_cando" );
- %EXPORT_TAGS = ( FIELDS => [ @fields, @EXPORT ] );
-}
+our @EXPORT_OK = ( @fields, "stat_cando" );
+our %EXPORT_TAGS = ( FIELDS => [ @fields, @EXPORT ] );
use Fcntl qw(S_IRUSR S_IWUSR S_IXUSR);
@@ -185,9 +176,6 @@
}
};
-# Class::Struct forbids use of @ISA
-sub import { goto &Exporter::import }
-
use Class::Struct qw(struct);
struct 'File::stat' => [
map { $_ => '$' } qw{
@@ -196,7 +184,7 @@
}
];
-sub populate (@) {
+sub populate {
return unless @_;
my $stob = new();
@$stob = (
@@ -206,9 +194,9 @@
return $stob;
}
-sub lstat ($) { populate(CORE::lstat(shift)) }
+sub lstat :prototype($) { populate(CORE::lstat(shift)) }
-sub stat ($) {
+sub stat :prototype($) {
my $arg = shift;
my $st = populate(CORE::stat $arg);
return $st if defined $st;
@@ -223,7 +211,6 @@
return populate(CORE::stat $fh);
}
-1;
__END__
=head1 NAME
Modified: trunk/Master/tlpkg/tlperl/lib/FindBin.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/FindBin.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/FindBin.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -6,7 +6,7 @@
=head1 NAME
-FindBin - Locate directory of original perl script
+FindBin - Locate directory of original Perl script
=head1 SYNOPSIS
@@ -13,8 +13,6 @@
use FindBin;
use lib "$FindBin::Bin/../lib";
- or
-
use FindBin qw($Bin);
use lib "$Bin/../lib";
@@ -28,33 +26,51 @@
example will allow the use of modules in the lib directory without knowing
where the software tree is installed.
-If perl is invoked using the B<-e> option or the perl script is read from
-C<STDIN> then FindBin sets both C<$Bin> and C<$RealBin> to the current
+If C<perl> is invoked using the C<-e> option or the Perl script is read from
+C<STDIN>, then C<FindBin> sets both C<$Bin> and C<$RealBin> to the current
directory.
=head1 EXPORTABLE VARIABLES
- $Bin - path to bin directory from where script was invoked
- $Script - basename of script from which perl was invoked
- $RealBin - $Bin with all links resolved
- $RealScript - $Script with all links resolved
+=over
+=item C<$Bin> or C<$Dir>
+
+Path to the bin B<directory> from where script was invoked
+
+=item C<$Script>
+
+B<Basename> of the script from which C<perl> was invoked
+
+=item C<$RealBin> or C<$RealDir>
+
+C<$Bin> with all links resolved
+
+=item C<$RealScript>
+
+C<$Script> with all links resolved
+
+=back
+
+You can also use the C<ALL> tag to export all of the above variables together:
+
+ use FindBin ':ALL';
+
=head1 KNOWN ISSUES
If there are two modules using C<FindBin> from different directories
under the same interpreter, this won't work. Since C<FindBin> uses a
C<BEGIN> block, it'll be executed only once, and only the first caller
-will get it right. This is a problem under mod_perl and other persistent
+will get it right. This is a problem under C<mod_perl> and other persistent
Perl environments, where you shouldn't use this module. Which also means
that you should avoid using C<FindBin> in modules that you plan to put
-on CPAN. To make sure that C<FindBin> will work is to call the C<again>
-function:
+on CPAN. Call the C<again> function to make sure that C<FindBin> will work:
use FindBin;
FindBin::again(); # or FindBin->again;
-In former versions of FindBin there was no C<again> function. The
-workaround was to force the C<BEGIN> block to be executed again:
+In former versions of C<FindBin> there was no C<again> function.
+The workaround was to force the C<BEGIN> block to be executed again:
delete $INC{'FindBin.pm'};
require FindBin;
@@ -61,7 +77,7 @@
=head1 AUTHORS
-FindBin is supported as part of the core perl distribution. Please submit bug
+C<FindBin> is supported as part of the core perl distribution. Please submit bug
reports at L<https://github.com/Perl/perl5/issues>.
Graham Barr E<lt>F<gbarr at pobox.com>E<gt>
@@ -90,7 +106,7 @@
our %EXPORT_TAGS = (ALL => [qw($Bin $Script $RealBin $RealScript $Dir $RealDir)]);
our @ISA = qw(Exporter);
-our $VERSION = "1.53";
+our $VERSION = "1.54";
# needed for VMS-specific filename translation
if( $^O eq 'VMS' ) {
Added: trunk/Master/tlpkg/tlperl/lib/Getopt/Long/Parser.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Getopt/Long/Parser.pm (rev 0)
+++ trunk/Master/tlpkg/tlperl/lib/Getopt/Long/Parser.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -0,0 +1,177 @@
+#! perl
+
+# Parser.pm -- Getopt::Long object oriented interface
+# Author : Johan Vromans
+# Created On : Thu Nov 9 10:37:00 2023
+# Last Modified On: Sat Nov 11 17:48:49 2023
+# Update Count : 13
+# Status : Released
+
+package Getopt::Long::Parser;
+
+our $VERSION = 2.57;
+
+=head1 NAME
+
+Getopt::Long::Parser - Getopt::Long object oriented interface
+
+=head1 SYNOPSIS
+
+ use Getopt::Long::Parser;
+ my $p = Getopt::Long::Parser->new;
+ $p->configure( ...configuration options... );
+ if ( $p->getoptions( ...options descriptions... ) ) ...
+ if ( $p->getoptionsfromarray( \@array, ...options descriptions... ) ) ...
+
+Configuration options can be passed to the constructor:
+
+ my $p = Getopt::Long::Parser->new
+ config => [...configuration options...];
+
+=head1 DESCRIPTION
+
+Getopt::Long::Parser is an object oriented interface to
+L<Getopt::Long>. See its documentation for configuration and use.
+
+Note that Getopt::Long and Getopt::Long::Parser are not object
+oriented. Getopt::Long::Parser emulates an object oriented interface,
+which should be okay for most purposes.
+
+=head1 CONSTRUCTOR
+
+ my $p = Getopt::Long::Parser->new( %options );
+
+The constructor takes an optional hash with parameters.
+
+=over 4
+
+=item config
+
+An array reference with configuration settings.
+See L<Getopt::Long/"Configuring Getopt::Long"> for all possible settings.
+
+=back
+
+=cut
+
+# Getopt::Long has a stub for Getopt::Long::Parser::new.
+use Getopt::Long ();
+no warnings 'redefine';
+
+sub new {
+ my $that = shift;
+ my $class = ref($that) || $that;
+ my %atts = @_;
+
+ # Register the callers package.
+ my $self = { caller_pkg => (caller)[0] };
+
+ bless ($self, $class);
+
+ my $default_config = Getopt::Long::_default_config();
+
+ # Process config attributes.
+ if ( defined $atts{config} ) {
+ my $save = Getopt::Long::Configure ($default_config, @{$atts{config}});
+ $self->{settings} = Getopt::Long::Configure ($save);
+ delete ($atts{config});
+ }
+ # Else use default config.
+ else {
+ $self->{settings} = $default_config;
+ }
+
+ if ( %atts ) { # Oops
+ die(__PACKAGE__.": unhandled attributes: ".
+ join(" ", sort(keys(%atts)))."\n");
+ }
+
+ $self;
+}
+
+use warnings 'redefine';
+
+=head1 METHODS
+
+In the examples, $p is assumed to be the result of a call to the constructor.
+
+=head2 configure
+
+ $p->configure( %settings );
+
+Update the current config settings.
+See L<Getopt::Long/"Configuring Getopt::Long"> for all possible settings.
+
+=cut
+
+sub configure {
+ my ($self) = shift;
+
+ # Restore settings, merge new settings in.
+ my $save = Getopt::Long::Configure ($self->{settings}, @_);
+
+ # Restore orig config and save the new config.
+ $self->{settings} = Getopt::Long::Configure ($save);
+}
+
+=head2 getoptionsfromarray
+
+ $res = $p->getoptionsfromarray( $aref, @opts );
+
+=head2 getoptions
+
+ $res = $p->getoptions( @opts );
+
+The same as getoptionsfromarray( \@ARGV, @opts ).
+
+=cut
+
+sub getoptions {
+ my ($self) = shift;
+
+ return $self->getoptionsfromarray(\@ARGV, @_);
+}
+
+sub getoptionsfromarray {
+ my ($self) = shift;
+
+ # Restore config settings.
+ my $save = Getopt::Long::Configure ($self->{settings});
+
+ # Call main routine.
+ my $ret = 0;
+ $Getopt::Long::caller = $self->{caller_pkg};
+
+ eval {
+ # Locally set exception handler to default, otherwise it will
+ # be called implicitly here, and again explicitly when we try
+ # to deliver the messages.
+ local ($SIG{__DIE__}) = 'DEFAULT';
+ $ret = Getopt::Long::GetOptionsFromArray (@_);
+ };
+
+ # Restore saved settings.
+ Getopt::Long::Configure ($save);
+
+ # Handle errors and return value.
+ die ($@) if $@;
+ return $ret;
+}
+
+=head1 SEE ALSO
+
+L<Getopt::Long>
+
+=head1 AUTHOR
+
+Johan Vromans <jvromans at squirrel.nl>
+
+=head1 COPYRIGHT AND DISCLAIMER
+
+This program is Copyright 1990,2015,2023 by Johan Vromans.
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl.
+
+=cut
+
+1;
Property changes on: trunk/Master/tlpkg/tlperl/lib/Getopt/Long/Parser.pm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: trunk/Master/tlpkg/tlperl/lib/Getopt/Long.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Getopt/Long.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Getopt/Long.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -3,16 +3,14 @@
# Getopt::Long.pm -- Universal options parsing
# Author : Johan Vromans
# Created On : Tue Sep 11 15:00:12 1990
-# Last Modified By: Johan Vromans
-# Last Modified On: Thu Nov 17 17:45:27 2022
-# Update Count : 1777
+# Last Modified On: Sat Nov 11 17:48:41 2023
+# Update Count : 1808
# Status : Released
################ Module Preamble ################
-# There are no CPAN testers for very old versions of Perl.
-# Getopt::Long is reported to run under 5.8.
-use 5.004;
+# Getopt::Long is reported to run under 5.6.1. Thanks Tux!
+use 5.006001;
use strict;
use warnings;
@@ -19,15 +17,10 @@
package Getopt::Long;
-use vars qw($VERSION);
-$VERSION = 2.54;
-# For testing versions only.
-use vars qw($VERSION_STRING);
-$VERSION_STRING = "2.54";
+our $VERSION = 2.57;
use Exporter;
-use vars qw(@ISA @EXPORT @EXPORT_OK);
- at ISA = qw(Exporter);
+use base qw(Exporter);
# Exported subroutines.
sub GetOptions(@); # always
@@ -37,8 +30,12 @@
sub HelpMessage(@); # on demand
sub VersionMessage(@); # in demand
+our @EXPORT;
+our @EXPORT_OK;
+# Values for $order. See GNU getopt.c for details.
+our ($REQUIRE_ORDER, $PERMUTE, $RETURN_IN_ORDER);
BEGIN {
- # Init immediately so their contents can be used in the 'use vars' below.
+ ($REQUIRE_ORDER, $PERMUTE, $RETURN_IN_ORDER) = (0..2);
@EXPORT = qw(&GetOptions $REQUIRE_ORDER $PERMUTE $RETURN_IN_ORDER);
@EXPORT_OK = qw(&HelpMessage &VersionMessage &Configure
&GetOptionsFromArray &GetOptionsFromString);
@@ -45,13 +42,12 @@
}
# User visible variables.
-use vars @EXPORT, @EXPORT_OK;
-use vars qw($error $debug $major_version $minor_version);
+our ($error, $debug, $major_version, $minor_version);
# Deprecated visible variables.
-use vars qw($autoabbrev $getopt_compat $ignorecase $bundling $order
- $passthrough);
+our ($autoabbrev, $getopt_compat, $ignorecase, $bundling, $order,
+ $passthrough);
# Official invisible variables.
-use vars qw($genprefix $caller $gnu_compat $auto_help $auto_version $longprefix);
+our ($genprefix, $caller, $gnu_compat, $auto_help, $auto_version, $longprefix);
# Really invisible variables.
my $bundling_values;
@@ -125,17 +121,11 @@
################ Initialization ################
-# Values for $order. See GNU getopt.c for details.
-($REQUIRE_ORDER, $PERMUTE, $RETURN_IN_ORDER) = (0..2);
# Version major/minor numbers.
($major_version, $minor_version) = $VERSION =~ /^(\d+)\.(\d+)/;
ConfigDefaults();
-################ OO Interface ################
-
-package Getopt::Long::Parser;
-
# Store a copy of the default configuration. Since ConfigDefaults has
# just been called, what we get from Configure is the default.
my $default_config = do {
@@ -142,81 +132,19 @@
Getopt::Long::Configure ()
};
-sub new {
- my $that = shift;
- my $class = ref($that) || $that;
- my %atts = @_;
+# For the parser only.
+sub _default_config { $default_config }
- # Register the callers package.
- my $self = { caller_pkg => (caller)[0] };
+################ Back to Normal ################
- bless ($self, $class);
-
- # Process config attributes.
- if ( defined $atts{config} ) {
- my $save = Getopt::Long::Configure ($default_config, @{$atts{config}});
- $self->{settings} = Getopt::Long::Configure ($save);
- delete ($atts{config});
- }
- # Else use default config.
- else {
- $self->{settings} = $default_config;
- }
-
- if ( %atts ) { # Oops
- die(__PACKAGE__.": unhandled attributes: ".
- join(" ", sort(keys(%atts)))."\n");
- }
-
- $self;
+# The ooparser was traditionally part of the main package.
+no warnings 'redefine';
+sub Getopt::Long::Parser::new {
+ require Getopt::Long::Parser;
+ goto &Getopt::Long::Parser::new;
}
+use warnings 'redefine';
-sub configure {
- my ($self) = shift;
-
- # Restore settings, merge new settings in.
- my $save = Getopt::Long::Configure ($self->{settings}, @_);
-
- # Restore orig config and save the new config.
- $self->{settings} = Getopt::Long::Configure ($save);
-}
-
-sub getoptions {
- my ($self) = shift;
-
- return $self->getoptionsfromarray(\@ARGV, @_);
-}
-
-sub getoptionsfromarray {
- my ($self) = shift;
-
- # Restore config settings.
- my $save = Getopt::Long::Configure ($self->{settings});
-
- # Call main routine.
- my $ret = 0;
- $Getopt::Long::caller = $self->{caller_pkg};
-
- eval {
- # Locally set exception handler to default, otherwise it will
- # be called implicitly here, and again explicitly when we try
- # to deliver the messages.
- local ($SIG{__DIE__}) = 'DEFAULT';
- $ret = Getopt::Long::GetOptionsFromArray (@_);
- };
-
- # Restore saved settings.
- Getopt::Long::Configure ($save);
-
- # Handle errors and return value.
- die ($@) if $@;
- return $ret;
-}
-
-package Getopt::Long;
-
-################ Back to Normal ################
-
# Indices in option control info.
# Note that ParseOptions uses the fields directly. Search for 'hard-wired'.
use constant CTL_TYPE => 0;
@@ -305,7 +233,7 @@
# Avoid some warnings if debugging.
local ($^W) = 0;
print STDERR
- ("Getopt::Long $Getopt::Long::VERSION_STRING ",
+ ("Getopt::Long $VERSION ",
"called from package \"$pkg\".",
"\n ",
"argv: ",
@@ -806,11 +734,15 @@
sub ParseOptionSpec ($$) {
my ($opt, $opctl) = @_;
+ # Allow period in option name unless passing through,
+ my $op = $passthrough
+ ? qr/(?: \w+[-\w]* )/x : qr/(?: \w+[-.\w]* )/x;
+
# Match option spec.
if ( $opt !~ m;^
(
# Option name
- (?: \w+[-\w]* )
+ $op
# Aliases
(?: \| (?: . [^|!+=:]* )? )*
)?
@@ -929,7 +861,8 @@
}
}
- if ( $dups && $^W ) {
+ if ( $dups ) {
+ # Warn now. Will become fatal in a future release.
foreach ( split(/\n+/, $dups) ) {
warn($_."\n");
}
@@ -1495,9 +1428,7 @@
$0, defined $v ? " version $v" : (),
"\n",
"(", __PACKAGE__, "::", "GetOptions",
- " version ",
- defined($Getopt::Long::VERSION_STRING)
- ? $Getopt::Long::VERSION_STRING : $VERSION, ";",
+ " version $VERSION,",
" Perl version ",
$] >= 5.006 ? sprintf("%vd", $^V) : $],
")\n");
@@ -1515,7 +1446,7 @@
sub HelpMessage(@) {
eval {
require Pod::Usage;
- import Pod::Usage;
+ Pod::Usage->import;
1;
} || die("Cannot provide help: cannot load Pod::Usage\n");
@@ -1941,7 +1872,9 @@
The name specification contains the name of the option, optionally
followed by a list of alternative names separated by vertical bar
-characters.
+characters. The name is made up of alphanumeric characters, hyphens,
+underscores. If C<pass_through> is disabled, a period is also allowed in
+option names.
length option name is "length"
length|size|l name is "length", aliases are "size" and "l"
@@ -2048,19 +1981,8 @@
=head2 Object oriented interface
-Getopt::Long can be used in an object oriented way as well:
+See L<Getopt::Long::Parser>.
- use Getopt::Long;
- $p = Getopt::Long::Parser->new;
- $p->configure(...configuration options...);
- if ($p->getoptions(...options descriptions...)) ...
- if ($p->getoptionsfromarray( \@array, ...options descriptions...)) ...
-
-Configuration options can be passed to the constructor:
-
- $p = new Getopt::Long::Parser
- config => [...configuration options...];
-
=head2 Callback object
In version 2.37 the first argument to the callback function was
@@ -2389,11 +2311,12 @@
C<gnu_compat> controls whether C<--opt=> is allowed, and what it should
do. Without C<gnu_compat>, C<--opt=> gives an error. With C<gnu_compat>,
-C<--opt=> will give option C<opt> and empty value.
+C<--opt=> will give option C<opt> an empty value.
This is the way GNU getopt_long() does it.
-Note that C<--opt value> is still accepted, even though GNU
-getopt_long() doesn't.
+Note that for options with optional arguments, C<--opt value> is still
+accepted, even though GNU getopt_long() requires writing C<--opt=value>
+in this case.
=item gnu_getopt
@@ -2677,7 +2600,7 @@
the resultant value in a global variable named C<opt_>I<XXX>, where
I<XXX> is the primary name of this option. When a program executes
under C<use strict> (recommended), these variables must be
-pre-declared with our() or C<use vars>.
+pre-declared with our().
our $opt_length = 0;
GetOptions ('length=i'); # will store in $opt_length
@@ -2805,7 +2728,7 @@
=head1 COPYRIGHT AND DISCLAIMER
-This program is Copyright 1990,2015 by Johan Vromans.
+This program is Copyright 1990,2015,2023 by Johan Vromans.
This program is free software; you can redistribute it and/or
modify it under the terms of the Perl Artistic License or the
GNU General Public License as published by the Free Software
Modified: trunk/Master/tlpkg/tlperl/lib/Getopt/Std.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Getopt/Std.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Getopt/Std.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -14,11 +14,11 @@
use Getopt::Std;
getopts('oif:'); # -o & -i are boolean flags, -f takes an argument
- # Sets $opt_* as a side effect.
- getopts('oif:', \%opts); # options as above. Values in %opts
- getopt('oDI'); # -o, -D & -I take arg.
- # Sets $opt_* as a side effect.
- getopt('oDI', \%opts); # -o, -D & -I take arg. Values in %opts
+ # Sets $opt_* global variables as a side effect
+ getopts('oif:', \my %opts); # Options as above, values in %opts
+ getopt('oDI'); # -o, -D & -I take arguments
+ # Sets $opt_* global variables as a side effect
+ getopt('oDI', \my %opts); # -o, -D & -I take arg, values in %opts
=head1 DESCRIPTION
@@ -39,8 +39,8 @@
The C<getopt()> function is similar, but its argument is a string containing
all switches that take an argument. If no argument is provided for a switch,
say, C<y>, the corresponding C<$opt_y> will be set to an undefined value.
-Unspecified switches are silently accepted. Use of C<getopt()> is not
-recommended.
+Unspecified switches are silently accepted. Use of C<getopt()> is B<not
+recommended>.
Note that, if your code is running under the recommended C<use strict
vars> pragma, you will need to declare these package variables
@@ -55,36 +55,36 @@
To allow programs to process arguments that look like switches, but aren't,
both functions will stop processing switches when they see the argument
-C<-->. The C<--> will be removed from @ARGV.
+C<-->. The C<--> will be removed from C<@ARGV>.
=head1 C<--help> and C<--version>
-If C<-> is not a recognized switch letter, getopts() supports arguments
+If C<-> is not a recognized switch letter, C<getopts()> supports arguments
C<--help> and C<--version>. If C<main::HELP_MESSAGE()> and/or
C<main::VERSION_MESSAGE()> are defined, they are called; the arguments are
the output file handle, the name of option-processing package, its version,
and the switches string. If the subroutines are not defined, an attempt is
-made to generate intelligent messages; for best results, define $main::VERSION.
+made to generate intelligent messages; for best results, define C<$main::VERSION>.
If embedded documentation (in pod format, see L<perlpod>) is detected
in the script, C<--help> will also show how to access the documentation.
-Note that due to excessive paranoia, if $Getopt::Std::STANDARD_HELP_VERSION
-isn't true (the default is false), then the messages are printed on STDERR,
+Note that due to excessive paranoia, if C<$Getopt::Std::STANDARD_HELP_VERSION>
+isn't true (the default is false), then the messages are printed on C<STDERR>,
and the processing continues after the messages are printed. This being
the opposite of the standard-conforming behaviour, it is strongly recommended
-to set $Getopt::Std::STANDARD_HELP_VERSION to true.
+to set C<$Getopt::Std::STANDARD_HELP_VERSION> to true.
One can change the output file handle of the messages by setting
-$Getopt::Std::OUTPUT_HELP_VERSION. One can print the messages of C<--help>
-(without the C<Usage:> line) and C<--version> by calling functions help_mess()
-and version_mess() with the switches string as an argument.
+C<$Getopt::Std::OUTPUT_HELP_VERSION>. One can print the messages of C<--help>
+(without the C<Usage:> line) and C<--version> by calling functions C<help_mess()>
+and C<version_mess()> with the switches string as an argument.
=cut
our @ISA = qw(Exporter);
our @EXPORT = qw(getopt getopts);
-our $VERSION = '1.13';
+our $VERSION = '1.14';
# uncomment the next line to disable 1.03-backward compatibility paranoia
# $STANDARD_HELP_VERSION = 1;
@@ -100,17 +100,17 @@
sub getopt (;$$) {
my ($argumentative, $hash) = @_;
$argumentative = '' if !defined $argumentative;
- my ($first,$rest);
+ my ($first, $rest);
local $_;
local @EXPORT;
while (@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
- ($first,$rest) = ($1,$2);
+ ($first, $rest) = ($1, $2);
if (/^--$/) { # early exit if --
shift @ARGV;
last;
}
- if (index($argumentative,$first) >= 0) {
+ if (index($argumentative, $first) >= 0) {
if ($rest ne '') {
shift(@ARGV);
}
@@ -146,7 +146,7 @@
}
unless (ref $hash) {
local $Exporter::ExportLevel = 1;
- import Getopt::Std;
+ Getopt::Std->import;
}
}
@@ -233,7 +233,7 @@
sub getopts ($;$) {
my ($argumentative, $hash) = @_;
- my (@args,$first,$rest,$exit);
+ my (@args, $first, $rest, $exit);
my $errs = 0;
local $_;
local @EXPORT;
@@ -240,12 +240,12 @@
@args = split( / */, $argumentative );
while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/s) {
- ($first,$rest) = ($1,$2);
+ ($first, $rest) = ($1, $2);
if (/^--$/) { # early exit if --
shift @ARGV;
last;
}
- my $pos = index($argumentative,$first);
+ my $pos = index($argumentative, $first);
if ($pos >= 0) {
if (defined($args[$pos+1]) and ($args[$pos+1] eq ':')) {
shift(@ARGV);
@@ -304,7 +304,7 @@
}
unless (ref $hash) {
local $Exporter::ExportLevel = 1;
- import Getopt::Std;
+ Getopt::Std->import;
}
$errs == 0;
}
Modified: trunk/Master/tlpkg/tlperl/lib/HTTP/Tiny.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/HTTP/Tiny.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/HTTP/Tiny.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,7 +4,7 @@
use warnings;
# ABSTRACT: A small, simple, correct HTTP/1.1 client
-our $VERSION = '0.086';
+our $VERSION = '0.088';
sub _croak { require Carp; Carp::croak(@_) }
@@ -1727,7 +1727,7 @@
=head1 VERSION
-version 0.086
+version 0.088
=head1 SYNOPSIS
@@ -2351,7 +2351,7 @@
=head2 Bugs / Feature Requests
Please report any bugs or feature requests through the issue tracker
-at L<https://github.com/chansen/p5-http-tiny/issues>.
+at L<https://github.com/Perl-Toolchain-Gang/HTTP-Tiny/issues>.
You will be notified automatically of any progress on your issue.
=head2 Source Code
@@ -2359,9 +2359,9 @@
This is open source software. The code repository is available for
public review and contribution under the terms of the license.
-L<https://github.com/chansen/p5-http-tiny>
+L<https://github.com/Perl-Toolchain-Gang/HTTP-Tiny>
- git clone https://github.com/chansen/p5-http-tiny.git
+ git clone https://github.com/Perl-Toolchain-Gang/HTTP-Tiny.git
=head1 AUTHORS
Modified: trunk/Master/tlpkg/tlperl/lib/Hash/Util/FieldHash.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Hash/Util/FieldHash.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Hash/Util/FieldHash.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -5,7 +5,7 @@
no warnings 'experimental::builtin';
use builtin qw(reftype);
-our $VERSION = '1.26';
+our $VERSION = '1.27';
use Exporter 'import';
our %EXPORT_TAGS = (
Modified: trunk/Master/tlpkg/tlperl/lib/Hash/Util.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Hash/Util.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Hash/Util.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -42,7 +42,7 @@
BEGIN {
# make sure all our XS routines are available early so their prototypes
# are correctly applied in the following code.
- our $VERSION = '0.30';
+ our $VERSION = '0.32';
require XSLoader;
XSLoader::load();
}
@@ -782,7 +782,7 @@
=back
-=head2 Operating on references to hashes.
+=head2 Operating on references to hashes
Most subroutines documented in this module have equivalent versions
that operate on references to hashes instead of native hashes.
Modified: trunk/Master/tlpkg/tlperl/lib/I18N/Langinfo.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/I18N/Langinfo.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/I18N/Langinfo.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -11,66 +11,106 @@
our @EXPORT = qw(langinfo);
our @EXPORT_OK = qw(
- ABDAY_1
- ABDAY_2
- ABDAY_3
- ABDAY_4
- ABDAY_5
- ABDAY_6
- ABDAY_7
- ABMON_1
- ABMON_10
- ABMON_11
- ABMON_12
- ABMON_2
- ABMON_3
- ABMON_4
- ABMON_5
- ABMON_6
- ABMON_7
- ABMON_8
- ABMON_9
- ALT_DIGITS
- AM_STR
- CODESET
- CRNCYSTR
- DAY_1
- DAY_2
- DAY_3
- DAY_4
- DAY_5
- DAY_6
- DAY_7
- D_FMT
- D_T_FMT
- ERA
- ERA_D_FMT
- ERA_D_T_FMT
- ERA_T_FMT
- MON_1
- MON_10
- MON_11
- MON_12
- MON_2
- MON_3
- MON_4
- MON_5
- MON_6
- MON_7
- MON_8
- MON_9
- NOEXPR
- NOSTR
- PM_STR
- RADIXCHAR
- THOUSEP
- T_FMT
- T_FMT_AMPM
- YESEXPR
- YESSTR
-);
+ ABDAY_1
+ ABDAY_2
+ ABDAY_3
+ ABDAY_4
+ ABDAY_5
+ ABDAY_6
+ ABDAY_7
+ ABMON_1
+ ABMON_2
+ ABMON_3
+ ABMON_4
+ ABMON_5
+ ABMON_6
+ ABMON_7
+ ABMON_8
+ ABMON_9
+ ABMON_10
+ ABMON_11
+ ABMON_12
+ ALT_DIGITS
+ AM_STR
+ CODESET
+ CRNCYSTR
+ DAY_1
+ DAY_2
+ DAY_3
+ DAY_4
+ DAY_5
+ DAY_6
+ DAY_7
+ D_FMT
+ D_T_FMT
+ ERA
+ ERA_D_FMT
+ ERA_D_T_FMT
+ ERA_T_FMT
+ MON_1
+ MON_2
+ MON_3
+ MON_4
+ MON_5
+ MON_6
+ MON_7
+ MON_8
+ MON_9
+ MON_10
+ MON_11
+ MON_12
+ NOEXPR
+ NOSTR
+ PM_STR
+ RADIXCHAR
+ THOUSEP
+ T_FMT
+ T_FMT_AMPM
+ YESEXPR
+ YESSTR
+ _NL_ADDRESS_POSTAL_FMT
+ _NL_ADDRESS_COUNTRY_NAME
+ _NL_ADDRESS_COUNTRY_POST
+ _NL_ADDRESS_COUNTRY_AB2
+ _NL_ADDRESS_COUNTRY_AB3
+ _NL_ADDRESS_COUNTRY_CAR
+ _NL_ADDRESS_COUNTRY_NUM
+ _NL_ADDRESS_COUNTRY_ISBN
+ _NL_ADDRESS_LANG_NAME
+ _NL_ADDRESS_LANG_AB
+ _NL_ADDRESS_LANG_TERM
+ _NL_ADDRESS_LANG_LIB
+ _NL_IDENTIFICATION_TITLE
+ _NL_IDENTIFICATION_SOURCE
+ _NL_IDENTIFICATION_ADDRESS
+ _NL_IDENTIFICATION_CONTACT
+ _NL_IDENTIFICATION_EMAIL
+ _NL_IDENTIFICATION_TEL
+ _NL_IDENTIFICATION_FAX
+ _NL_IDENTIFICATION_LANGUAGE
+ _NL_IDENTIFICATION_TERRITORY
+ _NL_IDENTIFICATION_AUDIENCE
+ _NL_IDENTIFICATION_APPLICATION
+ _NL_IDENTIFICATION_ABBREVIATION
+ _NL_IDENTIFICATION_REVISION
+ _NL_IDENTIFICATION_DATE
+ _NL_IDENTIFICATION_CATEGORY
+ _NL_MEASUREMENT_MEASUREMENT
+ _NL_NAME_NAME_FMT
+ _NL_NAME_NAME_GEN
+ _NL_NAME_NAME_MR
+ _NL_NAME_NAME_MRS
+ _NL_NAME_NAME_MISS
+ _NL_NAME_NAME_MS
+ _NL_PAPER_HEIGHT
+ _NL_PAPER_WIDTH
+ _NL_TELEPHONE_TEL_INT_FMT
+ _NL_TELEPHONE_TEL_DOM_FMT
+ _NL_TELEPHONE_INT_SELECT
+ _NL_TELEPHONE_INT_PREFIX
+ );
-our $VERSION = '0.22';
+our $VERSION = '0.24';
XSLoader::load();
@@ -77,6 +117,8 @@
1;
__END__
+=encoding utf8
+
=head1 NAME
I18N::Langinfo - query locale information
@@ -149,22 +191,92 @@
=item *
For the character code set being used (such as "ISO8859-1", "cp850",
-"koi8-r", "sjis", "utf8", etc.), and for the currency string:
+"koi8-r", "sjis", "utf8", etc.):
- CODESET CRNCYSTR
+ CODESET
=item *
-For an alternate representation of digits, for the
-radix character used between the integer and the fractional part
-of decimal numbers, the group separator string for large-ish floating point
-numbers (yes, the final two are redundant with
+For the symbol or string of characters that indicates a number is a monetary
+value:
+
+ CRNCYSTR
+
+An example is the dollar sign C<$>. Some locales not associated with
+particular locations may have an empty currency string. (The C locale is
+one.) Otherwise, the return of this is always prefixed by one of these three
+characters:
+
+=over
+
+=item C<->
+
+indicates that in this locale, the string precedes the numeric value, as in a
+U.S. locale: C<$9.95>.
+
+=item C<+>
+
+indicates that in this locale, the string follows the numeric value, like
+C<9.95USD>.
+
+=item C<.>
+
+indicates that in this locale, the string replaces the radix character, like
+C<9$95>.
+
+=back
+
+=item *
+
+For the radix character used between the integer and the fractional part of
+decimal numbers, and the group separator string for large-ish floating point
+numbers (yes, these are redundant with
L<POSIX::localeconv()|POSIX/localeconv>):
- ALT_DIGITS RADIXCHAR THOUSEP
+ RADIXCHAR THOUSEP
=item *
+For any alternate digits used in this locale besides the standard C<0..9>:
+
+ ALT_DIGITS
+
+This returns a sequence of alternate numeric reprsesentations for the numbers
+C<0> ... up to C<99>. The representations are returned in a single string,
+with a semi-colon C<;> used to separated the individual ones.
+
+Most locales don't have alternate digits, so the string will be empty.
+
+To access this data conveniently, you could do something like
+
+ use I18N::Langinfo qw(langinfo ALT_DIGITS);
+ my @alt_digits = split ';', langinfo(ALT_DIGITS);
+
+The array C<@alt_digits> will contain 0 elements if the current locale doesn't
+have alternate digits specified for it. Otherwise, it will have as many
+elements as the locale defines, with C<[0]> containing the alternate digit for
+zero; C<[1]> for one; and so forth, up to potentially C<[99]> for the
+alternate representation of ninety-nine.
+
+Be aware that the alternate representation in some locales for the numbers
+0..9 will have a leading alternate-zero, so would look like the equivalent of
+00..09.
+
+Running this program
+
+ use I18N::Langinfo qw(langinfo ALT_DIGITS);
+ my @alt_digits = split ';', langinfo(ALT_DIGITS);
+ splice @alt_digits, 15;
+ print join " ", @alt_digits, "\n";
+
+on a Japanese locale yields
+
+S<C<〇 一 二 三 四 五 六 七 八 九 十 十一 十二 十三 十四>>
+
+on some platforms.
+
+=item *
+
For the affirmative and negative responses and expressions:
YESSTR YESEXPR NOSTR NOEXPR
@@ -178,6 +290,114 @@
=back
+In addition, Linux boxes have extra items, as follows. (When called from
+other platform types, these return a stub value, of not much use.)
+
+=over
+
+=item C<_NL_ADDRESS_POSTAL_FMT>
+
+=item C<_NL_ADDRESS_COUNTRY_NAME>
+
+=item C<_NL_ADDRESS_COUNTRY_POST>
+
+=item C<_NL_ADDRESS_COUNTRY_AB2>
+
+=item C<_NL_ADDRESS_COUNTRY_AB3>
+
+=item C<_NL_ADDRESS_COUNTRY_CAR>
+
+=item C<_NL_ADDRESS_COUNTRY_NUM>
+
+=item C<_NL_ADDRESS_COUNTRY_ISBN>
+
+=item C<_NL_ADDRESS_LANG_NAME>
+
+=item C<_NL_ADDRESS_LANG_AB>
+
+=item C<_NL_ADDRESS_LANG_TERM>
+
+=item C<_NL_ADDRESS_LANG_LIB>
+
+On Linux boxes, these return information about the country for the current
+locale. Further information is found in F<langinfo.h>
+
+=item C<_NL_IDENTIFICATION_TITLE>
+
+=item C<_NL_IDENTIFICATION_SOURCE>
+
+=item C<_NL_IDENTIFICATION_ADDRESS>
+
+=item C<_NL_IDENTIFICATION_CONTACT>
+
+=item C<_NL_IDENTIFICATION_EMAIL>
+
+=item C<_NL_IDENTIFICATION_TEL>
+
+=item C<_NL_IDENTIFICATION_FAX>
+
+=item C<_NL_IDENTIFICATION_LANGUAGE>
+
+=item C<_NL_IDENTIFICATION_TERRITORY>
+
+=item C<_NL_IDENTIFICATION_AUDIENCE>
+
+=item C<_NL_IDENTIFICATION_APPLICATION>
+
+=item C<_NL_IDENTIFICATION_ABBREVIATION>
+
+=item C<_NL_IDENTIFICATION_REVISION>
+
+=item C<_NL_IDENTIFICATION_DATE>
+
+=item C<_NL_IDENTIFICATION_CATEGORY>
+
+On Linux boxes, these return meta information about the current locale,
+such as how to get in touch with its maintainers.
+Further information is found in F<langinfo.h>
+
+=item C<_NL_MEASUREMENT_MEASUREMENT>
+
+On Linux boxes, it returns 1 if the metric system of measurement prevails in
+the locale; or 2 if US customary units prevail.
+
+=item C<_NL_NAME_NAME_FMT>
+
+=item C<_NL_NAME_NAME_GEN>
+
+=item C<_NL_NAME_NAME_MR>
+
+=item C<_NL_NAME_NAME_MRS>
+
+=item C<_NL_NAME_NAME_MISS>
+
+=item C<_NL_NAME_NAME_MS>
+
+On Linux boxes, these return information about how names are formatted and
+the personal salutations used in the current locale. Further information
+is found in L<locale(7)> and F<langinfo.h>
+
+=item C<_NL_PAPER_HEIGHT>
+
+=item C<_NL_PAPER_WIDTH>
+
+On Linux boxes, these return the standard size of sheets of paper (in
+millimeters) in the current locale.
+
+=item C<_NL_TELEPHONE_TEL_INT_FMT>
+
+=item C<_NL_TELEPHONE_TEL_DOM_FMT>
+
+=item C<_NL_TELEPHONE_INT_SELECT>
+
+=item C<_NL_TELEPHONE_INT_PREFIX>
+
+On Linux boxes, these return information about how telephone numbers are
+formatted (both domestically and international calling) in the current locale.
+Further information is found in F<langinfo.h>
+
+=back
+
=head2 For systems without C<nl_langinfo>
This module originally was just a wrapper for the libc C<nl_langinfo>
@@ -214,6 +434,16 @@
removed from POSIX 2008, and are retained here for backwards compatibility.
Your platform's C<nl_langinfo> may not support them.
+=item C<ALT_DIGITS>
+
+On systems with a C<L<strftime(3)>> that recognizes the POSIX-defined C<%O>
+format modifier (not Windows), perl tries hard to return these. The result
+likely will go as high as what C<nl_langinfo()> would return, but not
+necessarily; and the numbers from C<0..9> will always be stripped of leading
+zeros.
+
+Without C<%O>, an empty string is always returned.
+
=item C<D_FMT>
Always evaluates to C<%x>, the locale's appropriate date representation.
@@ -233,12 +463,6 @@
replaces the radix character. If you have examples of it needing to work
differently, please file a report at L<https://github.com/Perl/perl5/issues>.
-=item C<ALT_DIGITS>
-
-Currently this gives the same results as Linux does. If you have examples of
-it needing to work differently, please file a report at
-L<https://github.com/Perl/perl5/issues>.
-
=item C<ERA_D_FMT>
=item C<ERA_T_FMT>
@@ -250,6 +474,11 @@
These are derived by using C<strftime()>, and not all versions of that function
know about them. C<""> is returned for these on such systems.
+=item All C<_NL_I<foo>> items
+
+These return the same values as they do on boxes that don't have the
+appropriate underlying locale categories.
+
=back
See your L<nl_langinfo(3)> for more information about the available
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Bzip2.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Bzip2.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Bzip2.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,12 +4,12 @@
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.204 qw(:Status);
+use IO::Compress::Base::Common 2.212 qw(:Status);
-use Compress::Raw::Bzip2 2.204 ;
+use Compress::Raw::Bzip2 2.212 ;
our ($VERSION);
-$VERSION = '2.204';
+$VERSION = '2.212';
sub mkCompObject
{
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Deflate.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Deflate.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Deflate.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,13 +4,13 @@
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.204 qw(:Status);
-use Compress::Raw::Zlib 2.204 qw( !crc32 !adler32 ) ;
+use IO::Compress::Base::Common 2.212 qw(:Status);
+use Compress::Raw::Zlib 2.212 qw( !crc32 !adler32 ) ;
require Exporter;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, @EXPORT, %DEFLATE_CONSTANTS);
-$VERSION = '2.204';
+$VERSION = '2.212';
@ISA = qw(Exporter);
@EXPORT_OK = @Compress::Raw::Zlib::DEFLATE_CONSTANTS;
%EXPORT_TAGS = %Compress::Raw::Zlib::DEFLATE_CONSTANTS;
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Identity.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Identity.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Identity.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,10 +4,10 @@
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.204 qw(:Status);
+use IO::Compress::Base::Common 2.212 qw(:Status);
our ($VERSION);
-$VERSION = '2.204';
+$VERSION = '2.212';
sub mkCompObject
{
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Base/Common.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Base/Common.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Base/Common.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -11,7 +11,7 @@
require Exporter;
our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE);
@ISA = qw(Exporter);
-$VERSION = '2.204';
+$VERSION = '2.212';
@EXPORT = qw( isaFilehandle isaFilename isaScalar
whatIsInput whatIsOutput
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Base.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Base.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Base.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -6,7 +6,7 @@
use strict ;
use warnings;
-use IO::Compress::Base::Common 2.204 ;
+use IO::Compress::Base::Common 2.212 ;
use IO::File (); ;
use Scalar::Util ();
@@ -20,7 +20,7 @@
our (@ISA, $VERSION);
@ISA = qw(IO::File Exporter);
-$VERSION = '2.204';
+$VERSION = '2.212';
#Can't locate object method "SWASHNEW" via package "utf8" (perhaps you forgot to load "utf8"?) at .../ext/Compress-Zlib/Gzip/blib/lib/Compress/Zlib/Common.pm line 16.
@@ -1051,7 +1051,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Bzip2.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Bzip2.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Bzip2.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -5,16 +5,16 @@
use bytes;
require Exporter ;
-use IO::Compress::Base 2.204 ;
+use IO::Compress::Base 2.212 ;
-use IO::Compress::Base::Common 2.204 qw();
-use IO::Compress::Adapter::Bzip2 2.204 ;
+use IO::Compress::Base::Common 2.212 qw();
+use IO::Compress::Adapter::Bzip2 2.212 ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bzip2Error);
-$VERSION = '2.204';
+$VERSION = '2.212';
$Bzip2Error = '';
@ISA = qw(IO::Compress::Base Exporter);
@@ -51,7 +51,7 @@
{
my $self = shift ;
- use IO::Compress::Base::Common 2.204 qw(:Parse);
+ use IO::Compress::Base::Common 2.212 qw(:Parse);
return (
'blocksize100k' => [IO::Compress::Base::Common::Parse_unsigned, 1],
@@ -387,7 +387,7 @@
=back
-=head2 Examples
+=head2 Oneshot Examples
Here are a few example that show the capabilities of the module.
@@ -466,7 +466,10 @@
my $z = IO::Compress::Bzip2->new( $output [,OPTS] )
or die "IO::Compress::Bzip2 failed: $Bzip2Error\n";
-It returns an C<IO::Compress::Bzip2> object on success and undef on failure.
+The constructor takes one mandatory parameter, C<$output>, defined below and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
+It returns an C<IO::Compress::Bzip2> object on success and C<undef> on failure.
The variable C<$Bzip2Error> will contain an error message on failure.
If you are running Perl 5.005 or better the object, C<$z>, returned from
@@ -479,6 +482,18 @@
$z->print("hello world\n");
print $z "hello world\n";
+Below is a simple exaple of using the OO interface to create an output file
+C<myfile.bz2> and write some data to it.
+
+ my $filename = "myfile.bz2";
+ my $z = IO::Compress::Bzip2->new($filename)
+ or die "IO::Compress::Bzip2 failed: $Bzip2Error\n";
+
+ $z->print("abcde");
+ $z->close();
+
+See the L</Examples> for more.
+
The mandatory parameter C<$output> is used to control the destination
of the compressed data. This parameter can take one of these forms.
@@ -576,8 +591,53 @@
=head2 Examples
-TODO
+=head3 Streaming
+This very simple command line example demonstrates the streaming capabilities
+of the module. The code reads data from STDIN or all the files given on the
+commandline, compresses it, and writes the compressed data to STDOUT.
+
+ use strict ;
+ use warnings ;
+ use IO::Compress::Bzip2 qw(bzip2 $Bzip2Error) ;
+
+ my $z = IO::Compress::Bzip2->new("-", Stream => 1)
+ or die "IO::Compress::Bzip2 failed: $Bzip2Error\n";
+
+ while (<>) {
+ $z->print("abcde");
+ }
+ $z->close();
+
+Note the use of C<"-"> to means C<STDOUT>. Alternatively you can use C<\*STDOUT>.
+
+=head3 Compressing a file from the filesystem
+
+To read the contents of the file C<file1.txt> and write the compressed
+data to the file C<file1.txt.bz2> there are a few options
+
+Start by creating the compression object and opening the input file
+
+ use strict ;
+ use warnings ;
+ use IO::Compress::Bzip2 qw(bzip2 $Bzip2Error) ;
+
+ my $input = "file1.txt";
+ my $z = IO::Compress::Bzip2->new("file1.txt.bz2")
+ or die "IO::Compress::Bzip2 failed: $Bzip2Error\n";
+
+ # open the input file
+ open my $fh, "<", "file1.txt"
+ or die "Cannot open file1.txt: $!\n";
+
+ # loop through the input file & write to the compressed file
+ while (<$fh>) {
+ $z->print($_);
+ }
+
+ # not forgetting to close the compressed file
+ $z->close();
+
=head1 Methods
=head2 print
@@ -818,7 +878,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Deflate.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Deflate.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Deflate.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -8,16 +8,16 @@
require Exporter ;
-use IO::Compress::RawDeflate 2.204 ();
-use IO::Compress::Adapter::Deflate 2.204 ;
+use IO::Compress::RawDeflate 2.212 ();
+use IO::Compress::Adapter::Deflate 2.212 ;
-use IO::Compress::Zlib::Constants 2.204 ;
-use IO::Compress::Base::Common 2.204 qw();
+use IO::Compress::Zlib::Constants 2.212 ;
+use IO::Compress::Base::Common 2.212 qw();
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $DeflateError);
-$VERSION = '2.204';
+$VERSION = '2.212';
$DeflateError = '';
@ISA = qw(IO::Compress::RawDeflate Exporter);
@@ -354,7 +354,7 @@
=back
-=head2 Examples
+=head2 Oneshot Examples
Here are a few example that show the capabilities of the module.
@@ -433,7 +433,10 @@
my $z = IO::Compress::Deflate->new( $output [,OPTS] )
or die "IO::Compress::Deflate failed: $DeflateError\n";
-It returns an C<IO::Compress::Deflate> object on success and undef on failure.
+The constructor takes one mandatory parameter, C<$output>, defined below and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
+It returns an C<IO::Compress::Deflate> object on success and C<undef> on failure.
The variable C<$DeflateError> will contain an error message on failure.
If you are running Perl 5.005 or better the object, C<$z>, returned from
@@ -446,6 +449,18 @@
$z->print("hello world\n");
print $z "hello world\n";
+Below is a simple exaple of using the OO interface to create an output file
+C<myfile.1950> and write some data to it.
+
+ my $filename = "myfile.1950";
+ my $z = IO::Compress::Deflate->new($filename)
+ or die "IO::Compress::Deflate failed: $DeflateError\n";
+
+ $z->print("abcde");
+ $z->close();
+
+See the L</Examples> for more.
+
The mandatory parameter C<$output> is used to control the destination
of the compressed data. This parameter can take one of these forms.
@@ -585,8 +600,53 @@
=head2 Examples
-TODO
+=head3 Streaming
+This very simple command line example demonstrates the streaming capabilities
+of the module. The code reads data from STDIN or all the files given on the
+commandline, compresses it, and writes the compressed data to STDOUT.
+
+ use strict ;
+ use warnings ;
+ use IO::Compress::Deflate qw(deflate $DeflateError) ;
+
+ my $z = IO::Compress::Deflate->new("-", Stream => 1)
+ or die "IO::Compress::Deflate failed: $DeflateError\n";
+
+ while (<>) {
+ $z->print("abcde");
+ }
+ $z->close();
+
+Note the use of C<"-"> to means C<STDOUT>. Alternatively you can use C<\*STDOUT>.
+
+=head3 Compressing a file from the filesystem
+
+To read the contents of the file C<file1.txt> and write the compressed
+data to the file C<file1.txt.1950> there are a few options
+
+Start by creating the compression object and opening the input file
+
+ use strict ;
+ use warnings ;
+ use IO::Compress::Deflate qw(deflate $DeflateError) ;
+
+ my $input = "file1.txt";
+ my $z = IO::Compress::Deflate->new("file1.txt.1950")
+ or die "IO::Compress::Deflate failed: $DeflateError\n";
+
+ # open the input file
+ open my $fh, "<", "file1.txt"
+ or die "Cannot open file1.txt: $!\n";
+
+ # loop through the input file & write to the compressed file
+ while (<$fh>) {
+ $z->print($_);
+ }
+
+ # not forgetting to close the compressed file
+ $z->close();
+
=head1 Methods
=head2 print
@@ -892,7 +952,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/FAQ.pod
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/FAQ.pod 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/FAQ.pod 2025-02-24 14:12:21 UTC (rev 74256)
@@ -682,7 +682,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Gzip/Constants.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Gzip/Constants.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Gzip/Constants.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -9,7 +9,7 @@
our ($VERSION, @ISA, @EXPORT, %GZIP_OS_Names);
our ($GZIP_FNAME_INVALID_CHAR_RE, $GZIP_FCOMMENT_INVALID_CHAR_RE);
-$VERSION = '2.204';
+$VERSION = '2.212';
@ISA = qw(Exporter);
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Gzip.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Gzip.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Gzip.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -8,12 +8,12 @@
require Exporter ;
-use IO::Compress::RawDeflate 2.204 () ;
-use IO::Compress::Adapter::Deflate 2.204 ;
+use IO::Compress::RawDeflate 2.212 () ;
+use IO::Compress::Adapter::Deflate 2.212 ;
-use IO::Compress::Base::Common 2.204 qw(:Status );
-use IO::Compress::Gzip::Constants 2.204 ;
-use IO::Compress::Zlib::Extra 2.204 ;
+use IO::Compress::Base::Common 2.212 qw(:Status );
+use IO::Compress::Gzip::Constants 2.212 ;
+use IO::Compress::Zlib::Extra 2.212 ;
BEGIN
{
@@ -25,7 +25,7 @@
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $GzipError);
-$VERSION = '2.204';
+$VERSION = '2.212';
$GzipError = '' ;
@ISA = qw(IO::Compress::RawDeflate Exporter);
@@ -535,7 +535,7 @@
=back
-=head2 Examples
+=head2 Oneshot Examples
Here are a few example that show the capabilities of the module.
@@ -614,7 +614,10 @@
my $z = IO::Compress::Gzip->new( $output [,OPTS] )
or die "IO::Compress::Gzip failed: $GzipError\n";
-It returns an C<IO::Compress::Gzip> object on success and undef on failure.
+The constructor takes one mandatory parameter, C<$output>, defined below and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
+It returns an C<IO::Compress::Gzip> object on success and C<undef> on failure.
The variable C<$GzipError> will contain an error message on failure.
If you are running Perl 5.005 or better the object, C<$z>, returned from
@@ -627,6 +630,18 @@
$z->print("hello world\n");
print $z "hello world\n";
+Below is a simple exaple of using the OO interface to create an output file
+C<myfile.gz> and write some data to it.
+
+ my $filename = "myfile.gz";
+ my $z = IO::Compress::Gzip->new($filename)
+ or die "IO::Compress::Gzip failed: $GzipError\n";
+
+ $z->print("abcde");
+ $z->close();
+
+See the L</Examples> for more.
+
The mandatory parameter C<$output> is used to control the destination
of the compressed data. This parameter can take one of these forms.
@@ -960,8 +975,53 @@
=head2 Examples
-TODO
+=head3 Streaming
+This very simple command line example demonstrates the streaming capabilities
+of the module. The code reads data from STDIN or all the files given on the
+commandline, compresses it, and writes the compressed data to STDOUT.
+
+ use strict ;
+ use warnings ;
+ use IO::Compress::Gzip qw(gzip $GzipError) ;
+
+ my $z = IO::Compress::Gzip->new("-", Stream => 1)
+ or die "IO::Compress::Gzip failed: $GzipError\n";
+
+ while (<>) {
+ $z->print("abcde");
+ }
+ $z->close();
+
+Note the use of C<"-"> to means C<STDOUT>. Alternatively you can use C<\*STDOUT>.
+
+=head3 Compressing a file from the filesystem
+
+To read the contents of the file C<file1.txt> and write the compressed
+data to the file C<file1.txt.gz> there are a few options
+
+Start by creating the compression object and opening the input file
+
+ use strict ;
+ use warnings ;
+ use IO::Compress::Gzip qw(gzip $GzipError) ;
+
+ my $input = "file1.txt";
+ my $z = IO::Compress::Gzip->new("file1.txt.gz")
+ or die "IO::Compress::Gzip failed: $GzipError\n";
+
+ # open the input file
+ open my $fh, "<", "file1.txt"
+ or die "Cannot open file1.txt: $!\n";
+
+ # loop through the input file & write to the compressed file
+ while (<$fh>) {
+ $z->print($_);
+ }
+
+ # not forgetting to close the compressed file
+ $z->close();
+
=head1 Methods
=head2 print
@@ -1267,7 +1327,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/RawDeflate.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/RawDeflate.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/RawDeflate.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -6,16 +6,16 @@
use warnings;
use bytes;
-use IO::Compress::Base 2.204 ;
-use IO::Compress::Base::Common 2.204 qw(:Status :Parse);
-use IO::Compress::Adapter::Deflate 2.204 ;
-use Compress::Raw::Zlib 2.204 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
+use IO::Compress::Base 2.212 ;
+use IO::Compress::Base::Common 2.212 qw(:Status :Parse);
+use IO::Compress::Adapter::Deflate 2.212 ;
+use Compress::Raw::Zlib 2.212 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError);
-$VERSION = '2.204';
+$VERSION = '2.212';
$RawDeflateError = '';
@ISA = qw(IO::Compress::Base Exporter);
@@ -472,7 +472,7 @@
=back
-=head2 Examples
+=head2 Oneshot Examples
Here are a few example that show the capabilities of the module.
@@ -551,7 +551,10 @@
my $z = IO::Compress::RawDeflate->new( $output [,OPTS] )
or die "IO::Compress::RawDeflate failed: $RawDeflateError\n";
-It returns an C<IO::Compress::RawDeflate> object on success and undef on failure.
+The constructor takes one mandatory parameter, C<$output>, defined below and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
+It returns an C<IO::Compress::RawDeflate> object on success and C<undef> on failure.
The variable C<$RawDeflateError> will contain an error message on failure.
If you are running Perl 5.005 or better the object, C<$z>, returned from
@@ -564,6 +567,18 @@
$z->print("hello world\n");
print $z "hello world\n";
+Below is a simple exaple of using the OO interface to create an output file
+C<myfile.1951> and write some data to it.
+
+ my $filename = "myfile.1951";
+ my $z = IO::Compress::RawDeflate->new($filename)
+ or die "IO::Compress::RawDeflate failed: $RawDeflateError\n";
+
+ $z->print("abcde");
+ $z->close();
+
+See the L</Examples> for more.
+
The mandatory parameter C<$output> is used to control the destination
of the compressed data. This parameter can take one of these forms.
@@ -703,8 +718,53 @@
=head2 Examples
-TODO
+=head3 Streaming
+This very simple command line example demonstrates the streaming capabilities
+of the module. The code reads data from STDIN or all the files given on the
+commandline, compresses it, and writes the compressed data to STDOUT.
+
+ use strict ;
+ use warnings ;
+ use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
+
+ my $z = IO::Compress::RawDeflate->new("-", Stream => 1)
+ or die "IO::Compress::RawDeflate failed: $RawDeflateError\n";
+
+ while (<>) {
+ $z->print("abcde");
+ }
+ $z->close();
+
+Note the use of C<"-"> to means C<STDOUT>. Alternatively you can use C<\*STDOUT>.
+
+=head3 Compressing a file from the filesystem
+
+To read the contents of the file C<file1.txt> and write the compressed
+data to the file C<file1.txt.1951> there are a few options
+
+Start by creating the compression object and opening the input file
+
+ use strict ;
+ use warnings ;
+ use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
+
+ my $input = "file1.txt";
+ my $z = IO::Compress::RawDeflate->new("file1.txt.1951")
+ or die "IO::Compress::RawDeflate failed: $RawDeflateError\n";
+
+ # open the input file
+ open my $fh, "<", "file1.txt"
+ or die "Cannot open file1.txt: $!\n";
+
+ # loop through the input file & write to the compressed file
+ while (<$fh>) {
+ $z->print($_);
+ }
+
+ # not forgetting to close the compressed file
+ $z->close();
+
=head1 Methods
=head2 print
@@ -1010,7 +1070,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zip/Constants.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zip/Constants.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zip/Constants.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -7,7 +7,7 @@
our ($VERSION, @ISA, @EXPORT, %ZIP_CM_MIN_VERSIONS);
-$VERSION = '2.204';
+$VERSION = '2.212';
@ISA = qw(Exporter);
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zip.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zip.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zip.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,41 +4,41 @@
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.204 qw(:Status );
-use IO::Compress::RawDeflate 2.204 ();
-use IO::Compress::Adapter::Deflate 2.204 ;
-use IO::Compress::Adapter::Identity 2.204 ;
-use IO::Compress::Zlib::Extra 2.204 ;
-use IO::Compress::Zip::Constants 2.204 ;
+use IO::Compress::Base::Common 2.212 qw(:Status );
+use IO::Compress::RawDeflate 2.212 ();
+use IO::Compress::Adapter::Deflate 2.212 ;
+use IO::Compress::Adapter::Identity 2.212 ;
+use IO::Compress::Zlib::Extra 2.212 ;
+use IO::Compress::Zip::Constants 2.212 ;
use File::Spec();
use Config;
-use Compress::Raw::Zlib 2.204 ();
+use Compress::Raw::Zlib 2.212 ();
BEGIN
{
eval { require IO::Compress::Adapter::Bzip2 ;
- IO::Compress::Adapter::Bzip2->import( 2.201 );
+ IO::Compress::Adapter::Bzip2->VERSION( 2.212 );
require IO::Compress::Bzip2 ;
- IO::Compress::Bzip2->import( 2.201 );
+ IO::Compress::Bzip2->VERSION( 2.212 );
} ;
eval { require IO::Compress::Adapter::Lzma ;
- IO::Compress::Adapter::Lzma->import( 2.201 );
+ IO::Compress::Adapter::Lzma->VERSION( 2.212 );
require IO::Compress::Lzma ;
- IO::Compress::Lzma->import( 2.201 );
+ IO::Compress::Lzma->VERSION( 2.212 );
} ;
eval { require IO::Compress::Adapter::Xz ;
- IO::Compress::Adapter::Xz->import( 2.201 );
+ IO::Compress::Adapter::Xz->VERSION( 2.212 );
require IO::Compress::Xz ;
- IO::Compress::Xz->import( 2.201 );
+ IO::Compress::Xz->VERSION( 2.212 );
} ;
eval { require IO::Compress::Adapter::Zstd ;
- IO::Compress::Adapter::Zstd->import( 2.201 );
+ IO::Compress::Adapter::Zstd->VERSION( 2.212 );
require IO::Compress::Zstd ;
- IO::Compress::Zstd->import( 2.201 );
+ IO::Compress::Zstd->VERSION( 2.212 );
} ;
}
@@ -47,7 +47,7 @@
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $ZipError);
-$VERSION = '2.204';
+$VERSION = '2.212';
$ZipError = '';
@ISA = qw(IO::Compress::RawDeflate Exporter);
@@ -1206,7 +1206,7 @@
=back
-=head2 Examples
+=head2 Oneshot Examples
Here are a few example that show the capabilities of the module.
@@ -1317,7 +1317,10 @@
my $z = IO::Compress::Zip->new( $output [,OPTS] )
or die "IO::Compress::Zip failed: $ZipError\n";
-It returns an C<IO::Compress::Zip> object on success and undef on failure.
+The constructor takes one mandatory parameter, C<$output>, defined below and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
+It returns an C<IO::Compress::Zip> object on success and C<undef> on failure.
The variable C<$ZipError> will contain an error message on failure.
If you are running Perl 5.005 or better the object, C<$z>, returned from
@@ -1330,6 +1333,18 @@
$z->print("hello world\n");
print $z "hello world\n";
+Below is a simple exaple of using the OO interface to create an output file
+C<myfile.zip> and write some data to it.
+
+ my $filename = "myfile.zip";
+ my $z = IO::Compress::Zip->new($filename)
+ or die "IO::Compress::Zip failed: $ZipError\n";
+
+ $z->print("abcde");
+ $z->close();
+
+See the L</Examples> for more.
+
The mandatory parameter C<$output> is used to control the destination
of the compressed data. This parameter can take one of these forms.
@@ -1850,8 +1865,112 @@
=head2 Examples
-TODO
+=head3 Streaming
+This very simple command line example demonstrates the streaming capabilities
+of the module. The code reads data from STDIN or all the files given on the
+commandline, compresses it, and writes the compressed data to STDOUT.
+
+ use strict ;
+ use warnings ;
+ use IO::Compress::Zip qw(zip $ZipError) ;
+
+ my $z = IO::Compress::Zip->new("-", Stream => 1)
+ or die "IO::Compress::Zip failed: $ZipError\n";
+
+ while (<>) {
+ $z->print("abcde");
+ }
+ $z->close();
+
+Note the use of C<"-"> to means C<STDOUT>. Alternatively you can use C<\*STDOUT>.
+
+One problem with creating a zip archive directly from STDIN can be demonstrated by looking at
+the contents of the zip file, output.zip, that we have just created
+(assumg you have redirected it to a file called C<output.zip>).
+
+ $ unzip -l output.zip
+ Archive: output.zip
+ Length Date Time Name
+ --------- ---------- ----- ----
+ 12 2019-08-16 22:21
+ --------- -------
+ 12 1 file
+
+The archive member (filename) used is the empty string.
+
+If that doesn't suit your needs, you can explicitly set the filename used
+in the zip archive by specifying the L<Name|"File Naming Options"> option, like so
+
+ my $z = IO::Compress::Zip->new("-", Name => "hello.txt", Stream => 1)
+
+Now the contents of the zip file looks like this
+
+ $ unzip -l output.zip
+ Archive: output.zip
+ Length Date Time Name
+ --------- ---------- ----- ----
+ 12 2019-08-16 22:22 hello.txt
+ --------- -------
+ 12 1 file
+
+=head3 Compressing a file from the filesystem
+
+To read the contents of the file C<file1.txt> and write the compressed
+data to the file C<file1.txt.zip> there are a few options
+
+Start by creating the compression object and opening the input file
+
+ use strict ;
+ use warnings ;
+ use IO::Compress::Zip qw(zip $ZipError) ;
+
+ my $input = "file1.txt";
+ my $z = IO::Compress::Zip->new("file1.txt.zip")
+ or die "IO::Compress::Zip failed: $ZipError\n";
+
+ # open the input file
+ open my $fh, "<", "file1.txt"
+ or die "Cannot open file1.txt: $!\n";
+
+ # loop through the input file & write to the compressed file
+ while (<$fh>) {
+ $z->print($_);
+ }
+
+ # not forgetting to close the compressed file
+ $z->close();
+
+=head3 Compressing multiple files
+
+To create a zip file, C<output.zip>, that contains the compressed contents
+of the files C<alpha.txt> and C<beta.txt>
+
+ use strict ;
+ use warnings ;
+ use IO::Compress::Zip qw(zip $ZipError) ;
+
+ my $z = IO::Compress::Zip->new("output.zip", Name => "alpha.txt")
+ or die "IO::Compress::Zip failed: $ZipError\n";
+
+ # open the input file
+ open my $fh, "<", "file1.txt"
+ or die "Cannot open file1.txt: $!\n";
+
+ # loop through the input file & write to the compressed file
+ while (<$fh>) {
+ $z->print($_);
+ }
+
+ # move to next file
+ $z->newStream(Name => "beta.txt")
+
+ while (<$fh>) {
+ $z->print($_);
+ }
+
+ $z->close();
+
=head1 Methods
=head2 print
@@ -2166,7 +2285,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Constants.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Constants.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Constants.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -9,7 +9,7 @@
our ($VERSION, @ISA, @EXPORT);
-$VERSION = '2.204';
+$VERSION = '2.212';
@ISA = qw(Exporter);
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Extra.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Extra.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Extra.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -8,9 +8,9 @@
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS);
-$VERSION = '2.204';
+$VERSION = '2.212';
-use IO::Compress::Gzip::Constants 2.204 ;
+use IO::Compress::Gzip::Constants 2.212 ;
sub ExtraFieldError
{
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Dir.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Dir.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Dir.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -18,7 +18,7 @@
use File::Spec;
our @ISA = qw(Tie::Hash Exporter);
-our $VERSION = "1.52";
+our $VERSION = "1.55";
our @EXPORT_OK = qw(DIR_UNLINK);
Modified: trunk/Master/tlpkg/tlperl/lib/IO/File.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/File.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/File.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -93,14 +93,6 @@
For convenience, C<IO::File> exports the O_XXX constants from the
Fcntl module, if this module is available.
-=item binmode( [LAYER] )
-
-C<binmode> sets C<binmode> on the underlying C<IO> object, as documented
-in C<perldoc -f binmode>.
-
-C<binmode> accepts one optional parameter, which is the layer to be
-passed on to the C<binmode> call.
-
=back
=head1 NOTE
@@ -135,7 +127,7 @@
our @ISA = qw(IO::Handle IO::Seekable Exporter);
-our $VERSION = "1.52";
+our $VERSION = "1.55";
our @EXPORT = @IO::Seekable::EXPORT;
@@ -186,17 +178,4 @@
open($fh, $file);
}
-################################################
-## Binmode
-##
-
-sub binmode {
- ( @_ == 1 or @_ == 2 ) or croak 'usage $fh->binmode([LAYER])';
-
- my($fh, $layer) = @_;
-
- return binmode $$fh unless $layer;
- return binmode $$fh, $layer;
-}
-
1;
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Handle.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Handle.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Handle.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -191,6 +191,14 @@
If an error occurs C<blocking> will return undef and C<$!> will be set.
+=item binmode( [LAYER] )
+
+C<binmode> sets C<binmode> on the underlying C<IO> object, as documented
+in C<perldoc -f binmode>.
+
+C<binmode> accepts one optional parameter, which is the layer to be
+passed on to the C<binmode> call.
+
=back
@@ -270,7 +278,7 @@
require Exporter;
our @ISA = qw(Exporter);
-our $VERSION = "1.52";
+our $VERSION = "1.55";
our @EXPORT_OK = qw(
autoflush
@@ -628,4 +636,17 @@
}
}
+################################################
+## Binmode
+##
+
+sub binmode {
+ ( @_ == 1 or @_ == 2 ) or croak 'usage $fh->binmode([LAYER])';
+
+ my($fh, $layer) = @_;
+
+ return binmode $$fh unless $layer;
+ return binmode $$fh, $layer;
+}
+
1;
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Pipe.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Pipe.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Pipe.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -13,7 +13,7 @@
use Carp;
use Symbol;
-our $VERSION = "1.52";
+our $VERSION = "1.55";
sub new {
my $type = shift;
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Poll.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Poll.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Poll.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -12,7 +12,7 @@
use Exporter ();
our @ISA = qw(Exporter);
-our $VERSION = "1.52";
+our $VERSION = "1.55";
our @EXPORT = qw( POLLIN
POLLOUT
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Seekable.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Seekable.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Seekable.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -106,7 +106,7 @@
our @EXPORT = qw(SEEK_SET SEEK_CUR SEEK_END);
our @ISA = qw(Exporter);
-our $VERSION = "1.52";
+our $VERSION = "1.55";
sub seek {
@_ == 3 or croak 'usage: $io->seek(POS, WHENCE)';
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Select.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Select.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Select.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -10,7 +10,7 @@
use warnings::register;
require Exporter;
-our $VERSION = "1.52";
+our $VERSION = "1.55";
our @ISA = qw(Exporter); # This is only so we can do version checking
@@ -265,20 +265,20 @@
=head1 NAME
-IO::Select - OO interface to the select system call
+IO::Select - OO interface to the C<select> system call
=head1 SYNOPSIS
use IO::Select;
- $s = IO::Select->new();
+ my $s = IO::Select->new();
$s->add(\*STDIN);
$s->add($some_handle);
- @ready = $s->can_read($timeout);
+ my @ready1 = $s->can_read($timeout);
- @ready = IO::Select->new(@handles)->can_read(0);
+ my @ready2 = IO::Select->new(@handles)->can_read(0);
=head1 DESCRIPTION
@@ -382,14 +382,14 @@
use IO::Select;
use IO::Socket;
- $lsn = IO::Socket::INET->new(Listen => 1, LocalPort => 8080);
- $sel = IO::Select->new( $lsn );
+ my $lsn = IO::Socket::INET->new(Listen => 1, LocalPort => 8080);
+ my $sel = IO::Select->new( $lsn );
- while(@ready = $sel->can_read) {
- foreach $fh (@ready) {
+ while(my @ready = $sel->can_read) {
+ foreach my $fh (@ready) {
if($fh == $lsn) {
# Create a new socket
- $new = $lsn->accept;
+ my $new = $lsn->accept;
$sel->add($new);
}
else {
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Socket/INET.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Socket/INET.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Socket/INET.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -14,7 +14,7 @@
use Errno;
our @ISA = qw(IO::Socket);
-our $VERSION = "1.52";
+our $VERSION = "1.55";
my $EINVAL = exists(&Errno::EINVAL) ? Errno::EINVAL() : 1;
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Socket/IP.pm
===================================================================
(Binary files differ)
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -11,7 +11,7 @@
use Carp;
our @ISA = qw(IO::Socket);
-our $VERSION = "1.52";
+our $VERSION = "1.55";
IO::Socket::UNIX->register_domain( AF_UNIX );
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Socket.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Socket.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Socket.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -23,7 +23,7 @@
our @ISA = qw(IO::Handle);
-our $VERSION = "1.52";
+our $VERSION = "1.55";
our @EXPORT_OK = qw(sockatmark);
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Bunzip2.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Bunzip2.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Bunzip2.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,12 +4,12 @@
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.204 qw(:Status);
+use IO::Compress::Base::Common 2.212 qw(:Status);
-use Compress::Raw::Bzip2 2.204 ;
+use Compress::Raw::Bzip2 2.212 ;
our ($VERSION, @ISA);
-$VERSION = '2.204';
+$VERSION = '2.212';
sub mkUncompObject
{
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Identity.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Identity.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Identity.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,14 +4,14 @@
use strict;
use bytes;
-use IO::Compress::Base::Common 2.204 qw(:Status);
+use IO::Compress::Base::Common 2.212 qw(:Status);
use IO::Compress::Zip::Constants ;
our ($VERSION);
-$VERSION = '2.204';
+$VERSION = '2.212';
-use Compress::Raw::Zlib 2.204 ();
+use Compress::Raw::Zlib 2.212 ();
sub mkUncompObject
{
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Inflate.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Inflate.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Inflate.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,11 +4,11 @@
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.204 qw(:Status);
-use Compress::Raw::Zlib 2.204 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
+use IO::Compress::Base::Common 2.212 qw(:Status);
+use Compress::Raw::Zlib 2.212 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
our ($VERSION);
-$VERSION = '2.204';
+$VERSION = '2.212';
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyInflate.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyInflate.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyInflate.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -6,22 +6,22 @@
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.204 qw(:Parse);
+use IO::Compress::Base::Common 2.212 qw(:Parse);
-use IO::Uncompress::Adapter::Inflate 2.204 ();
+use IO::Uncompress::Adapter::Inflate 2.212 ();
-use IO::Uncompress::Base 2.204 ;
-use IO::Uncompress::Gunzip 2.204 ;
-use IO::Uncompress::Inflate 2.204 ;
-use IO::Uncompress::RawInflate 2.204 ;
-use IO::Uncompress::Unzip 2.204 ;
+use IO::Uncompress::Base 2.212 ;
+use IO::Uncompress::Gunzip 2.212 ;
+use IO::Uncompress::Inflate 2.212 ;
+use IO::Uncompress::RawInflate 2.212 ;
+use IO::Uncompress::Unzip 2.212 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyInflateError);
-$VERSION = '2.204';
+$VERSION = '2.212';
$AnyInflateError = '';
@ISA = qw(IO::Uncompress::Base Exporter);
@@ -421,7 +421,7 @@
=back
-=head2 Examples
+=head2 OneShot Examples
To read the contents of the file C<file1.txt.Compressed> and write the
uncompressed data to the file C<file1.txt>.
@@ -481,6 +481,9 @@
my $z = IO::Uncompress::AnyInflate->new( $input [OPTS] )
or die "IO::Uncompress::AnyInflate failed: $AnyInflateError\n";
+The constructor takes one mandatory parameter, C<$input>, defined below, and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
Returns an C<IO::Uncompress::AnyInflate> object on success and undef on failure.
The variable C<$AnyInflateError> will contain an error message on failure.
@@ -493,6 +496,20 @@
$line = $z->getline();
$line = <$z>;
+Below is a simple exaple of using the OO interface to read the compressed file
+C<myfile.Compressed> and write its contents to stdout.
+
+ my $filename = "myfile.Compressed";
+ my $z = IO::Uncompress::AnyInflate->new($filename)
+ or die "IO::Uncompress::AnyInflate failed: $AnyInflateError\n";
+
+ while (<$z>) {
+ print $_;
+ }
+ $z->close();
+
+See L</EXAMPLES> for further examples
+
The mandatory parameter C<$input> is used to determine the source of the
compressed data. This parameter can take one of three forms.
@@ -689,10 +706,6 @@
=back
-=head2 Examples
-
-TODO
-
=head1 Methods
=head2 read
@@ -1001,7 +1014,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyUncompress.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyUncompress.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyUncompress.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,9 +4,9 @@
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.204 ();
+use IO::Compress::Base::Common 2.212 ();
-use IO::Uncompress::Base 2.204 ;
+use IO::Uncompress::Base 2.212 ;
require Exporter ;
@@ -13,7 +13,7 @@
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyUncompressError);
-$VERSION = '2.204';
+$VERSION = '2.212';
$AnyUncompressError = '';
@ISA = qw(IO::Uncompress::Base Exporter);
@@ -33,26 +33,26 @@
# Don't trigger any __DIE__ Hooks.
local $SIG{__DIE__};
- eval ' use IO::Uncompress::Adapter::Inflate 2.204 ;';
- eval ' use IO::Uncompress::Adapter::Bunzip2 2.204 ;';
- eval ' use IO::Uncompress::Adapter::LZO 2.204 ;';
- eval ' use IO::Uncompress::Adapter::Lzf 2.204 ;';
- eval ' use IO::Uncompress::Adapter::UnLzma 2.204 ;';
- eval ' use IO::Uncompress::Adapter::UnXz 2.204 ;';
- eval ' use IO::Uncompress::Adapter::UnZstd 2.204 ;';
- eval ' use IO::Uncompress::Adapter::UnLzip 2.204 ;';
+ eval ' use IO::Uncompress::Adapter::Inflate 2.212 ;';
+ eval ' use IO::Uncompress::Adapter::Bunzip2 2.212 ;';
+ eval ' use IO::Uncompress::Adapter::LZO 2.212 ;';
+ eval ' use IO::Uncompress::Adapter::Lzf 2.212 ;';
+ eval ' use IO::Uncompress::Adapter::UnLzma 2.212 ;';
+ eval ' use IO::Uncompress::Adapter::UnXz 2.212 ;';
+ eval ' use IO::Uncompress::Adapter::UnZstd 2.212 ;';
+ eval ' use IO::Uncompress::Adapter::UnLzip 2.212 ;';
- eval ' use IO::Uncompress::Bunzip2 2.204 ;';
- eval ' use IO::Uncompress::UnLzop 2.204 ;';
- eval ' use IO::Uncompress::Gunzip 2.204 ;';
- eval ' use IO::Uncompress::Inflate 2.204 ;';
- eval ' use IO::Uncompress::RawInflate 2.204 ;';
- eval ' use IO::Uncompress::Unzip 2.204 ;';
- eval ' use IO::Uncompress::UnLzf 2.204 ;';
- eval ' use IO::Uncompress::UnLzma 2.204 ;';
- eval ' use IO::Uncompress::UnXz 2.204 ;';
- eval ' use IO::Uncompress::UnZstd 2.204 ;';
- eval ' use IO::Uncompress::UnLzip 2.204 ;';
+ eval ' use IO::Uncompress::Bunzip2 2.212 ;';
+ eval ' use IO::Uncompress::UnLzop 2.212 ;';
+ eval ' use IO::Uncompress::Gunzip 2.212 ;';
+ eval ' use IO::Uncompress::Inflate 2.212 ;';
+ eval ' use IO::Uncompress::RawInflate 2.212 ;';
+ eval ' use IO::Uncompress::Unzip 2.212 ;';
+ eval ' use IO::Uncompress::UnLzf 2.212 ;';
+ eval ' use IO::Uncompress::UnLzma 2.212 ;';
+ eval ' use IO::Uncompress::UnXz 2.212 ;';
+ eval ' use IO::Uncompress::UnZstd 2.212 ;';
+ eval ' use IO::Uncompress::UnLzip 2.212 ;';
}
@@ -578,7 +578,7 @@
=back
-=head2 Examples
+=head2 OneShot Examples
To read the contents of the file C<file1.txt.Compressed> and write the
uncompressed data to the file C<file1.txt>.
@@ -638,6 +638,9 @@
my $z = IO::Uncompress::AnyUncompress->new( $input [OPTS] )
or die "IO::Uncompress::AnyUncompress failed: $AnyUncompressError\n";
+The constructor takes one mandatory parameter, C<$input>, defined below, and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
Returns an C<IO::Uncompress::AnyUncompress> object on success and undef on failure.
The variable C<$AnyUncompressError> will contain an error message on failure.
@@ -650,6 +653,20 @@
$line = $z->getline();
$line = <$z>;
+Below is a simple exaple of using the OO interface to read the compressed file
+C<myfile.Compressed> and write its contents to stdout.
+
+ my $filename = "myfile.Compressed";
+ my $z = IO::Uncompress::AnyUncompress->new($filename)
+ or die "IO::Uncompress::AnyUncompress failed: $AnyUncompressError\n";
+
+ while (<$z>) {
+ print $_;
+ }
+ $z->close();
+
+See L</EXAMPLES> for further examples
+
The mandatory parameter C<$input> is used to determine the source of the
compressed data. This parameter can take one of three forms.
@@ -793,10 +810,6 @@
=back
-=head2 Examples
-
-TODO
-
=head1 Methods
=head2 read
@@ -1077,7 +1090,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Base.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Base.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Base.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -9,12 +9,12 @@
@ISA = qw(IO::File Exporter);
-$VERSION = '2.204';
+$VERSION = '2.212';
use constant G_EOF => 0 ;
use constant G_ERR => -1 ;
-use IO::Compress::Base::Common 2.204 ;
+use IO::Compress::Base::Common 2.212 ;
use IO::File ;
use Symbol;
@@ -1567,7 +1567,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Bunzip2.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Bunzip2.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Bunzip2.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -4,15 +4,15 @@
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.204 qw(:Status );
+use IO::Compress::Base::Common 2.212 qw(:Status );
-use IO::Uncompress::Base 2.204 ;
-use IO::Uncompress::Adapter::Bunzip2 2.204 ;
+use IO::Uncompress::Base 2.212 ;
+use IO::Uncompress::Adapter::Bunzip2 2.212 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bunzip2Error);
-$VERSION = '2.204';
+$VERSION = '2.212';
$Bunzip2Error = '';
@ISA = qw(IO::Uncompress::Base Exporter);
@@ -420,7 +420,7 @@
=back
-=head2 Examples
+=head2 OneShot Examples
To read the contents of the file C<file1.txt.bz2> and write the
uncompressed data to the file C<file1.txt>.
@@ -480,6 +480,9 @@
my $z = IO::Uncompress::Bunzip2->new( $input [OPTS] )
or die "IO::Uncompress::Bunzip2 failed: $Bunzip2Error\n";
+The constructor takes one mandatory parameter, C<$input>, defined below, and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
Returns an C<IO::Uncompress::Bunzip2> object on success and undef on failure.
The variable C<$Bunzip2Error> will contain an error message on failure.
@@ -492,6 +495,20 @@
$line = $z->getline();
$line = <$z>;
+Below is a simple exaple of using the OO interface to read the compressed file
+C<myfile.bz2> and write its contents to stdout.
+
+ my $filename = "myfile.bz2";
+ my $z = IO::Uncompress::Bunzip2->new($filename)
+ or die "IO::Uncompress::Bunzip2 failed: $Bunzip2Error\n";
+
+ while (<$z>) {
+ print $_;
+ }
+ $z->close();
+
+See L</EXAMPLES> for further examples
+
The mandatory parameter C<$input> is used to determine the source of the
compressed data. This parameter can take one of three forms.
@@ -617,10 +634,6 @@
=back
-=head2 Examples
-
-TODO
-
=head1 Methods
=head2 read
@@ -909,7 +922,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Gunzip.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Gunzip.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Gunzip.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -9,12 +9,12 @@
use warnings;
use bytes;
-use IO::Uncompress::RawInflate 2.204 ;
+use IO::Uncompress::RawInflate 2.212 ;
-use Compress::Raw::Zlib 2.204 () ;
-use IO::Compress::Base::Common 2.204 qw(:Status );
-use IO::Compress::Gzip::Constants 2.204 ;
-use IO::Compress::Zlib::Extra 2.204 ;
+use Compress::Raw::Zlib 2.212 () ;
+use IO::Compress::Base::Common 2.212 qw(:Status );
+use IO::Compress::Gzip::Constants 2.212 ;
+use IO::Compress::Zlib::Extra 2.212 ;
require Exporter ;
@@ -28,7 +28,7 @@
$GunzipError = '';
-$VERSION = '2.204';
+$VERSION = '2.212';
sub new
{
@@ -557,7 +557,7 @@
=back
-=head2 Examples
+=head2 OneShot Examples
To read the contents of the file C<file1.txt.gz> and write the
uncompressed data to the file C<file1.txt>.
@@ -617,6 +617,9 @@
my $z = IO::Uncompress::Gunzip->new( $input [OPTS] )
or die "IO::Uncompress::Gunzip failed: $GunzipError\n";
+The constructor takes one mandatory parameter, C<$input>, defined below, and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
Returns an C<IO::Uncompress::Gunzip> object on success and undef on failure.
The variable C<$GunzipError> will contain an error message on failure.
@@ -629,6 +632,20 @@
$line = $z->getline();
$line = <$z>;
+Below is a simple exaple of using the OO interface to read the compressed file
+C<myfile.gz> and write its contents to stdout.
+
+ my $filename = "myfile.gz";
+ my $z = IO::Uncompress::Gunzip->new($filename)
+ or die "IO::Uncompress::Gunzip failed: $GunzipError\n";
+
+ while (<$z>) {
+ print $_;
+ }
+ $z->close();
+
+See L</EXAMPLES> for further examples
+
The mandatory parameter C<$input> is used to determine the source of the
compressed data. This parameter can take one of three forms.
@@ -797,10 +814,6 @@
=back
-=head2 Examples
-
-TODO
-
=head1 Methods
=head2 read
@@ -1125,7 +1138,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Inflate.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Inflate.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Inflate.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -5,15 +5,15 @@
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.204 qw(:Status );
-use IO::Compress::Zlib::Constants 2.204 ;
+use IO::Compress::Base::Common 2.212 qw(:Status );
+use IO::Compress::Zlib::Constants 2.212 ;
-use IO::Uncompress::RawInflate 2.204 ;
+use IO::Uncompress::RawInflate 2.212 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $InflateError);
-$VERSION = '2.204';
+$VERSION = '2.212';
$InflateError = '';
@ISA = qw(IO::Uncompress::RawInflate Exporter);
@@ -479,7 +479,7 @@
=back
-=head2 Examples
+=head2 OneShot Examples
To read the contents of the file C<file1.txt.1950> and write the
uncompressed data to the file C<file1.txt>.
@@ -539,6 +539,9 @@
my $z = IO::Uncompress::Inflate->new( $input [OPTS] )
or die "IO::Uncompress::Inflate failed: $InflateError\n";
+The constructor takes one mandatory parameter, C<$input>, defined below, and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
Returns an C<IO::Uncompress::Inflate> object on success and undef on failure.
The variable C<$InflateError> will contain an error message on failure.
@@ -551,6 +554,20 @@
$line = $z->getline();
$line = <$z>;
+Below is a simple exaple of using the OO interface to read the compressed file
+C<myfile.1950> and write its contents to stdout.
+
+ my $filename = "myfile.1950";
+ my $z = IO::Uncompress::Inflate->new($filename)
+ or die "IO::Uncompress::Inflate failed: $InflateError\n";
+
+ while (<$z>) {
+ print $_;
+ }
+ $z->close();
+
+See L</EXAMPLES> for further examples
+
The mandatory parameter C<$input> is used to determine the source of the
compressed data. This parameter can take one of three forms.
@@ -685,10 +702,6 @@
=back
-=head2 Examples
-
-TODO
-
=head1 Methods
=head2 read
@@ -997,7 +1010,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/RawInflate.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/RawInflate.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/RawInflate.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -5,16 +5,16 @@
use warnings;
use bytes;
-use Compress::Raw::Zlib 2.204 ;
-use IO::Compress::Base::Common 2.204 qw(:Status );
+use Compress::Raw::Zlib 2.212 ;
+use IO::Compress::Base::Common 2.212 qw(:Status );
-use IO::Uncompress::Base 2.204 ;
-use IO::Uncompress::Adapter::Inflate 2.204 ;
+use IO::Uncompress::Base 2.212 ;
+use IO::Uncompress::Adapter::Inflate 2.212 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $RawInflateError);
-$VERSION = '2.204';
+$VERSION = '2.212';
$RawInflateError = '';
@ISA = qw(IO::Uncompress::Base Exporter);
@@ -624,7 +624,7 @@
=back
-=head2 Examples
+=head2 OneShot Examples
To read the contents of the file C<file1.txt.1951> and write the
uncompressed data to the file C<file1.txt>.
@@ -684,6 +684,9 @@
my $z = IO::Uncompress::RawInflate->new( $input [OPTS] )
or die "IO::Uncompress::RawInflate failed: $RawInflateError\n";
+The constructor takes one mandatory parameter, C<$input>, defined below, and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
Returns an C<IO::Uncompress::RawInflate> object on success and undef on failure.
The variable C<$RawInflateError> will contain an error message on failure.
@@ -696,6 +699,20 @@
$line = $z->getline();
$line = <$z>;
+Below is a simple exaple of using the OO interface to read the compressed file
+C<myfile.1951> and write its contents to stdout.
+
+ my $filename = "myfile.1951";
+ my $z = IO::Uncompress::RawInflate->new($filename)
+ or die "IO::Uncompress::RawInflate failed: $RawInflateError\n";
+
+ while (<$z>) {
+ print $_;
+ }
+ $z->close();
+
+See L</EXAMPLES> for further examples
+
The mandatory parameter C<$input> is used to determine the source of the
compressed data. This parameter can take one of three forms.
@@ -813,10 +830,6 @@
=back
-=head2 Examples
-
-TODO
-
=head1 Methods
=head2 read
@@ -1125,7 +1138,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Unzip.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Unzip.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Uncompress/Unzip.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -9,14 +9,14 @@
use bytes;
use IO::File;
-use IO::Uncompress::RawInflate 2.204 ;
-use IO::Compress::Base::Common 2.204 qw(:Status );
-use IO::Uncompress::Adapter::Inflate 2.204 ;
-use IO::Uncompress::Adapter::Identity 2.204 ;
-use IO::Compress::Zlib::Extra 2.204 ;
-use IO::Compress::Zip::Constants 2.204 ;
+use IO::Uncompress::RawInflate 2.212 ;
+use IO::Compress::Base::Common 2.212 qw(:Status );
+use IO::Uncompress::Adapter::Inflate 2.212 ;
+use IO::Uncompress::Adapter::Identity 2.212 ;
+use IO::Compress::Zlib::Extra 2.212 ;
+use IO::Compress::Zip::Constants 2.212 ;
-use Compress::Raw::Zlib 2.204 () ;
+use Compress::Raw::Zlib 2.212 () ;
BEGIN
{
@@ -24,13 +24,13 @@
local $SIG{__DIE__};
eval{ require IO::Uncompress::Adapter::Bunzip2 ;
- IO::Uncompress::Adapter::Bunzip2->import() } ;
+ IO::Uncompress::Adapter::Bunzip2->VERSION(2.212) } ;
eval{ require IO::Uncompress::Adapter::UnLzma ;
- IO::Uncompress::Adapter::UnLzma->import() } ;
+ IO::Uncompress::Adapter::UnLzma->VERSION(2.212) } ;
eval{ require IO::Uncompress::Adapter::UnXz ;
- IO::Uncompress::Adapter::UnXz->import() } ;
+ IO::Uncompress::Adapter::UnXz->VERSION(2.212) } ;
eval{ require IO::Uncompress::Adapter::UnZstd ;
- IO::Uncompress::Adapter::UnZstd->import() } ;
+ IO::Uncompress::Adapter::UnZstd->VERSION(2.212) } ;
}
@@ -38,7 +38,7 @@
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $UnzipError, %headerLookup);
-$VERSION = '2.204';
+$VERSION = '2.212';
$UnzipError = '';
@ISA = qw(IO::Uncompress::RawInflate Exporter);
@@ -1396,7 +1396,7 @@
=back
-=head2 Examples
+=head2 OneShot Examples
Say you have a zip file, C<file1.zip>, that only contains a
single member, you can read it and write the uncompressed data to the
@@ -1459,6 +1459,9 @@
my $z = IO::Uncompress::Unzip->new( $input [OPTS] )
or die "IO::Uncompress::Unzip failed: $UnzipError\n";
+The constructor takes one mandatory parameter, C<$input>, defined below, and
+zero or more C<OPTS>, defined in L<Constructor Options>.
+
Returns an C<IO::Uncompress::Unzip> object on success and undef on failure.
The variable C<$UnzipError> will contain an error message on failure.
@@ -1471,6 +1474,20 @@
$line = $z->getline();
$line = <$z>;
+Below is a simple exaple of using the OO interface to read the compressed file
+C<myfile.zip> and write its contents to stdout.
+
+ my $filename = "myfile.zip";
+ my $z = IO::Uncompress::Unzip->new($filename)
+ or die "IO::Uncompress::Unzip failed: $UnzipError\n";
+
+ while (<$z>) {
+ print $_;
+ }
+ $z->close();
+
+See L</EXAMPLES> for further examples
+
The mandatory parameter C<$input> is used to determine the source of the
compressed data. This parameter can take one of three forms.
@@ -1607,10 +1624,6 @@
=back
-=head2 Examples
-
-TODO
-
=head1 Methods
=head2 read
@@ -1877,10 +1890,38 @@
=head1 EXAMPLES
-=head2 Working with Net::FTP
+=head2 Simple Read
-See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
+Say you have a zip file, C<file1.zip>, that only contains a
+single member, you can read it and write the uncompressed data to the
+file C<file1.txt> like this.
+ use strict ;
+ use warnings ;
+ use IO::Uncompress::Unzip qw(unzip $UnzipError) ;
+
+ my $filename = "file1.zip";
+ my $z = IO::Uncompress::Unzip->new($filename)
+ or die "IO::Uncompress::Unzip failed: $UnzipError\n";
+ open my $out, ">", "file1.txt";
+
+ while (<$z>) {
+ print $out $_;
+ }
+ $z->close();
+
+If you have a zip file that contains multiple members and want to read a
+specific member from the file, say C<"data1">, use the C<Name> option when
+constructing the
+
+ use strict ;
+ use warnings ;
+ use IO::Uncompress::Unzip qw(unzip $UnzipError) ;
+
+ my $filename = "file1.zip";
+ my $z = IO::Uncompress::Unzip->new($filename, Name => "data1")
+ or die "IO::Uncompress::Unzip failed: $UnzipError\n";
+
=head2 Walking through a zip file
The code below can be used to traverse a zip file, one compressed data
@@ -1925,6 +1966,10 @@
The script is available from L<https://gist.github.com/eqhmcow/5389877>
+=head2 Working with Net::FTP
+
+See L<IO::Compress::FAQ|IO::Compress::FAQ/"Compressed files and Net::FTP">
+
=head1 SUPPORT
General feedback/questions/bug reports should be sent to
@@ -1967,7 +2012,7 @@
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2024 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
Modified: trunk/Master/tlpkg/tlperl/lib/IO/Zlib.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO/Zlib.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO/Zlib.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -291,7 +291,7 @@
use Symbol;
use Tie::Handle;
-our $VERSION = "1.14";
+our $VERSION = "1.15";
our $AUTOLOAD;
our @ISA = qw(Tie::Handle);
Modified: trunk/Master/tlpkg/tlperl/lib/IO.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/IO.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/IO.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -7,7 +7,7 @@
use strict;
use warnings;
-our $VERSION = "1.52";
+our $VERSION = "1.55";
XSLoader::load 'IO', $VERSION;
sub import {
Modified: trunk/Master/tlpkg/tlperl/lib/Internals.pod
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Internals.pod 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Internals.pod 2025-02-24 14:12:21 UTC (rev 74256)
@@ -7,6 +7,7 @@
$is_ro= Internals::SvREADONLY($x)
$refcnt= Internals::SvREFCNT($x)
hv_clear_placeholders(%hash);
+ if (Internals::stack_refcounted & 1) { .... }
=head1 DESCRIPTION
@@ -62,6 +63,13 @@
You should use the wrapper functions provided by Hash::Util instead.
As of 5.25 also available as C< Hash::Util::_clear_placeholders(%hash) >
+=item stack_refcounted
+
+Returns an integer indicating whether the perl binary has been configured
+and built with an argument stack which reference-counts any items pushed
+onto it. The value should be treated as flag bits. Currently only bit 0 is
+used, indicating that C<PERL_RC_STACK> was enabled during the build.
+
=back
=head1 AUTHOR
Modified: trunk/Master/tlpkg/tlperl/lib/Math/BigFloat/Trace.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Math/BigFloat/Trace.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Math/BigFloat/Trace.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -10,7 +10,7 @@
our @ISA = qw(Exporter Math::BigFloat);
-our $VERSION = '0.66';
+our $VERSION = '0.67';
use overload; # inherit overload from Math::BigFloat
Modified: trunk/Master/tlpkg/tlperl/lib/Math/BigFloat.pm
===================================================================
--- trunk/Master/tlpkg/tlperl/lib/Math/BigFloat.pm 2025-02-24 13:59:26 UTC (rev 74255)
+++ trunk/Master/tlpkg/tlperl/lib/Math/BigFloat.pm 2025-02-24 14:12:21 UTC (rev 74256)
@@ -5,12 +5,13 @@
#
# The following hash values are used internally:
-# sign : "+", "-", "+inf", "-inf", or "NaN" if not a number
-# _m : mantissa ($LIB thingy)
-# _es : sign of _e
-# _e : exponent ($LIB thingy)
-# _a : accuracy
-# _p : precision
+#
+# sign : "+", "-", "+inf", "-inf", or "NaN"
+# _m : absolute value of mantissa ($LIB thingy)
+# _es : sign of exponent ("+" or "-")
+# _e : absolute value of exponent ($LIB thingy)
+# accuracy : accuracy (scalar)
+# precision : precision (scalar)
use 5.006001;
use strict;
@@ -20,7 +21,7 @@
use Scalar::Util qw< blessed >;
use Math::BigInt qw< >;
-our $VERSION = '1.999837';
+our $VERSION = '2.003002';
$VERSION =~ tr/_//d;
require Exporter;
@@ -52,11 +53,11 @@
'**' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bpow($_[0])
: $_[0] -> copy() -> bpow($_[1]); },
- '<<' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> blsft($_[0])
- : $_[0] -> copy() -> blsft($_[1]); },
+ '<<' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bblsft($_[0])
+ : $_[0] -> copy() -> bblsft($_[1]); },
- '>>' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> brsft($_[0])
- : $_[0] -> copy() -> brsft($_[1]); },
+ '>>' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bbrsft($_[0])
+ : $_[0] -> copy() -> bbrsft($_[1]); },
# overload key: assign
@@ -72,9 +73,9 @@
'**=' => sub { $_[0] -> bpow($_[1]); },
- '<<=' => sub { $_[0] -> blsft($_[1]); },
+ '<<=' => sub { $_[0] -> bblsft($_[1]); },
- '>>=' => sub { $_[0] -> brsft($_[1]); },
+ '>>=' => sub { $_[0] -> bbrsft($_[1]); },
# 'x=' => sub { },
@@ -227,8 +228,10 @@
# constant for easier life
my $nan = 'NaN';
-my $IMPORT = 0; # was import() called yet? used to make require work
+# Has import() been called yet? This variable is needed to make "require" work.
+my $IMPORT = 0;
+
# some digits of accuracy for blog(undef, 10); which we use in blog() for speed
my $LOG_10 =
'2.3025850929940456840179914546843642076011014886287729760333279009675726097';
@@ -252,10 +255,12 @@
}
sub STORE {
- $rnd_mode = $_[0]->round_mode($_[1]);
+ $rnd_mode = (ref $_[0]) -> round_mode($_[1]);
}
BEGIN {
+ *objectify = \&Math::BigInt::objectify;
+
# when someone sets $rnd_mode, we catch this and check the value to see
# whether it is valid or not.
$rnd_mode = 'even';
@@ -269,55 +274,45 @@
}
sub AUTOLOAD {
- # make fxxx and bxxx both work by selectively mapping fxxx() to MBF::bxxx()
+
+ # Make fxxx() work by mapping fxxx() to Math::BigFloat::bxxx().
+
my $name = $AUTOLOAD;
- $name =~ s/(.*):://; # split package
- my $c = $1 || __PACKAGE__;
- no strict 'refs';
- $c->import() if $IMPORT == 0;
- if (!_method_alias($name)) {
- if (!defined $name) {
- # delayed load of Carp and avoid recursion
- croak("$c: Can't call a method without name");
- }
- if (!_method_hand_up($name)) {
- # delayed load of Carp and avoid recursion
- croak("Can't call $c\-\>$name, not a valid method");
- }
- # try one level up, but subst. bxxx() for fxxx() since MBI only got
- # bxxx()
- $name =~ s/^f/b/;
- return &{"Math::BigInt"."::$name"}(@_);
- }
+ $name =~ s/^(.*):://; # strip package name
+ my $class = $1 || __PACKAGE__;
+
+ $class -> import() if $IMPORT == 0;
+
+ # E.g., "fabs" -> "babs", but "is_neg" -> "is_neg"
+
my $bname = $name;
$bname =~ s/^f/b/;
- $c .= "::$name";
- *{$c} = \&{$bname};
- &{$c}; # uses @_
+
+ # Map, e.g., Math::BigFloat::fabs() to Math::BigFloat::babs()
+
+ if ($bname ne $name && Math::BigFloat -> can($bname)) {
+ no strict 'refs';
+ return &{"Math::BigFloat::$bname"}(@_);
+ }
+
+ # Map, e.g., Math::BigFloat::babs() to Math::BigInt::babs()
+
+ elsif (Math::BigInt -> can($bname)) {
+ no strict 'refs';
+ return &{"Math::BigInt::$bname"}(@_);
+ }
+
+ else {
+ croak("Can't call $class->$name(), not a valid method");
+ }
}
##############################################################################
-{
- # valid method aliases for AUTOLOAD
- my %methods = map { $_ => 1 }
- qw / fadd fsub fmul fdiv fround ffround fsqrt fmod fstr fsstr fpow fnorm
- fint facmp fcmp fzero fnan finf finc fdec ffac fneg
- fceil ffloor frsft flsft fone flog froot fexp
- /;
- # valid methods that can be handed up (for AUTOLOAD)
- my %hand_ups = map { $_ => 1 }
- qw / is_nan is_inf is_negative is_positive is_pos is_neg
- accuracy precision div_scale round_mode fabs fnot
- objectify upgrade downgrade
- bone binf bnan bzero
- bsub
- /;
+# Compare the following function with @ISA above. This inheritance mess needs a
+# clean up. When doing so, also consider the BEGIN block and the AUTOLOAD code.
+# Fixme!
- sub _method_alias { exists $methods{$_[0]||''}; }
- sub _method_hand_up { exists $hand_ups{$_[0]||''}; }
-}
-
sub isa {
my ($self, $class) = @_;
return if $class =~ /^Math::BigInt/; # we aren't one of these
@@ -396,7 +391,7 @@
# Math::BigFloat or subclass
- if (defined(blessed($wanted)) && $wanted -> isa($class)) {
+ if (defined(blessed($wanted)) && $wanted -> isa(__PACKAGE__)) {
# Don't copy the accuracy and precision, because a new object should get
# them from the global configuration.
@@ -545,6 +540,10 @@
my $selfref = ref $self;
my $class = $selfref || $self;
+ # Make "require" work.
+
+ $class -> import() if $IMPORT == 0;
+
# Don't modify constant (read-only) objects.
return $self if $selfref && $self->modify('from_dec');
@@ -575,6 +574,10 @@
my $selfref = ref $self;
my $class = $selfref || $self;
+ # Make "require" work.
+
+ $class -> import() if $IMPORT == 0;
+
# Don't modify constant (read-only) objects.
return $self if $selfref && $self->modify('from_hex');
@@ -605,6 +608,10 @@
my $selfref = ref $self;
my $class = $selfref || $self;
+ # Make "require" work.
+
+ $class -> import() if $IMPORT == 0;
+
# Don't modify constant (read-only) objects.
return $self if $selfref && $self->modify('from_oct');
@@ -635,6 +642,10 @@
my $selfref = ref $self;
my $class = $selfref || $self;
+ # Make "require" work.
+
+ $class -> import() if $IMPORT == 0;
+
# Don't modify constant (read-only) objects.
return $self if $selfref && $self->modify('from_bin');
@@ -665,6 +676,10 @@
my $selfref = ref $self;
my $class = $selfref || $self;
+ # Make "require" work.
+
+ $class -> import() if $IMPORT == 0;
+
# Don't modify constant (read-only) objects.
return $self if $selfref && $self->modify('from_ieee754');
@@ -735,7 +750,7 @@
# The maximum exponent, minimum exponent, and exponent bias.
- my $emax = Math::BigFloat -> new(2) -> bpow($w - 1) -> bdec();
+ my $emax = $class -> new(2) -> bpow($w - 1) -> bdec();
my $emin = 1 - $emax;
my $bias = $emax;
@@ -839,8 +854,10 @@
my $selfref = ref $self;
my $class = $selfref || $self;
- $self->import() if $IMPORT == 0; # make require work
+ # Make "require" work.
+ $class -> import() if $IMPORT == 0;
+
# Don't modify constant (read-only) objects.
return $self if $selfref && $self->modify('bzero');
@@ -867,14 +884,16 @@
#return $self -> round(@r); # this should work, but doesnt; fixme!
if (@r) {
- croak "can't specify both accuracy and precision"
- if @r >= 2 && defined($r[0]) && defined($r[1]);
- $self->{_a} = $r[0];
- $self->{_p} = $r[1];
+ if (@r >= 2 && defined($r[0]) && defined($r[1])) {
+ carp "can't specify both accuracy and precision";
+ return $self -> bnan();
+ }
+ $self->{accuracy} = $r[0];
+ $self->{precision} = $r[1];
} else {
unless($selfref) {
- $self->{_a} = $class -> accuracy();
- $self->{_p} = $class -> precision();
+ $self->{accuracy} = $class -> accuracy();
+ $self->{precision} = $class -> precision();
}
}
@@ -897,8 +916,10 @@
my $selfref = ref $self;
my $class = $selfref || $self;
- $self->import() if $IMPORT == 0; # make require work
+ # Make "require" work.
+ $class -> import() if $IMPORT == 0;
+
# Don't modify constant (read-only) objects.
return $self if $selfref && $self->modify('bone');
@@ -933,14 +954,16 @@
#return $self -> round(@r); # this should work, but doesnt; fixme!
if (@r) {
- croak "can't specify both accuracy and precision"
- if @r >= 2 && defined($r[0]) && defined($r[1]);
- $self->{_a} = $_[0];
- $self->{_p} = $_[1];
+ if (@r >= 2 && defined($r[0]) && defined($r[1])) {
+ carp "can't specify both accuracy and precision";
+ return $self -> bnan();
+ }
+ $self->{accuracy} = $_[0];
+ $self->{precision} = $_[1];
} else {
unless($selfref) {
- $self->{_a} = $class -> accuracy();
- $self->{_p} = $class -> precision();
+ $self->{accuracy} = $class -> accuracy();
+ $self->{precision} = $class -> precision();
}
}
@@ -970,8 +993,10 @@
}
}
- $self->import() if $IMPORT == 0; # make require work
+ # Make "require" work.
+ $class -> import() if $IMPORT == 0;
+
# Don't modify constant (read-only) objects.
return $self if $selfref && $self->modify('binf');
@@ -1006,14 +1031,16 @@
#return $self -> round(@r); # this should work, but doesnt; fixme!
if (@r) {
- croak "can't specify both accuracy and precision"
- if @r >= 2 && defined($r[0]) && defined($r[1]);
- $self->{_a} = $r[0];
- $self->{_p} = $r[1];
+ if (@r >= 2 && defined($r[0]) && defined($r[1])) {
+ carp "can't specify both accuracy and precision";
+ return $self -> bnan();
+ }
+ $self->{accuracy} = $r[0];
+ $self->{precision} = $r[1];
} else {
unless($selfref) {
- $self->{_a} = $class -> accuracy();
- $self->{_p} = $class -> precision();
+ $self->{accuracy} = $class -> accuracy();
+ $self->{precision} = $class -> precision();
}
}
@@ -1043,8 +1070,10 @@
}
}
- $self->import() if $IMPORT == 0; # make require work
+ # Make "require" work.
+ $class -> import() if $IMPORT == 0;
+
# Don't modify constant (read-only) objects.
return $self if $selfref && $self->modify('bnan');
@@ -1071,14 +1100,16 @@
#return $self -> round(@r); # this should work, but doesnt; fixme!
if (@r) {
- croak "can't specify both accuracy and precision"
- if @r >= 2 && defined($r[0]) && defined($r[1]);
- $self->{_a} = $r[0];
- $self->{_p} = $r[1];
+ if (@r >= 2 && defined($r[0]) && defined($r[1])) {
+ carp "can't specify both accuracy and precision";
+ return $self -> bnan();
+ }
+ $self->{accuracy} = $r[0];
+ $self->{precision} = $r[1];
} else {
unless($selfref) {
- $self->{_a} = $class -> accuracy();
- $self->{_p} = $class -> precision();
+ $self->{accuracy} = $class -> accuracy();
+ $self->{precision} = $class -> precision();
}
}
@@ -1119,6 +1150,10 @@
my $class = $selfref || $self;
my @r = @_; # rounding paramters
+ # Make "require" work.
+
+ $class -> import() if $IMPORT == 0;
+
if ($selfref) { # bpi() called as an instance method
return $self if $self -> modify('bpi');
} else { # bpi() called as a class method
@@ -1244,7 +1279,7 @@
$pi -> precision($r[1]);
}
- for my $key (qw/ sign _m _es _e _a _p /) {
+ for my $key (qw/ sign _m _es _e accuracy precision /) {
$self -> {$key} = $pi -> {$key};
}
@@ -1271,8 +1306,8 @@
$copy->{_es} = $x->{_es};
$copy->{_m} = $LIB->_copy($x->{_m});
$copy->{_e} = $LIB->_copy($x->{_e});
- $copy->{_a} = $x->{_a} if exists $x->{_a};
- $copy->{_p} = $x->{_p} if exists $x->{_p};
+ $copy->{accuracy} = $x->{accuracy} if exists $x->{accuracy};
+ $copy->{precision} = $x->{precision} if exists $x->{precision};
return $copy;
}
@@ -1284,7 +1319,7 @@
return $x -> copy() if $x -> isa("Math::BigInt");
- # disable upgrading and downgrading
+ # Disable upgrading and downgrading.
require Math::BigInt;
my $upg = Math::BigInt -> upgrade();
@@ -1292,6 +1327,8 @@
Math::BigInt -> upgrade(undef);
Math::BigInt -> downgrade(undef);
+ # Copy the value.
+
my $y;
if ($x -> is_inf()) {
$y = Math::BigInt -> binf($x->sign());
@@ -1307,8 +1344,12 @@
$y = Math::BigInt->new($x->{sign} . $LIB->_str($y));
}
- # reset upgrading and downgrading
+ # Copy the remaining instance variables.
+ ($y->{accuracy}, $y->{precision}) = ($x->{accuracy}, $x->{precision});
+
+ # Restore upgrading and downgrading.
+
Math::BigInt -> upgrade($upg);
Math::BigInt -> downgrade($dng);
@@ -1321,18 +1362,23 @@
return $x -> copy() if $x -> isa("Math::BigFloat");
- # disable upgrading and downgrading
+ # Disable upgrading and downgrading.
- require Math::BigFloat;
my $upg = Math::BigFloat -> upgrade();
my $dng = Math::BigFloat -> downgrade();
Math::BigFloat -> upgrade(undef);
Math::BigFloat -> downgrade(undef);
+ # Copy the value.
+
my $y = Math::BigFloat -> new($x);
- # reset upgrading and downgrading
+ # Copy the remaining instance variables.
+ ($y->{accuracy}, $y->{precision}) = ($x->{accuracy}, $x->{precision});
+
+ # Restore upgrading and downgrading.
+
Math::BigFloat -> upgrade($upg);
Math::BigFloat -> downgrade($dng);
@@ -1339,6 +1385,47 @@
return $y;
}
+sub as_rat {
+ # return copy as a Math::BigRat representation of this Math::BigFloat
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ return $x -> copy() if $x -> isa("Math::BigRat");
+
+ # Disable upgrading and downgrading.
+
+ require Math::BigRat;
+ my $upg = Math::BigRat -> upgrade();
+ my $dng = Math::BigRat -> downgrade();
+ Math::BigRat -> upgrade(undef);
+ Math::BigRat -> downgrade(undef);
+
+ # Copy the value.
+
+ my $y;
+ if ($x -> is_inf()) {
+ $y = Math::BigRat -> binf($x -> sign());
+ } elsif ($x -> is_nan()) {
+ $y = Math::BigRat -> bnan();
+ } else {
+ my @flt_parts = ($x->{sign}, $x->{_m}, $x->{_es}, $x->{_e});
+ my @rat_parts = $class -> _flt_lib_parts_to_rat_lib_parts(@flt_parts);
+ $y = Math::BigRat -> new($rat_parts[0] . $LIB -> _str($rat_parts[1])
+ . '/' . $LIB -> _str($rat_parts[2]));
+ }
+
+ # Copy the remaining instance variables.
+
+ ($y->{accuracy}, $y->{precision}) = ($x->{accuracy}, $x->{precision});
+
+ # Restore upgrading and downgrading.
+
+ Math::BigRat -> upgrade($upg);
+ Math::BigRat -> downgrade($dng);
+
+ return $y;
+}
+
###############################################################################
# Boolean methods
###############################################################################
@@ -2189,16 +2276,16 @@
# shortcut to not run through _find_round_parameters again
if (defined $params[0]) {
- delete $x->{_a}; # clear before round
+ $x->{accuracy} = undef; # clear before round
$x = $x->bround($params[0], $params[2]); # then round accordingly
} else {
- delete $x->{_p}; # clear before round
+ $x->{precision} = undef; # clear before round
$x = $x->bfround($params[1], $params[2]); # then round accordingly
}
if ($fallback) {
# clear a/p after round, since user did not request it
- delete $x->{_a};
- delete $x->{_p};
+ $x->{accuracy} = undef;
+ $x->{precision} = undef;
}
if (wantarray) {
@@ -2208,8 +2295,8 @@
}
if ($fallback) {
# clear a/p after round, since user did not request it
- delete $rem->{_a};
- delete $rem->{_p};
+ $rem->{accuracy} = undef;
+ $rem->{precision} = undef;
}
$x = $downgrade -> new($x -> bdstr(), @r)
if defined($downgrade) && $x -> is_int();
@@ -2467,6 +2554,23 @@
return $x;
}
+sub binv {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ return $x if $x->modify('binv');
+
+ my $inv = $class -> bdiv($class -> bone(), $x, @r);
+
+ return $downgrade -> new($inv, @r) if defined($downgrade)
+ && ($inv -> is_int() || $inv -> is_inf() || $inv -> is_nan());
+
+ for my $key (qw/ sign _m _es _e /) {
+ $x -> {$key} = $inv -> {$key};
+ }
+
+ $x;
+}
+
sub blog {
# Return the logarithm of the operand. If a second operand is defined, that
# value is used as the base, otherwise the base is assumed to be Euler's
@@ -2475,7 +2579,8 @@
my ($class, $x, $base, @r);
# Only objectify the base if it is defined, since an undefined base, as in
- # $x->blog() or $x->blog(undef) signals that the base is Euler's number.
+ # $x->blog() or $x->blog(undef) signals that the base is Euler's number =
+ # 2.718281828...
if (!ref($_[0]) && $_[0] =~ /^[A-Za-z]|::/) {
# E.g., Math::BigFloat->blog(256, 2)
@@ -2482,7 +2587,7 @@
($class, $x, $base, @r) =
defined $_[2] ? objectify(2, @_) : objectify(1, @_);
} else {
- # E.g., Math::BigFloat::blog(256, 2) or $x->blog(2)
+ # E.g., $x->blog(2) or the deprecated Math::BigFloat::blog(256, 2)
($class, $x, $base, @r) =
defined $_[1] ? objectify(2, @_) : objectify(1, @_);
}
@@ -2489,11 +2594,42 @@
return $x if $x->modify('blog');
+ # Handle all exception cases and all trivial cases. I have used Wolfram
+ # Alpha (http://www.wolframalpha.com) as the reference for these cases.
+
return $x -> bnan(@r) if $x -> is_nan();
- return $upgrade -> blog($x, $base, @r)
- if defined($upgrade) && $x -> is_neg();
+ if (defined $base) {
+ $base = $class -> new($base)
+ unless defined(blessed($base)) && $base -> isa(__PACKAGE__);
+ if ($base -> is_nan() || $base -> is_one()) {
+ return $x -> bnan(@r);
+ } elsif ($base -> is_inf() || $base -> is_zero()) {
+ return $x -> bnan(@r) if $x -> is_inf() || $x -> is_zero();
+ return $x -> bzero(@r);
+ } elsif ($base -> is_negative()) { # -inf < base < 0
+ return $x -> bzero(@r) if $x -> is_one(); # x = 1
+ return $x -> bone('+', @r) if $x == $base; # x = base
+ # we can't handle these cases, so upgrade, if we can
+ return $upgrade -> blog($x, $base, @r) if defined $upgrade;
+ return $x -> bnan(@r);
+ }
+ return $x -> bone(@r) if $x == $base; # 0 < base && 0 < x < inf
+ }
+ if ($x -> is_inf()) { # x = +/-inf
+ my $sign = defined($base) && $base < 1 ? '-' : '+';
+ return $x -> binf($sign, @r);
+ } elsif ($x -> is_neg()) { # -inf < x < 0
+ return $upgrade -> blog($x, $base, @r) if defined $upgrade;
+ return $x -> bnan(@r);
+ } elsif ($x -> is_one()) { # x = 1
+ return $x -> bzero(@r);
+ } elsif ($x -> is_zero()) { # x = 0
+ my $sign = defined($base) && $base < 1 ? '+' : '-';
+ return $x -> binf($sign, @r);
+ }
+
# we need to limit the accuracy to protect against overflow
my $fallback = 0;
my ($scale, @params);
@@ -2513,86 +2649,34 @@
$scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
}
- my $done = 0;
- if (defined $base) {
- $base = $class -> new($base)
- unless defined(blessed($base)) && $base -> isa($class);
- if ($base -> is_nan() || $base -> is_one()) {
- $x = $x -> bnan();
- $done = 1;
- } elsif ($base -> is_inf() || $base -> is_zero()) {
- if ($x -> is_inf() || $x -> is_zero()) {
- $x = $x -> bnan();
- } else {
- $x = $x -> bzero(@params);
- }
- $done = 1;
- } elsif ($base -> is_negative()) { # -inf < base < 0
- if ($x -> is_one()) { # x = 1
- $x = $x -> bzero(@params);
- } elsif ($x == $base) {
- $x = $x -> bone('+', @params); # x = base
- } else {
- $x = $x -> bnan(); # otherwise
- }
- $done = 1;
- } elsif ($x == $base) {
- $x = $x -> bone('+', @params); # 0 < base && 0 < x < inf
- $done = 1;
- }
- }
+ # When user set globals, they would interfere with our calculation, so
+ # disable them and later re-enable them.
- # We now know that the base is either undefined or positive and finite.
+ my $ab = $class -> accuracy();
+ my $pb = $class -> precision();
+ $class -> accuracy(undef);
+ $class -> precision(undef);
- unless ($done) {
- if ($x -> is_inf()) { # x = +/-inf
- my $sign = defined $base && $base < 1 ? '-' : '+';
- $x = $x -> binf($sign);
- $done = 1;
- } elsif ($x -> is_neg()) { # -inf < x < 0
- $x = $x -> bnan();
- $done = 1;
- } elsif ($x -> is_one()) { # x = 1
- $x = $x -> bzero(@params);
- $done = 1;
- } elsif ($x -> is_zero()) { # x = 0
- my $sign = defined $base && $base < 1 ? '+' : '-';
- $x = $x -> binf($sign);
- $done = 1;
- }
- }
+ # Disabling upgrading and downgrading is no longer necessary to avoid an
+ # infinite recursion, but it avoids unnecessary upgrading and downgrading in
+ # the intermediate computations.
- if ($done) {
- if ($fallback) {
- # clear a/p after round, since user did not request it
- delete $x->{_a};
- delete $x->{_p};
- }
- return $downgrade -> new($x -> bdstr(), @r)
- if defined($downgrade) && $x->is_int();
- return $x;
- }
+ my $upg = $class -> upgrade();
+ my $dng = $class -> downgrade();
+ $class -> upgrade(undef);
+ $class -> downgrade(undef);
- # when user set globals, they would interfere with our calculation, so
- # disable them and later re-enable them
- no strict 'refs';
- my $abr = "$class\::accuracy";
- my $ab = $$abr;
- $$abr = undef;
- my $pbr = "$class\::precision";
- my $pb = $$pbr;
- $$pbr = undef;
- # we also need to disable any set A or P on $x (_find_round_parameters took
- # them already into account), since these would interfere, too
- delete $x->{_a};
- delete $x->{_p};
+ # We also need to disable any set A or P on $x (_find_round_parameters took
+ # them already into account), since these would interfere, too.
- $done = 0;
+ $x->{accuracy} = undef;
+ $x->{precision} = undef;
- # If both the invocand and the base are integers, try to calculate integer
- # result first. This is very fast, and in case the real result was found, we
- # can stop right here.
+ my $done = 0;
+ # If both $x and $base are integers, try to calculate an integer result
+ # first. This is very fast, and if the exact result was found, we are done.
+
if (defined($base) && $base -> is_int() && $x -> is_int()) {
my $x_lib = $LIB -> _new($x -> bdstr());
my $b_lib = $LIB -> _new($base -> bdstr());
@@ -2605,36 +2689,46 @@
}
}
+ # If the integer result was not accurate, compute the natural logarithm
+ # log($x) (using reduction by 10 and possibly also by 2), and if a
+ # different base was requested, convert the result with log($x)/log($base).
+
unless ($done) {
-
- # First calculate the log to base e (using reduction by 10 and possibly
- # also by 2), and if a different base was requested, convert the result.
-
- $x = $x->_log_10($scale);
+ $x = $x -> _log_10($scale);
if (defined $base) {
# log_b(x) = ln(x) / ln(b), so compute ln(b)
- my $base_log_e = $base->copy()->_log_10($scale);
- $x = $x->bdiv($base_log_e, $scale);
+ my $base_log_e = $base -> copy() -> _log_10($scale);
+ $x = $x -> bdiv($base_log_e, $scale);
}
}
# shortcut to not run through _find_round_parameters again
+
if (defined $params[0]) {
- $x = $x->bround($params[0], $params[2]); # then round accordingly
+ $x = $x -> bround($params[0], $params[2]); # then round accordingly
} else {
- $x = $x->bfround($params[1], $params[2]); # then round accordingly
+ $x = $x -> bfround($params[1], $params[2]); # then round accordingly
}
if ($fallback) {
# clear a/p after round, since user did not request it
- delete $x->{_a};
- delete $x->{_p};
+ $x->{accuracy} = undef;
+ $x->{precision} = undef;
}
- # restore globals
- $$abr = $ab;
- $$pbr = $pb;
+ # Restore globals. We need to do it like this, because setting one
+ # undefines the other.
+
+ if (defined $ab) {
+ $class -> accuracy($ab);
+ } else {
+ $class -> precision($pb);
+ }
+
+ $class -> upgrade($upg);
+ $class -> downgrade($dng);
+
return $downgrade -> new($x -> bdstr(), @r)
- if defined($downgrade) && $x->is_int();
+ if defined($downgrade) && $x -> is_int();
return $x;
}
@@ -2642,64 +2736,84 @@
# Calculate e ** X (Euler's number to the power of X)
my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- return $x if $x->modify('bexp');
+ return $x if $x -> modify('bexp');
- return $x->bnan(@r) if $x -> is_nan();
- return $x->binf(@r) if $x->{sign} eq '+inf';
- return $x->bzero(@r) if $x->{sign} eq '-inf';
+ return $x -> bnan(@r) if $x -> is_nan();
+ return $x -> binf(@r) if $x->{sign} eq '+inf';
+ return $x -> bzero(@r) if $x->{sign} eq '-inf';
- # we need to limit the accuracy to protect against overflow
+ # Get the rounding parameters, if any.
+
my $fallback = 0;
my ($scale, @params);
- ($x, @params) = $x->_find_round_parameters(@r);
+ ($x, @params) = $x -> _find_round_parameters(@r);
- # error in _find_round_parameters?
- return $x->bnan(@r) if $x->{sign} eq 'NaN';
+ # Error in _find_round_parameters?
- # no rounding at all, so must use fallback
- if (scalar @params == 0) {
- # simulate old behaviour
- $params[0] = $class->div_scale(); # and round to it as accuracy
- $params[1] = undef; # P = undef
- $scale = $params[0]+4; # at least four more for proper round
- $params[2] = $r[2]; # round mode by caller or undef
- $fallback = 1; # to clear a/p afterwards
+ return $x -> bnan(@r) if $x->{sign} eq 'NaN';
+
+ return $x -> bone(@r) if $x -> is_zero();
+
+ # If no rounding parameters are give, use fallback.
+
+ if (!@params) {
+ $params[0] = $class -> div_scale(); # fallback accuracy
+ $params[1] = undef; # no precision
+ $params[2] = $r[2]; # rounding mode
+ $scale = $params[0];
+ $fallback = 1; # to clear a/p afterwards
} else {
- # the 4 below is empirical, and there might be cases where it's not
- # enough ...
- $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
+ if (defined($params[0])) {
+ $scale = $params[0];
+ } else {
+ # We perform the computations below using accuracy only, not
+ # precision, so when precision is given, we need to "convert" this
+ # to accuracy. To do that, we need to know, at least approximately,
+ # how many digits there will be in the final result.
+ #
+ # log10(exp($x)) = log(exp($x)) / log(10) = $x / log(10)
+
+ #$scale = 1 + int(log($ms) / log(10) + $es) - $params[1];
+ my $ndig = $x -> numify() / log(10);
+ $scale = 1 + int($ndig) - $params[1];
+ }
}
- return $x->bone(@params) if $x->is_zero();
+ # Add extra digits to reduce the consequence of round-off errors in the
+ # intermediate computations.
- if (!$x->isa('Math::BigFloat')) {
- $x = Math::BigFloat->new($x);
+ $scale += 4;
+
@@ Diff output truncated at 1234567 characters. @@
More information about the tex-live-commits
mailing list.