<pre style='margin:0'>
Mojca Miklavec (mojca) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/c8b63f830c681d6b82099078383ca1ebdeca3987">https://github.com/macports/macports-ports/commit/c8b63f830c681d6b82099078383ca1ebdeca3987</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new c8b63f8  perl5: update to 5.24.3 and 5.26.1
</span>c8b63f8 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit c8b63f830c681d6b82099078383ca1ebdeca3987
</span>Author: Mojca Miklavec <mojca@macports.org>
AuthorDate: Wed Nov 1 01:33:07 2017 +0100

<span style='display:block; white-space:pre;color:#404040;'>    perl5: update to 5.24.3 and 5.26.1
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    * Update perl5.24 to 5.24.3.
</span><span style='display:block; white-space:pre;color:#404040;'>    * Update perl5.26 to 5.26.1.
</span><span style='display:block; white-space:pre;color:#404040;'>    * Add a variant +perl5.26 to perl5.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/55206
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/55207
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/55208
</span>---
 lang/perl5/Portfile                                |   10 +-
 .../5.24/install-under-short-version-PR43480.patch |    6 +-
 lang/perl5/files/5.24/patch-dist-Time-HiRes.diff   | 1415 --------------------
 3 files changed, 6 insertions(+), 1425 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/perl5/Portfile b/lang/perl5/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index b5efb54..5e1e9cf 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/perl5/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/perl5/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -26,8 +26,8 @@ set perl5.versions_info {
</span>     5.18 4 3 d97181a98f7acc80125b0d2a182a6a2cd7542ceb  1fb4d27b75cd244e849f253320260efe1750641aaff4a18ce0d67556ff1b96a5
     5.20 3 2 499846a1c92e00dd357cb782bc14787b8cd47051  1b40068166c242e34a536836286e70b78410602a80615143301e52aa2901493b
     5.22 4 0 54fdbcbf249134dc7d82b693417900286201b5e7  8b3122046d1186598082d0e6da53193b045e85e3505e7d37ee0bdd0bdb539b71
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    5.24 2 0 a50397964e25396ffc43167819a70043fcfaf194  e28c8fa588c4227eb25350036b45d7b1b46d61bb3a2194ee09dc79be6ed0fd0f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    5.26 0 2 a853a1ec299d7c6ba8239e8ed444ee6d922b8938  f21d66de84982175e95ad15fd8d0e22fed2cc2de7e4394f5d48dbe451be2f6f2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    5.24 3 0 61e7a9786f1e0f26da7de51c3d1e350d132e2a6c  c1af071e7bc133cedff9dd2278d6d92aa78f3514f195ab201c476382c130854e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    5.26 1 0 fff5bf2e6ad6488b8866bf300c32707972b8ffc6  2812a01dd4d4cd7650cb70abfe259ee572bf6a0f1ee95763422ba7e54c68d12d
</span> }
 
 foreach {perl5.v perl5.subversion perl5.revision perl5.rmd160 perl5.sha256} ${perl5.versions_info} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -84,10 +84,6 @@ foreach {perl5.v perl5.subversion perl5.revision perl5.rmd160 perl5.sha256} ${pe
</span>                             ${perl5.major}/patch-dist-IO-t-cachepropagate-unix.t.diff
         }
         if {${perl5.major} == 5.24} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            # Prevent build error on Sierra
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # https://trac.macports.org/ticket/52012
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            patchfiles-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            ${perl5.major}/patch-dist-Time-HiRes.diff
</span>             patchfiles-append \
                             ${perl5.major}/fix-ld-modification.patch
         }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -196,7 +192,7 @@ if {$subport eq $name} {
</span> 
     perl5.require_variant   yes
     perl5.conflict_variants yes
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    perl5.branches          5.24
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    perl5.branches          5.24 5.26
</span>     perl5.default_branch    5.24
     perl5.create_variants   ${perl5.branches}
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/perl5/files/5.24/install-under-short-version-PR43480.patch b/lang/perl5/files/5.24/install-under-short-version-PR43480.patch
</span><span style='display:block; white-space:pre;color:#808080;'>index 5571660..85986dd 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/perl5/files/5.24/install-under-short-version-PR43480.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/perl5/files/5.24/install-under-short-version-PR43480.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -10,7 +10,7 @@ https://trac.macports.org/ticket/43480
</span>   api_versionstring=`echo $api_revision $api_version $api_subversion | \
                 $awk '{ printf "%d.%d.%d", $1, $2, $3 }'`
        ;;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -7296,7 +7298,7 @@ esac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -7310,7 +7312,7 @@ esac
</span>  : /opt/perl/lib/perl5... would be redundant.
  : The default "style" setting is made in installstyle.U
  case "$installstyle" in
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -19,7 +19,7 @@ https://trac.macports.org/ticket/43480
</span>  *)        set dflt privlib lib/$version ;;
  esac
  eval $prefixit
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -7544,7 +7548,7 @@ siteprefixexp="$ansexp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -7558,7 +7560,7 @@ siteprefixexp="$ansexp"
</span>  prog=`echo $package | $sed 's/-*[0-9.]*$//'`
  case "$sitelib" in
  '') case "$installstyle" in
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -28,7 +28,7 @@ https://trac.macports.org/ticket/43480
</span>   *)       dflt=$siteprefix/lib/site_$prog/$version ;;
        esac
        ;;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -7962,7 +7964,7 @@ case "$vendorprefix" in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -7976,7 +7978,7 @@ case "$vendorprefix" in
</span>   '')
                prog=`echo $package | $sed 's/-*[0-9.]*$//'`
                case "$installstyle" in
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/perl5/files/5.24/patch-dist-Time-HiRes.diff b/lang/perl5/files/5.24/patch-dist-Time-HiRes.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 2a791a6..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/perl5/files/5.24/patch-dist-Time-HiRes.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,1415 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-https://github.com/macports/macports-ports/pull/607
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-https://perl5.git.perl.org/perl.git/commit/c4a535af41823cc84534bf8dbecfdcc3eb7daa86
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- MANIFEST
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ MANIFEST
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3557,6 +3557,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dist/Time-HiRes/t/tv_interval.t           Test for Time::HiRes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dist/Time-HiRes/t/ualarm.t                Test for Time::HiRes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dist/Time-HiRes/t/usleep.t                Test for Time::HiRes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+dist/Time-HiRes/t/utime.t         Test for Time::HiRes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dist/Time-HiRes/t/Watchdog.pm             Test for Time::HiRes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dist/Time-HiRes/typemap                   Time::HiRes extension
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dist/XSLoader/Makefile.PL Dynamic Loader makefile writer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- Porting/Maintainers.pl
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ Porting/Maintainers.pl
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1374,7 +1374,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     'Time::HiRes' => {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        'DISTRIBUTION' => 'RJBS/Time-HiRes-1.9728.tar.gz',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        'DISTRIBUTION' => 'JHI/Time-HiRes-1.9739.tar.gz',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         'FILES'        => q[dist/Time-HiRes],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/Changes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/Changes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,5 +1,55 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Revision history for the Perl extension Time::HiRes.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+1.9739 [2016-06-28]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - the upcoming macOS 10.12 (Sierra, the operating system formerly
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    known as OS X, or Darwin) has implemented the clock_gettime()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    and clock_getres() interfaces but not the clock_nanosleep()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+1.9738 [2016-06-26]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - fix the dates in the Changes, it's not July yet
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    [rt.cpan.org #115553]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - in cygwin, drop the utime.t expected timestamp resolution
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - documented for utime that the actual timestamp resolution depends
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    on the operating system and the filesystem, just like for stat
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - looks like in gnukfreebsd 10.1 neither futimens or utimensat work
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    even though they exist, skipping utime tests there for now
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - demodernize the Test::More use in utime.t (no subtest) to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    better support older Perl installations
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - for all the tests, drop the Test::More 0.82 requirement,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    the only "modern" thing used is the note routine which
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    can be replaced with print("# ...\n") (or printf),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    with this works back at least with Test::More 0.54 (perl 5.8.7) 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+1.9737 [2016-06-22]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - utime in HiRes.xs had dXSARGS which was unnecessary, leading
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    to two markstack pops, panic, and two-minute wait for the watchdog
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    (thanks to Dave Mitchell for the eagle-eye)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - even though 5.10.x should have the Perl_ck_warner, many CPAN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    smokes proved otherwise, so requiring now at least 5.12 for
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    Perl_ck_warner use in IS_SAFE_PATHNAME() 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+1.9736 [2016-06-22]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - the IS_SAFE_PATHNAME() emulation was too modern for Perl 5.10
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - make it so that only one value is set for -DTIME_HIRES_STAT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    even on systems that support many options
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - the 1.9734 (only released in blead, and as part of the development
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    release 5.25.2) fix for Darwin's clock_gettime was wrong under
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    threaded builds, leading into mutex panics in clock.t 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - the d_hires_utime determination was made more precise
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - the utime.t was failing in platforms where only one of
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    futimens/utimensat was present (neither or both was okay)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+1.9735 [2016-06-20]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - Time::HiRes should override `utime` to allow setting hires
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    (futimens and utimensat support)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    [rt.perl.org #114809]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - the utime patch used IS_SAFE_PATHNAME() which isn't available in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    too old Perls, so emulate (in case the Devel::PPPort is too old)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+1.9734 [2016-06-17]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  - fix Darwins with clock_gettime: blead 2d41a263
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    [rt.perl.org #128427]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1.9733 [2016-04-23]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   - C90 declaration-after-statement error with darwin threads: blead de1003b4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     [rt.cpan.org #113856]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/HiRes.pm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/HiRes.pm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -23,12 +23,12 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF ITIMER_REALPROF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            TIMER_ABSTIME
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           d_nanosleep d_clock_gettime d_clock_getres
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+           d_nanosleep d_clock_gettime d_clock_getres d_hires_utime
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            d_clock d_clock_nanosleep
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           stat lstat
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+           stat lstat utime
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--our $VERSION = '1.9733';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+our $VERSION = '1.9739';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- our $XS_VERSION = $VERSION;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $VERSION = eval $VERSION;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -60,6 +60,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       ($i eq 'clock'           && !&d_clock)           ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       ($i eq 'nanosleep'       && !&d_nanosleep)       ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       ($i eq 'usleep'          && !&d_usleep)          ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      ($i eq 'utime'           && !&d_hires_utime)     ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       ($i eq 'ualarm'          && !&d_ualarm)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       require Carp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       Carp::croak("Time::HiRes::$i(): unimplemented in this platform");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -92,7 +93,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   use Time::HiRes qw( usleep ualarm gettimeofday tv_interval nanosleep
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 clock_gettime clock_getres clock_nanosleep clock
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                      stat lstat );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                      stat lstat utime);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   usleep ($microseconds);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   nanosleep ($nanoseconds);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -137,6 +138,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my @stat = stat(FH);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my @stat = lstat("file");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  use Time::HiRes qw( utime );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  utime $floating_seconds, $floating_seconds, file...;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- =head1 DESCRIPTION
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- The C<Time::HiRes> module implements a Perl interface to the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -446,6 +450,26 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- the access time stamp from t2 need not be greater-than the modify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- time stamp from t1: it may be equal or I<less>.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+=item utime LIST
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+As L<perlfunc/utime>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+but with the ability to set the access/modify file timestamps
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+in subsecond resolution, if the operating system and the filesystem
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+both support such timestamps.  To override the standard utime():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    use Time::HiRes qw(utime);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+Test for the value of &Time::HiRes::d_hires_utime to find out whether
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+the operating system supports setting subsecond file timestamps.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+As with CORE::utime(), passing undef as both the atime and mtime will
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+call the syscall with a NULL argument.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+The actual achievable subsecond resolution depends on the combination
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+of the operating system and the filesystem.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+Returns the number of files successfully changed.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- =back
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- =head1 EXAMPLES
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -586,9 +610,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Some systems have APIs but not implementations: for example QNX and Haiku
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- have the interval timer APIs but not the functionality.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--In OS X clock_getres(), clock_gettime() and clock_nanosleep() are
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--emulated using the Mach timers; as a side effect of being emulated
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--the CLOCK_REALTIME and CLOCK_MONOTONIC are the same timer.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+In pre-Sierra macOS (pre-10.12, OS X) clock_getres(), clock_gettime()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+and clock_nanosleep() are emulated using the Mach timers; as a side
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+effect of being emulated the CLOCK_REALTIME and CLOCK_MONOTONIC are
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+the same timer.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+gnukfreebsd seems to have non-functional futimens() and utimensat()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+(at least as of 10.1): therefore the hires utime() does not work.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- =head1 SEE ALSO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/HiRes.xs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/HiRes.xs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -747,21 +747,33 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif /* !TIME_HIRES_STAT */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--/* Until Apple implements clock_gettime() (ditto clock_getres())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- * we will emulate it using Mach interfaces. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#if defined(PERL_DARWIN) && !defined(CLOCK_REALTIME)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#  include <mach/mach_time.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/* Until Apple implements clock_gettime()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * (ditto clock_getres() and clock_nanosleep())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * we will emulate them using the Mach kernel interfaces. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(PERL_DARWIN) && \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  (defined(TIME_HIRES_CLOCK_GETTIME_EMULATION)   || \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   defined(TIME_HIRES_CLOCK_GETRES_EMULATION)    || \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   defined(TIME_HIRES_CLOCK_NANOSLEEP_EMULATION))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef CLOCK_REALTIME
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  define CLOCK_REALTIME  0x01
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  define CLOCK_MONOTONIC 0x02
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef TIMER_ABSTIME
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  define TIMER_ABSTIME   0x01
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef USE_ITHREADS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#  define PERL_DARWIN_MUTEX
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef PERL_DARWIN_MUTEX
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- STATIC perl_mutex darwin_time_mutex;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <mach/mach_time.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static uint64_t absolute_time_init;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static mach_timebase_info_data_t timebase_info;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static struct timespec timespec_init;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -769,7 +781,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static int darwin_time_init() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   struct timeval tv;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int success = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#ifdef USE_ITHREADS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef PERL_DARWIN_MUTEX
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   MUTEX_LOCK(&darwin_time_mutex);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (absolute_time_init == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -784,12 +796,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#ifdef USE_ITHREADS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef PERL_DARWIN_MUTEX
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   MUTEX_UNLOCK(&darwin_time_mutex);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return success;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef TIME_HIRES_CLOCK_GETTIME_EMULATION
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static int clock_gettime(int clock_id, struct timespec *ts) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (darwin_time_init() && timebase_info.denom) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     switch (clock_id) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -821,7 +834,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   SETERRNO(EINVAL, LIB_INVARG);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif /* TIME_HIRES_CLOCK_GETTIME_EMULATION */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef TIME_HIRES_CLOCK_GETRES_EMULATION
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static int clock_getres(int clock_id, struct timespec *ts) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (darwin_time_init() && timebase_info.denom) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     switch (clock_id) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -841,7 +856,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   SETERRNO(EINVAL, LIB_INVARG);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif /* TIME_HIRES_CLOCK_GETRES_EMULATION */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef TIME_HIRES_CLOCK_NANOSLEEP_EMULATION
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static int clock_nanosleep(int clock_id, int flags,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                      const struct timespec *rqtp,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                      struct timespec *rmtp) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -879,6 +896,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   SETERRNO(EINVAL, LIB_INVARG);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif /* TIME_HIRES_CLOCK_NANOSLEEP_EMULATION */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif /* PERL_DARWIN */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -921,6 +939,22 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/* In case Perl and/or Devel::PPPort are too old, minimally emulate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * IS_SAFE_PATHNAME() (which looks for zero bytes in the pathname). */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifndef IS_SAFE_PATHNAME
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if PERL_VERSION >= 12 /* Perl_ck_warner is 5.10.0 -> */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef WARN_SYSCALLS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define WARNEMUCAT WARN_SYSCALLS /* 5.22.0 -> */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define WARNEMUCAT WARN_MISC
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define WARNEMU(opname) Perl_ck_warner(aTHX_ packWARN(WARNEMUCAT), "Invalid \\0 character in pathname for %s",opname)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define WARNEMU(opname) Perl_warn(aTHX_ "Invalid \\0 character in pathname for %s",opname)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define IS_SAFE_PATHNAME(pv, len, opname) (((len)>1)&&memchr((pv), 0, (len)-1)?(SETERRNO(ENOENT, LIB_INVARG),WARNEMU(opname),FALSE):(TRUE))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- MODULE = Time::HiRes            PACKAGE = Time::HiRes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- PROTOTYPES: ENABLE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -941,7 +975,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #   endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if defined(PERL_DARWIN)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#  ifdef USE_ITHREADS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#  if defined(USE_ITHREADS) && defined(PERL_DARWIN_MUTEX)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   MUTEX_INIT(&darwin_time_mutex);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1317,6 +1351,82 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif /* #if defined(HAS_GETITIMER) && defined(HAS_SETITIMER) */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(TIME_HIRES_UTIME)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+I32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+utime(accessed, modified, ...)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+PROTOTYPE: $$@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    PREINIT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  SV* accessed;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  SV* modified;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  SV* file;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  struct timespec utbuf[2];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  struct timespec *utbufp = utbuf;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  int tot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    CODE:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  accessed = ST(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  modified = ST(1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  items -= 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  tot = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if ( accessed == &PL_sv_undef && modified == &PL_sv_undef )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          utbufp = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if (SvNV(accessed) < 0.0 || SvNV(modified) < 0.0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  croak("Time::HiRes::utime(%"NVgf", %"NVgf"): negative time not invented yet", SvNV(accessed), SvNV(modified));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          Zero(&utbuf, sizeof utbuf, char);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          utbuf[0].tv_sec = (Time_t)SvNV(accessed);  /* time accessed */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          utbuf[0].tv_nsec = (long)( ( SvNV(accessed) - utbuf[0].tv_sec ) * 1e9 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          utbuf[1].tv_sec = (Time_t)SvNV(modified);  /* time modified */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          utbuf[1].tv_nsec = (long)( ( SvNV(modified) - utbuf[1].tv_sec ) * 1e9 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  while (items > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          file = POPs; items--;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if (SvROK(file) && GvIO(SvRV(file)) && IoIFP(sv_2io(SvRV(file)))) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  int fd =  PerlIO_fileno(IoIFP(sv_2io(file)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  if (fd < 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          SETERRNO(EBADF,RMS_IFI);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  else 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef HAS_FUTIMENS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  if (futimens(fd, utbufp) == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          tot++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else  /* HAS_FUTIMES */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          croak("futimens unimplemented in this platform");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif /* HAS_FUTIMES */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef HAS_UTIMENSAT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  STRLEN len;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  char * name = SvPV(file, len);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  if (IS_SAFE_PATHNAME(name, len, "utime") &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                      utimensat(AT_FDCWD, name, utbufp, 0) == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          tot++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else  /* HAS_UTIMENSAT */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  croak("utimensat unimplemented in this platform");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif /* HAS_UTIMENSAT */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  } /* while items */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  RETVAL = tot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    OUTPUT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  RETVAL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else  /* #if defined(TIME_HIRES_UTIME) */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+I32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+utime(accessed, modified, ...)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    CODE:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        croak("Time::HiRes::utime(): unimplemented in this platform");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        RETVAL = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    OUTPUT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  RETVAL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif /* #if defined(TIME_HIRES_UTIME) */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if defined(TIME_HIRES_CLOCK_GETTIME)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- NV
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/Makefile.PL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/Makefile.PL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -354,6 +354,41 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- EOM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+sub has_futimens {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return 1 if
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    try_compile_and_link(<<EOM);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include "EXTERN.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include "perl.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include "XSUB.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <sys/time.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+int main(int argc, char** argv)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    int ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    struct timespec ts[2];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ret = futimens(0, ts);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ret == 0 ? exit(0) : exit(errno ? errno : -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+EOM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+sub has_utimensat{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return 1 if
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    try_compile_and_link(<<EOM);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include "EXTERN.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include "perl.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include "XSUB.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <sys/time.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <fcntl.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+int main(int argc, char** argv)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    int ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    struct timespec ts[2];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ret = utimensat(AT_FDCWD, 0, ts, 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ret == 0 ? exit(0) : exit(errno ? errno : -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+EOM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sub DEFINE {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my ($def, $val) = @_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $define = defined $val ? "$def=$val" : $def ;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -548,7 +583,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } elsif ($^O eq 'darwin') {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $has_clock_gettime_emulation++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $has_clock_gettime++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--       $DEFINE .= ' -DTIME_HIRES_CLOCK_GETTIME';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+       $DEFINE .= ' -DTIME_HIRES_CLOCK_GETTIME -DTIME_HIRES_CLOCK_GETTIME_EMULATION';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if ($has_clock_gettime) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -577,7 +612,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } elsif ($^O eq 'darwin') {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $has_clock_getres_emulation++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        $has_clock_getres++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--       $DEFINE .= ' -DTIME_HIRES_CLOCK_GETRES';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+       $DEFINE .= ' -DTIME_HIRES_CLOCK_GETRES -DTIME_HIRES_CLOCK_GETRES_EMULATION';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if ($has_clock_getres) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -603,7 +638,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } elsif ($^O eq 'darwin') {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         $has_clock_nanosleep++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         $has_clock_nanosleep_emulation++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  $DEFINE .= ' -DTIME_HIRES_CLOCK_NANOSLEEP';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  $DEFINE .= ' -DTIME_HIRES_CLOCK_NANOSLEEP -DTIME_HIRES_CLOCK_NANOSLEEP_EMULATION';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if ($has_clock_nanosleep) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -631,6 +666,36 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   print "NOT found.\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print "Looking for futimens()... ";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    my $has_futimens;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (has_futimens()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        $has_futimens++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  $DEFINE .= ' -DHAS_FUTIMENS';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if ($has_futimens) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        print "found.\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  print "NOT found.\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print "Looking for utimensat()... ";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    my $has_utimensat;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (has_utimensat()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        $has_utimensat++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  $DEFINE .= ' -DHAS_UTIMENSAT';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if ($has_utimensat) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        print "found.\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  print "NOT found.\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if ($has_futimens or $has_utimensat) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  $DEFINE .= ' -DTIME_HIRES_UTIME';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     print "Looking for stat() subsecond timestamps...\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     print "Trying struct stat st_atimespec.tv_nsec...";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -644,7 +709,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- EOM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       $has_stat_st_xtimespec++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      DEFINE('TIME_HIRES_STAT', 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      DEFINE('TIME_HIRES_STAT_ST_XTIMESPEC');  # 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if ($has_stat_st_xtimespec) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -664,7 +729,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- EOM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       $has_stat_st_xtimensec++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      DEFINE('TIME_HIRES_STAT', 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      DEFINE('TIME_HIRES_STAT_ST_XTIMENSEC');  # 2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if ($has_stat_st_xtimensec) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -684,7 +749,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- EOM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       $has_stat_st_xtime_n++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      DEFINE('TIME_HIRES_STAT', 3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      DEFINE('TIME_HIRES_STAT_ST_XTIME_N');  # 3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if ($has_stat_st_xtime_n) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -704,7 +769,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- EOM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       $has_stat_st_xtim++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      DEFINE('TIME_HIRES_STAT', 4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      DEFINE('TIME_HIRES_STAT_XTIM');  # 4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if ($has_stat_st_xtim) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -724,7 +789,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- EOM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       $has_stat_st_uxtime++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      DEFINE('TIME_HIRES_STAT', 5);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      DEFINE('TIME_HIRES_STAT_ST_UXTIME');  # 5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if ($has_stat_st_uxtime) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -733,6 +798,19 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   print "NOT found.\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    # See HiRes.xs hrstatns()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if ($has_stat_st_xtimespec) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        DEFINE('TIME_HIRES_STAT', 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    } elsif ($has_stat_st_xtimensec) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        DEFINE('TIME_HIRES_STAT', 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    } elsif ($has_stat_st_xtime_n) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        DEFINE('TIME_HIRES_STAT', 3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    } elsif ($has_stat_st_xtim) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        DEFINE('TIME_HIRES_STAT', 4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    } elsif ($has_stat_st_uxtime) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        DEFINE('TIME_HIRES_STAT', 5);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }    
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if ($DEFINE =~ /-DTIME_HIRES_STAT=\d+/) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     print "You seem to have stat() subsecond timestamps.\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     print "(Your struct stat has them, but the filesystems must help.)\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -791,7 +869,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       'DynaLoader' => 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       'Exporter' => 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       'ExtUtils::MakeMaker' => 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      'Test::More' => "0.82",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      'Test::More' => 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       'strict' => 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   'dist'      => {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -869,7 +947,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                       );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   foreach (qw (d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                d_nanosleep d_clock_gettime d_clock_getres
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--               d_clock d_clock_nanosleep d_hires_stat)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+               d_clock d_clock_nanosleep d_hires_stat
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                     d_futimens d_utimensat d_hires_utime)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       my $macro = $_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if ($macro =~ /^(d_nanosleep|d_clock)$/) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           $macro =~ s/^d_(.+)/TIME_HIRES_\U$1/;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -879,6 +958,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           push @names, {name => $_, macro => "TIME_HIRES_STAT", value => $d_hires_stat,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                         default => ["IV", "0"]};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           next;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      } elsif ($macro =~ /^(d_hires_utime)$/) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          my $d_hires_utime =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                    ($DEFINE =~ /-DHAS_FUTIMENS/ ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                     $DEFINE =~ /-DHAS_UTIMENSAT/) ? 1 : 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          push @names, {name => $_, macro => "TIME_HIRES_UTIME", value => $d_hires_utime,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                        default => ["IV", "0"]};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          next;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       } elsif ($macro =~ /^(d_clock_gettime|d_clock_getres|d_clock_nanosleep)$/) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           $macro =~ s/^d_(.+)/TIME_HIRES_\U$1/;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           my $val = ($DEFINE =~ /-D$macro\b/) ? 1 : 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/fallback/const-c.inc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/fallback/const-c.inc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -19,6 +19,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef pTHX_
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define pTHX_ /* 5.6 or later define this for threading support.  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constant_11 (pTHX_ const char *name, IV *iv_return) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* When generated this function returned values for the list of names given
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -87,6 +88,51 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+constant_13 (pTHX_ const char *name, IV *iv_return) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* When generated this function returned values for the list of names given
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     here.  However, subsequent manual editing may have added or removed some.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     CLOCK_HIGHRES TIMER_ABSTIME d_hires_utime */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* Offset 1 gives the best switch position.  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  switch (name[1]) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case 'I':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (memEQ(name, "TIMER_ABSTIME", 13)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    /*                ^                  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef TIMER_ABSTIME
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      *iv_return = TIMER_ABSTIME;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      return PERL_constant_ISIV;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      return PERL_constant_NOTDEF;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case 'L':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (memEQ(name, "CLOCK_HIGHRES", 13)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    /*                ^                  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef CLOCK_HIGHRES
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      *iv_return = CLOCK_HIGHRES;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      return PERL_constant_ISIV;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      return PERL_constant_NOTDEF;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case '_':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (memEQ(name, "d_hires_utime", 13)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    /*                ^                  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef TIME_HIRES_UTIME
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      *iv_return = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      return PERL_constant_ISIV;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      *iv_return = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      return PERL_constant_ISIV;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  return PERL_constant_NOTFOUND;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constant_14 (pTHX_ const char *name, IV *iv_return) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* When generated this function returned values for the list of names given
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      here.  However, subsequent manual editing may have added or removed some.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -250,16 +296,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             {name=>"d_getitimer", type=>"IV", macro=>"HAS_GETITIMER", value=>"1", default=>["IV", "0"]},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             {name=>"d_gettimeofday", type=>"IV", macro=>"HAS_GETTIMEOFDAY", value=>"1", default=>["IV", "0"]},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             {name=>"d_hires_stat", type=>"IV", macro=>"TIME_HIRES_STAT", value=>"1", default=>["IV", "0"]},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            {name=>"d_hires_utime", type=>"IV", macro=>"TIME_HIRES_UTIME", value=>"1", default=>["IV", "0"]},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             {name=>"d_nanosleep", type=>"IV", macro=>"TIME_HIRES_NANOSLEEP", value=>"1", default=>["IV", "0"]},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             {name=>"d_setitimer", type=>"IV", macro=>"HAS_SETITIMER", value=>"1", default=>["IV", "0"]},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             {name=>"d_ualarm", type=>"IV", macro=>"HAS_UALARM", value=>"1", default=>["IV", "0"]},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             {name=>"d_usleep", type=>"IV", macro=>"HAS_USLEEP", value=>"1", default=>["IV", "0"]});
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--print constant_types(); # macro defs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print constant_types(), "\n"; # macro defs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach (C_constant ("Time::HiRes", 'constant', 'IV', $types, undef, 3, @names) ) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     print $_, "\n"; # C constant subs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--print "#### XS Section:\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print "\n#### XS Section:\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- print XS_constant ("Time::HiRes", $types);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- __END__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -322,33 +369,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   case 13:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    /* Names all of length 13.  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    /* CLOCK_HIGHRES TIMER_ABSTIME */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    /* Offset 2 gives the best switch position.  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    switch (name[2]) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    case 'M':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      if (memEQ(name, "TIMER_ABSTIME", 13)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      /*                 ^                 */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#ifdef TIMER_ABSTIME
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        *iv_return = TIMER_ABSTIME;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        return PERL_constant_ISIV;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        return PERL_constant_NOTDEF;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    case 'O':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      if (memEQ(name, "CLOCK_HIGHRES", 13)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      /*                 ^                 */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#ifdef CLOCK_HIGHRES
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        *iv_return = CLOCK_HIGHRES;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        return PERL_constant_ISIV;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        return PERL_constant_NOTDEF;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return constant_13 (aTHX_ name, iv_return);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   case 14:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return constant_14 (aTHX_ name, iv_return);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/Watchdog.pm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/Watchdog.pm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -10,44 +10,44 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $TheEnd;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if ($Config{d_fork}) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "I am the main process $$, starting the watchdog process...";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# I am the main process $$, starting the watchdog process...\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     $watchdog_pid = fork();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (defined $watchdog_pid) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if ($watchdog_pid == 0) { # We are the kid, set up the watchdog.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       my $ppid = getppid();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      note "I am the watchdog process $$, sleeping for $waitfor seconds...";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      print("# I am the watchdog process $$, sleeping for $waitfor seconds...\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       sleep($waitfor - 2);    # Workaround for perlbug #49073
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       sleep(2);               # Wait for parent to exit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if (kill(0, $ppid)) {   # Check if parent still exists
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           warn "\n$0: overall time allowed for tests (${waitfor}s) exceeded!\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          note "Terminating main process $ppid...";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          print("Terminating main process $ppid...\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           kill('KILL', $ppid);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          note "This is the watchdog process $$, over and out.";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          print("# This is the watchdog process $$, over and out.\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       exit(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      note "The watchdog process $watchdog_pid launched, continuing testing...";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      print("# The watchdog process $watchdog_pid launched, continuing testing...\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       $TheEnd = time() + $waitfor;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   warn "$0: fork failed: $!\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "No watchdog process (need fork)";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# No watchdog process (need fork)\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- END {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if ($watchdog_pid) { # Only in the main process.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $left = $TheEnd - time();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note sprintf "I am the main process $$, terminating the watchdog process $watchdog_pid before it terminates me in %d seconds (testing took %d seconds).", $left, $waitfor - $left;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  printf("# I am the main process $$, terminating the watchdog process $watchdog_pid before it terminates me in %d seconds (testing took %d seconds).\n", $left, $waitfor - $left);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (kill(0, $watchdog_pid)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       local $? = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       my $kill = kill('KILL', $watchdog_pid); # We are done, the watchdog can go.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       wait();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      note sprintf "kill KILL $watchdog_pid = %d", $kill;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      printf("# kill KILL $watchdog_pid = %d\n", $kill);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   unlink("ktrace.out"); # Used in BSD system call tracing.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note "All done.";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  print("# All done.\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/alarm.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/alarm.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,6 +1,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use strict;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use Test::More 0.82 tests => 10;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 10;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use t::Watchdog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- BEGIN { require_ok "Time::HiRes"; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -29,12 +29,14 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my ($r, $i, $not, $ok);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    $not = "";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     $r = [Time::HiRes::gettimeofday()];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     $i = 5;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $oldaction;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if ($use_sigaction) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $oldaction = new POSIX::SigAction;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note sprintf "sigaction tick, ALRM = %d", &POSIX::SIGALRM;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  printf("# sigaction tick, ALRM = %d\n", &POSIX::SIGALRM);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   # Perl's deferred signals may be too wimpy to break through
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   # a restartable select(), so use POSIX::sigaction if available.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -44,7 +46,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    $oldaction)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       or die "Error setting SIGALRM handler with sigaction: $!\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note "SIG tick";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  print("# SIG tick\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $SIG{ALRM} = "tick";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -56,8 +58,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       Time::HiRes::alarm(0.3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       select (undef, undef, undef, 3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       my $ival = Time::HiRes::tv_interval ($r);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      note "Select returned! $i $ival";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      note abs($ival/3 - 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      print("# Select returned! $i $ival\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      printf("# %s\n", abs($ival/3 - 1));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       # Whether select() gets restarted after signals is
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       # implementation dependent.  If it is restarted, we
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       # will get about 3.3 seconds: 3 from the select, 0.3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -86,7 +88,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     sub tick {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $i--;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $ival = Time::HiRes::tv_interval ($r);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note "Tick! $i $ival";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  print("# Tick! $i $ival\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $exp = 0.3 * (5 - $i);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if ($exp == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       $not = "tick: divisor became zero";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -106,8 +108,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Time::HiRes::alarm(0); # can't cancel usig %SIG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# $not\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ok !$not;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note $not || $ok;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -126,7 +128,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # http://groups.google.com/group/perl.perl5.porters/browse_thread/thread/adaffaaf939b042e/20dafc298df737f0%2320dafc298df737f0?sa=X&oi=groupsr&start=0&num=3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # Perl changes [18765] and [18770], perl bug [perl #20920]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "Finding delay loop...";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# Finding delay loop...\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $T = 0.01;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $DelayN = 1024;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -137,7 +139,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    for ($i = 0; $i < $DelayN; $i++) { }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    my $t1 = Time::HiRes::time();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    my $dt = $t1 - $t0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--   note "N = $DelayN, t1 = $t1, t0 = $t0, dt = $dt";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   print("# N = $DelayN, t1 = $t1, t0 = $t0, dt = $dt\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    last N if $dt > $T;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    $DelayN *= 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      } while (1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -169,7 +171,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     $SIG{ALRM} = sub {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $a++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note "Alarm $a - ", Time::HiRes::time();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  printf("# Alarm $a - %s\n", Time::HiRes::time());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Time::HiRes::alarm(0) if $a >= $A; # Disarm the alarm.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $Delay->(2); # Try burning CPU at least for 2T seconds.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }; 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -204,18 +206,18 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $alrm = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $SIG{ALRM} = sub { $alrm++ };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $got = Time::HiRes::alarm(2.7);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ok $got == 0 or note $got;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  ok $got == 0 or print("# $got\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $t0 = Time::HiRes::time();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   1 while Time::HiRes::time() - $t0 <= 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $got = Time::HiRes::alarm(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ok $got > 0 && $got < 1.8 or note $got;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  ok $got > 0 && $got < 1.8 or print("# $got\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ok $alrm == 0 or note $alrm;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  ok $alrm == 0 or print("# $alrm\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $got = Time::HiRes::alarm(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ok $got == 0 or note $got;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  ok $got == 0 or print("# $got\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/clock.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/clock.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,6 +1,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use strict;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use Test::More 0.82 tests => 5;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 5;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use t::Watchdog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- BEGIN { require_ok "Time::HiRes"; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -13,10 +13,10 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return $@ eq '';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note sprintf "have_clock_gettime   = %d", &Time::HiRes::d_clock_gettime;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note sprintf "have_clock_getres    = %d", &Time::HiRes::d_clock_getres;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note sprintf "have_clock_nanosleep = %d", &Time::HiRes::d_clock_nanosleep;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note sprintf "have_clock           = %d", &Time::HiRes::d_clock;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+printf("# have_clock_gettime   = %d\n", &Time::HiRes::d_clock_gettime);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+printf("# have_clock_getres    = %d\n", &Time::HiRes::d_clock_getres);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+printf("# have_clock_nanosleep = %d\n", &Time::HiRes::d_clock_nanosleep);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+printf("# have_clock           = %d\n", &Time::HiRes::d_clock);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Ideally, we'd like to test that the timers are rather precise.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # However, if the system is busy, there are no guarantees on how
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -36,25 +36,25 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $ok = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  TRY: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for my $try (1..3) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      note "CLOCK_REALTIME: try = $try";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      print("# CLOCK_REALTIME: try = $try\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       my $t0 = Time::HiRes::clock_gettime(&CLOCK_REALTIME);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       my $T = 1.5;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       Time::HiRes::sleep($T);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       my $t1 = Time::HiRes::clock_gettime(&CLOCK_REALTIME);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if ($t0 > 0 && $t1 > $t0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          note "t1 = $t1, t0 = $t0";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          print("# t1 = $t1, t0 = $t0\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           my $dt = $t1 - $t0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           my $rt = abs(1 - $dt / $T);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          note "dt = $dt, rt = $rt";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          print("# dt = $dt, rt = $rt\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if ($rt <= 2 * $limit) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-               $ok = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-               last TRY;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          note "Error: t0 = $t0, t1 = $t1";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          print("# Error: t0 = $t0, t1 = $t1\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       my $r = rand() + rand();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      note sprintf "Sleeping for %.6f seconds...\n", $r;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      printf("# Sleeping for %.6f seconds...\n", $r);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       Time::HiRes::sleep($r);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -64,7 +64,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     skip "no clock_getres", 1 unless &Time::HiRes::d_clock_getres;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $tr = Time::HiRes::clock_getres();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    ok $tr > 0 or note "tr = $tr";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ok $tr > 0 or print("# tr = $tr\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -73,17 +73,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $s = 1.5e9;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $t = Time::HiRes::clock_nanosleep(&CLOCK_REALTIME, $s);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $r = abs(1 - $t / $s);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    ok $r < 2 * $limit or note "t = $t, r = $r";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ok $r < 2 * $limit or print("# t = $t, r = $r\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     skip "no clock", 1 unless &Time::HiRes::d_clock;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my @clock = Time::HiRes::clock();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "clock = @clock";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# clock = @clock\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     for my $i (1..3) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (my $j = 0; $j < 1e6; $j++) { }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   push @clock, Time::HiRes::clock();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note "clock = @clock";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  print("# clock = @clock\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ok $clock[0] >= 0 &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $clock[1] > $clock[0] &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/gettimeofday.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/gettimeofday.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -8,26 +8,26 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use Test::More 0.82 tests => 6;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 6;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use t::Watchdog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my @one = Time::HiRes::gettimeofday();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note 'gettimeofday returned ', 0+@one, ' args';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+printf("# gettimeofday returned %d args\n", 0+@one);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ok @one == 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--ok $one[0] > 850_000_000 or note "@one too small";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ok $one[0] > 850_000_000 or print("# @one too small\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sleep 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my @two = Time::HiRes::gettimeofday();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ok $two[0] > $one[0] || ($two[0] == $one[0] && $two[1] > $one[1])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  or note "@two is not greater than @one";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  or print("# @two is not greater than @one\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $f = Time::HiRes::time();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--ok $f > 850_000_000 or note "$f too small";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--ok $f - $two[0] < 2 or note "$f - $two[0] >= 2";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ok $f > 850_000_000 or print("# $f too small\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ok $f - $two[0] < 2 or print("# $f - $two[0] >= 2\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $r = [Time::HiRes::gettimeofday()];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $g = Time::HiRes::tv_interval $r;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--ok $g < 2 or note $g;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ok $g < 2 or print("# $g\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/itimer.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/itimer.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -25,7 +25,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use Test::More 0.82 tests => 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use t::Watchdog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $limit = 0.25; # 25% is acceptable slosh for testing timers
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -35,11 +35,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $SIG{VTALRM} = sub {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     $i ? $i-- : Time::HiRes::setitimer(&Time::HiRes::ITIMER_VIRTUAL, 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "Tick! $i ", Time::HiRes::tv_interval($r);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    printf("# Tick! $i %s\n", Time::HiRes::tv_interval($r));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };        
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note "setitimer: ", join(" ",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    Time::HiRes::setitimer(&Time::HiRes::ITIMER_VIRTUAL, 0.5, 0.4));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+printf("# setitimer: %s\n", join(" ",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+       Time::HiRes::setitimer(&Time::HiRes::ITIMER_VIRTUAL, 0.5, 0.4)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Assume interval timer granularity of $limit * 0.5 seconds.  Too bold?
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $virt = Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -47,19 +47,19 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    "ITIMER_VIRTUAL defined with sufficient granularity")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    or diag "virt=" . (defined $virt ? $virt : 'undef');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note "getitimer: ", join(" ",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+printf("# getitimer: %s\n", join(" ",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+       Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- while (Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $j;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     for (1..1000) { $j++ } # Can't be unbreakable, must test getitimer().
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note "getitimer: ", join(" ",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+printf("# getitimer: %s\n", join(" ",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+       Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $virt = Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note "at end, i=$i";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print("# at end, i=$i\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- is($virt, 0, "time left should be zero");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $SIG{VTALRM} = 'DEFAULT';
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/nanosleep.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/nanosleep.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -8,7 +8,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use Test::More 0.82 tests => 3;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 3;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use t::Watchdog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- eval { Time::HiRes::nanosleep(-5) };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -21,7 +21,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Time::HiRes::nanosleep(10_000_000);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $three = CORE::time;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ok $one == $two || $two == $three
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    or note "slept too long, $one $two $three";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    or print("# slept too long, $one $two $three\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     skip "no gettimeofday", 1 unless &Time::HiRes::d_gettimeofday;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -29,7 +29,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     Time::HiRes::nanosleep(500_000_000);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $f2 = Time::HiRes::time();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $d = $f2 - $f;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    ok $d > 0.4 && $d < 0.9 or note "slept $d secs $f to $f2";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ok $d > 0.4 && $d < 0.9 or print("# slept $d secs $f to $f2\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/sleep.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/sleep.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,6 +1,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use strict;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use Test::More 0.82 tests => 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use t::Watchdog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- BEGIN { require_ok "Time::HiRes"; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -26,12 +26,12 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     skip "no subsecond alarm", 2 unless $can_subsecond_alarm;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $f = Time::HiRes::time; 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "time...$f";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# time...$f\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ok 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $r = [Time::HiRes::gettimeofday()];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     Time::HiRes::sleep (0.5);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "sleep...", Time::HiRes::tv_interval($r);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    printf("# sleep...%s\n", Time::HiRes::tv_interval($r));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ok 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/stat.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/stat.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -13,7 +13,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use Test::More 0.82 tests => 43;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 43;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use t::Watchdog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my @atime;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -42,8 +42,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     is_deeply $lstat, $stat;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 while unlink $$;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note "mtime = @mtime";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note "atime = @atime";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print("# mtime = @mtime\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print("# atime = @atime\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $ai = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $mi = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $ss = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -63,7 +63,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $ss++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--note "ai = $ai, mi = $mi, ss = $ss";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print("# ai = $ai, mi = $mi, ss = $ss\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Need at least 75% of monotonical increase and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # 20% of subsecond results. Yes, this is guessing.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/time.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/time.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,6 +1,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use strict;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use Test::More 0.82 tests => 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use t::Watchdog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- BEGIN { require_ok "Time::HiRes"; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -16,8 +16,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # (CORE::time() may be rounding down, up, or closest),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     # but allow 10% of slop.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ok abs($s) / $n <= 1.10
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  or note "Time::HiRes::time() not close to CORE::time()";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "s = $s, n = $n, s/n = ", abs($s)/$n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  or print("# Time::HiRes::time() not close to CORE::time()\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    printf("# s = $s, n = $n, s/n = %s\n", abs($s)/$n);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/tv_interval.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/tv_interval.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,10 +1,10 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use strict;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use Test::More 0.82 tests => 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- BEGIN { require_ok "Time::HiRes"; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $f = Time::HiRes::tv_interval [5, 100_000], [10, 500_000];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--ok abs($f - 5.4) < 0.001 or note $f;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ok abs($f - 5.4) < 0.001 or print("# $f\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/ualarm.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/ualarm.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -8,7 +8,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use Test::More 0.82 tests => 12;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 12;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use t::Watchdog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use Config;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -24,13 +24,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     $tick = 0; Time::HiRes::ualarm(10_000); while ($tick == 0) { }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $three = CORE::time;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ok $one == $two || $two == $three
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  or note "slept too long, $one $two $three";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "tick = $tick, one = $one, two = $two, three = $three";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  or print("# slept too long, $one $two $three\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# tick = $tick, one = $one, two = $two, three = $three\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     $tick = 0; Time::HiRes::ualarm(10_000, 10_000); while ($tick < 3) { }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ok 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     Time::HiRes::ualarm(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "tick = $tick, one = $one, two = $two, three = $three";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# tick = $tick, one = $one, two = $two, three = $three\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- eval { Time::HiRes::ualarm(-4) };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -59,24 +59,24 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $alarmed = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   local $SIG{ ALRM } = sub { $alarmed++ };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $t0 = Time::HiRes::time();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note "t0 = $t0";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note "ualarm($n)";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  print("# t0 = $t0\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  print("# ualarm($n)\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Time::HiRes::ualarm($n); 1 while $alarmed == 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $t1 = Time::HiRes::time();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note "t1 = $t1";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  print("# t1 = $t1\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $dt = $t1 - $t0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note "dt = $dt";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  print("# dt = $dt\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $r = $dt / ($n/1e6);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note "r = $r";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  print("# r = $r\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $ok =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       ($n < 1_000_000 || # Too much noise.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ($r >= 0.8 && $r <= 1.6));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   last if $ok;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   my $nap = bellish(3, 15);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  note sprintf "Retrying in %.1f seconds...\n", $nap;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  printf("# Retrying in %.1f seconds...\n", $nap);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Time::HiRes::sleep($nap);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    ok $ok or note "ualarm($n) close enough";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ok $ok or print("# ualarm($n) close enough\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -93,12 +93,12 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } while $t1 - $t0 <= 0.3;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $got1 = Time::HiRes::ualarm(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "t0 = $t0";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "got0 = $got0";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "t1 = $t1";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "t1 - t0 = ", ($t1 - $t0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    note "got1 = $got1";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    ok $got0 == 0 or note $got0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# t0 = $t0\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# got0 = $got0\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# t1 = $t1\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    printf("# t1 - t0 = %s\n", ($t1 - $t0));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    print("# got1 = $got1\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ok $got0 == 0 or print("# $got0\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   skip "alarm interval exceeded", 2 if $t1 - $t0 >= 0.5;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   ok $got1 > 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -106,7 +106,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ok $got1 < 300_000;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $got2 = Time::HiRes::ualarm(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    ok $got2 == 0 or note $got2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ok $got2 == 0 or print("# $got2\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/usleep.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/usleep.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -8,7 +8,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--use Test::More 0.82 tests => 6;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 6;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use t::Watchdog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- eval { Time::HiRes::usleep(-2) };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -23,7 +23,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Time::HiRes::usleep(10_000);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- my $three = CORE::time;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ok $one == $two || $two == $three
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--or note "slept too long, $one $two $three";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+or print("# slept too long, $one $two $three\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     skip "no gettimeofday", 1 unless &Time::HiRes::d_gettimeofday;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -31,7 +31,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     Time::HiRes::usleep(500_000);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $f2 = Time::HiRes::time();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $d = $f2 - $f;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    ok $d > 0.4 && $d < 0.9 or note "slept $d secs $f to $f2";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ok $d > 0.4 && $d < 0.9 or print("# slept $d secs $f to $f2\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -39,7 +39,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $r = [ Time::HiRes::gettimeofday() ];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     Time::HiRes::sleep( 0.5 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     my $f = Time::HiRes::tv_interval $r;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    ok $f > 0.4 && $f < 0.9 or note "slept $f instead of 0.5 secs.";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ok $f > 0.4 && $f < 0.9 or print("# slept $f instead of 0.5 secs.\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -59,7 +59,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   skip $msg, 1 unless $td < $sleep * (1 + $limit);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ok $a < $limit or note $msg;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  ok $a < $limit or print("# $msg\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     $t0 = Time::HiRes::gettimeofday();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -71,7 +71,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     SKIP: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   skip $msg, 1 unless $td < $sleep * (1 + $limit);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ok $a < $limit or note $msg;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  ok $a < $limit or print("# $msg\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dist/Time-HiRes/t/utime.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dist/Time-HiRes/t/utime.t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -0,0 +1,101 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use strict;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+BEGIN {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    require Time::HiRes;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    require Test::More;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    unless(&Time::HiRes::d_hires_utime) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  Test::More::plan(skip_all => "no hires_utime");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    unless (&Time::HiRes::d_futimens) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  Test::More::plan(skip_all => "no futimens()");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    unless (&Time::HiRes::d_utimensat) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  Test::More::plan(skip_all => "no utimensat()");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if ($^O eq 'gnukfreebsd') {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  Test::More::plan(skip_all => "futimens() and utimensat() not working in $^O");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Test::More tests => 18;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use t::Watchdog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use File::Temp qw( tempfile );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+use Config;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# Cygwin timestamps have less precision.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+my $atime = $^O eq 'cygwin' ? 1.1111111 : 1.111111111;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+my $mtime = $^O eq 'cygwin' ? 2.2222222 : 2.222222222;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print "# utime \$fh\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  my ($fh, $filename) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  is Time::HiRes::utime($atime, $mtime, $fh), 1, "One file changed";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  my ($got_atime, $got_mtime) = ( Time::HiRes::stat($filename) )[8, 9];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  is $got_atime, $atime, "atime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  is $got_mtime, $mtime, "mtime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print "#utime \$filename\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  my ($fh, $filename) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  is Time::HiRes::utime($atime, $mtime, $filename), 1, "One file changed";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  my ($got_atime, $got_mtime) = ( Time::HiRes::stat($fh) )[8, 9];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  is $got_atime, $atime, "atime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  is $got_mtime, $mtime, "mtime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print "utime \$filename and \$fh\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  my ($fh1, $filename1) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  my ($fh2, $filename2) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  is Time::HiRes::utime($atime, $mtime, $filename1, $fh2), 2, "Two files changed";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          my ($got_atime, $got_mtime) = ( Time::HiRes::stat($fh1) )[8, 9];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          is $got_atime, $atime, "File 1 atime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          is $got_mtime, $mtime, "File 1 mtime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          my ($got_atime, $got_mtime) = ( Time::HiRes::stat($filename2) )[8, 9];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          is $got_atime, $atime, "File 2 atime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          is $got_mtime, $mtime, "File 2 mtime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print "# utime undef sets time to now\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  my ($fh1, $filename1) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  my ($fh2, $filename2) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  my $now = Time::HiRes::time;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  is Time::HiRes::utime(undef, undef, $filename1, $fh2), 2, "Two files changed";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          my ($got_atime, $got_mtime) = ( Time::HiRes::stat($fh1) )[8, 9];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          cmp_ok abs( $got_atime - $now), '<', 0.1, "File 1 atime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          cmp_ok abs( $got_mtime - $now), '<', 0.1, "File 1 mtime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          my ($got_atime, $got_mtime) = ( Time::HiRes::stat($filename2) )[8, 9];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          cmp_ok abs( $got_atime - $now), '<', 0.1, "File 2 atime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          cmp_ok abs( $got_mtime - $now), '<', 0.1, "File 2 mtime set correctly";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print "# negative atime dies\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  eval { Time::HiRes::utime(-4, $mtime) };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  like $@, qr/::utime\(-4, 2\.22222\): negative time not invented yet/,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          "negative time error";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+print "# negative mtime dies;\n";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  eval { Time::HiRes::utime($atime, -4) };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  like $@, qr/::utime\(1.11111, -4\): negative time not invented yet/,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          "negative time error";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+done_testing;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+1;
</span></pre><pre style='margin:0'>

</pre>