Devel-PatchPerl
view release on metacpan or search on metacpan
lib/Devel/PatchPerl.pm view on Meta::CPAN
if ((IV)useconds < 0)
- croak("Time::HiRes::sleep(%"NVgf"): internal error: useconds < 0 (unsigned %"UVuf" signed %"IVdf")", seconds, useconds, (IV)useconds);
+ croak("Time::HiRes::sleep(%" NVgf
+ "): internal error: useconds < 0 (unsigned %" UVuf
+ " signed %" IVdf ")",
+ seconds, useconds, (IV)useconds);
}
usleep(useconds);
} else
- croak("Time::HiRes::sleep(%"NVgf"): negative time not invented yet", seconds);
+ croak("Time::HiRes::sleep(%" NVgf
+ "): negative time not invented yet", seconds);
} else
PerlProc_pause();
gettimeofday(&Tb, NULL);
@@ -1097,7 +1150,9 @@ ualarm(useconds,uinterval=0)
}
#else
if (useconds >= IV_1E6 || uinterval >= IV_1E6)
- croak("Time::HiRes::ualarm(%d, %d): useconds or uinterval equal to or more than %"IVdf, useconds, uinterval, IV_1E6);
+ croak("Time::HiRes::ualarm(%d, %d): useconds or uinterval"
+ " equal to or more than %" IVdf,
+ useconds, uinterval, IV_1E6);
RETVAL = ualarm(useconds, uinterval);
#endif
@@ -1110,7 +1165,8 @@ alarm(seconds,interval=0)
NV interval
CODE:
if (seconds < 0.0 || interval < 0.0)
- croak("Time::HiRes::alarm(%"NVgf", %"NVgf"): negative time not invented yet", seconds, interval);
+ croak("Time::HiRes::alarm(%" NVgf ", %" NVgf
+ "): negative time not invented yet", seconds, interval);
{
IV iseconds = (IV)seconds;
IV iinterval = (IV)interval;
@@ -1118,7 +1174,9 @@ alarm(seconds,interval=0)
NV finterval = interval - iinterval;
IV useconds, uinterval;
if (fseconds >= 1.0 || finterval >= 1.0)
- croak("Time::HiRes::alarm(%"NVgf", %"NVgf"): seconds or interval too large to split correctly", seconds, interval);
+ croak("Time::HiRes::alarm(%" NVgf ", %" NVgf
+ "): seconds or interval too large to split correctly",
+ seconds, interval);
useconds = IV_1E6 * fseconds;
uinterval = IV_1E6 * finterval;
#if defined(HAS_SETITIMER) && defined(ITIMER_REAL)
@@ -1138,7 +1196,9 @@ alarm(seconds,interval=0)
}
#else
if (iseconds || iinterval)
- croak("Time::HiRes::alarm(%"NVgf", %"NVgf"): seconds or interval equal to or more than 1.0 ", seconds, interval);
+ croak("Time::HiRes::alarm(%" NVgf ", %" NVgf
+ "): seconds or interval equal to or more than 1.0 ",
+ seconds, interval);
RETVAL = (NV)ualarm( useconds, uinterval ) / NV_1E6;
#endif
}
@@ -1266,7 +1326,9 @@ setitimer(which, seconds, interval = 0)
struct itimerval oldit;
PPCODE:
if (seconds < 0.0 || interval < 0.0)
- croak("Time::HiRes::setitimer(%"IVdf", %"NVgf", %"NVgf"): negative time not invented yet", (IV)which, seconds, interval);
+ croak("Time::HiRes::setitimer(%" IVdf ", %" NVgf ", %" NVgf
+ "): negative time not invented yet",
+ (IV)which, seconds, interval);
newit.it_value.tv_sec = (IV)seconds;
newit.it_value.tv_usec =
(IV)((seconds - (NV)newit.it_value.tv_sec) * NV_1E6);
@@ -1317,11 +1379,89 @@ getitimer(which)
#endif /* #if defined(HAS_GETITIMER) && defined(HAS_SETITIMER) */
+#if defined(TIME_HIRES_UTIME)
+
+I32
+utime(accessed, modified, ...)
+PROTOTYPE: $$@
+ PREINIT:
+ SV* accessed;
+ SV* modified;
+ SV* file;
+
+ struct timespec utbuf[2];
+ struct timespec *utbufp = utbuf;
+ int tot;
+
+ CODE:
+ accessed = ST(0);
+ modified = ST(1);
+ items -= 2;
+ tot = 0;
+
+ if ( accessed == &PL_sv_undef && modified == &PL_sv_undef )
+ utbufp = NULL;
+ else {
+ if (SvNV(accessed) < 0.0 || SvNV(modified) < 0.0)
+ croak("Time::HiRes::utime(%" NVgf ", %" NVgf
+ "): negative time not invented yet",
+ SvNV(accessed), SvNV(modified));
+ Zero(&utbuf, sizeof utbuf, char);
+ utbuf[0].tv_sec = (Time_t)SvNV(accessed); /* time accessed */
+ utbuf[0].tv_nsec = (long)( ( SvNV(accessed) - utbuf[0].tv_sec ) * 1e9 );
+ utbuf[1].tv_sec = (Time_t)SvNV(modified); /* time modified */
+ utbuf[1].tv_nsec = (long)( ( SvNV(modified) - utbuf[1].tv_sec ) * 1e9 );
+ }
+
+ while (items > 0) {
+ file = POPs; items--;
+
+ if (SvROK(file) && GvIO(SvRV(file)) && IoIFP(sv_2io(SvRV(file)))) {
+ int fd = PerlIO_fileno(IoIFP(sv_2io(file)));
+ if (fd < 0)
+ SETERRNO(EBADF,RMS_IFI);
+ else
+#ifdef HAS_FUTIMENS
+ if (futimens(fd, utbufp) == 0)
+ tot++;
+#else /* HAS_FUTIMES */
+ croak("futimens unimplemented in this platform");
+#endif /* HAS_FUTIMES */
( run in 1.834 second using v1.01-cache-2.11-cpan-5511b514fd6 )