summaryrefslogtreecommitdiffstats
path: root/linux-x86/lib/perl-base/POSIX.pm
diff options
context:
space:
mode:
Diffstat (limited to 'linux-x86/lib/perl-base/POSIX.pm')
-rw-r--r--linux-x86/lib/perl-base/POSIX.pm561
1 files changed, 0 insertions, 561 deletions
diff --git a/linux-x86/lib/perl-base/POSIX.pm b/linux-x86/lib/perl-base/POSIX.pm
deleted file mode 100644
index e187b3b..0000000
--- a/linux-x86/lib/perl-base/POSIX.pm
+++ /dev/null
@@ -1,561 +0,0 @@
-package POSIX;
-use strict;
-use warnings;
-
-our ($AUTOLOAD, %SIGRT);
-
-our $VERSION = '1.76';
-
-require XSLoader;
-
-use Fcntl qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK F_SETFD
- F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK O_ACCMODE O_APPEND
- O_CREAT O_EXCL O_NOCTTY O_NONBLOCK O_RDONLY O_RDWR O_TRUNC
- O_WRONLY SEEK_CUR SEEK_END SEEK_SET
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG
- S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISGID S_ISUID
- S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR);
-
-my $loaded;
-
-sub croak { require Carp; goto &Carp::croak }
-sub usage { croak "Usage: POSIX::$_[0]" }
-
-XSLoader::load();
-
-my %replacement = (
- L_tmpnam => undef,
- atexit => 'END {}',
- atof => undef,
- atoi => undef,
- atol => undef,
- bsearch => \'not supplied',
- calloc => undef,
- clearerr => 'IO::Handle::clearerr',
- div => '/, % and int',
- execl => undef,
- execle => undef,
- execlp => undef,
- execv => undef,
- execve => undef,
- execvp => undef,
- fclose => 'IO::Handle::close',
- fdopen => 'IO::Handle::new_from_fd',
- feof => 'IO::Handle::eof',
- ferror => 'IO::Handle::error',
- fflush => 'IO::Handle::flush',
- fgetc => 'IO::Handle::getc',
- fgetpos => 'IO::Seekable::getpos',
- fgets => 'IO::Handle::gets',
- fileno => 'IO::Handle::fileno',
- fopen => 'IO::File::open',
- fprintf => 'printf',
- fputc => 'print',
- fputs => 'print',
- fread => 'read',
- free => undef,
- freopen => 'open',
- fscanf => '<> and regular expressions',
- fseek => 'IO::Seekable::seek',
- fsetpos => 'IO::Seekable::setpos',
- fsync => 'IO::Handle::sync',
- ftell => 'IO::Seekable::tell',
- fwrite => 'print',
- labs => 'abs',
- ldiv => '/, % and int',
- longjmp => 'die',
- malloc => undef,
- memchr => 'index()',
- memcmp => 'eq',
- memcpy => '=',
- memmove => '=',
- memset => 'x',
- offsetof => undef,
- putc => 'print',
- putchar => 'print',
- puts => 'print',
- qsort => 'sort',
- rand => \'non-portable, use Perl\'s rand instead',
- realloc => undef,
- scanf => '<> and regular expressions',
- setbuf => 'IO::Handle::setbuf',
- setjmp => 'eval {}',
- setvbuf => 'IO::Handle::setvbuf',
- siglongjmp => 'die',
- sigsetjmp => 'eval {}',
- srand => \'not supplied; refer to Perl\'s srand documentation',
- sscanf => 'regular expressions',
- strcat => '.=',
- strchr => 'index()',
- strcmp => 'eq',
- strcpy => '=',
- strcspn => 'regular expressions',
- strlen => 'length',
- strncat => '.=',
- strncmp => 'eq',
- strncpy => '=',
- strpbrk => undef,
- strrchr => 'rindex()',
- strspn => undef,
- strtok => undef,
- tmpfile => 'IO::File::new_tmpfile',
- tmpnam => 'use File::Temp',
- ungetc => 'IO::Handle::ungetc',
- vfprintf => undef,
- vprintf => undef,
- vsprintf => undef,
-);
-
-my %reimpl = (
- abs => 'x => CORE::abs($_[0])',
- alarm => 'seconds => CORE::alarm($_[0])',
- assert => 'expr => croak "Assertion failed" if !$_[0]',
- atan2 => 'x, y => CORE::atan2($_[0], $_[1])',
- chdir => 'directory => CORE::chdir($_[0])',
- chmod => 'mode, filename => CORE::chmod($_[0], $_[1])',
- chown => 'uid, gid, filename => CORE::chown($_[0], $_[1], $_[2])',
- closedir => 'dirhandle => CORE::closedir($_[0])',
- cos => 'x => CORE::cos($_[0])',
- creat => 'filename, mode => &open($_[0], &O_WRONLY | &O_CREAT | &O_TRUNC, $_[1])',
- errno => '$! + 0',
- exit => 'status => CORE::exit($_[0])',
- exp => 'x => CORE::exp($_[0])',
- fabs => 'x => CORE::abs($_[0])',
- fcntl => 'filehandle, cmd, arg => CORE::fcntl($_[0], $_[1], $_[2])',
- fork => 'CORE::fork',
- fstat => 'fd => CORE::open my $dup, "<&", $_[0]; CORE::stat($dup)', # Gross.
- getc => 'handle => CORE::getc($_[0])',
- getchar => 'CORE::getc(STDIN)',
- getegid => '$) + 0',
- getenv => 'name => $ENV{$_[0]}',
- geteuid => '$> + 0',
- getgid => '$( + 0',
- getgrgid => 'gid => CORE::getgrgid($_[0])',
- getgrnam => 'name => CORE::getgrnam($_[0])',
- getgroups => 'my %seen; grep !$seen{$_}++, split " ", $)',
- getlogin => 'CORE::getlogin()',
- getpgrp => 'CORE::getpgrp',
- getpid => '$$',
- getppid => 'CORE::getppid',
- getpwnam => 'name => CORE::getpwnam($_[0])',
- getpwuid => 'uid => CORE::getpwuid($_[0])',
- gets => 'scalar <STDIN>',
- getuid => '$<',
- gmtime => 'time => CORE::gmtime($_[0])',
- isatty => 'filehandle => -t $_[0]',
- kill => 'pid, sig => CORE::kill $_[1], $_[0]',
- link => 'oldfilename, newfilename => CORE::link($_[0], $_[1])',
- localtime => 'time => CORE::localtime($_[0])',
- log => 'x => CORE::log($_[0])',
- mkdir => 'directoryname, mode => CORE::mkdir($_[0], $_[1])',
- opendir => 'directory => my $dh; CORE::opendir($dh, $_[0]) ? $dh : undef',
- pow => 'x, exponent => $_[0] ** $_[1]',
- raise => 'sig => CORE::kill $_[0], $$; # Is this good enough',
- readdir => 'dirhandle => CORE::readdir($_[0])',
- remove => 'filename => (-d $_[0]) ? CORE::rmdir($_[0]) : CORE::unlink($_[0])',
- rename => 'oldfilename, newfilename => CORE::rename($_[0], $_[1])',
- rewind => 'filehandle => CORE::seek($_[0],0,0)',
- rewinddir => 'dirhandle => CORE::rewinddir($_[0])',
- rmdir => 'directoryname => CORE::rmdir($_[0])',
- sin => 'x => CORE::sin($_[0])',
- sqrt => 'x => CORE::sqrt($_[0])',
- stat => 'filename => CORE::stat($_[0])',
- strerror => 'errno => BEGIN { local $!; require locale; locale->import} my $e = $_[0] + 0; local $!; $! = $e; "$!"',
- strstr => 'big, little => CORE::index($_[0], $_[1])',
- system => 'command => CORE::system($_[0])',
- time => 'CORE::time',
- umask => 'mask => CORE::umask($_[0])',
- unlink => 'filename => CORE::unlink($_[0])',
- utime => 'filename, atime, mtime => CORE::utime($_[1], $_[2], $_[0])',
- wait => 'CORE::wait()',
- waitpid => 'pid, options => CORE::waitpid($_[0], $_[1])',
-);
-
-sub import {
- my $pkg = shift;
-
- load_imports() unless $loaded++;
-
- # Grandfather old foo_h form to new :foo_h form
- s/^(?=\w+_h$)/:/ for my @list = @_;
-
- my @unimpl = sort grep { exists $replacement{$_} } @list;
- if (@unimpl) {
- for my $u (@unimpl) {
- warn "Unimplemented: POSIX::$u(): ", unimplemented_message($u);
- }
- croak(sprintf("Unimplemented: %s",
- join(" ", map { "POSIX::$_()" } @unimpl)));
- }
-
- local $Exporter::ExportLevel = 1;
- Exporter::import($pkg,@list);
-}
-
-eval join ';', map "sub $_", keys %replacement, keys %reimpl;
-
-sub unimplemented_message {
- my $func = shift;
- my $how = $replacement{$func};
- return "C-specific, stopped" unless defined $how;
- return "$$how" if ref $how;
- return "$how instead" if $how =~ /^use /;
- return "Use method $how() instead" if $how =~ /::/;
- return "C-specific: use $how instead";
-}
-
-sub AUTOLOAD {
- my ($func) = ($AUTOLOAD =~ /.*::(.*)/);
-
- die "POSIX.xs has failed to load\n" if $func eq 'constant';
-
- if (my $code = $reimpl{$func}) {
- my ($num, $arg) = (0, '');
- if ($code =~ s/^(.*?) *=> *//) {
- $arg = $1;
- $num = 1 + $arg =~ tr/,//;
- }
- # no warnings to be consistent with the old implementation, where each
- # function was in its own little AutoSplit world:
- eval qq{ sub $func {
- no warnings;
- usage "$func($arg)" if \@_ != $num;
- $code
- } };
- no strict;
- goto &$AUTOLOAD;
- }
- if (exists $replacement{$func}) {
- croak "Unimplemented: POSIX::$func(): ", unimplemented_message($func);
- }
-
- constant($func);
-}
-
-sub perror {
- print STDERR "@_: " if @_;
- print STDERR $!,"\n";
-}
-
-sub printf {
- usage "printf(pattern, args...)" if @_ < 1;
- CORE::printf STDOUT @_;
-}
-
-sub sprintf {
- usage "sprintf(pattern, args...)" if @_ == 0;
- CORE::sprintf(shift,@_);
-}
-
-sub load_imports {
-my %default_export_tags = ( # cf. exports policy below
-
- assert_h => [qw(assert NDEBUG)],
-
- ctype_h => [],
-
- dirent_h => [],
-
- errno_h => [qw(E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN
- EALREADY EBADF EBADMSG EBUSY ECANCELED ECHILD ECONNABORTED
- ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT EEXIST
- EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EIDRM EILSEQ EINPROGRESS
- EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE
- ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS
- ENODATA ENODEV ENOENT ENOEXEC ENOLCK ENOLINK ENOMEM ENOMSG
- ENOPROTOOPT ENOSPC ENOSR ENOSTR ENOSYS ENOTBLK ENOTCONN ENOTDIR
- ENOTEMPTY ENOTRECOVERABLE ENOTSOCK ENOTSUP ENOTTY ENXIO
- EOPNOTSUPP EOTHER EOVERFLOW EOWNERDEAD EPERM EPFNOSUPPORT EPIPE
- EPROCLIM EPROTO EPROTONOSUPPORT EPROTOTYPE ERANGE EREMOTE
- ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESTALE
- ETIME ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV
- errno)],
-
- fcntl_h => [qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK
- F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK
- O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK
- O_RDONLY O_RDWR O_TRUNC O_WRONLY
- creat
- SEEK_CUR SEEK_END SEEK_SET
- S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID
- S_IWGRP S_IWOTH S_IWUSR)],
-
- float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG
- DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP
- DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP
- FLT_DIG FLT_EPSILON FLT_MANT_DIG
- FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP
- FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP
- FLT_RADIX FLT_ROUNDS
- LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG
- LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP
- LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP)],
-
- grp_h => [],
-
- limits_h => [qw( ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX
- INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON
- MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX
- PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN
- SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX
- ULONG_MAX USHRT_MAX _POSIX_ARG_MAX _POSIX_CHILD_MAX
- _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT
- _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX
- _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX
- _POSIX_STREAM_MAX _POSIX_TZNAME_MAX)],
-
- locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES
- LC_MONETARY LC_NUMERIC LC_TIME NULL
- localeconv setlocale)],
-
- math_h => [qw(FP_ILOGB0 FP_ILOGBNAN FP_INFINITE FP_NAN FP_NORMAL
- FP_SUBNORMAL FP_ZERO
- M_1_PI M_2_PI M_2_SQRTPI M_E M_LN10 M_LN2 M_LOG10E M_LOG2E
- M_PI M_PI_2 M_PI_4 M_SQRT1_2 M_SQRT2
- HUGE_VAL INFINITY NAN
- acos asin atan ceil cosh fabs floor fmod
- frexp ldexp log10 modf pow sinh tan tanh)],
-
- pwd_h => [],
-
- setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)],
-
- signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK
- SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM
- SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL
- SIGPIPE %SIGRT SIGRTMIN SIGRTMAX SIGQUIT SIGSEGV SIGSTOP
- SIGTERM SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 SIGBUS
- SIGPOLL SIGPROF SIGSYS SIGTRAP SIGURG SIGVTALRM SIGXCPU SIGXFSZ
- SIG_BLOCK SIG_DFL SIG_ERR SIG_IGN SIG_SETMASK SIG_UNBLOCK
- raise sigaction signal sigpending sigprocmask sigsuspend)],
-
- stdarg_h => [],
-
- stddef_h => [qw(NULL offsetof)],
-
- stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid
- NULL SEEK_CUR SEEK_END SEEK_SET
- STREAM_MAX TMP_MAX stderr stdin stdout
- clearerr fclose fdopen feof ferror fflush fgetc fgetpos
- fgets fopen fprintf fputc fputs fread freopen
- fscanf fseek fsetpos ftell fwrite getchar gets
- perror putc putchar puts remove rewind
- scanf setbuf setvbuf sscanf tmpfile tmpnam
- ungetc vfprintf vprintf vsprintf)],
-
- stdlib_h => [qw(EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX NULL RAND_MAX
- abort atexit atof atoi atol bsearch calloc div
- free getenv labs ldiv malloc mblen mbstowcs mbtowc
- qsort realloc strtod strtol strtoul wcstombs wctomb)],
-
- string_h => [qw(NULL memchr memcmp memcpy memmove memset strcat
- strchr strcmp strcoll strcpy strcspn strerror strlen
- strncat strncmp strncpy strpbrk strrchr strspn strstr
- strtok strxfrm)],
-
- sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG
- S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR
- fstat mkfifo)],
-
- sys_times_h => [],
-
- sys_types_h => [],
-
- sys_utsname_h => [qw(uname)],
-
- sys_wait_h => [qw(WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED
- WNOHANG WSTOPSIG WTERMSIG WUNTRACED)],
-
- termios_h => [qw( B0 B110 B1200 B134 B150 B1800 B19200 B200 B2400
- B300 B38400 B4800 B50 B600 B75 B9600 BRKINT CLOCAL
- CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB ECHO ECHOE ECHOK
- ECHONL HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR
- INLCR INPCK ISIG ISTRIP IXOFF IXON NCCS NOFLSH OPOST
- PARENB PARMRK PARODD TCIFLUSH TCIOFF TCIOFLUSH TCION
- TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW
- TOSTOP VEOF VEOL VERASE VINTR VKILL VMIN VQUIT VSTART
- VSTOP VSUSP VTIME
- cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcdrain
- tcflow tcflush tcgetattr tcsendbreak tcsetattr )],
-
- time_h => [qw(CLK_TCK CLOCKS_PER_SEC NULL asctime clock ctime
- difftime mktime strftime tzset tzname)],
-
- unistd_h => [qw(F_OK NULL R_OK SEEK_CUR SEEK_END SEEK_SET
- STDERR_FILENO STDIN_FILENO STDOUT_FILENO W_OK X_OK
- _PC_CHOWN_RESTRICTED _PC_LINK_MAX _PC_MAX_CANON
- _PC_MAX_INPUT _PC_NAME_MAX _PC_NO_TRUNC _PC_PATH_MAX
- _PC_PIPE_BUF _PC_VDISABLE _POSIX_CHOWN_RESTRICTED
- _POSIX_JOB_CONTROL _POSIX_NO_TRUNC _POSIX_SAVED_IDS
- _POSIX_VDISABLE _POSIX_VERSION _SC_ARG_MAX
- _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL
- _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS
- _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION
- _exit access ctermid cuserid
- dup2 dup execl execle execlp execv execve execvp
- fpathconf fsync getcwd getegid geteuid getgid getgroups
- getpid getuid isatty lseek pathconf pause setgid setpgid
- setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)],
-
- utime_h => [],
-);
-
-if ($^O eq 'MSWin32') {
- $default_export_tags{winsock_h} = [qw(
- WSAEINTR WSAEBADF WSAEACCES WSAEFAULT WSAEINVAL WSAEMFILE WSAEWOULDBLOCK
- WSAEINPROGRESS WSAEALREADY WSAENOTSOCK WSAEDESTADDRREQ WSAEMSGSIZE
- WSAEPROTOTYPE WSAENOPROTOOPT WSAEPROTONOSUPPORT WSAESOCKTNOSUPPORT
- WSAEOPNOTSUPP WSAEPFNOSUPPORT WSAEAFNOSUPPORT WSAEADDRINUSE
- WSAEADDRNOTAVAIL WSAENETDOWN WSAENETUNREACH WSAENETRESET WSAECONNABORTED
- WSAECONNRESET WSAENOBUFS WSAEISCONN WSAENOTCONN WSAESHUTDOWN
- WSAETOOMANYREFS WSAETIMEDOUT WSAECONNREFUSED WSAELOOP WSAENAMETOOLONG
- WSAEHOSTDOWN WSAEHOSTUNREACH WSAENOTEMPTY WSAEPROCLIM WSAEUSERS
- WSAEDQUOT WSAESTALE WSAEREMOTE WSAEDISCON WSAENOMORE WSAECANCELLED
- WSAEINVALIDPROCTABLE WSAEINVALIDPROVIDER WSAEPROVIDERFAILEDINIT
- WSAEREFUSED)];
-}
-
-my %other_export_tags = ( # cf. exports policy below
- fenv_h => [qw(
- FE_DOWNWARD FE_TONEAREST FE_TOWARDZERO FE_UPWARD fegetround fesetround
- )],
-
- math_h_c99 => [ @{$default_export_tags{math_h}}, qw(
- Inf NaN acosh asinh atanh cbrt copysign erf erfc exp2 expm1 fdim fma
- fmax fmin fpclassify hypot ilogb isfinite isgreater isgreaterequal
- isinf isless islessequal islessgreater isnan isnormal isunordered j0 j1
- jn lgamma log1p log2 logb lrint lround nan nearbyint nextafter nexttoward
- remainder remquo rint round scalbn signbit tgamma trunc y0 y1 yn
- )],
-
- netdb_h => [qw(EAI_AGAIN EAI_BADFLAGS EAI_FAIL
- EAI_FAMILY EAI_MEMORY EAI_NONAME
- EAI_OVERFLOW EAI_SERVICE EAI_SOCKTYPE
- EAI_SYSTEM)],
-
- stdlib_h_c99 => [ @{$default_export_tags{stdlib_h}}, 'strtold' ],
-
- sys_socket_h => [qw(
- MSG_CTRUNC MSG_DONTROUTE MSG_EOR MSG_OOB MSG_PEEK MSG_TRUNC MSG_WAITALL
- )],
-
- nan_payload => [ qw(getpayload setpayload setpayloadsig issignaling) ],
-
- signal_h_si_code => [qw(
- ILL_ILLOPC ILL_ILLOPN ILL_ILLADR ILL_ILLTRP ILL_PRVOPC ILL_PRVREG
- ILL_COPROC ILL_BADSTK
- FPE_INTDIV FPE_INTOVF FPE_FLTDIV FPE_FLTOVF FPE_FLTUND
- FPE_FLTRES FPE_FLTINV FPE_FLTSUB
- SEGV_MAPERR SEGV_ACCERR
- BUS_ADRALN BUS_ADRERR BUS_OBJERR
- TRAP_BRKPT TRAP_TRACE
- CLD_EXITED CLD_KILLED CLD_DUMPED CLD_TRAPPED CLD_STOPPED CLD_CONTINUED
- POLL_IN POLL_OUT POLL_MSG POLL_ERR POLL_PRI POLL_HUP
- SI_USER SI_QUEUE SI_TIMER SI_ASYNCIO SI_MESGQ
- )],
-);
-
-# exports policy:
-# - new functions may not be added to @EXPORT, only to @EXPORT_OK
-# - new SHOUTYCONSTANTS are OK to add to @EXPORT
-
-{
- # De-duplicate the export list:
- my ( %export, %export_ok );
- @export {map {@$_} values %default_export_tags} = ();
- @export_ok{map {@$_} values %other_export_tags} = ();
- # Doing the de-dup with a temporary hash has the advantage that the SVs in
- # @EXPORT are actually shared hash key scalars, which will save some memory.
- our @EXPORT = keys %export;
-
- # you do not want to add symbols to the following list. add a new tag instead
- our @EXPORT_OK = (qw(close lchown nice open pipe read sleep times write
- printf sprintf),
- grep {!exists $export{$_}} keys %reimpl, keys %replacement, keys %export_ok);
-
- our %EXPORT_TAGS = ( %default_export_tags, %other_export_tags );
-}
-
-require Exporter;
-}
-
-package POSIX::SigAction;
-
-sub new { bless {HANDLER => $_[1], MASK => $_[2], FLAGS => $_[3] || 0, SAFE => 0}, $_[0] }
-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} };
-sub safe { $_[0]->{SAFE} = $_[1] if @_ > 1; $_[0]->{SAFE} };
-
-{
-package POSIX::SigSet;
-# This package is here entirely to make sure that POSIX::SigSet is seen by the
-# PAUSE indexer, so that it will always be clearly indexed in core. This is to
-# prevent the accidental case where a third-party distribution can accidentally
-# claim the POSIX::SigSet package, as occurred in 2011-12. -- rjbs, 2011-12-30
-}
-
-package POSIX::SigRt;
-
-require Tie::Hash;
-
-our @ISA = 'Tie::StdHash';
-
-our ($_SIGRTMIN, $_SIGRTMAX, $_sigrtn);
-
-our $SIGACTION_FLAGS = 0;
-
-sub _init {
- $_SIGRTMIN = &POSIX::SIGRTMIN;
- $_SIGRTMAX = &POSIX::SIGRTMAX;
- $_sigrtn = $_SIGRTMAX - $_SIGRTMIN;
-}
-
-sub _croak {
- &_init unless defined $_sigrtn;
- die "POSIX::SigRt not available" unless defined $_sigrtn && $_sigrtn > 0;
-}
-
-sub _getsig {
- &_croak;
- my $rtsig = $_[0];
- # Allow (SIGRT)?MIN( + n)?, a common idiom when doing these things in C.
- $rtsig = $_SIGRTMIN + ($1 || 0)
- if $rtsig =~ /^(?:(?:SIG)?RT)?MIN(\s*\+\s*(\d+))?$/;
- return $rtsig;
-}
-
-sub _exist {
- my $rtsig = _getsig($_[1]);
- my $ok = $rtsig >= $_SIGRTMIN && $rtsig <= $_SIGRTMAX;
- ($rtsig, $ok);
-}
-
-sub _check {
- my ($rtsig, $ok) = &_exist;
- die "No POSIX::SigRt signal $_[1] (valid range SIGRTMIN..SIGRTMAX, or $_SIGRTMIN..$_SIGRTMAX)"
- unless $ok;
- return $rtsig;
-}
-
-sub new {
- my ($rtsig, $handler, $flags) = @_;
- my $sigset = POSIX::SigSet->new($rtsig);
- my $sigact = POSIX::SigAction->new($handler, $sigset, $flags);
- POSIX::sigaction($rtsig, $sigact);
-}
-
-sub EXISTS { &_exist }
-sub FETCH { my $rtsig = &_check;
- my $oa = POSIX::SigAction->new();
- POSIX::sigaction($rtsig, undef, $oa);
- return $oa->{HANDLER} }
-sub STORE { my $rtsig = &_check; new($rtsig, $_[2], $SIGACTION_FLAGS) }
-sub DELETE { delete $SIG{ &_check } }
-sub CLEAR { &_exist; delete @SIG{ &POSIX::SIGRTMIN .. &POSIX::SIGRTMAX } }
-sub SCALAR { &_croak; $_sigrtn + 1 }
-
-tie %POSIX::SIGRT, 'POSIX::SigRt';
-# and the expression on the line above is true, so we return true.