This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
import Time-HiRes v1.9727_02 from CPAN
authorRicardo Signes <rjbs@cpan.org>
Fri, 4 Sep 2015 01:25:32 +0000 (21:25 -0400)
committerRicardo Signes <rjbs@cpan.org>
Fri, 4 Sep 2015 01:32:17 +0000 (21:32 -0400)
Normally I would wait for a stable release, which would require
waiting for CPAN Testers results, but CPAN Testers has been in
a bad way for a few weeks now, so I am taking a bit of a detour.

Porting/Maintainers.pl
cpan/Time-HiRes/HiRes.pm
cpan/Time-HiRes/HiRes.xs
cpan/Time-HiRes/Makefile.PL
cpan/Time-HiRes/t/itimer.t

index 39b5d8d..6262432 100755 (executable)
@@ -1217,7 +1217,7 @@ use File::Glob qw(:case);
     },
 
     'Time::HiRes' => {
-        'DISTRIBUTION' => 'ZEFRAM/Time-HiRes-1.9726.tar.gz',
+        'DISTRIBUTION' => 'RJBS/Time-HiRes-1.9727_02.tar.gz',
         'FILES'        => q[cpan/Time-HiRes],
     },
 
index cf64bc1..9c944b8 100644 (file)
@@ -23,7 +23,7 @@ our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval
                 stat lstat
                );
 
-our $VERSION = '1.9726';
+our $VERSION = '1.9727_02';
 our $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
@@ -510,7 +510,7 @@ modglobal hash:
 
   name             C prototype
   ---------------  ----------------------
-  Time::NVtime     double (*)()
+  Time::NVtime     NV (*)()
   Time::U2time     void (*)(pTHX_ UV ret[2])
 
 Both functions return equivalent information (like C<gettimeofday>)
@@ -521,12 +521,12 @@ VMS have emulations for it.)
 
 Here is an example of using C<NVtime> from C:
 
-  double (*myNVtime)(); /* Returns -1 on failure. */
+  NV (*myNVtime)(); /* Returns -1 on failure. */
   SV **svp = hv_fetch(PL_modglobal, "Time::NVtime", 12, 0);
   if (!svp)         croak("Time::HiRes is required");
   if (!SvIOK(*svp)) croak("Time::NVtime isn't a function pointer");
-  myNVtime = INT2PTR(double(*)(), SvIV(*svp));
-  printf("The current time is: %f\n", (*myNVtime)());
+  myNVtime = INT2PTR(NV(*)(), SvIV(*svp));
+  printf("The current time is: %" NVff "\n", (*myNVtime)());
 
 =head1 DIAGNOSTICS
 
index 96640e9..dd2effa 100644 (file)
@@ -731,7 +731,7 @@ myNVtime()
 static void
 hrstatns(UV *atime_nsec, UV *mtime_nsec, UV *ctime_nsec)
 {
-  dTHXR;
+  dTHX;
 #if TIME_HIRES_STAT == 1
   *atime_nsec = PL_statcache.st_atimespec.tv_nsec;
   *mtime_nsec = PL_statcache.st_mtimespec.tv_nsec;
@@ -1109,6 +1109,12 @@ setitimer(which, seconds, interval = 0)
        newit.it_interval.tv_sec  = (IV)interval;
        newit.it_interval.tv_usec =
          (IV)((interval - (NV)newit.it_interval.tv_sec) * NV_1E6);
+        /* on some platforms the 1st arg to setitimer is an enum, which
+         * causes -Wc++-compat to complain about passing an int instead
+         */
+#ifdef GCC_DIAG_IGNORE
+        GCC_DIAG_IGNORE(-Wc++-compat);
+#endif
        if (setitimer(which, &newit, &oldit) == 0) {
          EXTEND(sp, 1);
          PUSHs(sv_2mortal(newSVnv(TV2NV(oldit.it_value))));
@@ -1117,6 +1123,9 @@ setitimer(which, seconds, interval = 0)
            PUSHs(sv_2mortal(newSVnv(TV2NV(oldit.it_interval))));
          }
        }
+#ifdef GCC_DIAG_RESTORE
+        GCC_DIAG_RESTORE;
+#endif
 
 void
 getitimer(which)
@@ -1124,6 +1133,12 @@ getitimer(which)
     PREINIT:
        struct itimerval nowit;
     PPCODE:
+        /* on some platforms the 1st arg to getitimer is an enum, which
+         * causes -Wc++-compat to complain about passing an int instead
+         */
+#ifdef GCC_DIAG_IGNORE
+        GCC_DIAG_IGNORE(-Wc++-compat);
+#endif
        if (getitimer(which, &nowit) == 0) {
          EXTEND(sp, 1);
          PUSHs(sv_2mortal(newSVnv(TV2NV(nowit.it_value))));
@@ -1132,6 +1147,9 @@ getitimer(which)
            PUSHs(sv_2mortal(newSVnv(TV2NV(nowit.it_interval))));
          }
        }
+#ifdef GCC_DIAG_RESTORE
+        GCC_DIAG_RESTORE;
+#endif
 
 #endif /* #if defined(HAS_GETITIMER) && defined(HAS_SETITIMER) */
 
@@ -1247,7 +1265,7 @@ clock()
        clock_t clocks;
     CODE:
        clocks = clock();
-       RETVAL = clocks == -1 ? -1 : (NV)clocks / (NV)CLOCKS_PER_SEC;
+       RETVAL = clocks == (clock_t) -1 ? (clock_t) -1 : (NV)clocks / (NV)CLOCKS_PER_SEC;
 
     OUTPUT:
        RETVAL
@@ -1284,7 +1302,7 @@ PROTOTYPE: ;$
        fakeop.op_flags = GIMME_V == G_ARRAY ? OPf_WANT_LIST :
                GIMME_V == G_SCALAR ? OPf_WANT_SCALAR : OPf_WANT_VOID;
        PL_op = &fakeop;
-       (void)fakeop.op_ppaddr(aTHXR);
+       (void)fakeop.op_ppaddr(aTHX);
        SPAGAIN;
        LEAVE;
        nret = SP+1 - &ST(0);
index 394cb91..6904b12 100644 (file)
@@ -153,8 +153,10 @@ __EOD__
            if ( $ok && exists $args{run} && $args{run}) {
                my $tmp_exe =
                    File::Spec->catfile(File::Spec->curdir, $tmp_exe);
+               my @run = $tmp_exe;
+               unshift @run, $Config{run} if $Config{run} && -e $Config{run};
                printf "Running $tmp_exe..." if $VERBOSE;
-               if (system($tmp_exe) == 0) {
+               if (system(@run) == 0) {
                    $ok = 1;
                } else {
                    $ok = 0;
index a9ef80d..9eb2b93 100644 (file)
@@ -43,7 +43,9 @@ note "setitimer: ", join(" ",
 
 # Assume interval timer granularity of $limit * 0.5 seconds.  Too bold?
 my $virt = Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL);
-ok defined $virt && abs($virt / 0.5) - 1 < $limit;
+ok(defined $virt && abs($virt / 0.5) - 1 < $limit,
+   "ITIMER_VIRTUAL defined with sufficient granularity")
+   or diag "virt=" . (defined $virt ? $virt : 'undef');
 
 note "getitimer: ", join(" ",
     Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL));
@@ -57,7 +59,8 @@ note "getitimer: ", join(" ",
     Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL));
 
 $virt = Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL);
-ok defined $virt && $virt == 0;
+note "at end, i=$i";
+is($virt, 0, "time left should be zero");
 
 $SIG{VTALRM} = 'DEFAULT';