In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/8da080293c01461bf666873a6d2ee759f47052b0?hp=79656330a0811b95642a8239e923166ada7fb0a0>

- Log -----------------------------------------------------------------
commit 8da080293c01461bf666873a6d2ee759f47052b0
Author: Chris 'BinGOs' Williams <ch...@bingosnet.co.uk>
Date:   Fri Sep 22 11:15:28 2017 +0100

    Update Time-HiRes to CPAN version 1.9746
    
      [DELTA]
    
    1.9746 [2017-08-17]
     - Unreliable t/usleep.t and t/utime.t tests [rt.cpan.org #122819]
       Avoid testing for $dt = $t2 - $t1 and assuming $dt is less than
       some value since a heavily loaded machine can delay the $t2.
       Testing for greater than is fine.
     - Tweak the configuring messages about subsecond stat/utime.
    
    1.9745 [2017-08-14]
      - Properly check for futimens/utimensat actually doing something.
        This should handle 'gnukfreebsd' (which has only stubs, so far
        we have been skipping the test) and as a new thing 'gnu' (Hurd)
        (also only stubs).  Thanks to Nigel Horne.
      - Scan in t/utime.t whether the filesystem (wherever File::Temp
        puts it tempfiles) supports subsecond timestamps.  This removes
        the fragile Linux/ext3 specific hack.  As a side effect, the
        setting of subsecond timestamps is tested only if reading of
        them is supported.  Thanks to Carsten Gaebler for the test idea,
        and Ryan Voots for testing.
    
    1.9744 [2017-07-27]
      - add more potential clock constants, like CLOCK_MONOTONIC_FAST
        (available in FreeBSD), and not all potentially found clock
        constants were properly exported to be available from Perl,
        see your system's clock_gettime() documentation for the available ones
    
    1.9743 [2017-07-20]
      - correct declared minimum Perl version (should be 5.6, was declared
        as 5.8 since 1.9727_03): blead af94b3ac
      - fix the fix for 'do file' to load hints in Makefile.PL: blead 3172fdbc

M       Porting/Maintainers.pl
M       dist/Time-HiRes/Changes
M       dist/Time-HiRes/HiRes.pm
M       dist/Time-HiRes/Makefile.PL
M       dist/Time-HiRes/t/usleep.t
M       dist/Time-HiRes/t/utime.t

commit fd481c1750298b9abda12a8359d56200a571a751
Author: Chris 'BinGOs' Williams <ch...@bingosnet.co.uk>
Date:   Fri Sep 22 11:13:52 2017 +0100

    Update Time-Piece to CPAN version 1.3202
    
      [DELTA]
    
    1.3202  2017-09-13
            - Fix AIX compile

M       Porting/Maintainers.pl
M       cpan/Time-Piece/Piece.pm
M       cpan/Time-Piece/Piece.xs
M       cpan/Time-Piece/Seconds.pm

commit 9cdceef4a20beadabf31e63ceddbbb6fb7858583
Author: Chris 'BinGOs' Williams <ch...@bingosnet.co.uk>
Date:   Fri Sep 22 11:10:18 2017 +0100

    Update Scalar-List-Utils to CPAN version 1.49
    
      [DELTA]
    
    1.49 -- 2017-09-08 12:25:54
      [CHANGES]
       * Fixes for unit tests to pass on perl 5.6.2
       * Fix typo in documentation

M       Porting/Maintainers.pl
M       cpan/Scalar-List-Utils/lib/List/Util.pm
M       cpan/Scalar-List-Utils/lib/List/Util/XS.pm
M       cpan/Scalar-List-Utils/lib/Scalar/Util.pm
M       cpan/Scalar-List-Utils/lib/Sub/Util.pm
M       cpan/Scalar-List-Utils/t/product.t
M       cpan/Scalar-List-Utils/t/rt-96343.t
M       cpan/Scalar-List-Utils/t/sum.t
M       cpan/Scalar-List-Utils/t/uniq.t

commit 07e6e0356e959c4ea689efa493e3deec6669eb89
Author: Chris 'BinGOs' Williams <ch...@bingosnet.co.uk>
Date:   Fri Sep 22 11:08:35 2017 +0100

    Update File-Path to CPAN version 2.15
    
      [DELTA]
    
    2.15 2017-07-29
        - Correct documentation error re possible arguments for rmtree().

M       Porting/Maintainers.pl
M       cpan/File-Path/lib/File/Path.pm
M       cpan/File-Path/t/Path.t

commit f4f12f2f3d60c9f8be71b8dd5dc680df5081e6fb
Author: Chris 'BinGOs' Williams <ch...@bingosnet.co.uk>
Date:   Fri Sep 22 11:05:46 2017 +0100

    Update Digest-SHA to CPAN version 5.97
    
    [DELTA]
    
    5.97  Wed Sep  6 02:23:02 MST 2017
      - added 'quiet' option to shasum
        -- thanks to Chris David for suggestion and initial patch
        -- ref. rt.cpan.org #122750
      - expanded shasum --help message
        -- to explain use of escaped FILE names

M       Porting/Maintainers.pl
M       cpan/Digest-SHA/lib/Digest/SHA.pm
M       cpan/Digest-SHA/shasum
M       cpan/Digest-SHA/src/sha.c
M       cpan/Digest-SHA/src/sha.h
M       cpan/Digest-SHA/src/sha64bit.c
M       cpan/Digest-SHA/src/sha64bit.h
-----------------------------------------------------------------------

Summary of changes:
 Porting/Maintainers.pl                     |  11 +--
 cpan/Digest-SHA/lib/Digest/SHA.pm          |   5 +-
 cpan/Digest-SHA/shasum                     |  30 +++++---
 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/File-Path/lib/File/Path.pm            |  16 ++--
 cpan/File-Path/t/Path.t                    |  20 ++---
 cpan/Scalar-List-Utils/lib/List/Util.pm    |   4 +-
 cpan/Scalar-List-Utils/lib/List/Util/XS.pm |   2 +-
 cpan/Scalar-List-Utils/lib/Scalar/Util.pm  |   2 +-
 cpan/Scalar-List-Utils/lib/Sub/Util.pm     |   2 +-
 cpan/Scalar-List-Utils/t/product.t         |   4 +
 cpan/Scalar-List-Utils/t/rt-96343.t        |   4 +-
 cpan/Scalar-List-Utils/t/sum.t             |   1 +
 cpan/Scalar-List-Utils/t/uniq.t            |   7 +-
 cpan/Time-Piece/Piece.pm                   |   2 +-
 cpan/Time-Piece/Piece.xs                   |   4 +-
 cpan/Time-Piece/Seconds.pm                 |   2 +-
 dist/Time-HiRes/Changes                    |  31 +++++++-
 dist/Time-HiRes/HiRes.pm                   |  39 +++++++---
 dist/Time-HiRes/Makefile.PL                | 118 +++++++++++++++++------------
 dist/Time-HiRes/t/usleep.t                 |   4 +-
 dist/Time-HiRes/t/utime.t                  |  74 +++++++++---------
 25 files changed, 249 insertions(+), 157 deletions(-)

diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index 81b462c052..c8ae4af7ee 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -370,7 +370,7 @@ use File::Glob qw(:case);
     },
 
     'Digest::SHA' => {
-        'DISTRIBUTION' => 'MSHELOR/Digest-SHA-5.96.tar.gz',
+        'DISTRIBUTION' => 'MSHELOR/Digest-SHA-5.97.tar.gz',
         'FILES'        => q[cpan/Digest-SHA],
         'EXCLUDED'     => [
             qw( t/pod.t
@@ -492,7 +492,7 @@ use File::Glob qw(:case);
     },
 
     'File::Path' => {
-        'DISTRIBUTION' => 'JKEENAN/File-Path-2.14.tar.gz',
+        'DISTRIBUTION' => 'JKEENAN/File-Path-2.15.tar.gz',
         'FILES'        => q[cpan/File-Path],
         'EXCLUDED'     => [
             qw(t/Path-Class.t),
@@ -957,7 +957,7 @@ use File::Glob qw(:case);
     },
 
     'Scalar-List-Utils' => {
-        'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.48.tar.gz',
+        'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.49.tar.gz',
         'FILES'        => q[cpan/Scalar-List-Utils],
     },
 
@@ -1176,7 +1176,7 @@ use File::Glob qw(:case);
     },
 
     'Time::HiRes' => {
-        'DISTRIBUTION' => 'JHI/Time-HiRes-1.9742.tar.gz',
+        'DISTRIBUTION' => 'JHI/Time-HiRes-1.9746.tar.gz',
         'FILES'        => q[dist/Time-HiRes],
     },
 
@@ -1195,8 +1195,9 @@ use File::Glob qw(:case);
     },
 
     'Time::Piece' => {
-        'DISTRIBUTION' => 'ESAYM/Time-Piece-1.3201.tar.gz',
+        'DISTRIBUTION' => 'ESAYM/Time-Piece-1.3202.tar.gz',
         'FILES'        => q[cpan/Time-Piece],
+        'EXCLUDED'     => [ qw[reverse_deps.txt] ],
     },
 
     'Unicode::Collate' => {
diff --git a/cpan/Digest-SHA/lib/Digest/SHA.pm 
b/cpan/Digest-SHA/lib/Digest/SHA.pm
index e2c58f66e1..e8500367ac 100644
--- a/cpan/Digest-SHA/lib/Digest/SHA.pm
+++ b/cpan/Digest-SHA/lib/Digest/SHA.pm
@@ -8,7 +8,7 @@ use vars qw($VERSION @ISA @EXPORT_OK);
 use Fcntl qw(O_RDONLY);
 use integer;
 
-$VERSION = '5.96';
+$VERSION = '5.97';
 
 require Exporter;
 require DynaLoader;
@@ -790,6 +790,7 @@ The author is particularly grateful to
        Sean Burke
        Chris Carey
        Alexandr Ciornii
+       Chris David
        Jim Doble
        Thomas Drugeon
        Julius Duque
@@ -813,7 +814,7 @@ darkness and moored it in so perfect a calm and in so 
brilliant a light"
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (C) 2003-2016 Mark Shelor
+Copyright (C) 2003-2017 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 2721117151..59c3839b2e 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-2016 Mark Shelor, All Rights Reserved
+       ## Copyright (C) 2003-2017 Mark Shelor, All Rights Reserved
        ##
-       ## Version: 5.96
-       ## Wed Jul 27 20:04:34 MST 2016
+       ## Version: 5.97
+       ## Wed Sep  6 02:23:02 MST 2017
 
        ## shasum SYNOPSIS adapted from GNU Coreutils sha1sum. Add
        ## "-a" option for algorithm selection,
@@ -44,8 +44,9 @@ shasum - Print or Check SHA Checksums
                          all other characters ignored
    -p, --portable    read in portable mode (to be deprecated)
 
- The following two options are useful only when verifying checksums:
+ The following three options are useful only when verifying checksums:
    -s, --status      don't output anything, status code shows success
+   -q, --quiet       don't print OK for each successfully verified file
    -w, --warn        warn about improperly formatted checksum lines
 
    -h, --help        display this help and exit
@@ -60,7 +61,10 @@ shasum - Print or Check SHA Checksums
  the input should be a former output of this program.  The default
  mode is to print a line with checksum, a character indicating type
  (`*' for binary, ` ' for text, `U' for UNIVERSAL, `^' for BITS, `?'
- for portable), and name for each FILE.
+ for portable), and name for each FILE.  The line starts with a `\'
+ character if the FILE name contains either newlines or backslashes,
+ which are then replaced by the two-character sequences `\n' and `\\'
+ respectively.
 
  Report shasum bugs to mshe...@cpan.org
 
@@ -92,7 +96,7 @@ the 7-bit message I<0001100>:
 
 =head1 AUTHOR
 
-Copyright (c) 2003-2016 Mark Shelor <mshe...@cpan.org>.
+Copyright (c) 2003-2017 Mark Shelor <mshe...@cpan.org>.
 
 =head1 SEE ALSO
 
@@ -103,7 +107,7 @@ L<Digest::SHA::PurePerl>.
 
 END_OF_POD
 
-my $VERSION = "5.96";
+my $VERSION = "5.97";
 
 sub usage {
        my($err, $msg) = @_;
@@ -130,7 +134,7 @@ select((select(STDERR), $| = 1)[0]);
 
        ## Collect options from command line
 
-my ($alg, $binary, $check, $text, $status, $warn, $help, $version);
+my ($alg, $binary, $check, $text, $status, $quiet, $warn, $help, $version);
 my ($portable, $BITS, $reverse, $UNIVERSAL, $versions);
 
 eval { Getopt::Long::Configure ("bundling") };
@@ -138,6 +142,7 @@ GetOptions(
        'b|binary' => \$binary, 'c|check' => \$check,
        't|text' => \$text, 'a|algorithm=i' => \$alg,
        's|status' => \$status, 'w|warn' => \$warn,
+       'q|quiet' => \$quiet,
        'h|help' => \$help, 'v|version' => \$version,
        'p|portable' => \$portable,
        '0|01' => \$BITS,
@@ -158,6 +163,8 @@ usage(1, "shasum: --warn option used only when verifying 
checksums\n")
        if $warn && !$check;
 usage(1, "shasum: --status option used only when verifying checksums\n")
        if $status && !$check;
+usage(1, "shasum: --quiet option used only when verifying checksums\n")
+       if $quiet && !$check;
 
 
        ## Try to use Digest::SHA.  If not installed, use the slower
@@ -258,7 +265,7 @@ sub verify {
        my $checkfile = shift;
        my ($err, $fmt_errs, $read_errs, $match_errs) = (0, 0, 0, 0);
        my ($num_lines, $num_files) = (0, 0);
-       my ($bslash, $sum, $fname, $rsp, $digest);
+       my ($bslash, $sum, $fname, $rsp, $digest, $isOK);
 
        local *FH;
        $checkfile eq '-' and open(FH, '< -')
@@ -283,15 +290,16 @@ sub verify {
                $rsp = "$fname: "; $num_files++;
                ($binary, $text, $UNIVERSAL, $BITS, $portable) =
                        map { $_ eq $modesym } ('*', ' ', 'U', '^', 'p');
+               $isOK = 0;
                unless ($digest = sumfile($fname)) {
                        $rsp .= "FAILED open or read\n";
                        $err = 1; $read_errs++;
                }
                else {
-                       if (lc($sum) eq $digest) { $rsp .= "OK\n" }
+                       if (lc($sum) eq $digest) { $rsp .= "OK\n"; $isOK = 1 }
                        else { $rsp .= "FAILED\n"; $err = 1; $match_errs++ }
                }
-               print $rsp unless $status;
+               print $rsp unless ($status || ($quiet && $isOK));
        }
        close(FH);
        unless ($num_files) {
diff --git a/cpan/Digest-SHA/src/sha.c b/cpan/Digest-SHA/src/sha.c
index fae9bb4f6e..51f472cd1d 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-2016 Mark Shelor, All Rights Reserved
+ * Copyright (C) 2003-2017 Mark Shelor, All Rights Reserved
  *
- * Version: 5.96
- * Wed Jul 27 20:04:34 MST 2016
+ * Version: 5.97
+ * Wed Sep  6 02:23:02 MST 2017
  *
  */
 
diff --git a/cpan/Digest-SHA/src/sha.h b/cpan/Digest-SHA/src/sha.h
index ca34741342..9fd6feb9e5 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-2016 Mark Shelor, All Rights Reserved
+ * Copyright (C) 2003-2017 Mark Shelor, All Rights Reserved
  *
- * Version: 5.96
- * Wed Jul 27 20:04:34 MST 2016
+ * Version: 5.97
+ * Wed Sep  6 02:23:02 MST 2017
  *
  */
 
diff --git a/cpan/Digest-SHA/src/sha64bit.c b/cpan/Digest-SHA/src/sha64bit.c
index 860b52c0ef..be02564eb5 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-2016 Mark Shelor, All Rights Reserved
+ * Copyright (C) 2003-2017 Mark Shelor, All Rights Reserved
  *
- * Version: 5.96
- * Wed Jul 27 20:04:34 MST 2016
+ * Version: 5.97
+ * Wed Sep  6 02:23:02 MST 2017
  *
  */
 
diff --git a/cpan/Digest-SHA/src/sha64bit.h b/cpan/Digest-SHA/src/sha64bit.h
index aef4426efe..4e1d7990e7 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-2016 Mark Shelor, All Rights Reserved
+ * Copyright (C) 2003-2017 Mark Shelor, All Rights Reserved
  *
- * Version: 5.96
- * Wed Jul 27 20:04:34 MST 2016
+ * Version: 5.97
+ * Wed Sep  6 02:23:02 MST 2017
  *
  * The following macros supply placeholder values that enable the
  * sha.c module to successfully compile when 64-bit integer types
diff --git a/cpan/File-Path/lib/File/Path.pm b/cpan/File-Path/lib/File/Path.pm
index 2b765e189f..b4fb5a2c48 100644
--- a/cpan/File-Path/lib/File/Path.pm
+++ b/cpan/File-Path/lib/File/Path.pm
@@ -18,7 +18,7 @@ BEGIN {
 
 use Exporter ();
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
-$VERSION   = '2.14';
+$VERSION   = '2.15';
 $VERSION   = eval $VERSION;
 @ISA       = qw(Exporter);
 @EXPORT    = qw(mkpath rmtree);
@@ -633,7 +633,7 @@ File::Path - Create or remove directory trees
 
 =head1 VERSION
 
-2.14 - released June 07 2016.
+2.15 - released June 07 2017.
 
 =head1 SYNOPSIS
 
@@ -774,12 +774,14 @@ identical to C<make_path()>.
 
 The C<remove_tree> function deletes the given directories and any
 files and subdirectories they might contain, much like the Unix
-command C<rm -rf> or the Windows commands C<rmdir /s> and C<rd /s>. The
-only exception to the function similarity is that C<remove_tree> accepts
-only directories whereas C<rm -rf> also accepts files.
+command C<rm -rf> or the Windows commands C<rmdir /s> and C<rd /s>.
 
-The function accepts a list of directories to be
-removed. Its behaviour may be tuned by an optional hashref
+The function accepts a list of directories to be removed. (In point of fact,
+it will also accept filesystem entries which are not directories, such as
+regular files and symlinks.  But, as its name suggests, its intent is to
+remove trees rather than individual files.)
+
+C<remove_tree()>'s behaviour may be tuned by an optional hashref
 appearing as the last parameter on the call.  If an empty string is
 passed to C<remove_tree>, an error will occur.
 
diff --git a/cpan/File-Path/t/Path.t b/cpan/File-Path/t/Path.t
index 7eb85721e9..8ea3d87c9a 100644
--- a/cpan/File-Path/t/Path.t
+++ b/cpan/File-Path/t/Path.t
@@ -3,7 +3,7 @@
 
 use strict;
 
-use Test::More tests => 167;
+use Test::More tests => 165;
 use Config;
 use Fcntl ':mode';
 use lib './t';
@@ -816,7 +816,7 @@ is(
 }
 
 SKIP: {
-    my $skip_count = 5;
+    my $skip_count = 3;
     skip "Windows will not set this error condition", $skip_count
         if $^O eq 'MSWin32';
 
@@ -826,10 +826,10 @@ SKIP: {
     my (@created, $error);
     my $user = join('_' => 'foobar', $$);
     @created = mkpath($deepest, { mode => 0711, user => $user, error => 
\$error });
-    TODO: {
-        local $TODO = "Notwithstanding the phony 'user', mkpath will actually 
create subdirectories; should it?";
-        is(scalar(@created), 0, "No subdirectories created");
-    }
+#    TODO: {
+#        local $TODO = "Notwithstanding the phony 'user', mkpath will actually 
create subdirectories; should it?";
+#        is(scalar(@created), 0, "No subdirectories created");
+#    }
     is(scalar(@$error), 1, "caught error condition" );
     my ($file, $message) = each %{$error->[0]};
     like($message,
@@ -878,10 +878,10 @@ SKIP: {
     my (@created, $error);
     my $bad_group = join('_' => 'foobarbaz', $$);
     @created = mkpath($deepest, { mode => 0711, group => $bad_group, error => 
\$error });
-    TODO: {
-        local $TODO = "Notwithstanding the phony 'group', mkpath will actually 
create subdirectories; should it?";
-        is(scalar(@created), 0, "No subdirectories created");
-    }
+#    TODO: {
+#        local $TODO = "Notwithstanding the phony 'group', mkpath will 
actually create subdirectories; should it?";
+#        is(scalar(@created), 0, "No subdirectories created");
+#    }
     is(scalar(@$error), 1, "caught error condition" );
     my ($file, $message) = each %{$error->[0]};
     like($message,
diff --git a/cpan/Scalar-List-Utils/lib/List/Util.pm 
b/cpan/Scalar-List-Utils/lib/List/Util.pm
index 4a03af815a..035f67f3a3 100644
--- a/cpan/Scalar-List-Utils/lib/List/Util.pm
+++ b/cpan/Scalar-List-Utils/lib/List/Util.pm
@@ -15,7 +15,7 @@ our @EXPORT_OK  = qw(
   all any first min max minstr maxstr none notall product reduce sum sum0 
shuffle uniq uniqnum uniqstr
   pairs unpairs pairkeys pairvalues pairmap pairgrep pairfirst
 );
-our $VERSION    = "1.48";
+our $VERSION    = "1.49";
 our $XS_VERSION = $VERSION;
 $VERSION    = eval $VERSION;
 
@@ -116,7 +116,7 @@ C<undef> being returned
 
 The above example code blocks also suggest how to use C<reduce> to build a
 more efficient combined version of one of these basic functions and a C<map>
-block. For example, to find the total length of the all the strings in a list,
+block. For example, to find the total length of all the strings in a list,
 we could use
 
     $total = sum map { length } @strings;
diff --git a/cpan/Scalar-List-Utils/lib/List/Util/XS.pm 
b/cpan/Scalar-List-Utils/lib/List/Util/XS.pm
index c870411578..10429a71f5 100644
--- a/cpan/Scalar-List-Utils/lib/List/Util/XS.pm
+++ b/cpan/Scalar-List-Utils/lib/List/Util/XS.pm
@@ -3,7 +3,7 @@ use strict;
 use warnings;
 use List::Util;
 
-our $VERSION = "1.48";       # FIXUP
+our $VERSION = "1.49";       # FIXUP
 $VERSION = eval $VERSION;    # FIXUP
 
 1;
diff --git a/cpan/Scalar-List-Utils/lib/Scalar/Util.pm 
b/cpan/Scalar-List-Utils/lib/Scalar/Util.pm
index ad36af3b60..00edd3b2c7 100644
--- a/cpan/Scalar-List-Utils/lib/Scalar/Util.pm
+++ b/cpan/Scalar-List-Utils/lib/Scalar/Util.pm
@@ -17,7 +17,7 @@ our @EXPORT_OK = qw(
   dualvar isdual isvstring looks_like_number openhandle readonly set_prototype
   tainted
 );
-our $VERSION    = "1.48";
+our $VERSION    = "1.49";
 $VERSION   = eval $VERSION;
 
 require List::Util; # List::Util loads the XS
diff --git a/cpan/Scalar-List-Utils/lib/Sub/Util.pm 
b/cpan/Scalar-List-Utils/lib/Sub/Util.pm
index b4ec6ac75c..ecfab702cd 100644
--- a/cpan/Scalar-List-Utils/lib/Sub/Util.pm
+++ b/cpan/Scalar-List-Utils/lib/Sub/Util.pm
@@ -15,7 +15,7 @@ our @EXPORT_OK = qw(
   subname set_subname
 );
 
-our $VERSION    = "1.48";
+our $VERSION    = "1.49";
 $VERSION   = eval $VERSION;
 
 require List::Util; # as it has the XS
diff --git a/cpan/Scalar-List-Utils/t/product.t 
b/cpan/Scalar-List-Utils/t/product.t
index 1aad877531..7b5894add3 100644
--- a/cpan/Scalar-List-Utils/t/product.t
+++ b/cpan/Scalar-List-Utils/t/product.t
@@ -112,8 +112,12 @@ SKIP: {
   is($t, (1<<31) - (1<<62), 'min * max');
   $t = product($max, $min);
   is($t, (1<<31) - (1<<62), 'max * min');
+
+  SKIP: {
+  skip "known to fail on $]", 1 if $] le "5.006002";
   $t = product($max, $max);
   is($t,  (1<<62)-(1<<32)+1, 'max * max');
+  }
 
   $t = product($min*8, $min);
   cmp_ok($t, '>',  (1<<61), 'min*8*min'); # may be an NV
diff --git a/cpan/Scalar-List-Utils/t/rt-96343.t 
b/cpan/Scalar-List-Utils/t/rt-96343.t
index 5328a411db..4deedcb676 100644
--- a/cpan/Scalar-List-Utils/t/rt-96343.t
+++ b/cpan/Scalar-List-Utils/t/rt-96343.t
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More;
+use Test::More tests => 2;
 
 {
   use List::Util qw( first );
@@ -31,5 +31,3 @@ use Test::More;
   is( $var, 'HellO WorlD',
     'any (lc$_) leaves value undisturbed' );
 }
-
-done_testing;
diff --git a/cpan/Scalar-List-Utils/t/sum.t b/cpan/Scalar-List-Utils/t/sum.t
index 4639a8ac8d..1b7258c30a 100644
--- a/cpan/Scalar-List-Utils/t/sum.t
+++ b/cpan/Scalar-List-Utils/t/sum.t
@@ -92,6 +92,7 @@ is($v, $v1 + 42 + 2, 'bigint + builtin int');
 
 SKIP: {
   skip "IV is not at least 64bit", 3 unless $Config{ivsize} >= 8;
+  skip "known to fail on $]", 3 if $] le "5.006002";
 
   # Sum using NV will only preserve 53 bits of integer precision
   my $t = sum(1<<60, 1);
diff --git a/cpan/Scalar-List-Utils/t/uniq.t b/cpan/Scalar-List-Utils/t/uniq.t
index 5a6925d1f5..105c499bae 100644
--- a/cpan/Scalar-List-Utils/t/uniq.t
+++ b/cpan/Scalar-List-Utils/t/uniq.t
@@ -43,7 +43,8 @@ is_deeply( [ uniqstr qw( 1 1.0 1E0 ) ],
                'uniqstr on undef coerces to empty-string' );
 }
 
-{
+SKIP: {
+    skip 'Perl 5.007003 with utf8::encode is required', 3 if $] lt "5.007003";
     my $warnings = "";
     local $SIG{__WARN__} = sub { $warnings .= join "", @_ };
 
@@ -123,7 +124,9 @@ is_deeply( [ uniq () ],
 
 is( scalar( uniqstr qw( a b c d a b e ) ), 5, 'uniqstr() in scalar context' );
 
-{
+SKIP: {
+    skip "known to fail on $]", 1 if $] le "5.006002";
+
     package Stringify;
 
     use overload '""' => sub { return $_[0]->{str} };
diff --git a/cpan/Time-Piece/Piece.pm b/cpan/Time-Piece/Piece.pm
index a3dfc744d4..06fd25cb15 100644
--- a/cpan/Time-Piece/Piece.pm
+++ b/cpan/Time-Piece/Piece.pm
@@ -20,7 +20,7 @@ our %EXPORT_TAGS = (
     ':override' => 'internal',
     );
 
-our $VERSION = '1.3201';
+our $VERSION = '1.3202';
 
 bootstrap Time::Piece $VERSION;
 
diff --git a/cpan/Time-Piece/Piece.xs b/cpan/Time-Piece/Piece.xs
index 8b3d43aadf..9ff51e5216 100644
--- a/cpan/Time-Piece/Piece.xs
+++ b/cpan/Time-Piece/Piece.xs
@@ -1034,7 +1034,7 @@ _strptime ( string, format, got_GMT, SV* localization )
   PPCODE:
        memset(&mytm, 0, sizeof(mytm));
 
-       // sensible defaults.
+       /* sensible defaults. */
        mytm.tm_mday = 1;
        mytm.tm_year = 70;
        mytm.tm_wday = 4;
@@ -1047,7 +1047,7 @@ _strptime ( string, format, got_GMT, SV* localization )
             croak("_strptime requires a Hash Reference of locales");
        }
 
-       //populate our locale data struct (used for %[AaBbPp] flags)
+       /* populate our locale data struct (used for %[AaBbPp] flags) */
        _populate_C_time_locale(aTHX_ locales );
 
        remainder = (char *)_strptime(aTHX_ string, format, &mytm, &got_GMT);
diff --git a/cpan/Time-Piece/Seconds.pm b/cpan/Time-Piece/Seconds.pm
index af22ee299d..6e945cae5b 100644
--- a/cpan/Time-Piece/Seconds.pm
+++ b/cpan/Time-Piece/Seconds.pm
@@ -1,7 +1,7 @@
 package Time::Seconds;
 use strict;
 
-our $VERSION = '1.3201';
+our $VERSION = '1.3202';
 
 use Exporter 5.57 'import';
 
diff --git a/dist/Time-HiRes/Changes b/dist/Time-HiRes/Changes
index eb85a2c8f9..10af55b79d 100644
--- a/dist/Time-HiRes/Changes
+++ b/dist/Time-HiRes/Changes
@@ -1,9 +1,34 @@
 Revision history for the Perl extension Time::HiRes.
 
-1.9743
+1.9746 [2017-08-17]
+ - Unreliable t/usleep.t and t/utime.t tests [rt.cpan.org #122819]
+   Avoid testing for $dt = $t2 - $t1 and assuming $dt is less than
+   some value since a heavily loaded machine can delay the $t2.
+   Testing for greater than is fine.
+ - Tweak the configuring messages about subsecond stat/utime.
+
+1.9745 [2017-08-14]
+  - Properly check for futimens/utimensat actually doing something.
+    This should handle 'gnukfreebsd' (which has only stubs, so far
+    we have been skipping the test) and as a new thing 'gnu' (Hurd)
+    (also only stubs).  Thanks to Nigel Horne.
+  - Scan in t/utime.t whether the filesystem (wherever File::Temp
+    puts it tempfiles) supports subsecond timestamps.  This removes
+    the fragile Linux/ext3 specific hack.  As a side effect, the
+    setting of subsecond timestamps is tested only if reading of
+    them is supported.  Thanks to Carsten Gaebler for the test idea,
+    and Ryan Voots for testing.
+
+1.9744 [2017-07-27]
+  - add more potential clock constants, like CLOCK_MONOTONIC_FAST
+    (available in FreeBSD), and not all potentially found clock
+    constants were properly exported to be available from Perl,
+    see your system's clock_gettime() documentation for the available ones
+
+1.9743 [2017-07-20]
   - correct declared minimum Perl version (should be 5.6, was declared
-    as 5.8 since 1.9727_03)
-  - fix the fix for 'do file' to load hints in Makefile.PL
+    as 5.8 since 1.9727_03): blead af94b3ac
+  - fix the fix for 'do file' to load hints in Makefile.PL: blead 3172fdbc
 
 1.9742 [2017-04-16]
   - prefer 3-argument open: blead 1ae6ead9
diff --git a/dist/Time-HiRes/HiRes.pm b/dist/Time-HiRes/HiRes.pm
index fbdc2b4aca..db6afb6879 100644
--- a/dist/Time-HiRes/HiRes.pm
+++ b/dist/Time-HiRes/HiRes.pm
@@ -9,18 +9,39 @@ require DynaLoader;
 our @ISA = qw(Exporter DynaLoader);
 
 our @EXPORT = qw( );
+# More or less this same list is in Makefile.PL.  Should unify.
 our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval
                 getitimer setitimer nanosleep clock_gettime clock_getres
                 clock clock_nanosleep
-                CLOCK_BOOTTIME CLOCK_HIGHRES
-                CLOCK_MONOTONIC CLOCK_MONOTONIC_COARSE
-                CLOCK_MONOTONIC_PRECISE CLOCK_MONOTONIC_RAW
+                CLOCKS_PER_SEC
+                CLOCK_BOOTTIME
+                CLOCK_HIGHRES
+                CLOCK_MONOTONIC
+                CLOCK_MONOTONIC_COARSE
+                CLOCK_MONOTONIC_FAST
+                CLOCK_MONOTONIC_PRECISE
+                CLOCK_MONOTONIC_RAW
                 CLOCK_PROCESS_CPUTIME_ID
-                CLOCK_REALTIME CLOCK_REALTIME_COARSE
-                CLOCK_REALTIME_FAST CLOCK_REALTIME_PRECISE
-                CLOCK_SECOND CLOCK_SOFTTIME CLOCK_THREAD_CPUTIME_ID
-                CLOCK_TIMEOFDAY CLOCKS_PER_SEC
-                ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF ITIMER_REALPROF
+                CLOCK_PROF
+                CLOCK_REALTIME
+                CLOCK_REALTIME_COARSE
+                CLOCK_REALTIME_FAST
+                CLOCK_REALTIME_PRECISE
+                CLOCK_REALTIME_RAW
+                CLOCK_SECOND
+                CLOCK_SOFTTIME
+                CLOCK_THREAD_CPUTIME_ID
+                CLOCK_TIMEOFDAY
+                CLOCK_UPTIME
+                CLOCK_UPTIME_COARSE
+                CLOCK_UPTIME_FAST
+                CLOCK_UPTIME_PRECISE
+                CLOCK_UPTIME_RAW
+                CLOCK_VIRTUAL
+                ITIMER_PROF
+                ITIMER_REAL
+                ITIMER_REALPROF
+                ITIMER_VIRTUAL
                 TIMER_ABSTIME
                 d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer
                 d_nanosleep d_clock_gettime d_clock_getres d_hires_utime
@@ -28,7 +49,7 @@ our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday 
time tv_interval
                 stat lstat utime
                );
 
-our $VERSION = '1.9743';
+our $VERSION = '1.9746';
 our $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
diff --git a/dist/Time-HiRes/Makefile.PL b/dist/Time-HiRes/Makefile.PL
index 54f5cb43dd..e7ce9245ef 100644
--- a/dist/Time-HiRes/Makefile.PL
+++ b/dist/Time-HiRes/Makefile.PL
@@ -367,10 +367,14 @@ sub has_futimens {
 #include <sys/stat.h>
 int main(int argc, char** argv)
 {
-    int ret;
-    struct timespec ts[2];
-    ret = futimens(0, ts);
-    ret == 0 ? exit(0) : exit(errno ? errno : -1);
+    int ret1, ret2;
+    struct timespec ts1[2], ts2[2];
+    ret1 = futimens(0, ts1);
+    char buf[1];
+    read(0, buf, 0); /* Assuming reading nothing updates atime (the [0]) */
+    ret2 = futimens(0, ts2);
+    ret1 == 0 && ret2 == 0 && (ts1[0].tv_nsec != 0 || ts2[0].tv_nsec != 0) ?
+        exit(0) : exit(errno ? errno : -1);
 }
 EOM
 }
@@ -385,10 +389,16 @@ sub has_utimensat{
 #include <fcntl.h>
 int main(int argc, char** argv)
 {
-    int ret;
-    struct timespec ts[2];
-    ret = utimensat(AT_FDCWD, 0, ts, 0);
-    ret == 0 ? exit(0) : exit(errno ? errno : -1);
+    int ret1, ret2;
+    struct timespec ts1[2], ts2[2];
+    /* We make the brave but probably foolish assumption that systems
+     * modern enough to have utimensat also have the /dev/stdin. */
+    ret1 = utimensat(AT_FDCWD, "/dev/stdin", ts1, 0);
+    char buf[1];
+    read(0, buf, 0); /* Assuming reading nothing updates atime (the [0]) */
+    ret2 = utimensat(AT_FDCWD, "/dev/stdin", ts2, 0);
+    ret1 == 0 && ret2 == 0 && (ts1[0].tv_nsec != 0 || ts2[0].tv_nsec != 0) ?
+        exit(0) : exit(errno ? errno : -1);
 }
 EOM
 }
@@ -507,7 +517,7 @@ EOD
     if ($has_setitimer && $has_getitimer) {
        print "You have interval timers (both setitimer and getitimer).\n";
     } else {
-       print "You do not have interval timers.\n";
+       print "You do NOT have interval timers.\n";
     }
 
     print "Looking for ualarm()... ";
@@ -695,7 +705,7 @@ EOD
        print "NOT found.\n";
     }
 
-    print "Looking for futimens()... ";
+    print "Looking for working futimens()... ";
     my $has_futimens;
     if (has_futimens()) {
         $has_futimens++;
@@ -708,7 +718,7 @@ EOD
        print "NOT found.\n";
     }
 
-    print "Looking for utimensat()... ";
+    print "Looking for working utimensat()... ";
     my $has_utimensat;
     if (has_utimensat()) {
         $has_utimensat++;
@@ -721,8 +731,12 @@ EOD
        print "NOT found.\n";
     }
 
-    if ($has_futimens or $has_utimensat) {
+    my $has_hires_utime = ($has_futimens || $has_utimensat);
+    if ($has_hires_utime) {
        $DEFINE .= ' -DTIME_HIRES_UTIME';
+        print "You seem to have subsecond timestamp setting.\n";
+    } else {
+        print "You do NOT seem to have subsecond timestamp setting.\n";
     }
 
     print "Looking for stat() subsecond timestamps...\n";
@@ -838,14 +852,18 @@ EOM
         DEFINE('TIME_HIRES_STAT', 4);
     } elsif ($has_stat_st_uxtime) {
         DEFINE('TIME_HIRES_STAT', 5);
-    }    
+    }
 
-   if ($DEFINE =~ /-DTIME_HIRES_STAT=\d+/) {
-    print "You seem to have stat() subsecond timestamps.\n";
-    print "(Your struct stat has them, but the filesystems must help.)\n";
-   } else {
-    print "You do not seem to have stat subsecond timestamps.\n";
-   }
+    my $has_hires_stat = ($DEFINE =~ /-DTIME_HIRES_STAT=(\d+)/) ? $1 : 0;
+    if ($has_hires_stat) {
+        print "You seem to have subsecond timestamp reading.\n";
+        print "(Your struct stat has them, but the filesystems must help.)\n";
+        unless ($has_hires_utime) {
+            print "However, you do NOT seem to have subsecond timestamp 
setting.\n";
+        }
+    } else {
+        print "You do NOT seem to have subsecond timestamp reading.\n";
+    }
 
     my $has_w32api_windows_h;
 
@@ -948,31 +966,38 @@ sub doMakefile {
 
 sub doConstants {
     if (eval {require ExtUtils::Constant; 1}) {
+        # More or less this same list is in HiRes.pm.  Should unify.
        my @names = qw(
-                       CLOCKS_PER_SEC
-                       CLOCK_BOOTTIME
-                       CLOCK_HIGHRES
-                       CLOCK_MONOTONIC
-                       CLOCK_MONOTONIC_COARSE
-                       CLOCK_MONOTONIC_PRECISE
-                       CLOCK_MONOTONIC_RAW
-                       CLOCK_PROCESS_CPUTIME_ID
-                       CLOCK_REALTIME
-                       CLOCK_REALTIME_COARSE
-                       CLOCK_REALTIME_FAST
-                       CLOCK_REALTIME_PRECISE
-                       CLOCK_SECOND
-                       CLOCK_SOFTTIME
-                       CLOCK_THREAD_CPUTIME_ID
-                       CLOCK_TIMEOFDAY
-                       CLOCK_UPTIME
-                       CLOCK_UPTIME_FAST
-                       CLOCK_UPTIME_PRECISE
-                       ITIMER_PROF
-                       ITIMER_REAL
-                       ITIMER_REALPROF
-                       ITIMER_VIRTUAL
-                       TIMER_ABSTIME
+                      CLOCKS_PER_SEC
+                      CLOCK_BOOTTIME
+                      CLOCK_HIGHRES
+                      CLOCK_MONOTONIC
+                      CLOCK_MONOTONIC_COARSE
+                      CLOCK_MONOTONIC_FAST
+                      CLOCK_MONOTONIC_PRECISE
+                      CLOCK_MONOTONIC_RAW
+                      CLOCK_PROF
+                      CLOCK_PROCESS_CPUTIME_ID
+                      CLOCK_REALTIME
+                      CLOCK_REALTIME_COARSE
+                      CLOCK_REALTIME_FAST
+                      CLOCK_REALTIME_PRECISE
+                      CLOCK_REALTIME_RAW
+                      CLOCK_SECOND
+                      CLOCK_SOFTTIME
+                      CLOCK_THREAD_CPUTIME_ID
+                      CLOCK_TIMEOFDAY
+                      CLOCK_UPTIME
+                      CLOCK_UPTIME_COARSE
+                      CLOCK_UPTIME_FAST
+                      CLOCK_UPTIME_PRECISE
+                      CLOCK_UPTIME_RAW
+                      CLOCK_VIRTUAL
+                      ITIMER_PROF
+                      ITIMER_REAL
+                      ITIMER_REALPROF
+                      ITIMER_VIRTUAL
+                      TIMER_ABSTIME
                       );
        foreach (qw (d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer
                     d_nanosleep d_clock_gettime d_clock_getres
@@ -982,15 +1007,14 @@ sub doConstants {
            if ($macro =~ /^(d_nanosleep|d_clock)$/) {
                $macro =~ s/^d_(.+)/TIME_HIRES_\U$1/;
            } elsif ($macro =~ /^(d_hires_stat)$/) {
-               my $d_hires_stat = 0;
-               $d_hires_stat = $1 if ($DEFINE =~ /-DTIME_HIRES_STAT=(\d+)/);
+               my $d_hires_stat = $1 if ($DEFINE =~ /-DTIME_HIRES_STAT=(\d+)/);
                push @names, {name => $_, macro => "TIME_HIRES_STAT", value => 
$d_hires_stat,
                              default => ["IV", "0"]};
                next;
            } elsif ($macro =~ /^(d_hires_utime)$/) {
                my $d_hires_utime =
-                    ($DEFINE =~ /-DHAS_FUTIMENS/ ||
-                     $DEFINE =~ /-DHAS_UTIMENSAT/) ? 1 : 0;
+                   ($DEFINE =~ /-DHAS_FUTIMENS/ ||
+                    $DEFINE =~ /-DHAS_UTIMENSAT/);
                push @names, {name => $_, macro => "TIME_HIRES_UTIME", value => 
$d_hires_utime,
                              default => ["IV", "0"]};
                next;
diff --git a/dist/Time-HiRes/t/usleep.t b/dist/Time-HiRes/t/usleep.t
index 9322458b80..bb66cbe62c 100644
--- a/dist/Time-HiRes/t/usleep.t
+++ b/dist/Time-HiRes/t/usleep.t
@@ -32,7 +32,7 @@ SKIP: {
     Time::HiRes::usleep(500_000);
     my $f2 = Time::HiRes::time();
     my $d = $f2 - $f;
-    ok $d > 0.4 && $d < 0.9 or print("# slept $d secs $f to $f2\n");
+    ok $d > 0.49 or print("# slept $d secs $f to $f2\n");
 }
 
 SKIP: {
@@ -40,7 +40,7 @@ SKIP: {
     my $r = [ Time::HiRes::gettimeofday() ];
     Time::HiRes::sleep( 0.5 );
     my $f = Time::HiRes::tv_interval $r;
-    ok $f > 0.4 && $f < 0.9 or print("# slept $f instead of 0.5 secs.\n");
+    ok $f > 0.49 or print("# slept $f instead of 0.5 secs.\n");
 }
 
 SKIP: {
diff --git a/dist/Time-HiRes/t/utime.t b/dist/Time-HiRes/t/utime.t
index 22fd48e703..7821837f8e 100644
--- a/dist/Time-HiRes/t/utime.t
+++ b/dist/Time-HiRes/t/utime.t
@@ -1,5 +1,32 @@
 use strict;
 
+sub has_subsecond_file_times {
+  require File::Temp;
+  require Time::HiRes;
+  my ($fh, $filename) = File::Temp::tempfile( "Time-HiRes-utime-XXXXXXXXX" );
+  use File::Basename qw[dirname];
+  my $dirname =  dirname($filename);
+  require Cwd;
+  $dirname = &Cwd::getcwd if $dirname eq '.';
+  print(STDERR "\n# Testing for subsecond file timestamps (mtime) in 
$dirname\n");
+  close $fh;
+  my @mtimes;
+  for (1..2) {
+    open $fh, '>', $filename;
+    print $fh "foo";
+    close $fh;
+    push @mtimes, (Time::HiRes::stat($filename))[9];
+    Time::HiRes::sleep(.1) if $_ == 1;
+  }
+  my $delta = $mtimes[1] - $mtimes[0];
+  # print STDERR "mtimes = @mtimes, delta = $delta\n";
+  unlink $filename;
+  my $ok = $delta > 0 && $delta < 1;
+  printf(STDERR "# Subsecond file timestamps in $dirname: %s\n",
+         $ok ? "OK" : "NO");
+  return $ok;
+}
+
 BEGIN {
     require Time::HiRes;
     require Test::More;
@@ -7,43 +34,19 @@ BEGIN {
     unless(&Time::HiRes::d_hires_utime) {
        Test::More::plan(skip_all => "no hires_utime");
     }
+    unless(&Time::HiRes::d_hires_stat) {
+        # Being able to read subsecond timestamps is a reasonable
+       # prerequisite for being able to write them.
+       Test::More::plan(skip_all => "no hires_stat");
+    }
     unless (&Time::HiRes::d_futimens) {
        Test::More::plan(skip_all => "no futimens()");
     }
     unless (&Time::HiRes::d_utimensat) {
        Test::More::plan(skip_all => "no utimensat()");
     }
-    if ($^O eq 'gnukfreebsd') {
-       Test::More::plan(skip_all => "futimens() and utimensat() not working in 
$^O");
-    }
-    if ($^O eq 'linux' && -e '/proc/mounts') {
-        # The linux might be wrong when ext3
-        # is available in other operating systems,
-        # but then we need other methods for detecting
-        # the filesystem type of the tempfiles.
-        my ($fh, $fn) = File::Temp::tempfile( "Time-HiRes-utime-XXXXXXXXX", 
UNLINK => 1);
-        sub getfstype {
-            my ($fn) = @_;
-            my $cmd = "df $fn";
-            open(my $df, '-|', $cmd) or die "$cmd: $!";
-             my @df = <$df>;  # Assume $df[0] is header line.
-             my $dev = +(split(" ", $df[1]))[0];
-             open(my $mounts, '<', '/proc/mounts') or die "/proc/mounts: $!";
-             while (<$mounts>) {
-                 my @m = split(" ");
-                 if ($m[0] eq $dev) { return $m[2] }
-             }
-             return;
-          }
-          my $fstype = getfstype($fn);
-          unless (defined $fstype) {
-              warn "Unknown fstype for $fn\n";
-          } else {
-              print "# fstype = $fstype\n";
-              if ($fstype eq 'ext3' || $fstype eq 'ext2') {
-                  Test::More::plan(skip_all => "fstype $fstype has no 
subsecond timestamps in $^O");
-            }
-        }
+    unless (has_subsecond_file_times()) {
+       Test::More::plan(skip_all => "No subsecond file timestamps");
     }
 }
 
@@ -106,17 +109,18 @@ print "# utime undef sets time to now\n";
        my ($fh2, $filename2) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK 
=> 1 );
 
        my $now = Time::HiRes::time;
+        sleep(1);
        is Time::HiRes::utime(undef, undef, $filename1, $fh2), 2, "Two files 
changed";
 
        {
                my ($got_atime, $got_mtime) = ( Time::HiRes::stat($fh1) )[8, 9];
-               cmp_ok abs( $got_atime - $now), '<', 0.1, "File 1 atime set 
correctly";
-               cmp_ok abs( $got_mtime - $now), '<', 0.1, "File 1 mtime set 
correctly";
+               cmp_ok $got_atime, '>=', $now, "File 1 atime set correctly";
+               cmp_ok $got_mtime, '>=', $now, "File 1 mtime set correctly";
        }
        {
                my ($got_atime, $got_mtime) = ( Time::HiRes::stat($filename2) 
)[8, 9];
-               cmp_ok abs( $got_atime - $now), '<', 0.1, "File 2 atime set 
correctly";
-               cmp_ok abs( $got_mtime - $now), '<', 0.1, "File 2 mtime set 
correctly";
+               cmp_ok $got_atime, '>=', $now, "File 2 atime set correctly";
+               cmp_ok $got_mtime, '>=', $now, "File 2 mtime set correctly";
        }
 };
 

--
Perl5 Master Repository

Reply via email to