In perl.git, the branch blead has been updated

<https://perl5.git.perl.org/perl.git/commitdiff/d82c4df61fbe367cde173c882a13f7dd774a9fe3?hp=f60eaa6ecf8e44162194a4eb2d9560205d4ee575>

- Log -----------------------------------------------------------------
commit d82c4df61fbe367cde173c882a13f7dd774a9fe3
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 13:49:05 2018 +0100

    Upgrade Time::Local from version 1.25 to 1.28

commit e82ffdf2dd0fb79939fd1f54573cc0027aec20ef
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 13:47:10 2018 +0100

    Upgrade Test::Simple from vesion 1.302133 to 1.302136

commit f97008e2f5934e56fd1dbd3d685308da14fddb30
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 13:36:04 2018 +0100

    Upgrade podlators from version 4.10 to 4.11
    
    (This includes the former blead customization.)

commit 898be3f703bb071479564da92b010415f3f73f4e
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 13:24:10 2018 +0100

    Upgrade perlfaq from version 5.021011 to 5.20180605
    
    (Existing blead customizations are retained.)

commit 458538929238f07a5c41a026a41f59f73a411562
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 13:16:14 2018 +0100

    Upgrade Locale-Codes from version 3.56 to 3.57

commit 3b00226d4be0d9a3d41ed2a428ee4186ebdef447
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 09:07:35 2018 +0100

    Upgrade IPC::Cmd from version 1.00 to 1.02

commit 729f45d7bf3b2bb45c58073d57074aa8ba1feb6d
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 09:06:01 2018 +0100

    Upgrade IO-Compress from version 2.074 to 2.081

commit 6bc1010743ba2c77c0c188431170b64f3eb78aed
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 09:00:48 2018 +0100

    Upgrade File::Temp from version 2.034 to 2.036

commit 4745c6436ade1cf49fba8aead3d80c95713b7efd
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 08:53:53 2018 +0100

    Upgrade ExtUtils::Manifest from version 1.70 to 1.71

commit 4097fff1bfc2a94d2104729c0f5416fba088130b
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 08:49:45 2018 +0100

    ExtUtils-Constant is synced with version 0.25

commit 78ce14b42853c46407abbca9a5916d9b8697be27
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 08:40:09 2018 +0100

    Upgrade Digest::SHA from version 6.01 to 6.02

commit 9003d70e62d94b53f19b26abf091589602b284e9
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 08:34:44 2018 +0100

    Upgrade DB_File from version 1.840 to 1.841

commit 9a27f4d06a78fda2cb1838e79f11f23fe8c95d83
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 08:32:45 2018 +0100

    Upgrade Compress::Raw::Zlib from 2.076 to 2.081

commit 2692cc798312a822bdab007d7bf1320f2f0ebb44
Author: Steve Hay <steve.m....@googlemail.com>
Date:   Tue Jul 3 08:32:03 2018 +0100

    Upgrade Compress::Raw::Bzip2 from version 2.074 to 2.081

-----------------------------------------------------------------------

Summary of changes:
 MANIFEST                                           |    12 +
 Porting/Maintainers.pl                             |    40 +-
 cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm  |    16 +-
 cpan/Compress-Raw-Bzip2/private/MakeUtil.pm        |     2 +
 cpan/Compress-Raw-Bzip2/t/000prereq.t              |     2 +-
 cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm    |     4 +-
 cpan/Compress-Raw-Zlib/private/MakeUtil.pm         |     2 +
 cpan/DB_File/DB_File.pm                            |     2 +-
 cpan/DB_File/Makefile.PL                           |     6 +-
 cpan/Digest-SHA/SHA.xs                             |    14 +-
 cpan/Digest-SHA/lib/Digest/SHA.pm                  |    12 +-
 cpan/Digest-SHA/shasum                             |    10 +-
 cpan/Digest-SHA/src/sha.c                          |     6 +-
 cpan/Digest-SHA/src/sha.h                          |     6 +-
 cpan/Digest-SHA/src/sha64bit.c                     |     6 +-
 cpan/Digest-SHA/src/sha64bit.h                     |     6 +-
 cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP  |     6 +
 cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm    |    39 +-
 cpan/ExtUtils-Manifest/t/Manifest.t                |     5 +-
 cpan/File-Temp/lib/File/Temp.pm                    |  1182 +-
 cpan/File-Temp/t/mktemp.t                          |    14 +-
 cpan/File-Temp/t/object.t                          |     2 +-
 cpan/File-Temp/t/posix.t                           |     8 +-
 cpan/File-Temp/t/security.t                        |     4 +-
 cpan/File-Temp/t/tempfile.t                        |     7 +-
 cpan/IO-Compress/Makefile.PL                       |     2 +-
 cpan/IO-Compress/bin/zipdetails                    |   212 +-
 cpan/IO-Compress/lib/Compress/Zlib.pm              |    72 +-
 cpan/IO-Compress/lib/File/GlobMapper.pm            |    52 +-
 cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm  |     6 +-
 .../IO-Compress/lib/IO/Compress/Adapter/Deflate.pm |     6 +-
 .../lib/IO/Compress/Adapter/Identity.pm            |     4 +-
 cpan/IO-Compress/lib/IO/Compress/Base.pm           |   134 +-
 cpan/IO-Compress/lib/IO/Compress/Base/Common.pm    |   180 +-
 cpan/IO-Compress/lib/IO/Compress/Bzip2.pm          |    86 +-
 cpan/IO-Compress/lib/IO/Compress/Deflate.pm        |    97 +-
 cpan/IO-Compress/lib/IO/Compress/FAQ.pod           |    44 +-
 cpan/IO-Compress/lib/IO/Compress/Gzip.pm           |   121 +-
 cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm |     2 +-
 cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm     |    99 +-
 cpan/IO-Compress/lib/IO/Compress/Zip.pm            |   147 +-
 cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm  |     2 +-
 cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm |     2 +-
 cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm     |     4 +-
 .../lib/IO/Uncompress/Adapter/Bunzip2.pm           |     6 +-
 .../lib/IO/Uncompress/Adapter/Identity.pm          |     6 +-
 .../lib/IO/Uncompress/Adapter/Inflate.pm           |     6 +-
 cpan/IO-Compress/lib/IO/Uncompress/AnyInflate.pm   |    84 +-
 .../IO-Compress/lib/IO/Uncompress/AnyUncompress.pm |   102 +-
 cpan/IO-Compress/lib/IO/Uncompress/Base.pm         |    17 +-
 cpan/IO-Compress/lib/IO/Uncompress/Bunzip2.pm      |    70 +-
 cpan/IO-Compress/lib/IO/Uncompress/Gunzip.pm       |    76 +-
 cpan/IO-Compress/lib/IO/Uncompress/Inflate.pm      |    70 +-
 cpan/IO-Compress/lib/IO/Uncompress/RawInflate.pm   |    72 +-
 cpan/IO-Compress/lib/IO/Uncompress/Unzip.pm        |    80 +-
 cpan/IO-Compress/private/MakeUtil.pm               |     2 +
 cpan/IO-Compress/t/000prereq.t                     |     2 +-
 cpan/IPC-Cmd/lib/IPC/Cmd.pm                        |    17 +-
 cpan/Locale-Codes/lib/Locale/Codes.pm              |     2 +-
 cpan/Locale-Codes/lib/Locale/Codes/Changes.pod     |   414 +-
 cpan/Locale-Codes/lib/Locale/Codes/Constants.pm    |     4 +-
 cpan/Locale-Codes/lib/Locale/Codes/Country.pm      |     4 +-
 .../Locale-Codes/lib/Locale/Codes/Country_Codes.pm |     4 +-
 .../lib/Locale/Codes/Country_Retired.pm            |     4 +-
 cpan/Locale-Codes/lib/Locale/Codes/Currency.pm     |     4 +-
 .../lib/Locale/Codes/Currency_Codes.pm             |     4 +-
 .../lib/Locale/Codes/Currency_Retired.pm           |     4 +-
 cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm      |     4 +-
 .../Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm |    85 +-
 .../lib/Locale/Codes/LangExt_Retired.pm            |     4 +-
 cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm      |     4 +-
 .../Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm |     4 +-
 .../lib/Locale/Codes/LangFam_Retired.pm            |     2 +-
 cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm      |     4 +-
 .../Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm |   724 +-
 .../lib/Locale/Codes/LangVar_Retired.pm            |     4 +-
 cpan/Locale-Codes/lib/Locale/Codes/Language.pm     |     4 +-
 .../lib/Locale/Codes/Language_Codes.pm             | 48992 ++++++++++---------
 .../lib/Locale/Codes/Language_Retired.pm           |     4 +-
 cpan/Locale-Codes/lib/Locale/Codes/Script.pm       |     4 +-
 cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm |     4 +-
 .../lib/Locale/Codes/Script_Retired.pm             |     4 +-
 cpan/Locale-Codes/lib/Locale/Country.pm            |     4 +-
 cpan/Locale-Codes/lib/Locale/Currency.pm           |     4 +-
 cpan/Locale-Codes/lib/Locale/Language.pm           |     4 +-
 cpan/Locale-Codes/lib/Locale/Script.pm             |     4 +-
 cpan/Locale-Codes/t/vals_langvar.pl                |    12 +-
 cpan/Test-Simple/lib/Test/Builder.pm               |     2 +-
 cpan/Test-Simple/lib/Test/Builder/Formatter.pm     |     2 +-
 cpan/Test-Simple/lib/Test/Builder/Module.pm        |     2 +-
 cpan/Test-Simple/lib/Test/Builder/Tester.pm        |     2 +-
 cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm  |     2 +-
 cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm      |     2 +-
 cpan/Test-Simple/lib/Test/More.pm                  |     2 +-
 cpan/Test-Simple/lib/Test/Simple.pm                |     2 +-
 cpan/Test-Simple/lib/Test/Tester.pm                |     2 +-
 cpan/Test-Simple/lib/Test/Tester/Capture.pm        |     2 +-
 cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm  |     2 +-
 cpan/Test-Simple/lib/Test/Tester/Delegate.pm       |     2 +-
 cpan/Test-Simple/lib/Test/use/ok.pm                |     2 +-
 cpan/Test-Simple/lib/Test2.pm                      |     2 +-
 cpan/Test-Simple/lib/Test2/API.pm                  |    41 +-
 cpan/Test-Simple/lib/Test2/API/Breakage.pm         |     2 +-
 cpan/Test-Simple/lib/Test2/API/Context.pm          |     2 +-
 cpan/Test-Simple/lib/Test2/API/Instance.pm         |     2 +-
 cpan/Test-Simple/lib/Test2/API/Stack.pm            |     2 +-
 cpan/Test-Simple/lib/Test2/Event.pm                |    10 +-
 cpan/Test-Simple/lib/Test2/Event/Bail.pm           |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Diag.pm           |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Encoding.pm       |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Exception.pm      |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Fail.pm           |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Generic.pm        |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Note.pm           |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Ok.pm             |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Pass.pm           |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Plan.pm           |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Skip.pm           |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Subtest.pm        |     2 +-
 cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm    |     2 +-
 cpan/Test-Simple/lib/Test2/Event/V2.pm             |     2 +-
 cpan/Test-Simple/lib/Test2/Event/Waiting.pm        |     2 +-
 cpan/Test-Simple/lib/Test2/EventFacet.pm           |     2 +-
 cpan/Test-Simple/lib/Test2/EventFacet/About.pm     |    10 +-
 cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm   |     2 +-
 cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm    |     2 +-
 cpan/Test-Simple/lib/Test2/EventFacet/Control.pm   |     2 +-
 cpan/Test-Simple/lib/Test2/EventFacet/Error.pm     |     2 +-
 cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm       |     4 +-
 cpan/Test-Simple/lib/Test2/EventFacet/Info.pm      |     2 +-
 cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm      |     2 +-
 cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm    |     2 +-
 cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm      |     2 +-
 cpan/Test-Simple/lib/Test2/EventFacet/Render.pm    |     2 +-
 cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm     |    17 +-
 cpan/Test-Simple/lib/Test2/Formatter.pm            |     2 +-
 cpan/Test-Simple/lib/Test2/Formatter/TAP.pm        |     2 +-
 cpan/Test-Simple/lib/Test2/Hub.pm                  |    11 +-
 cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm      |     2 +-
 .../lib/Test2/Hub/Interceptor/Terminator.pm        |     2 +-
 cpan/Test-Simple/lib/Test2/Hub/Subtest.pm          |     2 +-
 cpan/Test-Simple/lib/Test2/IPC.pm                  |     2 +-
 cpan/Test-Simple/lib/Test2/IPC/Driver.pm           |     2 +-
 cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm     |     4 +-
 cpan/Test-Simple/lib/Test2/Tools/Tiny.pm           |     2 +-
 cpan/Test-Simple/lib/Test2/Util.pm                 |    31 +-
 cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm    |     2 +-
 cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm   |     2 +-
 cpan/Test-Simple/lib/Test2/Util/HashBase.pm        |     2 +-
 cpan/Test-Simple/lib/Test2/Util/Trace.pm           |     2 +-
 cpan/Test-Simple/lib/ok.pm                         |     2 +-
 .../Test-Simple/t/Test2/behavior/trace_signature.t |     3 +-
 cpan/Test-Simple/t/Test2/modules/Event.t           |    25 +-
 cpan/Test-Simple/t/Test2/modules/Event/Bail.t      |     2 +
 cpan/Test-Simple/t/Test2/modules/Event/Encoding.t  |     6 +-
 cpan/Test-Simple/t/Test2/modules/Event/Fail.t      |     2 +-
 cpan/Test-Simple/t/Test2/modules/Event/Generic.t   |     6 +-
 cpan/Test-Simple/t/Test2/modules/Event/Pass.t      |     2 +-
 cpan/Test-Simple/t/Test2/modules/Event/Subtest.t   |     3 +-
 .../t/Test2/modules/Event/TAP/Version.t            |     2 +-
 .../Test-Simple/t/Test2/modules/IPC/Driver/Files.t |    22 +-
 cpan/Test-Simple/t/Test2/modules/Util.t            |    23 +
 .../t/Test2/modules/Util/Facets2Legacy.t           |     2 +-
 cpan/Time-Local/lib/Time/Local.pm                  |    83 +-
 cpan/Time-Local/t/Local.t                          |   608 +-
 cpan/perlfaq/lib/perlfaq.pm                        |     4 +-
 cpan/perlfaq/lib/perlfaq.pod                       |    12 +-
 cpan/perlfaq/lib/perlfaq1.pod                      |    39 +-
 cpan/perlfaq/lib/perlfaq2.pod                      |     5 +-
 cpan/perlfaq/lib/perlfaq3.pod                      |     7 +-
 cpan/perlfaq/lib/perlfaq4.pod                      |     9 +-
 cpan/perlfaq/lib/perlfaq5.pod                      |    42 +-
 cpan/perlfaq/lib/perlfaq6.pod                      |     2 +-
 cpan/perlfaq/lib/perlfaq7.pod                      |    22 +-
 cpan/perlfaq/lib/perlfaq8.pod                      |     4 +-
 cpan/perlfaq/lib/perlfaq9.pod                      |    11 +-
 cpan/perlfaq/lib/perlglossary.pod                  |     2 +-
 cpan/podlators/Makefile.PL                         |    58 +-
 cpan/podlators/lib/Pod/Man.pm                      |    45 +-
 cpan/podlators/lib/Pod/ParseLink.pm                |    40 +-
 cpan/podlators/lib/Pod/Text.pm                     |    42 +-
 cpan/podlators/lib/Pod/Text/Color.pm               |    99 +-
 cpan/podlators/lib/Pod/Text/Overstrike.pm          |    50 +-
 cpan/podlators/lib/Pod/Text/Termcap.pm             |   130 +-
 cpan/podlators/scripts/pod2man.PL                  |    46 +-
 cpan/podlators/scripts/pod2text.PL                 |    40 +-
 cpan/podlators/t/data/basic.cap                    |    10 +
 cpan/podlators/t/data/basic.clr                    |    10 +
 cpan/podlators/t/data/basic.man                    |    10 +
 cpan/podlators/t/data/basic.ovr                    |    10 +
 cpan/podlators/t/data/basic.pod                    |    11 +
 cpan/podlators/t/data/basic.txt                    |    10 +
 cpan/podlators/t/data/snippets/README              |     4 +-
 .../t/data/snippets/color/escape-wrapping          |    19 +
 cpan/podlators/t/data/snippets/color/tag-width     |    35 +
 cpan/podlators/t/data/snippets/color/tag-wrapping  |    19 +
 cpan/podlators/t/data/snippets/color/width         |    22 +
 cpan/podlators/t/data/snippets/color/wrapping      |    11 +
 cpan/podlators/t/data/snippets/man/error-none      |     2 +
 .../t/data/snippets/man/uppercase-license          |    24 +
 .../t/data/snippets/termcap/escape-wrapping        |    19 +
 cpan/podlators/t/data/snippets/termcap/tag-width   |    35 +
 .../podlators/t/data/snippets/termcap/tag-wrapping |    19 +
 cpan/podlators/t/data/snippets/termcap/width       |    23 +
 cpan/podlators/t/data/snippets/termcap/wrapping    |    11 +
 cpan/podlators/t/docs/pod-spelling.t               |     4 +-
 cpan/podlators/t/docs/pod.t                        |     4 +-
 cpan/podlators/t/docs/spdx-license.t               |   120 +
 cpan/podlators/t/docs/synopsis.t                   |     4 +-
 cpan/podlators/t/docs/urls.t                       |    95 +
 cpan/podlators/t/general/basic.t                   |     9 +-
 cpan/podlators/t/general/filehandle.t              |     4 +-
 cpan/podlators/t/general/pod-parser.t              |     4 +-
 cpan/podlators/t/lib/Test/Podlators.pm             |    14 +-
 cpan/podlators/t/lib/Test/RRA.pm                   |     8 +-
 cpan/podlators/t/lib/Test/RRA/Config.pm            |     8 +-
 cpan/podlators/t/lib/Test/RRA/ModuleVersion.pm     |     8 +-
 cpan/podlators/t/man/devise-date.t                 |     4 +-
 cpan/podlators/t/man/devise-title.t                |     4 +-
 cpan/podlators/t/man/empty.t                       |     4 +-
 cpan/podlators/t/man/heading.t                     |     4 +-
 cpan/podlators/t/man/no-encode.t                   |     4 +-
 cpan/podlators/t/man/snippets.t                    |     4 +-
 cpan/podlators/t/man/utf8-io.t                     |     4 +-
 cpan/podlators/t/parselink/basic.t                 |     4 +-
 cpan/podlators/t/style/minimum-version.t           |     4 +-
 cpan/podlators/t/style/module-version.t            |    10 +-
 cpan/podlators/t/style/strict.t                    |     4 +-
 cpan/podlators/t/text/basic.t                      |     6 +-
 cpan/podlators/t/text/color.t                      |   117 +-
 cpan/podlators/t/text/empty.t                      |     6 +-
 cpan/podlators/t/text/encoding.t                   |     6 +-
 cpan/podlators/t/text/options.t                    |     4 +-
 cpan/podlators/t/text/overstrike.t                 |     6 +-
 cpan/podlators/t/text/perlio.t                     |     6 +-
 cpan/podlators/t/text/termcap.t                    |   124 +-
 cpan/podlators/t/text/utf8.t                       |     6 +-
 pod/perlpodstyle.pod                               |    26 +-
 t/porting/customized.dat                           |     5 +-
 239 files changed, 29379 insertions(+), 26921 deletions(-)
 create mode 100644 cpan/podlators/t/data/snippets/color/escape-wrapping
 create mode 100644 cpan/podlators/t/data/snippets/color/tag-width
 create mode 100644 cpan/podlators/t/data/snippets/color/tag-wrapping
 create mode 100644 cpan/podlators/t/data/snippets/color/width
 create mode 100644 cpan/podlators/t/data/snippets/color/wrapping
 create mode 100644 cpan/podlators/t/data/snippets/termcap/escape-wrapping
 create mode 100644 cpan/podlators/t/data/snippets/termcap/tag-width
 create mode 100644 cpan/podlators/t/data/snippets/termcap/tag-wrapping
 create mode 100644 cpan/podlators/t/data/snippets/termcap/width
 create mode 100644 cpan/podlators/t/data/snippets/termcap/wrapping
 create mode 100644 cpan/podlators/t/docs/spdx-license.t
 create mode 100644 cpan/podlators/t/docs/urls.t

diff --git a/MANIFEST b/MANIFEST
index 4349048e25..64e1cd31f5 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1896,6 +1896,11 @@ cpan/podlators/t/data/basic.ovr                  
podlators test
 cpan/podlators/t/data/basic.pod                        podlators test
 cpan/podlators/t/data/basic.txt                        podlators test
 cpan/podlators/t/data/perl.conf                        podlators test
+cpan/podlators/t/data/snippets/color/escape-wrapping
+cpan/podlators/t/data/snippets/color/tag-width
+cpan/podlators/t/data/snippets/color/tag-wrapping
+cpan/podlators/t/data/snippets/color/width
+cpan/podlators/t/data/snippets/color/wrapping
 cpan/podlators/t/data/snippets/man/agrave
 cpan/podlators/t/data/snippets/man/backslash-man-ref
 cpan/podlators/t/data/snippets/man/bullet-after-nonbullet
@@ -1945,11 +1950,18 @@ cpan/podlators/t/data/snippets/man/utf8-verbatim
 cpan/podlators/t/data/snippets/man/x-whitespace
 cpan/podlators/t/data/snippets/man/x-whitespace-entry
 cpan/podlators/t/data/snippets/README                  podlators test
+cpan/podlators/t/data/snippets/termcap/escape-wrapping
+cpan/podlators/t/data/snippets/termcap/tag-width
+cpan/podlators/t/data/snippets/termcap/tag-wrapping
+cpan/podlators/t/data/snippets/termcap/width
+cpan/podlators/t/data/snippets/termcap/wrapping
 cpan/podlators/t/data/snippets/text/cpp                        podlators test
 cpan/podlators/t/data/termcap                  podlators test
 cpan/podlators/t/docs/pod.t                    podlators test
 cpan/podlators/t/docs/pod-spelling.t                   podlators test
+cpan/podlators/t/docs/spdx-license.t                   podlators test
 cpan/podlators/t/docs/synopsis.t                       podlators test
+cpan/podlators/t/docs/urls.t                   podlators test
 cpan/podlators/t/general/basic.t                       podlators test
 cpan/podlators/t/general/filehandle.t                  podlators test
 cpan/podlators/t/general/pod-parser.t                  podlators test
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index 5474318d5a..ee83cb62e2 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -210,7 +210,7 @@ use File::Glob qw(:case);
     },
 
     'Compress::Raw::Bzip2' => {
-        'DISTRIBUTION' => 'PMQS/Compress-Raw-Bzip2-2.074.tar.gz',
+        'DISTRIBUTION' => 'PMQS/Compress-Raw-Bzip2-2.081.tar.gz',
         'FILES'        => q[cpan/Compress-Raw-Bzip2],
         'EXCLUDED'     => [
             qr{^t/Test/},
@@ -221,8 +221,7 @@ use File::Glob qw(:case);
     },
 
     'Compress::Raw::Zlib' => {
-        'DISTRIBUTION' => 'PMQS/Compress-Raw-Zlib-2.076.tar.gz',
-
+        'DISTRIBUTION' => 'PMQS/Compress-Raw-Zlib-2.081.tar.gz',
         'FILES'    => q[cpan/Compress-Raw-Zlib],
         'EXCLUDED' => [
             qr{^examples/},
@@ -334,7 +333,7 @@ use File::Glob qw(:case);
     },
 
     'DB_File' => {
-        'DISTRIBUTION' => 'PMQS/DB_File-1.840.tar.gz',
+        'DISTRIBUTION' => 'PMQS/DB_File-1.841.tar.gz',
         'FILES'        => q[cpan/DB_File],
         'EXCLUDED'     => [
             qr{^patches/},
@@ -377,7 +376,7 @@ use File::Glob qw(:case);
     },
 
     'Digest::SHA' => {
-        'DISTRIBUTION' => 'MSHELOR/Digest-SHA-6.01.tar.gz',
+        'DISTRIBUTION' => 'MSHELOR/Digest-SHA-6.02.tar.gz',
         'FILES'        => q[cpan/Digest-SHA],
         'EXCLUDED'     => [
             qw( t/pod.t
@@ -452,7 +451,7 @@ use File::Glob qw(:case);
 
     'ExtUtils::Constant' => {
 
-        'DISTRIBUTION' => 'NWCLARK/ExtUtils-Constant-0.24.tar.gz',
+        'DISTRIBUTION' => 'NWCLARK/ExtUtils-Constant-0.25.tar.gz',
         'FILES'    => q[cpan/ExtUtils-Constant],
         'EXCLUDED' => [
             qw( lib/ExtUtils/Constant/Aaargh56Hash.pm
@@ -492,7 +491,7 @@ use File::Glob qw(:case);
     },
 
     'ExtUtils::Manifest' => {
-        'DISTRIBUTION' => 'ETHER/ExtUtils-Manifest-1.70.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/ExtUtils-Manifest-1.71.tar.gz',
         'FILES'        => q[cpan/ExtUtils-Manifest],
         'EXCLUDED'     => [
             qr(^t/00-report-prereqs),
@@ -520,13 +519,14 @@ use File::Glob qw(:case);
     },
 
     'File::Temp' => {
-        'DISTRIBUTION' => 'DAGOLDEN/File-Temp-0.2304.tar.gz',
+        'DISTRIBUTION' => 'ETHER/File-Temp-0.2306.tar.gz',
         'FILES'        => q[cpan/File-Temp],
         'EXCLUDED'     => [
-            qw( misc/benchmark.pl
+            qw( README.mkdn
+                misc/benchmark.pl
                 misc/results.txt
                 ),
-            qw[t/00-report-prereqs.t],
+            qr[^t/00-report-prereqs],
             qr{^xt},
         ],
     },
@@ -624,7 +624,7 @@ use File::Glob qw(:case);
     },
 
     'IO-Compress' => {
-        'DISTRIBUTION' => 'PMQS/IO-Compress-2.074.tar.gz',
+        'DISTRIBUTION' => 'PMQS/IO-Compress-2.081.tar.gz',
         'FILES'        => q[cpan/IO-Compress],
         'EXCLUDED'     => [
             qr{^examples/},
@@ -649,7 +649,7 @@ use File::Glob qw(:case);
     },
 
     'IPC::Cmd' => {
-        'DISTRIBUTION' => 'BINGOS/IPC-Cmd-1.00.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/IPC-Cmd-1.02.tar.gz',
         'FILES'        => q[cpan/IPC-Cmd],
     },
 
@@ -694,7 +694,7 @@ use File::Glob qw(:case);
     },
 
     'Locale-Codes' => {
-        'DISTRIBUTION' => 'SBECK/Locale-Codes-3.56.tar.gz',
+        'DISTRIBUTION' => 'SBECK/Locale-Codes-3.57.tar.gz',
         'FILES'        => q[cpan/Locale-Codes],
         'EXCLUDED'     => [
             qw( README.first
@@ -702,7 +702,6 @@ use File::Glob qw(:case);
                 t/pod_coverage.t
                 t/pod.t),
             qr{^t/runtests},
-            qr{^t/runtests\.bat},
             qr{^internal/},
             qr{^examples/},
         ],
@@ -895,7 +894,7 @@ use File::Glob qw(:case);
     },
 
     'perlfaq' => {
-        'DISTRIBUTION' => 'LLAP/perlfaq-5.021011.tar.gz',
+        'DISTRIBUTION' => 'ETHER/perlfaq-5.20180605.tar.gz',
         'FILES'        => q[cpan/perlfaq],
         'EXCLUDED'     => [
             qw( inc/CreateQuestionList.pm
@@ -968,7 +967,7 @@ use File::Glob qw(:case);
     },
 
     'podlators' => {
-        'DISTRIBUTION' => 'RRA/podlators-4.10.tar.gz',
+        'DISTRIBUTION' => 'RRA/podlators-4.11.tar.gz',
         'FILES'        => q[cpan/podlators pod/perlpodstyle.pod],
         'EXCLUDED'     => [
             qr{^docs/metadata/},
@@ -979,8 +978,6 @@ use File::Glob qw(:case);
             # this file lives outside the cpan/ directory
             'pod/perlpodstyle.pod' => 'pod/perlpodstyle.pod',
         },
-
-        'CUSTOMIZED'   => [ qw[ pod/perlpodstyle.pod ] ],
     },
 
     'Safe' => {
@@ -1086,7 +1083,7 @@ use File::Glob qw(:case);
     },
 
     'Test::Simple' => {
-        'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302133.tar.gz',
+        'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302136.tar.gz',
         'FILES'        => q[cpan/Test-Simple],
         'EXCLUDED'     => [
             qr{^examples/},
@@ -1203,11 +1200,12 @@ use File::Glob qw(:case);
     },
 
     'Time::Local' => {
-        'DISTRIBUTION' => 'DROLSKY/Time-Local-1.25.tar.gz',
+        'DISTRIBUTION' => 'DROLSKY/Time-Local-1.28.tar.gz',
         'FILES'        => q[cpan/Time-Local],
         'EXCLUDED'     => [
             qr{^xt/},
-            qw( perlcriticrc
+            qw( appveyor.yml
+                perlcriticrc
                 perltidyrc
                 tidyall.ini
                 t/00-report-prereqs.t
diff --git a/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm 
b/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm
index ce5245fe4b..85139506ce 100644
--- a/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm
+++ b/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm
@@ -11,7 +11,7 @@ use Carp ;
 use bytes ;
 our ($VERSION, $XS_VERSION, @ISA, @EXPORT, $AUTOLOAD);
 
-$VERSION = '2.074';
+$VERSION = '2.081';
 $XS_VERSION = $VERSION; 
 $VERSION = eval $VERSION;
 
@@ -147,7 +147,7 @@ Compress::Raw::Bzip2 - Low-Level Interface to bzip2 
compression library
 =head1 DESCRIPTION
 
 C<Compress::Raw::Bzip2> provides an interface to the in-memory
-compression/uncompression functions from the bzip2 compression library. 
+compression/uncompression functions from the bzip2 compression library.
 
 Although the primary purpose for the existence of C<Compress::Raw::Bzip2>
 is for use by the  C<IO::Compress::Bzip2> and C<IO::Compress::Bunzip2>
@@ -158,7 +158,7 @@ tasks.
 
 =head2 ($z, $status) = new Compress::Raw::Bzip2 $appendOutput, $blockSize100k, 
$workfactor;
 
-Creates a new compression object. 
+Creates a new compression object.
 
 If successful, it will return the initialised compression object, C<$z>
 and a C<$status> of C<BZ_OK> in a list context. In scalar context it
@@ -273,7 +273,7 @@ To quote the bzip2 documentation
     If small is nonzero, the library will use an alternative decompression
     algorithm which uses less memory but at the cost of decompressing more
     slowly (roughly speaking, half the speed, but the maximum memory
-    requirement drops to around 2300k). 
+    requirement drops to around 2300k).
 
 Defaults to 0.
 
@@ -281,7 +281,7 @@ Defaults to 0.
 
 The C<LimitOutput> option changes the behavior of the C<< $i->bzinflate >>
 method so that the amount of memory used by the output buffer can be
-limited. 
+limited.
 
 When C<LimitOutput> is used the size of the output buffer used will either
 be the 16k or the amount of memory already allocated to C<$output>,
@@ -307,7 +307,7 @@ Defaults to 0.
 
 =head2 $status = $z->bzinflate($input, $output);
 
-Uncompresses C<$input> and writes the uncompressed data to C<$output>. 
+Uncompresses C<$input> and writes the uncompressed data to C<$output>.
 
 Returns C<BZ_OK> if the uncompression was successful, but the end of the
 compressed data stream has not been reached. Returns C<BZ_STREAM_END> on
@@ -370,7 +370,7 @@ See the module L<Compress::Bzip2|Compress::Bzip2>
 
 =head1 AUTHOR
 
-This module was written by Paul Marquess, C<p...@cpan.org>. 
+This module was written by Paul Marquess, C<p...@cpan.org>.
 
 =head1 MODIFICATION HISTORY
 
@@ -378,7 +378,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2017 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2018 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.
diff --git a/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm 
b/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm
index 47aebd6074..12fa26fd05 100644
--- a/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm
+++ b/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm
@@ -92,6 +92,8 @@ sub getPerlFiles
             s/^\s+//;
             s/\s+$//;
 
+            #next if m#t/Test/More\.pm$# or m#t/Test/Builder\.pm$#;
+
             /^(\S+)\s*(.*)$/;
 
             my ($file, $rest) = ($1, $2);
diff --git a/cpan/Compress-Raw-Bzip2/t/000prereq.t 
b/cpan/Compress-Raw-Bzip2/t/000prereq.t
index 3220a7fc14..70a9cc5841 100644
--- a/cpan/Compress-Raw-Bzip2/t/000prereq.t
+++ b/cpan/Compress-Raw-Bzip2/t/000prereq.t
@@ -19,7 +19,7 @@ BEGIN
         if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
 
 
-    my $VERSION = '2.074';
+    my $VERSION = '2.081';
     my @NAMES = qw(
                        
                        );
diff --git a/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm 
b/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm
index 2fc5b46ef5..9c047fd471 100644
--- a/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm
+++ b/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm
@@ -10,7 +10,7 @@ use warnings ;
 use bytes ;
 our ($VERSION, $XS_VERSION, @ISA, @EXPORT, %EXPORT_TAGS, @EXPORT_OK, 
$AUTOLOAD, %DEFLATE_CONSTANTS, @DEFLATE_CONSTANTS);
 
-$VERSION = '2.076';
+$VERSION = '2.081';
 $XS_VERSION = $VERSION; 
 $VERSION = eval $VERSION;
 
@@ -1590,7 +1590,7 @@ See the Changes file.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (c) 2005-2017 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2018 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.
diff --git a/cpan/Compress-Raw-Zlib/private/MakeUtil.pm 
b/cpan/Compress-Raw-Zlib/private/MakeUtil.pm
index 47aebd6074..12fa26fd05 100644
--- a/cpan/Compress-Raw-Zlib/private/MakeUtil.pm
+++ b/cpan/Compress-Raw-Zlib/private/MakeUtil.pm
@@ -92,6 +92,8 @@ sub getPerlFiles
             s/^\s+//;
             s/\s+$//;
 
+            #next if m#t/Test/More\.pm$# or m#t/Test/Builder\.pm$#;
+
             /^(\S+)\s*(.*)$/;
 
             my ($file, $rest) = ($1, $2);
diff --git a/cpan/DB_File/DB_File.pm b/cpan/DB_File/DB_File.pm
index 5f4b764bc9..7a0051cde9 100644
--- a/cpan/DB_File/DB_File.pm
+++ b/cpan/DB_File/DB_File.pm
@@ -163,7 +163,7 @@ our ($db_version, $use_XSLoader, 
$splice_end_array_no_length, $splice_end_array,
 use Carp;
 
 
-$VERSION = "1.840" ;
+$VERSION = "1.841" ;
 $VERSION = eval $VERSION; # needed for dev releases
 
 {
diff --git a/cpan/DB_File/Makefile.PL b/cpan/DB_File/Makefile.PL
index f5ef7c85f8..03dbf96429 100644
--- a/cpan/DB_File/Makefile.PL
+++ b/cpan/DB_File/Makefile.PL
@@ -41,6 +41,10 @@ $OS2 = "-DOS2" if $Config{'osname'} eq 'os2' ;
 my $WALL = '' ;
 #$WALL = ' -Wall ';
 
+# Only want ppport.h t to be used by DB_File.xs when not 
+# building this module with the perl source distribution.
+my $CORE = $ENV{PERL_CORE} ? '' : '-D_NOT_CORE';
+
 WriteMakefile(
        NAME            => 'DB_File',
        LIBS            => ["-L${LIB_DIR} $LIBS"],
@@ -48,7 +52,7 @@ WriteMakefile(
     VERSION_FROM       => 'DB_File.pm',
        XS_VERSION      => eval MM->parse_version('DB_File.pm'),
        XSPROTOARG      => '-noprototypes',
-       DEFINE          => "-D_NOT_CORE $OS2 $VER_INFO $COMPAT185 $WALL",
+       DEFINE          => "$CORE $OS2 $VER_INFO $COMPAT185 $WALL",
        OBJECT          => 'version$(OBJ_EXT) DB_File$(OBJ_EXT)',
     ((ExtUtils::MakeMaker->VERSION() gt '6.30') 
         ?  ('LICENSE'  => 'perl')         
diff --git a/cpan/Digest-SHA/SHA.xs b/cpan/Digest-SHA/SHA.xs
index 62eaad8d53..d3a3baf186 100644
--- a/cpan/Digest-SHA/SHA.xs
+++ b/cpan/Digest-SHA/SHA.xs
@@ -111,7 +111,7 @@ DESTROY(s)
        SHA *   s
 CODE:
        Safefree(s);
-       
+
 SV *
 sha1(...)
 ALIAS:
@@ -152,7 +152,7 @@ CODE:
                        data += MAX_WRITE_SIZE;
                        len  -= MAX_WRITE_SIZE;
                }
-               shawrite(data, len << 3, &sha);
+               shawrite(data, (ULNG) len << 3, &sha);
        }
        shafinish(&sha);
        len = 0;
@@ -203,7 +203,7 @@ CODE:
        if (items > 0) {
                key = (UCHR *) (SvPVbyte(ST(items-1), len));
        }
-       if (hmacinit(&hmac, ix2alg[ix], key, len) == NULL)
+       if (hmacinit(&hmac, ix2alg[ix], key, (UINT) len) == NULL)
                XSRETURN_UNDEF;
        for (i = 0; i < items - 1; i++) {
                data = (UCHR *) (SvPVbyte(ST(i), len));
@@ -212,7 +212,7 @@ CODE:
                        data += MAX_WRITE_SIZE;
                        len  -= MAX_WRITE_SIZE;
                }
-               hmacwrite(data, len << 3, &hmac);
+               hmacwrite(data, (ULNG) len << 3, &hmac);
        }
        hmacfinish(&hmac);
        len = 0;
@@ -261,7 +261,7 @@ PPCODE:
                        data += MAX_WRITE_SIZE;
                        len  -= MAX_WRITE_SIZE;
                }
-               shawrite(data, len << 3, state);
+               shawrite(data, (ULNG) len << 3, state);
        }
        XSRETURN(1);
 
@@ -356,7 +356,7 @@ PREINIT:
 PPCODE:
        if (!f || (state = getSHA(aTHX_ self)) == NULL)
                XSRETURN_UNDEF;
-       while ((n = PerlIO_read(f, in, sizeof(in))) > 0)
+       while ((n = (int) PerlIO_read(f, in, sizeof(in))) > 0)
                shawrite(in, (ULNG) n << 3, state);
        XSRETURN(1);
 
@@ -374,7 +374,7 @@ PREINIT:
 PPCODE:
        if (!f || (state = getSHA(aTHX_ self)) == NULL)
                XSRETURN_UNDEF;
-       while ((n = PerlIO_read(f, in+1, IO_BUFFER_SIZE)) > 0) {
+       while ((n = (int) PerlIO_read(f, in+1, IO_BUFFER_SIZE)) > 0) {
                for (dst = in, src = in + 1; n; n--) {
                        c = *src++;
                        if (!cr) {
diff --git a/cpan/Digest-SHA/lib/Digest/SHA.pm 
b/cpan/Digest-SHA/lib/Digest/SHA.pm
index 2e86d4eea1..dccc0e7aeb 100644
--- a/cpan/Digest-SHA/lib/Digest/SHA.pm
+++ b/cpan/Digest-SHA/lib/Digest/SHA.pm
@@ -5,10 +5,10 @@ require 5.003000;
 use strict;
 use warnings;
 use vars qw($VERSION @ISA @EXPORT_OK $errmsg);
-use Fcntl qw(O_RDONLY);
+use Fcntl qw(O_RDONLY O_RDWR);
 use integer;
 
-$VERSION = '6.01';
+$VERSION = '6.02';
 
 require Exporter;
 @ISA = qw(Exporter);
@@ -115,11 +115,13 @@ sub addfile {
                map { $_ eq $mode } ("b", "U", "0");
 
                ## Always interpret "-" to mean STDIN; otherwise use
-               ## sysopen to handle full range of POSIX file names
+               ##      sysopen to handle full range of POSIX file names.
+               ## If $file is a directory, force an EISDIR error
+               ##      by attempting to open with mode O_RDWR
 
        local *FH;
        $file eq '-' and open(FH, '< -')
-               or sysopen(FH, $file, O_RDONLY)
+               or sysopen(FH, $file, -d $file ? O_RDWR : O_RDONLY)
                        or _bail('Open failed');
 
        if ($BITS) {
@@ -808,7 +810,7 @@ darkness and moored it in so perfect a calm and in so 
brilliant a light"
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (C) 2003-2017 Mark Shelor
+Copyright (C) 2003-2018 Mark Shelor
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself.
diff --git a/cpan/Digest-SHA/shasum b/cpan/Digest-SHA/shasum
index f8bc02098d..46a71627e7 100644
--- a/cpan/Digest-SHA/shasum
+++ b/cpan/Digest-SHA/shasum
@@ -2,10 +2,10 @@
 
        ## shasum: filter for computing SHA digests (ref. sha1sum/md5sum)
        ##
-       ## Copyright (C) 2003-2017 Mark Shelor, All Rights Reserved
+       ## Copyright (C) 2003-2018 Mark Shelor, All Rights Reserved
        ##
-       ## Version: 6.01
-       ## Mon Dec 25 00:08:08 MST 2017
+       ## Version: 6.02
+       ## Fri Apr 20 16:25:30 MST 2018
 
        ## shasum SYNOPSIS adapted from GNU Coreutils sha1sum. Add
        ## "-a" option for algorithm selection,
@@ -97,7 +97,7 @@ the 7-bit message I<0001100>:
 
 =head1 AUTHOR
 
-Copyright (c) 2003-2017 Mark Shelor <mshe...@cpan.org>.
+Copyright (C) 2003-2018 Mark Shelor <mshe...@cpan.org>.
 
 =head1 SEE ALSO
 
@@ -107,7 +107,7 @@ I<shasum> is implemented using the Perl module 
L<Digest::SHA>.
 
 END_OF_POD
 
-my $VERSION = "6.01";
+my $VERSION = "6.02";
 
 sub usage {
        my($err, $msg) = @_;
diff --git a/cpan/Digest-SHA/src/sha.c b/cpan/Digest-SHA/src/sha.c
index 79557fff8f..bc337eb38c 100644
--- a/cpan/Digest-SHA/src/sha.c
+++ b/cpan/Digest-SHA/src/sha.c
@@ -3,10 +3,10 @@
  *
  * Ref: NIST FIPS PUB 180-4 Secure Hash Standard
  *
- * Copyright (C) 2003-2017 Mark Shelor, All Rights Reserved
+ * Copyright (C) 2003-2018 Mark Shelor, All Rights Reserved
  *
- * Version: 6.01
- * Mon Dec 25 00:08:08 MST 2017
+ * Version: 6.02
+ * Fri Apr 20 16:25:30 MST 2018
  *
  */
 
diff --git a/cpan/Digest-SHA/src/sha.h b/cpan/Digest-SHA/src/sha.h
index 91f181b0be..f6599281de 100644
--- a/cpan/Digest-SHA/src/sha.h
+++ b/cpan/Digest-SHA/src/sha.h
@@ -3,10 +3,10 @@
  *
  * Ref: NIST FIPS PUB 180-4 Secure Hash Standard
  *
- * Copyright (C) 2003-2017 Mark Shelor, All Rights Reserved
+ * Copyright (C) 2003-2018 Mark Shelor, All Rights Reserved
  *
- * Version: 6.01
- * Mon Dec 25 00:08:08 MST 2017
+ * Version: 6.02
+ * Fri Apr 20 16:25:30 MST 2018
  *
  */
 
diff --git a/cpan/Digest-SHA/src/sha64bit.c b/cpan/Digest-SHA/src/sha64bit.c
index 4d6e9dd404..146fb4c35f 100644
--- a/cpan/Digest-SHA/src/sha64bit.c
+++ b/cpan/Digest-SHA/src/sha64bit.c
@@ -3,10 +3,10 @@
  *
  * Ref: NIST FIPS PUB 180-4 Secure Hash Standard
  *
- * Copyright (C) 2003-2017 Mark Shelor, All Rights Reserved
+ * Copyright (C) 2003-2018 Mark Shelor, All Rights Reserved
  *
- * Version: 6.01
- * Mon Dec 25 00:08:08 MST 2017
+ * Version: 6.02
+ * Fri Apr 20 16:25:30 MST 2018
  *
  */
 
diff --git a/cpan/Digest-SHA/src/sha64bit.h b/cpan/Digest-SHA/src/sha64bit.h
index 2b8dc55a9b..8517993f99 100644
--- a/cpan/Digest-SHA/src/sha64bit.h
+++ b/cpan/Digest-SHA/src/sha64bit.h
@@ -3,10 +3,10 @@
  *
  * Ref: NIST FIPS PUB 180-4 Secure Hash Standard
  *
- * Copyright (C) 2003-2017 Mark Shelor, All Rights Reserved
+ * Copyright (C) 2003-2018 Mark Shelor, All Rights Reserved
  *
- * Version: 6.01
- * Mon Dec 25 00:08:08 MST 2017
+ * Version: 6.02
+ * Fri Apr 20 16:25:30 MST 2018
  *
  * The following macros supply placeholder values that enable the
  * sha.c module to successfully compile when 64-bit integer types
diff --git a/cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP 
b/cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP
index 65592fb83d..19b17a1c06 100644
--- a/cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP
+++ b/cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP
@@ -61,3 +61,9 @@
 
 # Avoid MYMETA files
 ^MYMETA\.
+
+# Avoid travis-ci.org file
+^\.travis.yml
+
+# Avoid appveyor.com file
+^\.appveyor.yml
diff --git a/cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm 
b/cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm
index 4163c933ab..7986f89b4f 100644
--- a/cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm
+++ b/cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm
@@ -1,4 +1,4 @@
-package ExtUtils::Manifest;
+package ExtUtils::Manifest; # git description: 1.70-20-gd0a8273
 
 require Exporter;
 use Config;
@@ -10,7 +10,7 @@ use Carp;
 use strict;
 use warnings;
 
-our $VERSION = '1.70';
+our $VERSION = '1.71';
 our @ISA = ('Exporter');
 our @EXPORT_OK = qw(mkmanifest
                 manicheck  filecheck  fullcheck  skipcheck
@@ -61,11 +61,11 @@ our $DEFAULT_MSKIP = File::Spec->catfile( 
dirname(__FILE__), "$MANIFEST.SKIP" );
 
 =head1 NAME
 
-ExtUtils::Manifest - utilities to write and check a MANIFEST file
+ExtUtils::Manifest - Utilities to write and check a MANIFEST file
 
 =head1 VERSION
 
-version 1.70
+version 1.71
 
 =head1 SYNOPSIS
 
@@ -89,14 +89,14 @@ version 1.70
 
 =head1 DESCRIPTION
 
-=head2 Functions
+...
 
-ExtUtils::Manifest exports no functions by default.  The following are
-exported on request
+=head1 FUNCTIONS
 
-=over 4
+ExtUtils::Manifest exports no functions by default.  The following are
+exported on request:
 
-=item mkmanifest
+=head2 mkmanifest
 
     mkmanifest();
 
@@ -175,7 +175,7 @@ sub clean_up_filename {
 }
 
 
-=item manifind
+=head2 manifind
 
     my $found = manifind();
 
@@ -206,7 +206,7 @@ sub manifind {
 }
 
 
-=item manicheck
+=head2 manicheck
 
     my @missing_files = manicheck();
 
@@ -224,7 +224,7 @@ sub manicheck {
 }
 
 
-=item filecheck
+=head2 filecheck
 
     my @extra_files = filecheck();
 
@@ -242,7 +242,7 @@ sub filecheck {
 }
 
 
-=item fullcheck
+=head2 fullcheck
 
     my($missing, $extra) = fullcheck();
 
@@ -256,7 +256,7 @@ sub fullcheck {
 }
 
 
-=item skipcheck
+=head2 skipcheck
 
     my @skipped = skipcheck();
 
@@ -328,7 +328,7 @@ sub _check_manifest {
 }
 
 
-=item maniread
+=head2 maniread
 
     my $manifest = maniread();
     my $manifest = maniread($manifest_file);
@@ -395,7 +395,7 @@ sub maniread {
     $read;
 }
 
-=item maniskip
+=head2 maniskip
 
     my $skipchk = maniskip();
     my $skipchk = maniskip($manifest_skip_file);
@@ -512,7 +512,7 @@ sub _include_mskip_file {
     return @lines;
 }
 
-=item manicopy
+=head2 manicopy
 
     manicopy(\%src, $dest_dir);
     manicopy(\%src, $dest_dir, $how);
@@ -677,7 +677,7 @@ sub _unmacify {
 }
 
 
-=item maniadd
+=head2 maniadd
 
   maniadd({ $file => $comment, ...});
 
@@ -755,9 +755,6 @@ sub _normalize {
     return;
 }
 
-
-=back
-
 =head2 MANIFEST
 
 A list of files in the distribution, one file per line.  The MANIFEST
diff --git a/cpan/ExtUtils-Manifest/t/Manifest.t 
b/cpan/ExtUtils-Manifest/t/Manifest.t
index 830a78633d..856ac82cd7 100644
--- a/cpan/ExtUtils-Manifest/t/Manifest.t
+++ b/cpan/ExtUtils-Manifest/t/Manifest.t
@@ -1,4 +1,5 @@
-#!/usr/bin/perl -w
+use strict;
+use warnings;
 
 BEGIN {
     if( $ENV{PERL_CORE} ) {
@@ -12,8 +13,6 @@ BEGIN {
 }
 chdir 't';
 
-use strict;
-
 use Test::More tests => 98;
 use Cwd;
 
diff --git a/cpan/File-Temp/lib/File/Temp.pm b/cpan/File-Temp/lib/File/Temp.pm
index 817c6d90c6..8e2b4fcaaa 100644
--- a/cpan/File-Temp/lib/File/Temp.pm
+++ b/cpan/File-Temp/lib/File/Temp.pm
@@ -1,7 +1,142 @@
-package File::Temp;
+package File::Temp; # git description: v0.2305-8-g4787a5d
 # ABSTRACT: return name and handle of a temporary file safely
-our $VERSION = '0.2304'; # VERSION
 
+our $VERSION = '0.2306';
+
+#pod =begin __INTERNALS
+#pod
+#pod =head1 PORTABILITY
+#pod
+#pod This section is at the top in order to provide easier access to
+#pod porters.  It is not expected to be rendered by a standard pod
+#pod formatting tool. Please skip straight to the SYNOPSIS section if you
+#pod are not trying to port this module to a new platform.
+#pod
+#pod This module is designed to be portable across operating systems and it
+#pod currently supports Unix, VMS, DOS, OS/2, Windows and Mac OS
+#pod (Classic). When porting to a new OS there are generally three main
+#pod issues that have to be solved:
+#pod
+#pod =over 4
+#pod
+#pod =item *
+#pod
+#pod Can the OS unlink an open file? If it can not then the
+#pod C<_can_unlink_opened_file> method should be modified.
+#pod
+#pod =item *
+#pod
+#pod Are the return values from C<stat> reliable? By default all the
+#pod return values from C<stat> are compared when unlinking a temporary
+#pod file using the filename and the handle. Operating systems other than
+#pod unix do not always have valid entries in all fields. If utility function
+#pod C<File::Temp::unlink0> fails then the C<stat> comparison should be
+#pod modified accordingly.
+#pod
+#pod =item *
+#pod
+#pod Security. Systems that can not support a test for the sticky bit
+#pod on a directory can not use the MEDIUM and HIGH security tests.
+#pod The C<_can_do_level> method should be modified accordingly.
+#pod
+#pod =back
+#pod
+#pod =end __INTERNALS
+#pod
+#pod =head1 SYNOPSIS
+#pod
+#pod   use File::Temp qw/ tempfile tempdir /;
+#pod
+#pod   $fh = tempfile();
+#pod   ($fh, $filename) = tempfile();
+#pod
+#pod   ($fh, $filename) = tempfile( $template, DIR => $dir);
+#pod   ($fh, $filename) = tempfile( $template, SUFFIX => '.dat');
+#pod   ($fh, $filename) = tempfile( $template, TMPDIR => 1 );
+#pod
+#pod   binmode( $fh, ":utf8" );
+#pod
+#pod   $dir = tempdir( CLEANUP => 1 );
+#pod   ($fh, $filename) = tempfile( DIR => $dir );
+#pod
+#pod Object interface:
+#pod
+#pod   require File::Temp;
+#pod   use File::Temp ();
+#pod   use File::Temp qw/ :seekable /;
+#pod
+#pod   $fh = File::Temp->new();
+#pod   $fname = $fh->filename;
+#pod
+#pod   $fh = File::Temp->new(TEMPLATE => $template);
+#pod   $fname = $fh->filename;
+#pod
+#pod   $tmp = File::Temp->new( UNLINK => 0, SUFFIX => '.dat' );
+#pod   print $tmp "Some data\n";
+#pod   print "Filename is $tmp\n";
+#pod   $tmp->seek( 0, SEEK_END );
+#pod
+#pod   $dir = File::Temp->newdir(); # CLEANUP => 1 by default
+#pod
+#pod The following interfaces are provided for compatibility with
+#pod existing APIs. They should not be used in new code.
+#pod
+#pod MkTemp family:
+#pod
+#pod   use File::Temp qw/ :mktemp  /;
+#pod
+#pod   ($fh, $file) = mkstemp( "tmpfileXXXXX" );
+#pod   ($fh, $file) = mkstemps( "tmpfileXXXXXX", $suffix);
+#pod
+#pod   $tmpdir = mkdtemp( $template );
+#pod
+#pod   $unopened_file = mktemp( $template );
+#pod
+#pod POSIX functions:
+#pod
+#pod   use File::Temp qw/ :POSIX /;
+#pod
+#pod   $file = tmpnam();
+#pod   $fh = tmpfile();
+#pod
+#pod   ($fh, $file) = tmpnam();
+#pod
+#pod Compatibility functions:
+#pod
+#pod   $unopened_file = File::Temp::tempnam( $dir, $pfx );
+#pod
+#pod =head1 DESCRIPTION
+#pod
+#pod C<File::Temp> can be used to create and open temporary files in a safe
+#pod way.  There is both a function interface and an object-oriented
+#pod interface.  The File::Temp constructor or the tempfile() function can
+#pod be used to return the name and the open filehandle of a temporary
+#pod file.  The tempdir() function can be used to create a temporary
+#pod directory.
+#pod
+#pod The security aspect of temporary file creation is emphasized such that
+#pod a filehandle and filename are returned together.  This helps guarantee
+#pod that a race condition can not occur where the temporary file is
+#pod created by another process between checking for the existence of the
+#pod file and its opening.  Additional security levels are provided to
+#pod check, for example, that the sticky bit is set on world writable
+#pod directories.  See L<"safe_level"> for more information.
+#pod
+#pod For compatibility with popular C library functions, Perl implementations 
of
+#pod the mkstemp() family of functions are provided. These are, mkstemp(),
+#pod mkstemps(), mkdtemp() and mktemp().
+#pod
+#pod Additionally, implementations of the standard L<POSIX|POSIX>
+#pod tmpnam() and tmpfile() functions are provided if required.
+#pod
+#pod Implementations of mktemp(), tmpnam(), and tempnam() are provided,
+#pod but should be used with caution since they return only a filename
+#pod that was valid when function was called, so cannot guarantee
+#pod that the file will not exist by the time the caller opens the filename.
+#pod
+#pod Filehandles returned by these functions support the seekable methods.
+#pod
+#pod =cut
 
 # Toolchain targets v5.8.1, but we'll try to support back to v5.6 anyway.
 # It might be possible to make this v5.5, but many v5.6isms are creeping
@@ -33,11 +168,8 @@ use parent 0.221 qw/ IO::Handle IO::Seekable /;
 use overload '""' => "STRINGIFY", '0+' => "NUMIFY",
   fallback => 1;
 
-# use 'our' on v5.6.0
-use vars qw(@EXPORT_OK %EXPORT_TAGS $DEBUG $KEEP_ALL);
-
-$DEBUG = 0;
-$KEEP_ALL = 0;
+our $DEBUG = 0;
+our $KEEP_ALL = 0;
 
 # We are exporting functions
 
@@ -45,7 +177,7 @@ use Exporter 5.57 'import';   # 5.57 lets us import 'import'
 
 # Export list - to allow fine tuning of export table
 
-@EXPORT_OK = qw{
+our @EXPORT_OK = qw{
                  tempfile
                  tempdir
                  tmpnam
@@ -63,7 +195,7 @@ use Exporter 5.57 'import';   # 5.57 lets us import 'import'
 
 # Groups of functions for export
 
-%EXPORT_TAGS = (
+our %EXPORT_TAGS = (
                 'POSIX' => [qw/ tmpnam tmpfile /],
                 'mktemp' => [qw/ mktemp mkstemp mkstemps mkdtemp/],
                 'seekable' => [qw/ SEEK_SET SEEK_CUR SEEK_END /],
@@ -437,7 +569,7 @@ sub _gettemp {
     # 1 X say and the randomness could come up with the same
     # file MAX_TRIES in a row.
 
-    # Store current attempt - in principal this implies that the
+    # Store current attempt - in principle this implies that the
     # 3rd time around the open attempt that the first temp file
     # name could be generated again. Probably should store each
     # attempt and make sure that none are repeated
@@ -880,6 +1012,59 @@ sub _parse_args {
   return( \@template, \%args );
 }
 
+#pod =head1 OBJECT-ORIENTED INTERFACE
+#pod
+#pod This is the primary interface for interacting with
+#pod C<File::Temp>. Using the OO interface a temporary file can be created
+#pod when the object is constructed and the file can be removed when the
+#pod object is no longer required.
+#pod
+#pod Note that there is no method to obtain the filehandle from the
+#pod C<File::Temp> object. The object itself acts as a filehandle.  The object
+#pod isa C<IO::Handle> and isa C<IO::Seekable> so all those methods are
+#pod available.
+#pod
+#pod Also, the object is configured such that it stringifies to the name of the
+#pod temporary file and so can be compared to a filename directly.  It numifies
+#pod to the C<refaddr> the same as other handles and so can be compared to 
other
+#pod handles with C<==>.
+#pod
+#pod     $fh eq $filename       # as a string
+#pod     $fh != \*STDOUT        # as a number
+#pod
+#pod Available since 0.14.
+#pod
+#pod =over 4
+#pod
+#pod =item B<new>
+#pod
+#pod Create a temporary file object.
+#pod
+#pod   my $tmp = File::Temp->new();
+#pod
+#pod by default the object is constructed as if C<tempfile>
+#pod was called without options, but with the additional behaviour
+#pod that the temporary file is removed by the object destructor
+#pod if UNLINK is set to true (the default).
+#pod
+#pod Supported arguments are the same as for C<tempfile>: UNLINK
+#pod (defaulting to true), DIR, EXLOCK and SUFFIX. Additionally, the filename
+#pod template is specified using the TEMPLATE option. The OPEN option
+#pod is not supported (the file is always opened).
+#pod
+#pod  $tmp = File::Temp->new( TEMPLATE => 'tempXXXXX',
+#pod                         DIR => 'mydir',
+#pod                         SUFFIX => '.dat');
+#pod
+#pod Arguments are case insensitive.
+#pod
+#pod Can call croak() if an error occurs.
+#pod
+#pod Available since 0.14.
+#pod
+#pod TEMPLATE available since 0.23
+#pod
+#pod =cut
 
 sub new {
   my $proto = shift;
@@ -917,6 +1102,27 @@ sub new {
   return $fh;
 }
 
+#pod =item B<newdir>
+#pod
+#pod Create a temporary directory using an object oriented interface.
+#pod
+#pod   $dir = File::Temp->newdir();
+#pod
+#pod By default the directory is deleted when the object goes out of scope.
+#pod
+#pod Supports the same options as the C<tempdir> function. Note that 
directories
+#pod created with this method default to CLEANUP => 1.
+#pod
+#pod   $dir = File::Temp->newdir( $template, %options );
+#pod
+#pod A template may be specified either with a leading template or
+#pod with a TEMPLATE argument.
+#pod
+#pod Available since 0.19.
+#pod
+#pod TEMPLATE available since 0.23.
+#pod
+#pod =cut
 
 sub newdir {
   my $self = shift;
@@ -941,6 +1147,19 @@ sub newdir {
                }, "File::Temp::Dir";
 }
 
+#pod =item B<filename>
+#pod
+#pod Return the name of the temporary file associated with this object
+#pod (if the object was created using the "new" constructor).
+#pod
+#pod   $filename = $tmp->filename;
+#pod
+#pod This method is called automatically when the object is used as
+#pod a string.
+#pod
+#pod Current API available since 0.14
+#pod
+#pod =cut
 
 sub filename {
   my $self = shift;
@@ -959,6 +1178,27 @@ sub NUMIFY {
   return refaddr($_[0]);
 }
 
+#pod =item B<dirname>
+#pod
+#pod Return the name of the temporary directory associated with this
+#pod object (if the object was created using the "newdir" constructor).
+#pod
+#pod   $dirname = $tmpdir->dirname;
+#pod
+#pod This method is called automatically when the object is used in string 
context.
+#pod
+#pod =item B<unlink_on_destroy>
+#pod
+#pod Control whether the file is unlinked when the object goes out of scope.
+#pod The file is removed if this value is true and $KEEP_ALL is not.
+#pod
+#pod  $fh->unlink_on_destroy( 1 );
+#pod
+#pod Default is for the file to be removed.
+#pod
+#pod Current API available since 0.15
+#pod
+#pod =cut
 
 sub unlink_on_destroy {
   my $self = shift;
@@ -968,6 +1208,29 @@ sub unlink_on_destroy {
   return ${*$self}{UNLINK};
 }
 
+#pod =item B<DESTROY>
+#pod
+#pod When the object goes out of scope, the destructor is called. This
+#pod destructor will attempt to unlink the file (using L<unlink1|"unlink1">)
+#pod if the constructor was called with UNLINK set to 1 (the default state
+#pod if UNLINK is not specified).
+#pod
+#pod No error is given if the unlink fails.
+#pod
+#pod If the object has been passed to a child process during a fork, the
+#pod file will be deleted when the object goes out of scope in the parent.
+#pod
+#pod For a temporary directory object the directory will be removed unless
+#pod the CLEANUP argument was used in the constructor (and set to false) or
+#pod C<unlink_on_destroy> was modified after creation.  Note that if a temp
+#pod directory is your current directory, it cannot be removed - a warning
+#pod will be given in this case.  C<chdir()> out of the directory before
+#pod letting the object go out of scope.
+#pod
+#pod If the global variable $KEEP_ALL is true, the file or directory
+#pod will not be removed.
+#pod
+#pod =cut
 
 sub DESTROY {
   local($., $@, $!, $^E, $?);
@@ -1001,6 +1264,115 @@ sub DESTROY {
   }
 }
 
+#pod =back
+#pod
+#pod =head1 FUNCTIONS
+#pod
+#pod This section describes the recommended interface for generating
+#pod temporary files and directories.
+#pod
+#pod =over 4
+#pod
+#pod =item B<tempfile>
+#pod
+#pod This is the basic function to generate temporary files.
+#pod The behaviour of the file can be changed using various options:
+#pod
+#pod   $fh = tempfile();
+#pod   ($fh, $filename) = tempfile();
+#pod
+#pod Create a temporary file in  the directory specified for temporary
+#pod files, as specified by the tmpdir() function in L<File::Spec>.
+#pod
+#pod   ($fh, $filename) = tempfile($template);
+#pod
+#pod Create a temporary file in the current directory using the supplied
+#pod template.  Trailing `X' characters are replaced with random letters to
+#pod generate the filename.  At least four `X' characters must be present
+#pod at the end of the template.
+#pod
+#pod   ($fh, $filename) = tempfile($template, SUFFIX => $suffix)
+#pod
+#pod Same as previously, except that a suffix is added to the template
+#pod after the `X' translation.  Useful for ensuring that a temporary
+#pod filename has a particular extension when needed by other applications.
+#pod But see the WARNING at the end.
+#pod
+#pod   ($fh, $filename) = tempfile($template, DIR => $dir);
+#pod
+#pod Translates the template as before except that a directory name
+#pod is specified.
+#pod
+#pod   ($fh, $filename) = tempfile($template, TMPDIR => 1);
+#pod
+#pod Equivalent to specifying a DIR of "File::Spec->tmpdir", writing the file
+#pod into the same temporary directory as would be used if no template was
+#pod specified at all.
+#pod
+#pod   ($fh, $filename) = tempfile($template, UNLINK => 1);
+#pod
+#pod Return the filename and filehandle as before except that the file is
+#pod automatically removed when the program exits (dependent on
+#pod $KEEP_ALL). Default is for the file to be removed if a file handle is
+#pod requested and to be kept if the filename is requested. In a scalar
+#pod context (where no filename is returned) the file is always deleted
+#pod either (depending on the operating system) on exit or when it is
+#pod closed (unless $KEEP_ALL is true when the temp file is created).
+#pod
+#pod Use the object-oriented interface if fine-grained control of when
+#pod a file is removed is required.
+#pod
+#pod If the template is not specified, a template is always
+#pod automatically generated. This temporary file is placed in tmpdir()
+#pod (L<File::Spec>) unless a directory is specified explicitly with the
+#pod DIR option.
+#pod
+#pod   $fh = tempfile( DIR => $dir );
+#pod
+#pod If called in scalar context, only the filehandle is returned and the
+#pod file will automatically be deleted when closed on operating systems
+#pod that support this (see the description of tmpfile() elsewhere in this
+#pod document).  This is the preferred mode of operation, as if you only
+#pod have a filehandle, you can never create a race condition by fumbling
+#pod with the filename. On systems that can not unlink an open file or can
+#pod not mark a file as temporary when it is opened (for example, Windows
+#pod NT uses the C<O_TEMPORARY> flag) the file is marked for deletion when
+#pod the program ends (equivalent to setting UNLINK to 1). The C<UNLINK>
+#pod flag is ignored if present.
+#pod
+#pod   (undef, $filename) = tempfile($template, OPEN => 0);
+#pod
+#pod This will return the filename based on the template but
+#pod will not open this file.  Cannot be used in conjunction with
+#pod UNLINK set to true. Default is to always open the file
+#pod to protect from possible race conditions. A warning is issued
+#pod if warnings are turned on. Consider using the tmpnam()
+#pod and mktemp() functions described elsewhere in this document
+#pod if opening the file is not required.
+#pod
+#pod If the operating system supports it (for example BSD derived systems), 
the 
+#pod filehandle will be opened with O_EXLOCK (open with exclusive file lock). 
+#pod This can sometimes cause problems if the intention is to pass the 
filename 
+#pod to another system that expects to take an exclusive lock itself (such as 
+#pod DBD::SQLite) whilst ensuring that the tempfile is not reused. In this 
+#pod situation the "EXLOCK" option can be passed to tempfile. By default 
EXLOCK 
+#pod will be true (this retains compatibility with earlier releases).
+#pod
+#pod   ($fh, $filename) = tempfile($template, EXLOCK => 0);
+#pod
+#pod Options can be combined as required.
+#pod
+#pod Will croak() if there is an error.
+#pod
+#pod Available since 0.05.
+#pod
+#pod UNLINK flag available since 0.10.
+#pod
+#pod TMPDIR flag available since 0.19.
+#pod
+#pod EXLOCK flag available since 0.19.
+#pod
+#pod =cut
 
 sub tempfile {
   if ( @_ && $_[0] eq 'File::Temp' ) {
@@ -1056,7 +1428,7 @@ sub tempfile {
 
     } elsif ($options{TMPDIR}) {
 
-      $template = File::Spec->catfile(File::Spec->tmpdir, $template );
+      $template = File::Spec->catfile(_wrap_file_spec_tmpdir(), $template );
 
     }
 
@@ -1068,7 +1440,7 @@ sub tempfile {
 
     } else {
 
-      $template = File::Spec->catfile(File::Spec->tmpdir, TEMPXXX);
+      $template = File::Spec->catfile(_wrap_file_spec_tmpdir(), TEMPXXX);
 
     }
 
@@ -1131,6 +1503,122 @@ sub tempfile {
 
 }
 
+# On Windows under taint mode, File::Spec could suggest "C:\" as a tempdir
+# which might not be writable.  If that is the case, we fallback to a
+# user directory.  See https://rt.cpan.org/Ticket/Display.html?id=60340
+
+{
+  my ($alt_tmpdir, $checked);
+
+  sub _wrap_file_spec_tmpdir {
+    return File::Spec->tmpdir unless $^O eq "MSWin32" && ${^TAINT};
+
+    if ( $checked ) {
+      return $alt_tmpdir ? $alt_tmpdir : File::Spec->tmpdir;
+    }
+
+    # probe what File::Spec gives and find a fallback
+    my $xxpath = _replace_XX( "X" x 10, 0 );
+
+    # First, see if File::Spec->tmpdir is writable
+    my $tmpdir = File::Spec->tmpdir;
+    my $testpath = File::Spec->catdir( $tmpdir, $xxpath );
+    if (mkdir( $testpath, 0700) ) {
+      $checked = 1;
+      rmdir $testpath;
+      return $tmpdir;
+    }
+
+    # Next, see if CSIDL_LOCAL_APPDATA is writable
+    require Win32;
+    my $local_app = File::Spec->catdir(
+      Win32::GetFolderPath( Win32::CSIDL_LOCAL_APPDATA() ), 'Temp'
+    );
+    $testpath = File::Spec->catdir( $local_app, $xxpath );
+    if ( -e $local_app or mkdir( $local_app, 0700 ) ) {
+      if (mkdir( $testpath, 0700) ) {
+        $checked = 1;
+        rmdir $testpath;
+        return $alt_tmpdir = $local_app;
+      }
+    }
+
+    # Can't find something writable
+    croak << "HERE";
+Couldn't find a writable temp directory in taint mode. Tried:
+  $tmpdir
+  $local_app
+
+Try setting and untainting the TMPDIR environment variable.
+HERE
+
+  }
+}
+
+#pod =item B<tempdir>
+#pod
+#pod This is the recommended interface for creation of temporary
+#pod directories.  By default the directory will not be removed on exit
+#pod (that is, it won't be temporary; this behaviour can not be changed
+#pod because of issues with backwards compatibility). To enable removal
+#pod either use the CLEANUP option which will trigger removal on program
+#pod exit, or consider using the "newdir" method in the object interface which
+#pod will allow the directory to be cleaned up when the object goes out of
+#pod scope.
+#pod
+#pod The behaviour of the function depends on the arguments:
+#pod
+#pod   $tempdir = tempdir();
+#pod
+#pod Create a directory in tmpdir() (see L<File::Spec|File::Spec>).
+#pod
+#pod   $tempdir = tempdir( $template );
+#pod
+#pod Create a directory from the supplied template. This template is
+#pod similar to that described for tempfile(). `X' characters at the end
+#pod of the template are replaced with random letters to construct the
+#pod directory name. At least four `X' characters must be in the template.
+#pod
+#pod   $tempdir = tempdir ( DIR => $dir );
+#pod
+#pod Specifies the directory to use for the temporary directory.
+#pod The temporary directory name is derived from an internal template.
+#pod
+#pod   $tempdir = tempdir ( $template, DIR => $dir );
+#pod
+#pod Prepend the supplied directory name to the template. The template
+#pod should not include parent directory specifications itself. Any parent
+#pod directory specifications are removed from the template before
+#pod prepending the supplied directory.
+#pod
+#pod   $tempdir = tempdir ( $template, TMPDIR => 1 );
+#pod
+#pod Using the supplied template, create the temporary directory in
+#pod a standard location for temporary files. Equivalent to doing
+#pod
+#pod   $tempdir = tempdir ( $template, DIR => File::Spec->tmpdir);
+#pod
+#pod but shorter. Parent directory specifications are stripped from the
+#pod template itself. The C<TMPDIR> option is ignored if C<DIR> is set
+#pod explicitly.  Additionally, C<TMPDIR> is implied if neither a template
+#pod nor a directory are supplied.
+#pod
+#pod   $tempdir = tempdir( $template, CLEANUP => 1);
+#pod
+#pod Create a temporary directory using the supplied template, but
+#pod attempt to remove it (and all files inside it) when the program
+#pod exits. Note that an attempt will be made to remove all files from
+#pod the directory even if they were not created by this module (otherwise
+#pod why ask to clean it up?). The directory removal is made with
+#pod the rmtree() function from the L<File::Path|File::Path> module.
+#pod Of course, if the template is not specified, the temporary directory
+#pod will be created in tmpdir() and will also be removed at program exit.
+#pod
+#pod Will croak() if there is an error.
+#pod
+#pod Current API available since 0.05.
+#pod
+#pod =cut
 
 # '
 
@@ -1181,7 +1669,7 @@ sub tempdir  {
       } elsif ($options{TMPDIR}) {
 
         # Prepend tmpdir
-        $template = File::Spec->catdir(File::Spec->tmpdir, $template);
+        $template = File::Spec->catdir(_wrap_file_spec_tmpdir(), $template);
 
       }
 
@@ -1195,7 +1683,7 @@ sub tempdir  {
 
     } else {
 
-      $template = File::Spec->catdir(File::Spec->tmpdir, TEMPXXX);
+      $template = File::Spec->catdir(_wrap_file_spec_tmpdir(), TEMPXXX);
 
     }
 
@@ -1232,6 +1720,33 @@ sub tempdir  {
 
 }
 
+#pod =back
+#pod
+#pod =head1 MKTEMP FUNCTIONS
+#pod
+#pod The following functions are Perl implementations of the
+#pod mktemp() family of temp file generation system calls.
+#pod
+#pod =over 4
+#pod
+#pod =item B<mkstemp>
+#pod
+#pod Given a template, returns a filehandle to the temporary file and the name
+#pod of the file.
+#pod
+#pod   ($fh, $name) = mkstemp( $template );
+#pod
+#pod In scalar context, just the filehandle is returned.
+#pod
+#pod The template may be any filename with some number of X's appended
+#pod to it, for example F</tmp/temp.XXXX>. The trailing X's are replaced
+#pod with unique alphanumeric combinations.
+#pod
+#pod Will croak() if there is an error.
+#pod
+#pod Current API available since 0.05.
+#pod
+#pod =cut
 
 
 
@@ -1260,6 +1775,23 @@ sub mkstemp {
 }
 
 
+#pod =item B<mkstemps>
+#pod
+#pod Similar to mkstemp(), except that an extra argument can be supplied
+#pod with a suffix to be appended to the template.
+#pod
+#pod   ($fh, $name) = mkstemps( $template, $suffix );
+#pod
+#pod For example a template of C<testXXXXXX> and suffix of C<.dat>
+#pod would generate a file similar to F<testhGji_w.dat>.
+#pod
+#pod Returns just the filehandle alone when called in scalar context.
+#pod
+#pod Will croak() if there is an error.
+#pod
+#pod Current API available since 0.05.
+#pod
+#pod =cut
 
 sub mkstemps {
 
@@ -1289,6 +1821,22 @@ sub mkstemps {
 
 }
 
+#pod =item B<mkdtemp>
+#pod
+#pod Create a directory from a template. The template must end in
+#pod X's that are replaced by the routine.
+#pod
+#pod   $tmpdir_name = mkdtemp($template);
+#pod
+#pod Returns the name of the temporary directory created.
+#pod
+#pod Directory must be removed by the caller.
+#pod
+#pod Will croak() if there is an error.
+#pod
+#pod Current API available since 0.05.
+#pod
+#pod =cut
 
 #' # for emacs
 
@@ -1320,6 +1868,20 @@ sub mkdtemp {
 
 }
 
+#pod =item B<mktemp>
+#pod
+#pod Returns a valid temporary filename but does not guarantee
+#pod that the file will not be opened by someone else.
+#pod
+#pod   $unopened_file = mktemp($template);
+#pod
+#pod Template is the same as that required by mkstemp().
+#pod
+#pod Will croak() if there is an error.
+#pod
+#pod Current API available since 0.05.
+#pod
+#pod =cut
 
 sub mktemp {
 
@@ -1340,12 +1902,57 @@ sub mktemp {
   return $tmpname;
 }
 
+#pod =back
+#pod
+#pod =head1 POSIX FUNCTIONS
+#pod
+#pod This section describes the re-implementation of the tmpnam()
+#pod and tmpfile() functions described in L<POSIX>
+#pod using the mkstemp() from this module.
+#pod
+#pod Unlike the L<POSIX|POSIX> implementations, the directory used
+#pod for the temporary file is not specified in a system include
+#pod file (C<P_tmpdir>) but simply depends on the choice of tmpdir()
+#pod returned by L<File::Spec|File::Spec>. On some implementations this
+#pod location can be set using the C<TMPDIR> environment variable, which
+#pod may not be secure.
+#pod If this is a problem, simply use mkstemp() and specify a template.
+#pod
+#pod =over 4
+#pod
+#pod =item B<tmpnam>
+#pod
+#pod When called in scalar context, returns the full name (including path)
+#pod of a temporary file (uses mktemp()). The only check is that the file does
+#pod not already exist, but there is no guarantee that that condition will
+#pod continue to apply.
+#pod
+#pod   $file = tmpnam();
+#pod
+#pod When called in list context, a filehandle to the open file and
+#pod a filename are returned. This is achieved by calling mkstemp()
+#pod after constructing a suitable template.
+#pod
+#pod   ($fh, $file) = tmpnam();
+#pod
+#pod If possible, this form should be used to prevent possible
+#pod race conditions.
+#pod
+#pod See L<File::Spec/tmpdir> for information on the choice of temporary
+#pod directory for a particular operating system.
+#pod
+#pod Will croak() if there is an error.
+#pod
+#pod Current API available since 0.05.
+#pod
+#pod =cut
 
 sub tmpnam {
 
   # Retrieve the temporary directory name
-  my $tmpdir = File::Spec->tmpdir;
+  my $tmpdir = _wrap_file_spec_tmpdir();
 
+  # XXX I don't know under what circumstances this occurs, -- xdg 2016-04-02
   croak "Error temporary directory is not writable"
     if $tmpdir eq '';
 
@@ -1360,6 +1967,26 @@ sub tmpnam {
 
 }
 
+#pod =item B<tmpfile>
+#pod
+#pod Returns the filehandle of a temporary file.
+#pod
+#pod   $fh = tmpfile();
+#pod
+#pod The file is removed when the filehandle is closed or when the program
+#pod exits. No access to the filename is provided.
+#pod
+#pod If the temporary file can not be created undef is returned.
+#pod Currently this command will probably not work when the temporary
+#pod directory is on an NFS file system.
+#pod
+#pod Will croak() if there is an error.
+#pod
+#pod Available since 0.05.
+#pod
+#pod Returning undef if unable to create file added in 0.12.
+#pod
+#pod =cut
 
 sub tmpfile {
 
@@ -1375,6 +2002,38 @@ sub tmpfile {
 
 }
 
+#pod =back
+#pod
+#pod =head1 ADDITIONAL FUNCTIONS
+#pod
+#pod These functions are provided for backwards compatibility
+#pod with common tempfile generation C library functions.
+#pod
+#pod They are not exported and must be addressed using the full package
+#pod name.
+#pod
+#pod =over 4
+#pod
+#pod =item B<tempnam>
+#pod
+#pod Return the name of a temporary file in the specified directory
+#pod using a prefix. The file is guaranteed not to exist at the time
+#pod the function was called, but such guarantees are good for one
+#pod clock tick only.  Always use the proper form of C<sysopen>
+#pod with C<O_CREAT | O_EXCL> if you must open such a filename.
+#pod
+#pod   $filename = File::Temp::tempnam( $dir, $prefix );
+#pod
+#pod Equivalent to running mktemp() with $dir/$prefixXXXXXXXX
+#pod (using unix file convention as an example)
+#pod
+#pod Because this function uses mktemp(), it can suffer from race conditions.
+#pod
+#pod Will croak() if there is an error.
+#pod
+#pod Current API available since 0.05.
+#pod
+#pod =cut
 
 sub tempnam {
 
@@ -1392,6 +2051,65 @@ sub tempnam {
 
 }
 
+#pod =back
+#pod
+#pod =head1 UTILITY FUNCTIONS
+#pod
+#pod Useful functions for dealing with the filehandle and filename.
+#pod
+#pod =over 4
+#pod
+#pod =item B<unlink0>
+#pod
+#pod Given an open filehandle and the associated filename, make a safe
+#pod unlink. This is achieved by first checking that the filename and
+#pod filehandle initially point to the same file and that the number of
+#pod links to the file is 1 (all fields returned by stat() are compared).
+#pod Then the filename is unlinked and the filehandle checked once again to
+#pod verify that the number of links on that file is now 0.  This is the
+#pod closest you can come to making sure that the filename unlinked was the
+#pod same as the file whose descriptor you hold.
+#pod
+#pod   unlink0($fh, $path)
+#pod      or die "Error unlinking file $path safely";
+#pod
+#pod Returns false on error but croaks() if there is a security
+#pod anomaly. The filehandle is not closed since on some occasions this is
+#pod not required.
+#pod
... 119545 lines suppressed ...

-- 
Perl5 Master Repository

Reply via email to