ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/staticperl/perl/ext/POSIX/POSIX.pm
Revision: 1.1
Committed: Thu Jun 30 14:27:04 2005 UTC (21 years, 3 months ago) by root
Branch: MAIN
CVS Tags: PERL-5-8-7, HEAD
Branch point for: PERL
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 package POSIX;
2    
3     our(@ISA, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD) = ();
4    
5     our $VERSION = "1.08";
6    
7     use AutoLoader;
8    
9     use XSLoader ();
10    
11     # Grandfather old foo_h form to new :foo_h form
12     my $loaded;
13    
14     sub import {
15     load_imports() unless $loaded++;
16     my $this = shift;
17     my @list = map { m/^\w+_h$/ ? ":$_" : $_ } @_;
18     local $Exporter::ExportLevel = 1;
19     Exporter::import($this,@list);
20     }
21    
22     sub croak { require Carp; goto &Carp::croak }
23     # declare usage to assist AutoLoad
24     sub usage;
25    
26     XSLoader::load 'POSIX', $VERSION;
27    
28     my %NON_CONSTS = (map {($_,1)}
29     qw(S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG WEXITSTATUS
30     WIFEXITED WIFSIGNALED WIFSTOPPED WSTOPSIG WTERMSIG));
31    
32     sub AUTOLOAD {
33     if ($AUTOLOAD =~ /::(_?[a-z])/) {
34     # require AutoLoader;
35     $AutoLoader::AUTOLOAD = $AUTOLOAD;
36     goto &AutoLoader::AUTOLOAD
37     }
38     local $! = 0;
39     my $constname = $AUTOLOAD;
40     $constname =~ s/.*:://;
41     if ($NON_CONSTS{$constname}) {
42     my ($val, $error) = &int_macro_int($constname, $_[0]);
43     croak $error if $error;
44     *$AUTOLOAD = sub { &int_macro_int($constname, $_[0]) };
45     } else {
46     my ($error, $val) = constant($constname);
47     croak $error if $error;
48     *$AUTOLOAD = sub { $val };
49     }
50    
51     goto &$AUTOLOAD;
52     }
53    
54     package POSIX::SigAction;
55    
56     use AutoLoader 'AUTOLOAD';
57     sub new { bless {HANDLER => $_[1], MASK => $_[2], FLAGS => $_[3] || 0, SAFE => 0}, $_[0] }
58    
59     package POSIX;
60    
61     1;
62     __END__
63    
64     sub usage {
65     my ($mess) = @_;
66     croak "Usage: POSIX::$mess";
67     }
68    
69     sub redef {
70     my ($mess) = @_;
71     croak "Use method $mess instead";
72     }
73    
74     sub unimpl {
75     my ($mess) = @_;
76     $mess =~ s/xxx//;
77     croak "Unimplemented: POSIX::$mess";
78     }
79    
80     sub assert {
81     usage "assert(expr)" if @_ != 1;
82     if (!$_[0]) {
83     croak "Assertion failed";
84     }
85     }
86    
87     sub tolower {
88     usage "tolower(string)" if @_ != 1;
89     lc($_[0]);
90     }
91    
92     sub toupper {
93     usage "toupper(string)" if @_ != 1;
94     uc($_[0]);
95     }
96    
97     sub closedir {
98     usage "closedir(dirhandle)" if @_ != 1;
99     CORE::closedir($_[0]);
100     }
101    
102     sub opendir {
103     usage "opendir(directory)" if @_ != 1;
104     my $dirhandle;
105     CORE::opendir($dirhandle, $_[0])
106     ? $dirhandle
107     : undef;
108     }
109    
110     sub readdir {
111     usage "readdir(dirhandle)" if @_ != 1;
112     CORE::readdir($_[0]);
113     }
114    
115     sub rewinddir {
116     usage "rewinddir(dirhandle)" if @_ != 1;
117     CORE::rewinddir($_[0]);
118     }
119    
120     sub errno {
121     usage "errno()" if @_ != 0;
122     $! + 0;
123     }
124    
125     sub creat {
126     usage "creat(filename, mode)" if @_ != 2;
127     &open($_[0], &O_WRONLY | &O_CREAT | &O_TRUNC, $_[1]);
128     }
129    
130     sub fcntl {
131     usage "fcntl(filehandle, cmd, arg)" if @_ != 3;
132     CORE::fcntl($_[0], $_[1], $_[2]);
133     }
134    
135     sub getgrgid {
136     usage "getgrgid(gid)" if @_ != 1;
137     CORE::getgrgid($_[0]);
138     }
139    
140     sub getgrnam {
141     usage "getgrnam(name)" if @_ != 1;
142     CORE::getgrnam($_[0]);
143     }
144    
145     sub atan2 {
146     usage "atan2(x,y)" if @_ != 2;
147     CORE::atan2($_[0], $_[1]);
148     }
149    
150     sub cos {
151     usage "cos(x)" if @_ != 1;
152     CORE::cos($_[0]);
153     }
154    
155     sub exp {
156     usage "exp(x)" if @_ != 1;
157     CORE::exp($_[0]);
158     }
159    
160     sub fabs {
161     usage "fabs(x)" if @_ != 1;
162     CORE::abs($_[0]);
163     }
164    
165     sub log {
166     usage "log(x)" if @_ != 1;
167     CORE::log($_[0]);
168     }
169    
170     sub pow {
171     usage "pow(x,exponent)" if @_ != 2;
172     $_[0] ** $_[1];
173     }
174    
175     sub sin {
176     usage "sin(x)" if @_ != 1;
177     CORE::sin($_[0]);
178     }
179    
180     sub sqrt {
181     usage "sqrt(x)" if @_ != 1;
182     CORE::sqrt($_[0]);
183     }
184    
185     sub getpwnam {
186     usage "getpwnam(name)" if @_ != 1;
187     CORE::getpwnam($_[0]);
188     }
189    
190     sub getpwuid {
191     usage "getpwuid(uid)" if @_ != 1;
192     CORE::getpwuid($_[0]);
193     }
194    
195     sub longjmp {
196     unimpl "longjmp() is C-specific: use die instead";
197     }
198    
199     sub setjmp {
200     unimpl "setjmp() is C-specific: use eval {} instead";
201     }
202    
203     sub siglongjmp {
204     unimpl "siglongjmp() is C-specific: use die instead";
205     }
206    
207     sub sigsetjmp {
208     unimpl "sigsetjmp() is C-specific: use eval {} instead";
209     }
210    
211     sub kill {
212     usage "kill(pid, sig)" if @_ != 2;
213     CORE::kill $_[1], $_[0];
214     }
215    
216     sub raise {
217     usage "raise(sig)" if @_ != 1;
218     CORE::kill $_[0], $$; # Is this good enough?
219     }
220    
221     sub offsetof {
222     unimpl "offsetof() is C-specific, stopped";
223     }
224    
225     sub clearerr {
226     redef "IO::Handle::clearerr()";
227     }
228    
229     sub fclose {
230     redef "IO::Handle::close()";
231     }
232    
233     sub fdopen {
234     redef "IO::Handle::new_from_fd()";
235     }
236    
237     sub feof {
238     redef "IO::Handle::eof()";
239     }
240    
241     sub fgetc {
242     redef "IO::Handle::getc()";
243     }
244    
245     sub fgets {
246     redef "IO::Handle::gets()";
247     }
248    
249     sub fileno {
250     redef "IO::Handle::fileno()";
251     }
252    
253     sub fopen {
254     redef "IO::File::open()";
255     }
256    
257     sub fprintf {
258     unimpl "fprintf() is C-specific--use printf instead";
259     }
260    
261     sub fputc {
262     unimpl "fputc() is C-specific--use print instead";
263     }
264    
265     sub fputs {
266     unimpl "fputs() is C-specific--use print instead";
267     }
268    
269     sub fread {
270     unimpl "fread() is C-specific--use read instead";
271     }
272    
273     sub freopen {
274     unimpl "freopen() is C-specific--use open instead";
275     }
276    
277     sub fscanf {
278     unimpl "fscanf() is C-specific--use <> and regular expressions instead";
279     }
280    
281     sub fseek {
282     redef "IO::Seekable::seek()";
283     }
284    
285     sub fsync {
286     redef "IO::Handle::sync()";
287     }
288    
289     sub ferror {
290     redef "IO::Handle::error()";
291     }
292    
293     sub fflush {
294     redef "IO::Handle::flush()";
295     }
296    
297     sub fgetpos {
298     redef "IO::Seekable::getpos()";
299     }
300    
301     sub fsetpos {
302     redef "IO::Seekable::setpos()";
303     }
304    
305     sub ftell {
306     redef "IO::Seekable::tell()";
307     }
308    
309     sub fwrite {
310     unimpl "fwrite() is C-specific--use print instead";
311     }
312    
313     sub getc {
314     usage "getc(handle)" if @_ != 1;
315     CORE::getc($_[0]);
316     }
317    
318     sub getchar {
319     usage "getchar()" if @_ != 0;
320     CORE::getc(STDIN);
321     }
322    
323     sub gets {
324     usage "gets()" if @_ != 0;
325     scalar <STDIN>;
326     }
327    
328     sub perror {
329     print STDERR "@_: " if @_;
330     print STDERR $!,"\n";
331     }
332    
333     sub printf {
334     usage "printf(pattern, args...)" if @_ < 1;
335     CORE::printf STDOUT @_;
336     }
337    
338     sub putc {
339     unimpl "putc() is C-specific--use print instead";
340     }
341    
342     sub putchar {
343     unimpl "putchar() is C-specific--use print instead";
344     }
345    
346     sub puts {
347     unimpl "puts() is C-specific--use print instead";
348     }
349    
350     sub remove {
351     usage "remove(filename)" if @_ != 1;
352     CORE::unlink($_[0]);
353     }
354    
355     sub rename {
356     usage "rename(oldfilename, newfilename)" if @_ != 2;
357     CORE::rename($_[0], $_[1]);
358     }
359    
360     sub rewind {
361     usage "rewind(filehandle)" if @_ != 1;
362     CORE::seek($_[0],0,0);
363     }
364    
365     sub scanf {
366     unimpl "scanf() is C-specific--use <> and regular expressions instead";
367     }
368    
369     sub sprintf {
370     usage "sprintf(pattern,args)" if @_ == 0;
371     CORE::sprintf(shift,@_);
372     }
373    
374     sub sscanf {
375     unimpl "sscanf() is C-specific--use regular expressions instead";
376     }
377    
378     sub tmpfile {
379     redef "IO::File::new_tmpfile()";
380     }
381    
382     sub ungetc {
383     redef "IO::Handle::ungetc()";
384     }
385    
386     sub vfprintf {
387     unimpl "vfprintf() is C-specific";
388     }
389    
390     sub vprintf {
391     unimpl "vprintf() is C-specific";
392     }
393    
394     sub vsprintf {
395     unimpl "vsprintf() is C-specific";
396     }
397    
398     sub abs {
399     usage "abs(x)" if @_ != 1;
400     CORE::abs($_[0]);
401     }
402    
403     sub atexit {
404     unimpl "atexit() is C-specific: use END {} instead";
405     }
406    
407     sub atof {
408     unimpl "atof() is C-specific, stopped";
409     }
410    
411     sub atoi {
412     unimpl "atoi() is C-specific, stopped";
413     }
414    
415     sub atol {
416     unimpl "atol() is C-specific, stopped";
417     }
418    
419     sub bsearch {
420     unimpl "bsearch() not supplied";
421     }
422    
423     sub calloc {
424     unimpl "calloc() is C-specific, stopped";
425     }
426    
427     sub div {
428     unimpl "div() is C-specific, use /, % and int instead";
429     }
430    
431     sub exit {
432     usage "exit(status)" if @_ != 1;
433     CORE::exit($_[0]);
434     }
435    
436     sub free {
437     unimpl "free() is C-specific, stopped";
438     }
439    
440     sub getenv {
441     usage "getenv(name)" if @_ != 1;
442     $ENV{$_[0]};
443     }
444    
445     sub labs {
446     unimpl "labs() is C-specific, use abs instead";
447     }
448    
449     sub ldiv {
450     unimpl "ldiv() is C-specific, use /, % and int instead";
451     }
452    
453     sub malloc {
454     unimpl "malloc() is C-specific, stopped";
455     }
456    
457     sub qsort {
458     unimpl "qsort() is C-specific, use sort instead";
459     }
460    
461     sub rand {
462     unimpl "rand() is non-portable, use Perl's rand instead";
463     }
464    
465     sub realloc {
466     unimpl "realloc() is C-specific, stopped";
467     }
468    
469     sub srand {
470     unimpl "srand()";
471     }
472    
473     sub system {
474     usage "system(command)" if @_ != 1;
475     CORE::system($_[0]);
476     }
477    
478     sub memchr {
479     unimpl "memchr() is C-specific, use index() instead";
480     }
481    
482     sub memcmp {
483     unimpl "memcmp() is C-specific, use eq instead";
484     }
485    
486     sub memcpy {
487     unimpl "memcpy() is C-specific, use = instead";
488     }
489    
490     sub memmove {
491     unimpl "memmove() is C-specific, use = instead";
492     }
493    
494     sub memset {
495     unimpl "memset() is C-specific, use x instead";
496     }
497    
498     sub strcat {
499     unimpl "strcat() is C-specific, use .= instead";
500     }
501    
502     sub strchr {
503     unimpl "strchr() is C-specific, use index() instead";
504     }
505    
506     sub strcmp {
507     unimpl "strcmp() is C-specific, use eq instead";
508     }
509    
510     sub strcpy {
511     unimpl "strcpy() is C-specific, use = instead";
512     }
513    
514     sub strcspn {
515     unimpl "strcspn() is C-specific, use regular expressions instead";
516     }
517    
518     sub strerror {
519     usage "strerror(errno)" if @_ != 1;
520     local $! = $_[0];
521     $! . "";
522     }
523    
524     sub strlen {
525     unimpl "strlen() is C-specific, use length instead";
526     }
527    
528     sub strncat {
529     unimpl "strncat() is C-specific, use .= instead";
530     }
531    
532     sub strncmp {
533     unimpl "strncmp() is C-specific, use eq instead";
534     }
535    
536     sub strncpy {
537     unimpl "strncpy() is C-specific, use = instead";
538     }
539    
540     sub strpbrk {
541     unimpl "strpbrk() is C-specific, stopped";
542     }
543    
544     sub strrchr {
545     unimpl "strrchr() is C-specific, use rindex() instead";
546     }
547    
548     sub strspn {
549     unimpl "strspn() is C-specific, stopped";
550     }
551    
552     sub strstr {
553     usage "strstr(big, little)" if @_ != 2;
554     CORE::index($_[0], $_[1]);
555     }
556    
557     sub strtok {
558     unimpl "strtok() is C-specific, stopped";
559     }
560    
561     sub chmod {
562     usage "chmod(mode, filename)" if @_ != 2;
563     CORE::chmod($_[0], $_[1]);
564     }
565    
566     sub fstat {
567     usage "fstat(fd)" if @_ != 1;
568     local *TMP;
569     CORE::open(TMP, "<&$_[0]"); # Gross.
570     my @l = CORE::stat(TMP);
571     CORE::close(TMP);
572     @l;
573     }
574    
575     sub mkdir {
576     usage "mkdir(directoryname, mode)" if @_ != 2;
577     CORE::mkdir($_[0], $_[1]);
578     }
579    
580     sub stat {
581     usage "stat(filename)" if @_ != 1;
582     CORE::stat($_[0]);
583     }
584    
585     sub umask {
586     usage "umask(mask)" if @_ != 1;
587     CORE::umask($_[0]);
588     }
589    
590     sub wait {
591     usage "wait()" if @_ != 0;
592     CORE::wait();
593     }
594    
595     sub waitpid {
596     usage "waitpid(pid, options)" if @_ != 2;
597     CORE::waitpid($_[0], $_[1]);
598     }
599    
600     sub gmtime {
601     usage "gmtime(time)" if @_ != 1;
602     CORE::gmtime($_[0]);
603     }
604    
605     sub localtime {
606     usage "localtime(time)" if @_ != 1;
607     CORE::localtime($_[0]);
608     }
609    
610     sub time {
611     usage "time()" if @_ != 0;
612     CORE::time;
613     }
614    
615     sub alarm {
616     usage "alarm(seconds)" if @_ != 1;
617     CORE::alarm($_[0]);
618     }
619    
620     sub chdir {
621     usage "chdir(directory)" if @_ != 1;
622     CORE::chdir($_[0]);
623     }
624    
625     sub chown {
626     usage "chown(uid, gid, filename)" if @_ != 3;
627     CORE::chown($_[0], $_[1], $_[2]);
628     }
629    
630     sub execl {
631     unimpl "execl() is C-specific, stopped";
632     }
633    
634     sub execle {
635     unimpl "execle() is C-specific, stopped";
636     }
637    
638     sub execlp {
639     unimpl "execlp() is C-specific, stopped";
640     }
641    
642     sub execv {
643     unimpl "execv() is C-specific, stopped";
644     }
645    
646     sub execve {
647     unimpl "execve() is C-specific, stopped";
648     }
649    
650     sub execvp {
651     unimpl "execvp() is C-specific, stopped";
652     }
653    
654     sub fork {
655     usage "fork()" if @_ != 0;
656     CORE::fork;
657     }
658    
659     sub getegid {
660     usage "getegid()" if @_ != 0;
661     $) + 0;
662     }
663    
664     sub geteuid {
665     usage "geteuid()" if @_ != 0;
666     $> + 0;
667     }
668    
669     sub getgid {
670     usage "getgid()" if @_ != 0;
671     $( + 0;
672     }
673    
674     sub getgroups {
675     usage "getgroups()" if @_ != 0;
676     my %seen;
677     grep(!$seen{$_}++, split(' ', $) ));
678     }
679    
680     sub getlogin {
681     usage "getlogin()" if @_ != 0;
682     CORE::getlogin();
683     }
684    
685     sub getpgrp {
686     usage "getpgrp()" if @_ != 0;
687     CORE::getpgrp;
688     }
689    
690     sub getpid {
691     usage "getpid()" if @_ != 0;
692     $$;
693     }
694    
695     sub getppid {
696     usage "getppid()" if @_ != 0;
697     CORE::getppid;
698     }
699    
700     sub getuid {
701     usage "getuid()" if @_ != 0;
702     $<;
703     }
704    
705     sub isatty {
706     usage "isatty(filehandle)" if @_ != 1;
707     -t $_[0];
708     }
709    
710     sub link {
711     usage "link(oldfilename, newfilename)" if @_ != 2;
712     CORE::link($_[0], $_[1]);
713     }
714    
715     sub rmdir {
716     usage "rmdir(directoryname)" if @_ != 1;
717     CORE::rmdir($_[0]);
718     }
719    
720     sub setbuf {
721     redef "IO::Handle::setbuf()";
722     }
723    
724     sub setvbuf {
725     redef "IO::Handle::setvbuf()";
726     }
727    
728     sub sleep {
729     usage "sleep(seconds)" if @_ != 1;
730     $_[0] - CORE::sleep($_[0]);
731     }
732    
733     sub unlink {
734     usage "unlink(filename)" if @_ != 1;
735     CORE::unlink($_[0]);
736     }
737    
738     sub utime {
739     usage "utime(filename, atime, mtime)" if @_ != 3;
740     CORE::utime($_[1], $_[2], $_[0]);
741     }
742    
743     sub load_imports {
744     %EXPORT_TAGS = (
745    
746     assert_h => [qw(assert NDEBUG)],
747    
748     ctype_h => [qw(isalnum isalpha iscntrl isdigit isgraph islower
749     isprint ispunct isspace isupper isxdigit tolower toupper)],
750    
751     dirent_h => [],
752    
753     errno_h => [qw(E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT
754     EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED
755     ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT
756     EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS
757     EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK
758     EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH
759     ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM
760     ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR
761     ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM
762     EPFNOSUPPORT EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE
763     ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT
764     ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY
765     EUSERS EWOULDBLOCK EXDEV errno)],
766    
767     fcntl_h => [qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK
768     F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK
769     O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK
770     O_RDONLY O_RDWR O_TRUNC O_WRONLY
771     creat
772     SEEK_CUR SEEK_END SEEK_SET
773     S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
774     S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID
775     S_IWGRP S_IWOTH S_IWUSR)],
776    
777     float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG
778     DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP
779     DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP
780     FLT_DIG FLT_EPSILON FLT_MANT_DIG
781     FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP
782     FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP
783     FLT_RADIX FLT_ROUNDS
784     LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG
785     LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP
786     LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP)],
787    
788     grp_h => [],
789    
790     limits_h => [qw( ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX
791     INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON
792     MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX
793     PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN
794     SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX
795     ULONG_MAX USHRT_MAX _POSIX_ARG_MAX _POSIX_CHILD_MAX
796     _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT
797     _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX
798     _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX
799     _POSIX_STREAM_MAX _POSIX_TZNAME_MAX)],
800    
801     locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES
802     LC_MONETARY LC_NUMERIC LC_TIME NULL
803     localeconv setlocale)],
804    
805     math_h => [qw(HUGE_VAL acos asin atan ceil cosh fabs floor fmod
806     frexp ldexp log10 modf pow sinh tan tanh)],
807    
808     pwd_h => [],
809    
810     setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)],
811    
812     signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK
813     SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM
814     SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL
815     SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN
816     SIGTTOU SIGUSR1 SIGUSR2 SIG_BLOCK SIG_DFL SIG_ERR
817     SIG_IGN SIG_SETMASK SIG_UNBLOCK raise sigaction signal
818     sigpending sigprocmask sigsuspend)],
819    
820     stdarg_h => [],
821    
822     stddef_h => [qw(NULL offsetof)],
823    
824     stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid
825     L_tmpname NULL SEEK_CUR SEEK_END SEEK_SET
826     STREAM_MAX TMP_MAX stderr stdin stdout
827     clearerr fclose fdopen feof ferror fflush fgetc fgetpos
828     fgets fopen fprintf fputc fputs fread freopen
829     fscanf fseek fsetpos ftell fwrite getchar gets
830     perror putc putchar puts remove rewind
831     scanf setbuf setvbuf sscanf tmpfile tmpnam
832     ungetc vfprintf vprintf vsprintf)],
833    
834     stdlib_h => [qw(EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX NULL RAND_MAX
835     abort atexit atof atoi atol bsearch calloc div
836     free getenv labs ldiv malloc mblen mbstowcs mbtowc
837     qsort realloc strtod strtol strtoul wcstombs wctomb)],
838    
839     string_h => [qw(NULL memchr memcmp memcpy memmove memset strcat
840     strchr strcmp strcoll strcpy strcspn strerror strlen
841     strncat strncmp strncpy strpbrk strrchr strspn strstr
842     strtok strxfrm)],
843    
844     sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
845     S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG
846     S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR
847     fstat mkfifo)],
848    
849     sys_times_h => [],
850    
851     sys_types_h => [],
852    
853     sys_utsname_h => [qw(uname)],
854    
855     sys_wait_h => [qw(WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED
856     WNOHANG WSTOPSIG WTERMSIG WUNTRACED)],
857    
858     termios_h => [qw( B0 B110 B1200 B134 B150 B1800 B19200 B200 B2400
859     B300 B38400 B4800 B50 B600 B75 B9600 BRKINT CLOCAL
860     CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB ECHO ECHOE ECHOK
861     ECHONL HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR
862     INLCR INPCK ISIG ISTRIP IXOFF IXON NCCS NOFLSH OPOST
863     PARENB PARMRK PARODD TCIFLUSH TCIOFF TCIOFLUSH TCION
864     TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW
865     TOSTOP VEOF VEOL VERASE VINTR VKILL VMIN VQUIT VSTART
866     VSTOP VSUSP VTIME
867     cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcdrain
868     tcflow tcflush tcgetattr tcsendbreak tcsetattr )],
869    
870     time_h => [qw(CLK_TCK CLOCKS_PER_SEC NULL asctime clock ctime
871     difftime mktime strftime tzset tzname)],
872    
873     unistd_h => [qw(F_OK NULL R_OK SEEK_CUR SEEK_END SEEK_SET
874     STDERR_FILENO STDIN_FILENO STDOUT_FILENO W_OK X_OK
875     _PC_CHOWN_RESTRICTED _PC_LINK_MAX _PC_MAX_CANON
876     _PC_MAX_INPUT _PC_NAME_MAX _PC_NO_TRUNC _PC_PATH_MAX
877     _PC_PIPE_BUF _PC_VDISABLE _POSIX_CHOWN_RESTRICTED
878     _POSIX_JOB_CONTROL _POSIX_NO_TRUNC _POSIX_SAVED_IDS
879     _POSIX_VDISABLE _POSIX_VERSION _SC_ARG_MAX
880     _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL
881     _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS
882     _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION
883     _exit access ctermid cuserid
884     dup2 dup execl execle execlp execv execve execvp
885     fpathconf fsync getcwd getegid geteuid getgid getgroups
886     getpid getuid isatty lseek pathconf pause setgid setpgid
887     setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)],
888    
889     utime_h => [],
890    
891     );
892    
893     # Exporter::export_tags();
894     for (values %EXPORT_TAGS) {
895     push @EXPORT, @$_;
896     }
897    
898     @EXPORT_OK = qw(
899     abs
900     alarm
901     atan2
902     chdir
903     chmod
904     chown
905     close
906     closedir
907     cos
908     exit
909     exp
910     fcntl
911     fileno
912     fork
913     getc
914     getgrgid
915     getgrnam
916     getlogin
917     getpgrp
918     getppid
919     getpwnam
920     getpwuid
921     gmtime
922     isatty
923     kill
924     lchown
925     link
926     localtime
927     log
928     mkdir
929     nice
930     open
931     opendir
932     pipe
933     printf
934     rand
935     read
936     readdir
937     rename
938     rewinddir
939     rmdir
940     sin
941     sleep
942     sprintf
943     sqrt
944     srand
945     stat
946     system
947     time
948     times
949     umask
950     unlink
951     utime
952     wait
953     waitpid
954     write
955     );
956    
957     require Exporter;
958     }
959    
960     package POSIX::SigAction;
961    
962     sub handler { $_[0]->{HANDLER} = $_[1] if @_ > 1; $_[0]->{HANDLER} };
963     sub mask { $_[0]->{MASK} = $_[1] if @_ > 1; $_[0]->{MASK} };
964     sub flags { $_[0]->{FLAGS} = $_[1] if @_ > 1; $_[0]->{FLAGS} };
965     sub safe { $_[0]->{SAFE} = $_[1] if @_ > 1; $_[0]->{SAFE} };