Следующие изменения работают. Это по существу содержит изменения как модуля HiRes.pm, так и файла xs.
В HiRes.pm
sub lstat {
my @lstatvalues = CORE::lstat(shift);
my @nanosecvalues = Time::HiRes::lstatimplementation( $lstatvalues[8], $lstatvalues[9], $lstatvalues[10]);
( $lstatvalues[8], $lstatvalues[9], $lstatvalues[10] ) = ( $nanosecvalues[0], $nanosecvalues[1], $nanosecvalues[2]);
return @lstatvalues;
}
Также добавлен lstat в список @EXPORT_OK.
В HiRes.xs
void
lstatimplementation(...)
PPCODE:
UV atime = SvUV( ST( 0 ) );
UV mtime = SvUV( ST( 1 ) );
UV ctime = SvUV( ST( 2 ) );
UV atime_nsec;
UV mtime_nsec;
UV ctime_nsec;
hrstatns(atime, mtime, ctime,
&atime_nsec, &mtime_nsec, &ctime_nsec);
if (atime_nsec)
XPUSHs( sv_2mortal(newSVnv(atime + 1e-9 * (NV) atime_nsec)));
if (mtime_nsec)
XPUSHs( sv_2mortal(newSVnv(mtime + 1e-9 * (NV) mtime_nsec)));
if (ctime_nsec)
XPUSHs( sv_2mortal(newSVnv(ctime + 1e-9 * (NV) ctime_nsec)));