The CHECKOP macro was not invoked on some newly created ops
[p5sagit/p5-mst-13.2.git] / ext / POSIX / POSIX.pm
index b94de21..74a014f 100644 (file)
@@ -51,9 +51,12 @@ sub AUTOLOAD {
     goto &$AUTOLOAD;
 }
 
-sub POSIX::SigAction::new {
-    bless {HANDLER => $_[1], MASK => $_[2], FLAGS => $_[3] || 0}, $_[0];
-}
+package POSIX::SigAction;
+
+use AutoLoader 'AUTOLOAD';
+sub new { bless {HANDLER => $_[1], MASK => $_[2], FLAGS => $_[3] || 0}, $_[0] }
+
+package POSIX;
 
 1;
 __END__
@@ -279,6 +282,10 @@ sub fseek {
     redef "IO::Seekable::seek()";
 }
 
+sub fsync {
+    redef "IO::Handle::sync()";
+}
+
 sub ferror {
     redef "IO::Handle::error()";
 }
@@ -720,7 +727,7 @@ sub setvbuf {
 
 sub sleep {
     usage "sleep(seconds)" if @_ != 1;
-    CORE::sleep($_[0]);
+    $_[0] - CORE::sleep($_[0]);
 }
 
 sub unlink {
@@ -875,7 +882,7 @@ sub load_imports {
                _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION
                _exit access ctermid cuserid
                dup2 dup execl execle execlp execv execve execvp
-               fpathconf getcwd getegid geteuid getgid getgroups
+               fpathconf fsync getcwd getegid geteuid getgid getgroups
                getpid getuid isatty lseek pathconf pause setgid setpgid
                setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)],
 
@@ -948,3 +955,9 @@ for (values %EXPORT_TAGS) {
 
 require Exporter;
 }
+
+package POSIX::SigAction;
+
+sub handler { $_[0]->{HANDLER} = $_[1] if @_ > 1; $_[0]->{HANDLER} };
+sub mask    { $_[0]->{MASK}    = $_[1] if @_ > 1; $_[0]->{MASK} };
+sub flags   { $_[0]->{FLAGS}   = $_[1] if @_ > 1; $_[0]->{FLAGS} };