From 949f85cdd79536e35cb7f983c52e5f8eca9736df Mon Sep 17 00:00:00 2001 From: Nitin A Kamble Date: Wed, 23 Feb 2011 13:01:34 -0800 Subject: perl: import parallel build fixes from upstream git tree The parallel build issue is fixed in the upstream perl git tree differently. Replacing our fix with the upstream fix. Signed-off-by: Nitin A Kamble --- .../perl/perl-5.12.2/parallel_build_fix.patch | 18 - .../perl/perl-5.12.2/parallel_build_fix_1.patch | 25 + .../perl/perl-5.12.2/parallel_build_fix_2.patch | 22 + .../perl/perl-5.12.2/parallel_build_fix_3.patch | 6583 ++++++++++++++++++++ meta/recipes-devtools/perl/perl-native_5.12.2.bb | 6 +- meta/recipes-devtools/perl/perl_5.12.2.bb | 6 +- 6 files changed, 6638 insertions(+), 22 deletions(-) delete mode 100644 meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix.patch create mode 100644 meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_1.patch create mode 100644 meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_2.patch create mode 100644 meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_3.patch diff --git a/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix.patch b/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix.patch deleted file mode 100644 index 476577eb33..0000000000 --- a/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix.patch +++ /dev/null @@ -1,18 +0,0 @@ -This patch fixes the parallel make issue on a 40 way build system - -Nitin A Kamble -2011-02-16 - -Index: perl-5.12.2/Makefile.SH -=================================================================== ---- perl-5.12.2.orig/Makefile.SH 2010-09-06 16:30:32.000000000 -0700 -+++ perl-5.12.2/Makefile.SH 2011-02-16 16:21:30.744143773 -0800 -@@ -198,6 +198,8 @@ - $this_target: uni.data" ;; - Text/ParseWords) extra_dep="$extra_dep - $this_target: lib/auto/Scalar/Util.$dlext" ;; -+ POSIX) extra_dep="$extra_dep -+$this_target: lib/auto/Cwd/Cwd.$dlext" ;; - esac - done - diff --git a/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_1.patch b/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_1.patch new file mode 100644 index 0000000000..63e641003c --- /dev/null +++ b/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_1.patch @@ -0,0 +1,25 @@ +Imported from perl git tree by Nitin A Kamble +2011-02-23 + +commit 6695a346c41138df5b2c0e26b9a49b1f96137da0 +Author: Tony Cook +Date: Thu Jul 22 09:54:13 2010 +1000 + + make_ext.pl populates @INC correctly, don't override it badly + + PERL5LIB is populated by make_ext.pl with paths to the modules we need + to run, don't override this with "../../lib" since that may not have + been populated yet in a parallel build. + +diff --git a/ext/POSIX/Makefile.PL b/ext/POSIX/Makefile.PL +index 392b6fb..9e6d091 100644 +--- a/ext/POSIX/Makefile.PL ++++ b/ext/POSIX/Makefile.PL +@@ -1,7 +1,3 @@ +-# Explicitly avoid including '.' in @INC; autoloader gets confused since it +-# can find POSIX.pm, but can't find autosplit.ix. +-BEGIN { @INC = '../../lib';} +-# + use ExtUtils::MakeMaker; + use ExtUtils::Constant 0.11 'WriteConstants'; + use Config; diff --git a/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_2.patch b/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_2.patch new file mode 100644 index 0000000000..6c536dd05b --- /dev/null +++ b/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_2.patch @@ -0,0 +1,22 @@ +Imported from perl git tree by Nitin A Kamble +2011-02-23 + +commit 24e93d7838b346d2ed632075f3d824a325170616 +Author: Tony Cook +Date: Sat Aug 14 00:21:29 2010 +1000 + + POSIX/t/posix.t expects a certain start to Makefile.PL + + 6695a346 changed the start of Makefile.PL, but t/posix.t reads that to + test its read() implementation, restore enough of the original for the + test to pass. + +diff --git a/ext/POSIX/Makefile.PL b/ext/POSIX/Makefile.PL +index 9e6d091..292882c 100644 +--- a/ext/POSIX/Makefile.PL ++++ b/ext/POSIX/Makefile.PL +@@ -1,3 +1,4 @@ ++# Expect this line to be read by t/posix.t, don't change it + use ExtUtils::MakeMaker; + use ExtUtils::Constant 0.11 'WriteConstants'; + use Config; diff --git a/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_3.patch b/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_3.patch new file mode 100644 index 0000000000..a74a45d73c --- /dev/null +++ b/meta/recipes-devtools/perl/perl-5.12.2/parallel_build_fix_3.patch @@ -0,0 +1,6583 @@ +Imported from perl git tree by Nitin A Kamble +2011-02-23 + +commit 4feb80ac47a22e7de7d7c1c1d5dfb3d744a2a3a7 +Author: Jerry D. Hedden +Date: Tue Aug 17 13:17:11 2010 -0400 + + Move POSIX.pm to lib/POSIX.pm to fix autosplitter problem + +diff --git a/MANIFEST b/MANIFEST +index 3036d73..faf8974 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -3183,9 +3183,9 @@ ext/POSIX/hints/openbsd.pl Hint for POSIX for named architecture + ext/POSIX/hints/sunos_4.pl Hint for POSIX for named architecture + ext/POSIX/hints/svr4.pl Hint for POSIX for named architecture + ext/POSIX/hints/uts.pl Hint for POSIX for named architecture ++ext/POSIX/lib/POSIX.pm POSIX extension Perl module ++ext/POSIX/lib/POSIX.pod POSIX extension documentation + ext/POSIX/Makefile.PL POSIX extension makefile writer +-ext/POSIX/POSIX.pm POSIX extension Perl module +-ext/POSIX/POSIX.pod POSIX extension documentation + ext/POSIX/POSIX.xs POSIX extension external subroutines + ext/POSIX/t/is.t See if POSIX isxxx() work + ext/POSIX/t/math.t Basic math tests for POSIX +diff --git a/ext/POSIX/Makefile.PL b/ext/POSIX/Makefile.PL +index 292882c..07c3841 100644 +--- a/ext/POSIX/Makefile.PL ++++ b/ext/POSIX/Makefile.PL +@@ -18,7 +18,8 @@ WriteMakefile( + NAME => 'POSIX', + @libs, + XSPROTOARG => '-noprototypes', # XXX remove later? +- VERSION_FROM => 'POSIX.pm', ++ VERSION_FROM => 'lib/POSIX.pm', ++ ABSTRACT_FROM => 'lib/POSIX.pod', + realclean => {FILES=> 'const-c.inc const-xs.inc'}, + ); + +diff --git a/ext/POSIX/POSIX.pm b/ext/POSIX/POSIX.pm +deleted file mode 100644 +index ffbd9de..0000000 +--- a/ext/POSIX/POSIX.pm ++++ /dev/null +@@ -1,1042 +0,0 @@ +-package POSIX; +-use strict; +-use warnings; +- +-our(@ISA, %EXPORT_TAGS, @EXPORT_OK, @EXPORT, $AUTOLOAD, %SIGRT) = (); +- +-our $VERSION = "1.19"; +- +-use AutoLoader; +- +-use 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); +- +-# Grandfather old foo_h form to new :foo_h form +-my $loaded; +- +-sub import { +- load_imports() unless $loaded++; +- my $this = shift; +- my @list = map { m/^\w+_h$/ ? ":$_" : $_ } @_; +- local $Exporter::ExportLevel = 1; +- Exporter::import($this,@list); +-} +- +-sub croak { require Carp; goto &Carp::croak } +-# declare usage to assist AutoLoad +-sub usage; +- +-XSLoader::load 'POSIX', $VERSION; +- +-sub AUTOLOAD { +- no strict; +- no warnings 'uninitialized'; +- if ($AUTOLOAD =~ /::(_?[a-z])/) { +- # require AutoLoader; +- $AutoLoader::AUTOLOAD = $AUTOLOAD; +- goto &AutoLoader::AUTOLOAD +- } +- local $! = 0; +- my $constname = $AUTOLOAD; +- $constname =~ s/.*:://; +- my ($error, $val) = constant($constname); +- croak $error if $error; +- *$AUTOLOAD = sub { $val }; +- +- goto &$AUTOLOAD; +-} +- +-package POSIX::SigAction; +- +-use AutoLoader 'AUTOLOAD'; +- +-package POSIX::SigRt; +- +-use AutoLoader 'AUTOLOAD'; +- +-use Tie::Hash; +- +-use vars qw($SIGACTION_FLAGS $_SIGRTMIN $_SIGRTMAX $_sigrtn @ISA); +-@POSIX::SigRt::ISA = qw(Tie::StdHash); +- +-$SIGACTION_FLAGS = 0; +- +-tie %POSIX::SIGRT, 'POSIX::SigRt'; +- +-sub DESTROY {}; +- +-package POSIX; +- +-1; +-__END__ +- +-sub usage { +- my ($mess) = @_; +- croak "Usage: POSIX::$mess"; +-} +- +-sub redef { +- my ($mess) = @_; +- croak "Use method $mess instead"; +-} +- +-sub unimpl { +- my ($mess) = @_; +- $mess =~ s/xxx//; +- croak "Unimplemented: POSIX::$mess"; +-} +- +-sub assert { +- usage "assert(expr)" if @_ != 1; +- if (!$_[0]) { +- croak "Assertion failed"; +- } +-} +- +-sub tolower { +- usage "tolower(string)" if @_ != 1; +- lc($_[0]); +-} +- +-sub toupper { +- usage "toupper(string)" if @_ != 1; +- uc($_[0]); +-} +- +-sub closedir { +- usage "closedir(dirhandle)" if @_ != 1; +- CORE::closedir($_[0]); +-} +- +-sub opendir { +- usage "opendir(directory)" if @_ != 1; +- my $dirhandle; +- CORE::opendir($dirhandle, $_[0]) +- ? $dirhandle +- : undef; +-} +- +-sub readdir { +- usage "readdir(dirhandle)" if @_ != 1; +- CORE::readdir($_[0]); +-} +- +-sub rewinddir { +- usage "rewinddir(dirhandle)" if @_ != 1; +- CORE::rewinddir($_[0]); +-} +- +-sub errno { +- usage "errno()" if @_ != 0; +- $! + 0; +-} +- +-sub creat { +- usage "creat(filename, mode)" if @_ != 2; +- &open($_[0], &O_WRONLY | &O_CREAT | &O_TRUNC, $_[1]); +-} +- +-sub fcntl { +- usage "fcntl(filehandle, cmd, arg)" if @_ != 3; +- CORE::fcntl($_[0], $_[1], $_[2]); +-} +- +-sub getgrgid { +- usage "getgrgid(gid)" if @_ != 1; +- CORE::getgrgid($_[0]); +-} +- +-sub getgrnam { +- usage "getgrnam(name)" if @_ != 1; +- CORE::getgrnam($_[0]); +-} +- +-sub atan2 { +- usage "atan2(x,y)" if @_ != 2; +- CORE::atan2($_[0], $_[1]); +-} +- +-sub cos { +- usage "cos(x)" if @_ != 1; +- CORE::cos($_[0]); +-} +- +-sub exp { +- usage "exp(x)" if @_ != 1; +- CORE::exp($_[0]); +-} +- +-sub fabs { +- usage "fabs(x)" if @_ != 1; +- CORE::abs($_[0]); +-} +- +-sub log { +- usage "log(x)" if @_ != 1; +- CORE::log($_[0]); +-} +- +-sub pow { +- usage "pow(x,exponent)" if @_ != 2; +- $_[0] ** $_[1]; +-} +- +-sub sin { +- usage "sin(x)" if @_ != 1; +- CORE::sin($_[0]); +-} +- +-sub sqrt { +- usage "sqrt(x)" if @_ != 1; +- CORE::sqrt($_[0]); +-} +- +-sub getpwnam { +- usage "getpwnam(name)" if @_ != 1; +- CORE::getpwnam($_[0]); +-} +- +-sub getpwuid { +- usage "getpwuid(uid)" if @_ != 1; +- CORE::getpwuid($_[0]); +-} +- +-sub longjmp { +- unimpl "longjmp() is C-specific: use die instead"; +-} +- +-sub setjmp { +- unimpl "setjmp() is C-specific: use eval {} instead"; +-} +- +-sub siglongjmp { +- unimpl "siglongjmp() is C-specific: use die instead"; +-} +- +-sub sigsetjmp { +- unimpl "sigsetjmp() is C-specific: use eval {} instead"; +-} +- +-sub kill { +- usage "kill(pid, sig)" if @_ != 2; +- CORE::kill $_[1], $_[0]; +-} +- +-sub raise { +- usage "raise(sig)" if @_ != 1; +- CORE::kill $_[0], $$; # Is this good enough? +-} +- +-sub offsetof { +- unimpl "offsetof() is C-specific, stopped"; +-} +- +-sub clearerr { +- redef "IO::Handle::clearerr()"; +-} +- +-sub fclose { +- redef "IO::Handle::close()"; +-} +- +-sub fdopen { +- redef "IO::Handle::new_from_fd()"; +-} +- +-sub feof { +- redef "IO::Handle::eof()"; +-} +- +-sub fgetc { +- redef "IO::Handle::getc()"; +-} +- +-sub fgets { +- redef "IO::Handle::gets()"; +-} +- +-sub fileno { +- redef "IO::Handle::fileno()"; +-} +- +-sub fopen { +- redef "IO::File::open()"; +-} +- +-sub fprintf { +- unimpl "fprintf() is C-specific--use printf instead"; +-} +- +-sub fputc { +- unimpl "fputc() is C-specific--use print instead"; +-} +- +-sub fputs { +- unimpl "fputs() is C-specific--use print instead"; +-} +- +-sub fread { +- unimpl "fread() is C-specific--use read instead"; +-} +- +-sub freopen { +- unimpl "freopen() is C-specific--use open instead"; +-} +- +-sub fscanf { +- unimpl "fscanf() is C-specific--use <> and regular expressions instead"; +-} +- +-sub fseek { +- redef "IO::Seekable::seek()"; +-} +- +-sub fsync { +- redef "IO::Handle::sync()"; +-} +- +-sub ferror { +- redef "IO::Handle::error()"; +-} +- +-sub fflush { +- redef "IO::Handle::flush()"; +-} +- +-sub fgetpos { +- redef "IO::Seekable::getpos()"; +-} +- +-sub fsetpos { +- redef "IO::Seekable::setpos()"; +-} +- +-sub ftell { +- redef "IO::Seekable::tell()"; +-} +- +-sub fwrite { +- unimpl "fwrite() is C-specific--use print instead"; +-} +- +-sub getc { +- usage "getc(handle)" if @_ != 1; +- CORE::getc($_[0]); +-} +- +-sub getchar { +- usage "getchar()" if @_ != 0; +- CORE::getc(STDIN); +-} +- +-sub gets { +- usage "gets()" if @_ != 0; +- scalar ; +-} +- +-sub perror { +- print STDERR "@_: " if @_; +- print STDERR $!,"\n"; +-} +- +-sub printf { +- usage "printf(pattern, args...)" if @_ < 1; +- CORE::printf STDOUT @_; +-} +- +-sub putc { +- unimpl "putc() is C-specific--use print instead"; +-} +- +-sub putchar { +- unimpl "putchar() is C-specific--use print instead"; +-} +- +-sub puts { +- unimpl "puts() is C-specific--use print instead"; +-} +- +-sub remove { +- usage "remove(filename)" if @_ != 1; +- (-d $_[0]) ? CORE::rmdir($_[0]) : CORE::unlink($_[0]); +-} +- +-sub rename { +- usage "rename(oldfilename, newfilename)" if @_ != 2; +- CORE::rename($_[0], $_[1]); +-} +- +-sub rewind { +- usage "rewind(filehandle)" if @_ != 1; +- CORE::seek($_[0],0,0); +-} +- +-sub scanf { +- unimpl "scanf() is C-specific--use <> and regular expressions instead"; +-} +- +-sub sprintf { +- usage "sprintf(pattern,args)" if @_ == 0; +- CORE::sprintf(shift,@_); +-} +- +-sub sscanf { +- unimpl "sscanf() is C-specific--use regular expressions instead"; +-} +- +-sub tmpfile { +- redef "IO::File::new_tmpfile()"; +-} +- +-sub ungetc { +- redef "IO::Handle::ungetc()"; +-} +- +-sub vfprintf { +- unimpl "vfprintf() is C-specific"; +-} +- +-sub vprintf { +- unimpl "vprintf() is C-specific"; +-} +- +-sub vsprintf { +- unimpl "vsprintf() is C-specific"; +-} +- +-sub abs { +- usage "abs(x)" if @_ != 1; +- CORE::abs($_[0]); +-} +- +-sub atexit { +- unimpl "atexit() is C-specific: use END {} instead"; +-} +- +-sub atof { +- unimpl "atof() is C-specific, stopped"; +-} +- +-sub atoi { +- unimpl "atoi() is C-specific, stopped"; +-} +- +-sub atol { +- unimpl "atol() is C-specific, stopped"; +-} +- +-sub bsearch { +- unimpl "bsearch() not supplied"; +-} +- +-sub calloc { +- unimpl "calloc() is C-specific, stopped"; +-} +- +-sub div { +- unimpl "div() is C-specific, use /, % and int instead"; +-} +- +-sub exit { +- usage "exit(status)" if @_ != 1; +- CORE::exit($_[0]); +-} +- +-sub free { +- unimpl "free() is C-specific, stopped"; +-} +- +-sub getenv { +- usage "getenv(name)" if @_ != 1; +- $ENV{$_[0]}; +-} +- +-sub labs { +- unimpl "labs() is C-specific, use abs instead"; +-} +- +-sub ldiv { +- unimpl "ldiv() is C-specific, use /, % and int instead"; +-} +- +-sub malloc { +- unimpl "malloc() is C-specific, stopped"; +-} +- +-sub qsort { +- unimpl "qsort() is C-specific, use sort instead"; +-} +- +-sub rand { +- unimpl "rand() is non-portable, use Perl's rand instead"; +-} +- +-sub realloc { +- unimpl "realloc() is C-specific, stopped"; +-} +- +-sub srand { +- unimpl "srand()"; +-} +- +-sub system { +- usage "system(command)" if @_ != 1; +- CORE::system($_[0]); +-} +- +-sub memchr { +- unimpl "memchr() is C-specific, use index() instead"; +-} +- +-sub memcmp { +- unimpl "memcmp() is C-specific, use eq instead"; +-} +- +-sub memcpy { +- unimpl "memcpy() is C-specific, use = instead"; +-} +- +-sub memmove { +- unimpl "memmove() is C-specific, use = instead"; +-} +- +-sub memset { +- unimpl "memset() is C-specific, use x instead"; +-} +- +-sub strcat { +- unimpl "strcat() is C-specific, use .= instead"; +-} +- +-sub strchr { +- unimpl "strchr() is C-specific, use index() instead"; +-} +- +-sub strcmp { +- unimpl "strcmp() is C-specific, use eq instead"; +-} +- +-sub strcpy { +- unimpl "strcpy() is C-specific, use = instead"; +-} +- +-sub strcspn { +- unimpl "strcspn() is C-specific, use regular expressions instead"; +-} +- +-sub strerror { +- usage "strerror(errno)" if @_ != 1; +- local $! = $_[0]; +- $! . ""; +-} +- +-sub strlen { +- unimpl "strlen() is C-specific, use length instead"; +-} +- +-sub strncat { +- unimpl "strncat() is C-specific, use .= instead"; +-} +- +-sub strncmp { +- unimpl "strncmp() is C-specific, use eq instead"; +-} +- +-sub strncpy { +- unimpl "strncpy() is C-specific, use = instead"; +-} +- +-sub strpbrk { +- unimpl "strpbrk() is C-specific, stopped"; +-} +- +-sub strrchr { +- unimpl "strrchr() is C-specific, use rindex() instead"; +-} +- +-sub strspn { +- unimpl "strspn() is C-specific, stopped"; +-} +- +-sub strstr { +- usage "strstr(big, little)" if @_ != 2; +- CORE::index($_[0], $_[1]); +-} +- +-sub strtok { +- unimpl "strtok() is C-specific, stopped"; +-} +- +-sub chmod { +- usage "chmod(mode, filename)" if @_ != 2; +- CORE::chmod($_[0], $_[1]); +-} +- +-sub fstat { +- usage "fstat(fd)" if @_ != 1; +- local *TMP; +- CORE::open(TMP, "<&$_[0]"); # Gross. +- my @l = CORE::stat(TMP); +- CORE::close(TMP); +- @l; +-} +- +-sub mkdir { +- usage "mkdir(directoryname, mode)" if @_ != 2; +- CORE::mkdir($_[0], $_[1]); +-} +- +-sub stat { +- usage "stat(filename)" if @_ != 1; +- CORE::stat($_[0]); +-} +- +-sub umask { +- usage "umask(mask)" if @_ != 1; +- CORE::umask($_[0]); +-} +- +-sub wait { +- usage "wait()" if @_ != 0; +- CORE::wait(); +-} +- +-sub waitpid { +- usage "waitpid(pid, options)" if @_ != 2; +- CORE::waitpid($_[0], $_[1]); +-} +- +-sub gmtime { +- usage "gmtime(time)" if @_ != 1; +- CORE::gmtime($_[0]); +-} +- +-sub localtime { +- usage "localtime(time)" if @_ != 1; +- CORE::localtime($_[0]); +-} +- +-sub time { +- usage "time()" if @_ != 0; +- CORE::time; +-} +- +-sub alarm { +- usage "alarm(seconds)" if @_ != 1; +- CORE::alarm($_[0]); +-} +- +-sub chdir { +- usage "chdir(directory)" if @_ != 1; +- CORE::chdir($_[0]); +-} +- +-sub chown { +- usage "chown(uid, gid, filename)" if @_ != 3; +- CORE::chown($_[0], $_[1], $_[2]); +-} +- +-sub execl { +- unimpl "execl() is C-specific, stopped"; +-} +- +-sub execle { +- unimpl "execle() is C-specific, stopped"; +-} +- +-sub execlp { +- unimpl "execlp() is C-specific, stopped"; +-} +- +-sub execv { +- unimpl "execv() is C-specific, stopped"; +-} +- +-sub execve { +- unimpl "execve() is C-specific, stopped"; +-} +- +-sub execvp { +- unimpl "execvp() is C-specific, stopped"; +-} +- +-sub fork { +- usage "fork()" if @_ != 0; +- CORE::fork; +-} +- +-sub getegid { +- usage "getegid()" if @_ != 0; +- $) + 0; +-} +- +-sub geteuid { +- usage "geteuid()" if @_ != 0; +- $> + 0; +-} +- +-sub getgid { +- usage "getgid()" if @_ != 0; +- $( + 0; +-} +- +-sub getgroups { +- usage "getgroups()" if @_ != 0; +- my %seen; +- grep(!$seen{$_}++, split(' ', $) )); +-} +- +-sub getlogin { +- usage "getlogin()" if @_ != 0; +- CORE::getlogin(); +-} +- +-sub getpgrp { +- usage "getpgrp()" if @_ != 0; +- CORE::getpgrp; +-} +- +-sub getpid { +- usage "getpid()" if @_ != 0; +- $$; +-} +- +-sub getppid { +- usage "getppid()" if @_ != 0; +- CORE::getppid; +-} +- +-sub getuid { +- usage "getuid()" if @_ != 0; +- $<; +-} +- +-sub isatty { +- usage "isatty(filehandle)" if @_ != 1; +- -t $_[0]; +-} +- +-sub link { +- usage "link(oldfilename, newfilename)" if @_ != 2; +- CORE::link($_[0], $_[1]); +-} +- +-sub rmdir { +- usage "rmdir(directoryname)" if @_ != 1; +- CORE::rmdir($_[0]); +-} +- +-sub setbuf { +- redef "IO::Handle::setbuf()"; +-} +- +-sub setvbuf { +- redef "IO::Handle::setvbuf()"; +-} +- +-sub sleep { +- usage "sleep(seconds)" if @_ != 1; +- $_[0] - CORE::sleep($_[0]); +-} +- +-sub unlink { +- usage "unlink(filename)" if @_ != 1; +- CORE::unlink($_[0]); +-} +- +-sub utime { +- usage "utime(filename, atime, mtime)" if @_ != 3; +- CORE::utime($_[1], $_[2], $_[0]); +-} +- +-sub load_imports { +-%EXPORT_TAGS = ( +- +- assert_h => [qw(assert NDEBUG)], +- +- ctype_h => [qw(isalnum isalpha iscntrl isdigit isgraph islower +- isprint ispunct isspace isupper isxdigit tolower toupper)], +- +- dirent_h => [], +- +- errno_h => [qw(E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT +- EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED +- ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT +- EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS +- EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK +- EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH +- ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM +- ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR +- ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM +- EPFNOSUPPORT EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE +- ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT +- ESPIPE ESRCH ESTALE 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(HUGE_VAL 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 +- 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 +- L_tmpname 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 => [], +- +-); +- +-# Exporter::export_tags(); +-{ +- # De-duplicate the export list: +- my %export; +- @export{map {@$_} values %EXPORT_TAGS} = (); +- # Doing the de-dup with a temporary hash has the advantage that the SVs in +- # @EXPORT are actually shared hash key sacalars, which will save some memory. +- push @EXPORT, keys %export; +-} +- +-@EXPORT_OK = qw( +- abs +- alarm +- atan2 +- chdir +- chmod +- chown +- close +- closedir +- cos +- exit +- exp +- fcntl +- fileno +- fork +- getc +- getgrgid +- getgrnam +- getlogin +- getpgrp +- getppid +- getpwnam +- getpwuid +- gmtime +- isatty +- kill +- lchown +- link +- localtime +- log +- mkdir +- nice +- open +- opendir +- pipe +- printf +- rand +- read +- readdir +- rename +- rewinddir +- rmdir +- sin +- sleep +- sprintf +- sqrt +- srand +- stat +- system +- time +- times +- umask +- unlink +- utime +- wait +- waitpid +- write +-); +- +-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::SigRt; +- +- +-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 } +diff --git a/ext/POSIX/POSIX.pod b/ext/POSIX/POSIX.pod +deleted file mode 100644 +index 64852e9..0000000 +--- a/ext/POSIX/POSIX.pod ++++ /dev/null +@@ -1,2218 +0,0 @@ +-=head1 NAME +- +-POSIX - Perl interface to IEEE Std 1003.1 +- +-=head1 SYNOPSIS +- +- use POSIX; +- use POSIX qw(setsid); +- use POSIX qw(:errno_h :fcntl_h); +- +- printf "EINTR is %d\n", EINTR; +- +- $sess_id = POSIX::setsid(); +- +- $fd = POSIX::open($path, O_CREAT|O_EXCL|O_WRONLY, 0644); +- # note: that's a filedescriptor, *NOT* a filehandle +- +-=head1 DESCRIPTION +- +-The POSIX module permits you to access all (or nearly all) the standard +-POSIX 1003.1 identifiers. Many of these identifiers have been given Perl-ish +-interfaces. +- +-I with the exception of any POSIX +-functions with the same name as a built-in Perl function, such as +-C, C, C, C, etc.., which will be exported +-only if you ask for them explicitly. This is an unfortunate backwards +-compatibility feature. You can stop the exporting by saying C and then use the fully qualified names (ie. C). +- +-This document gives a condensed list of the features available in the POSIX +-module. Consult your operating system's manpages for general information on +-most features. Consult L for functions which are noted as being +-identical to Perl's builtin functions. +- +-The first section describes POSIX functions from the 1003.1 specification. +-The second section describes some classes for signal objects, TTY objects, +-and other miscellaneous objects. The remaining sections list various +-constants and macros in an organization which roughly follows IEEE Std +-1003.1b-1993. +- +-=head1 NOTE +- +-The POSIX module is probably the most complex Perl module supplied with +-the standard distribution. It incorporates autoloading, namespace games, +-and dynamic loading of code that's in Perl, C, or both. It's a great +-source of wisdom. +- +-=head1 CAVEATS +- +-A few functions are not implemented because they are C specific. If you +-attempt to call these, they will print a message telling you that they +-aren't implemented, and suggest using the Perl equivalent should one +-exist. For example, trying to access the setjmp() call will elicit the +-message "setjmp() is C-specific: use eval {} instead". +- +-Furthermore, some evil vendors will claim 1003.1 compliance, but in fact +-are not so: they will not pass the PCTS (POSIX Compliance Test Suites). +-For example, one vendor may not define EDEADLK, or the semantics of the +-errno values set by open(2) might not be quite right. Perl does not +-attempt to verify POSIX compliance. That means you can currently +-successfully say "use POSIX", and then later in your program you find +-that your vendor has been lax and there's no usable ICANON macro after +-all. This could be construed to be a bug. +- +-=head1 FUNCTIONS +- +-=over 8 +- +-=item _exit +- +-This is identical to the C function C<_exit()>. It exits the program +-immediately which means among other things buffered I/O is B flushed. +- +-Note that when using threads and in Linux this is B a good way to +-exit a thread because in Linux processes and threads are kind of the +-same thing (Note: while this is the situation in early 2003 there are +-projects under way to have threads with more POSIXly semantics in Linux). +-If you want not to return from a thread, detach the thread. +- +-=item abort +- +-This is identical to the C function C. It terminates the +-process with a C signal unless caught by a signal handler or +-if the handler does not return normally (it e.g. does a C). +- +-=item abs +- +-This is identical to Perl's builtin C function, returning +-the absolute value of its numerical argument. +- +-=item access +- +-Determines the accessibility of a file. +- +- if( POSIX::access( "/", &POSIX::R_OK ) ){ +- print "have read permission\n"; +- } +- +-Returns C on failure. Note: do not use C for +-security purposes. Between the C call and the operation +-you are preparing for the permissions might change: a classic +-I. +- +-=item acos +- +-This is identical to the C function C, returning +-the arcus cosine of its numerical argument. See also L. +- +-=item alarm +- +-This is identical to Perl's builtin C function, +-either for arming or disarming the C timer. +- +-=item asctime +- +-This is identical to the C function C. It returns +-a string of the form +- +- "Fri Jun 2 18:22:13 2000\n\0" +- +-and it is called thusly +- +- $asctime = asctime($sec, $min, $hour, $mday, $mon, $year, +- $wday, $yday, $isdst); +- +-The C<$mon> is zero-based: January equals C<0>. The C<$year> is +-1900-based: 2001 equals C<101>. C<$wday> and C<$yday> default to zero +-(and are usually ignored anyway), and C<$isdst> defaults to -1. +- +-=item asin +- +-This is identical to the C function C, returning +-the arcus sine of its numerical argument. See also L. +- +-=item assert +- +-Unimplemented, but you can use L and the L module +-to achieve similar things. +- +-=item atan +- +-This is identical to the C function C, returning the +-arcus tangent of its numerical argument. See also L. +- +-=item atan2 +- +-This is identical to Perl's builtin C function, returning +-the arcus tangent defined by its two numerical arguments, the I +-coordinate and the I coordinate. See also L. +- +-=item atexit +- +-atexit() is C-specific: use C instead, see L. +- +-=item atof +- +-atof() is C-specific. Perl converts strings to numbers transparently. +-If you need to force a scalar to a number, add a zero to it. +- +-=item atoi +- +-atoi() is C-specific. Perl converts strings to numbers transparently. +-If you need to force a scalar to a number, add a zero to it. +-If you need to have just the integer part, see L. +- +-=item atol +- +-atol() is C-specific. Perl converts strings to numbers transparently. +-If you need to force a scalar to a number, add a zero to it. +-If you need to have just the integer part, see L. +- +-=item bsearch +- +-bsearch() not supplied. For doing binary search on wordlists, +-see L. +- +-=item calloc +- +-calloc() is C-specific. Perl does memory management transparently. +- +-=item ceil +- +-This is identical to the C function C, returning the smallest +-integer value greater than or equal to the given numerical argument. +- +-=item chdir +- +-This is identical to Perl's builtin C function, allowing +-one to change the working (default) directory, see L. +- +-=item chmod +- +-This is identical to Perl's builtin C function, allowing +-one to change file and directory permissions, see L. +- +-=item chown +- +-This is identical to Perl's builtin C function, allowing one +-to change file and directory owners and groups, see L. +- +-=item clearerr +- +-Use the method C instead, to reset the error +-state (if any) and EOF state (if any) of the given stream. +- +-=item clock +- +-This is identical to the C function C, returning the +-amount of spent processor time in microseconds. +- +-=item close +- +-Close the file. This uses file descriptors such as those obtained by calling +-C. +- +- $fd = POSIX::open( "foo", &POSIX::O_RDONLY ); +- POSIX::close( $fd ); +- +-Returns C on failure. +- +-See also L. +- +-=item closedir +- +-This is identical to Perl's builtin C function for closing +-a directory handle, see L. +- +-=item cos +- +-This is identical to Perl's builtin C function, for returning +-the cosine of its numerical argument, see L. +-See also L. +- +-=item cosh +- +-This is identical to the C function C, for returning +-the hyperbolic cosine of its numeric argument. See also L. +- +-=item creat +- +-Create a new file. This returns a file descriptor like the ones returned by +-C. Use C to close the file. +- +- $fd = POSIX::creat( "foo", 0611 ); +- POSIX::close( $fd ); +- +-See also L and its C flag. +- +-=item ctermid +- +-Generates the path name for the controlling terminal. +- +- $path = POSIX::ctermid(); +- +-=item ctime +- +-This is identical to the C function C and equivalent +-to C, see L and L. +- +-=item cuserid +- +-Get the login name of the owner of the current process. +- +- $name = POSIX::cuserid(); +- +-=item difftime +- +-This is identical to the C function C, for returning +-the time difference (in seconds) between two times (as returned +-by C), see L. +- +-=item div +- +-div() is C-specific, use L on the usual C division and +-the modulus C<%>. +- +-=item dup +- +-This is similar to the C function C, for duplicating a file +-descriptor. +- +-This uses file descriptors such as those obtained by calling +-C. +- +-Returns C on failure. +- +-=item dup2 +- +-This is similar to the C function C, for duplicating a file +-descriptor to an another known file descriptor. +- +-This uses file descriptors such as those obtained by calling +-C. +- +-Returns C on failure. +- +-=item errno +- +-Returns the value of errno. +- +- $errno = POSIX::errno(); +- +-This identical to the numerical values of the C<$!>, see L. +- +-=item execl +- +-execl() is C-specific, see L. +- +-=item execle +- +-execle() is C-specific, see L. +- +-=item execlp +- +-execlp() is C-specific, see L. +- +-=item execv +- +-execv() is C-specific, see L. +- +-=item execve +- +-execve() is C-specific, see L. +- +-=item execvp +- +-execvp() is C-specific, see L. +- +-=item exit +- +-This is identical to Perl's builtin C function for exiting the +-program, see L. +- +-=item exp +- +-This is identical to Perl's builtin C function for +-returning the exponent (I-based) of the numerical argument, +-see L. +- +-=item fabs +- +-This is identical to Perl's builtin C function for returning +-the absolute value of the numerical argument, see L. +- +-=item fclose +- +-Use method C instead, or see L. +- +-=item fcntl +- +-This is identical to Perl's builtin C function, +-see L. +- +-=item fdopen +- +-Use method C instead, or see L. +- +-=item feof +- +-Use method C instead, or see L. +- +-=item ferror +- +-Use method C instead. +- +-=item fflush +- +-Use method C instead. +-See also L. +- +-=item fgetc +- +-Use method C instead, or see L. +- +-=item fgetpos +- +-Use method C instead, or see L. +- +-=item fgets +- +-Use method C instead. Similar to EE, also known +-as L. +- +-=item fileno +- +-Use method C instead, or see L. +- +-=item floor +- +-This is identical to the C function C, returning the largest +-integer value less than or equal to the numerical argument. +- +-=item fmod +- +-This is identical to the C function C. +- +- $r = fmod($x, $y); +- +-It returns the remainder C<$r = $x - $n*$y>, where C<$n = trunc($x/$y)>. +-The C<$r> has the same sign as C<$x> and magnitude (absolute value) +-less than the magnitude of C<$y>. +- +-=item fopen +- +-Use method C instead, or see L. +- +-=item fork +- +-This is identical to Perl's builtin C function +-for duplicating the current process, see L +-and L if you are in Windows. +- +-=item fpathconf +- +-Retrieves the value of a configurable limit on a file or directory. This +-uses file descriptors such as those obtained by calling C. +- +-The following will determine the maximum length of the longest allowable +-pathname on the filesystem which holds C. +- +- $fd = POSIX::open( "/var/foo", &POSIX::O_RDONLY ); +- $path_max = POSIX::fpathconf( $fd, &POSIX::_PC_PATH_MAX ); +- +-Returns C on failure. +- +-=item fprintf +- +-fprintf() is C-specific, see L instead. +- +-=item fputc +- +-fputc() is C-specific, see L instead. +- +-=item fputs +- +-fputs() is C-specific, see L instead. +- +-=item fread +- +-fread() is C-specific, see L instead. +- +-=item free +- +-free() is C-specific. Perl does memory management transparently. +- +-=item freopen +- +-freopen() is C-specific, see L instead. +- +-=item frexp +- +-Return the mantissa and exponent of a floating-point number. +- +- ($mantissa, $exponent) = POSIX::frexp( 1.234e56 ); +- +-=item fscanf +- +-fscanf() is C-specific, use EE and regular expressions instead. +- +-=item fseek +- +-Use method C instead, or see L. +- +-=item fsetpos +- +-Use method C instead, or seek L. +- +-=item fstat +- +-Get file status. This uses file descriptors such as those obtained by +-calling C. The data returned is identical to the data from +-Perl's builtin C function. +- +- $fd = POSIX::open( "foo", &POSIX::O_RDONLY ); +- @stats = POSIX::fstat( $fd ); +- +-=item fsync +- +-Use method C instead. +- +-=item ftell +- +-Use method C instead, or see L. +- +-=item fwrite +- +-fwrite() is C-specific, see L instead. +- +-=item getc +- +-This is identical to Perl's builtin C function, +-see L. +- +-=item getchar +- +-Returns one character from STDIN. Identical to Perl's C, +-see L. +- +-=item getcwd +- +-Returns the name of the current working directory. +-See also L. +- +-=item getegid +- +-Returns the effective group identifier. Similar to Perl' s builtin +-variable C<$(>, see L. +- +-=item getenv +- +-Returns the value of the specified environment variable. +-The same information is available through the C<%ENV> array. +- +-=item geteuid +- +-Returns the effective user identifier. Identical to Perl's builtin C<$E> +-variable, see L. +- +-=item getgid +- +-Returns the user's real group identifier. Similar to Perl's builtin +-variable C<$)>, see L. +- +-=item getgrgid +- +-This is identical to Perl's builtin C function for +-returning group entries by group identifiers, see +-L. +- +-=item getgrnam +- +-This is identical to Perl's builtin C function for +-returning group entries by group names, see L. +- +-=item getgroups +- +-Returns the ids of the user's supplementary groups. Similar to Perl's +-builtin variable C<$)>, see L. +- +-=item getlogin +- +-This is identical to Perl's builtin C function for +-returning the user name associated with the current session, see +-L. +- +-=item getpgrp +- +-This is identical to Perl's builtin C function for +-returning the process group identifier of the current process, see +-L. +- +-=item getpid +- +-Returns the process identifier. Identical to Perl's builtin +-variable C<$$>, see L. +- +-=item getppid +- +-This is identical to Perl's builtin C function for +-returning the process identifier of the parent process of the current +-process , see L. +- +-=item getpwnam +- +-This is identical to Perl's builtin C function for +-returning user entries by user names, see L. +- +-=item getpwuid +- +-This is identical to Perl's builtin C function for +-returning user entries by user identifiers, see L. +- +-=item gets +- +-Returns one line from C, similar to EE, also known +-as the C function, see L. +- +-B: if you have C programs that still use C, be very +-afraid. The C function is a source of endless grief because +-it has no buffer overrun checks. It should B be used. The +-C function should be preferred instead. +- +-=item getuid +- +-Returns the user's identifier. Identical to Perl's builtin C<$E> variable, +-see L. +- +-=item gmtime +- +-This is identical to Perl's builtin C function for +-converting seconds since the epoch to a date in Greenwich Mean Time, +-see L. +- +-=item isalnum +- +-This is identical to the C function, except that it can apply to a +-single character or to a whole string. Note that locale settings may +-affect what characters are considered C. Does not work on +-Unicode characters code point 256 or higher. Consider using regular +-expressions and the C construct instead, or possibly +-the C construct. +- +-=item isalpha +- +-This is identical to the C function, except that it can apply to +-a single character or to a whole string. Note that locale settings +-may affect what characters are considered C. Does not work +-on Unicode characters code point 256 or higher. Consider using regular +-expressions and the C construct instead. +- +-=item isatty +- +-Returns a boolean indicating whether the specified filehandle is connected +-to a tty. Similar to the C<-t> operator, see L. +- +-=item iscntrl +- +-This is identical to the C function, except that it can apply to +-a single character or to a whole string. Note that locale settings +-may affect what characters are considered C. Does not work +-on Unicode characters code point 256 or higher. Consider using regular +-expressions and the C construct instead. +- +-=item isdigit +- +-This is identical to the C function, except that it can apply to +-a single character or to a whole string. Note that locale settings +-may affect what characters are considered C (unlikely, but +-still possible). Does not work on Unicode characters code point 256 +-or higher. Consider using regular expressions and the C +-construct instead, or the C construct. +- +-=item isgraph +- +-This is identical to the C function, except that it can apply to +-a single character or to a whole string. Note that locale settings +-may affect what characters are considered C. Does not work +-on Unicode characters code point 256 or higher. Consider using regular +-expressions and the C construct instead. +- +-=item islower +- +-This is identical to the C function, except that it can apply to +-a single character or to a whole string. Note that locale settings +-may affect what characters are considered C. Does not work +-on Unicode characters code point 256 or higher. Consider using regular +-expressions and the C construct instead. Do B use +-C. +- +-=item isprint +- +-This is identical to the C function, except that it can apply to +-a single character or to a whole string. Note that locale settings +-may affect what characters are considered C. Does not work +-on Unicode characters code point 256 or higher. Consider using regular +-expressions and the C construct instead. +- +-=item ispunct +- +-This is identical to the C function, except that it can apply to +-a single character or to a whole string. Note that locale settings +-may affect what characters are considered C. Does not work +-on Unicode characters code point 256 or higher. Consider using regular +-expressions and the C construct instead. +- +-=item isspace +- +-This is identical to the C function, except that it can apply to +-a single character or to a whole string. Note that locale settings +-may affect what characters are considered C. Does not work +-on Unicode characters code point 256 or higher. Consider using regular +-expressions and the C construct instead, or the C +-construct. (Note that C and C are slightly +-different in that C can normally match a vertical tab, +-while C does not.) +- +-=item isupper +- +-This is identical to the C function, except that it can apply to +-a single character or to a whole string. Note that locale settings +-may affect what characters are considered C. Does not work +-on Unicode characters code point 256 or higher. Consider using regular +-expressions and the C construct instead. Do B use +-C. +- +-=item isxdigit +- +-This is identical to the C function, except that it can apply to a single +-character or to a whole string. Note that locale settings may affect what +-characters are considered C (unlikely, but still possible). +-Does not work on Unicode characters code point 256 or higher. +-Consider using regular expressions and the C +-construct instead, or simply C. +- +-=item kill +- +-This is identical to Perl's builtin C function for sending +-signals to processes (often to terminate them), see L. +- +-=item labs +- +-(For returning absolute values of long integers.) +-labs() is C-specific, see L instead. +- +-=item lchown +- +-This is identical to the C function, except the order of arguments is +-consistent with Perl's builtin C with the added restriction +-of only one path, not an list of paths. Does the same thing as the +-C function but changes the owner of a symbolic link instead +-of the file the symbolic link points to. +- +-=item ldexp +- +-This is identical to the C function C +-for multiplying floating point numbers with powers of two. +- +- $x_quadrupled = POSIX::ldexp($x, 2); +- +-=item ldiv +- +-(For computing dividends of long integers.) +-ldiv() is C-specific, use C and C instead. +- +-=item link +- +-This is identical to Perl's builtin C function +-for creating hard links into files, see L. +- +-=item localeconv +- +-Get numeric formatting information. Returns a reference to a hash +-containing the current locale formatting values. +- +-Here is how to query the database for the B (Deutsch or German) locale. +- +- $loc = POSIX::setlocale( &POSIX::LC_ALL, "de" ); +- print "Locale = $loc\n"; +- $lconv = POSIX::localeconv(); +- print "decimal_point = ", $lconv->{decimal_point}, "\n"; +- print "thousands_sep = ", $lconv->{thousands_sep}, "\n"; +- print "grouping = ", $lconv->{grouping}, "\n"; +- print "int_curr_symbol = ", $lconv->{int_curr_symbol}, "\n"; +- print "currency_symbol = ", $lconv->{currency_symbol}, "\n"; +- print "mon_decimal_point = ", $lconv->{mon_decimal_point}, "\n"; +- print "mon_thousands_sep = ", $lconv->{mon_thousands_sep}, "\n"; +- print "mon_grouping = ", $lconv->{mon_grouping}, "\n"; +- print "positive_sign = ", $lconv->{positive_sign}, "\n"; +- print "negative_sign = ", $lconv->{negative_sign}, "\n"; +- print "int_frac_digits = ", $lconv->{int_frac_digits}, "\n"; +- print "frac_digits = ", $lconv->{frac_digits}, "\n"; +- print "p_cs_precedes = ", $lconv->{p_cs_precedes}, "\n"; +- print "p_sep_by_space = ", $lconv->{p_sep_by_space}, "\n"; +- print "n_cs_precedes = ", $lconv->{n_cs_precedes}, "\n"; +- print "n_sep_by_space = ", $lconv->{n_sep_by_space}, "\n"; +- print "p_sign_posn = ", $lconv->{p_sign_posn}, "\n"; +- print "n_sign_posn = ", $lconv->{n_sign_posn}, "\n"; +- +-=item localtime +- +-This is identical to Perl's builtin C function for +-converting seconds since the epoch to a date see L. +- +-=item log +- +-This is identical to Perl's builtin C function, +-returning the natural (I-based) logarithm of the numerical argument, +-see L. +- +-=item log10 +- +-This is identical to the C function C, +-returning the 10-base logarithm of the numerical argument. +-You can also use +- +- sub log10 { log($_[0]) / log(10) } +- +-or +- +- sub log10 { log($_[0]) / 2.30258509299405 } +- +-or +- +- sub log10 { log($_[0]) * 0.434294481903252 } +- +-=item longjmp +- +-longjmp() is C-specific: use L instead. +- +-=item lseek +- +-Move the file's read/write position. This uses file descriptors such as +-those obtained by calling C. +- +- $fd = POSIX::open( "foo", &POSIX::O_RDONLY ); +- $off_t = POSIX::lseek( $fd, 0, &POSIX::SEEK_SET ); +- +-Returns C on failure. +- +-=item malloc +- +-malloc() is C-specific. Perl does memory management transparently. +- +-=item mblen +- +-This is identical to the C function C. +-Perl does not have any support for the wide and multibyte +-characters of the C standards, so this might be a rather +-useless function. +- +-=item mbstowcs +- +-This is identical to the C function C. +-Perl does not have any support for the wide and multibyte +-characters of the C standards, so this might be a rather +-useless function. +- +-=item mbtowc +- +-This is identical to the C function C. +-Perl does not have any support for the wide and multibyte +-characters of the C standards, so this might be a rather +-useless function. +- +-=item memchr +- +-memchr() is C-specific, see L instead. +- +-=item memcmp +- +-memcmp() is C-specific, use C instead, see L. +- +-=item memcpy +- +-memcpy() is C-specific, use C<=>, see L, or see L. +- +-=item memmove +- +-memmove() is C-specific, use C<=>, see L, or see L. +- +-=item memset +- +-memset() is C-specific, use C instead, see L. +- +-=item mkdir +- +-This is identical to Perl's builtin C function +-for creating directories, see L. +- +-=item mkfifo +- +-This is similar to the C function C for creating +-FIFO special files. +- +- if (mkfifo($path, $mode)) { .... +- +-Returns C on failure. The C<$mode> is similar to the +-mode of C, see L, though for C +-you B specify the C<$mode>. +- +-=item mktime +- +-Convert date/time info to a calendar time. +- +-Synopsis: +- +- mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = -1) +- +-The month (C), weekday (C), and yearday (C) begin at zero. +-I.e. January is 0, not 1; Sunday is 0, not 1; January 1st is 0, not 1. The +-year (C) is given in years since 1900. I.e. The year 1995 is 95; the +-year 2001 is 101. Consult your system's C manpage for details +-about these and the other arguments. +- +-Calendar time for December 12, 1995, at 10:30 am. +- +- $time_t = POSIX::mktime( 0, 30, 10, 12, 11, 95 ); +- print "Date = ", POSIX::ctime($time_t); +- +-Returns C on failure. +- +-=item modf +- +-Return the integral and fractional parts of a floating-point number. +- +- ($fractional, $integral) = POSIX::modf( 3.14 ); +- +-=item nice +- +-This is similar to the C function C, for changing +-the scheduling preference of the current process. Positive +-arguments mean more polite process, negative values more +-needy process. Normal user processes can only be more polite. +- +-Returns C on failure. +- +-=item offsetof +- +-offsetof() is C-specific, you probably want to see L instead. +- +-=item open +- +-Open a file for reading for writing. This returns file descriptors, not +-Perl filehandles. Use C to close the file. +- +-Open a file read-only with mode 0666. +- +- $fd = POSIX::open( "foo" ); +- +-Open a file for read and write. +- +- $fd = POSIX::open( "foo", &POSIX::O_RDWR ); +- +-Open a file for write, with truncation. +- +- $fd = POSIX::open( "foo", &POSIX::O_WRONLY | &POSIX::O_TRUNC ); +- +-Create a new file with mode 0640. Set up the file for writing. +- +- $fd = POSIX::open( "foo", &POSIX::O_CREAT | &POSIX::O_WRONLY, 0640 ); +- +-Returns C on failure. +- +-See also L. +- +-=item opendir +- +-Open a directory for reading. +- +- $dir = POSIX::opendir( "/var" ); +- @files = POSIX::readdir( $dir ); +- POSIX::closedir( $dir ); +- +-Returns C on failure. +- +-=item pathconf +- +-Retrieves the value of a configurable limit on a file or directory. +- +-The following will determine the maximum length of the longest allowable +-pathname on the filesystem which holds C. +- +- $path_max = POSIX::pathconf( "/var", &POSIX::_PC_PATH_MAX ); +- +-Returns C on failure. +- +-=item pause +- +-This is similar to the C function C, which suspends +-the execution of the current process until a signal is received. +- +-Returns C on failure. +- +-=item perror +- +-This is identical to the C function C, which outputs to the +-standard error stream the specified message followed by ": " and the +-current error string. Use the C function and the C<$!> +-variable instead, see L and L. +- +-=item pipe +- +-Create an interprocess channel. This returns file descriptors like those +-returned by C. +- +- my ($read, $write) = POSIX::pipe(); +- POSIX::write( $write, "hello", 5 ); +- POSIX::read( $read, $buf, 5 ); +- +-See also L. +- +-=item pow +- +-Computes C<$x> raised to the power C<$exponent>. +- +- $ret = POSIX::pow( $x, $exponent ); +- +-You can also use the C<**> operator, see L. +- +-=item printf +- +-Formats and prints the specified arguments to STDOUT. +-See also L. +- +-=item putc +- +-putc() is C-specific, see L instead. +- +-=item putchar +- +-putchar() is C-specific, see L instead. +- +-=item puts +- +-puts() is C-specific, see L instead. +- +-=item qsort +- +-qsort() is C-specific, see L instead. +- +-=item raise +- +-Sends the specified signal to the current process. +-See also L and the C<$$> in L. +- +-=item rand +- +-C is non-portable, see L instead. +- +-=item read +- +-Read from a file. This uses file descriptors such as those obtained by +-calling C. If the buffer C<$buf> is not large enough for the +-read then Perl will extend it to make room for the request. +- +- $fd = POSIX::open( "foo", &POSIX::O_RDONLY ); +- $bytes = POSIX::read( $fd, $buf, 3 ); +- +-Returns C on failure. +- +-See also L. +- +-=item readdir +- +-This is identical to Perl's builtin C function +-for reading directory entries, see L. +- +-=item realloc +- +-realloc() is C-specific. Perl does memory management transparently. +- +-=item remove +- +-This is identical to Perl's builtin C function +-for removing files, see L. +- +-=item rename +- +-This is identical to Perl's builtin C function +-for renaming files, see L. +- +-=item rewind +- +-Seeks to the beginning of the file. +- +-=item rewinddir +- +-This is identical to Perl's builtin C function for +-rewinding directory entry streams, see L. +- +-=item rmdir +- +-This is identical to Perl's builtin C function +-for removing (empty) directories, see L. +- +-=item scanf +- +-scanf() is C-specific, use EE and regular expressions instead, +-see L. +- +-=item setgid +- +-Sets the real group identifier and the effective group identifier for +-this process. Similar to assigning a value to the Perl's builtin +-C<$)> variable, see L, except that the latter +-will change only the real user identifier, and that the setgid() +-uses only a single numeric argument, as opposed to a space-separated +-list of numbers. +- +-=item setjmp +- +-C is C-specific: use C instead, +-see L. +- +-=item setlocale +- +-Modifies and queries program's locale. The following examples assume +- +- use POSIX qw(setlocale LC_ALL LC_CTYPE); +- +-has been issued. +- +-The following will set the traditional UNIX system locale behavior +-(the second argument C<"C">). +- +- $loc = setlocale( LC_ALL, "C" ); +- +-The following will query the current LC_CTYPE category. (No second +-argument means 'query'.) +- +- $loc = setlocale( LC_CTYPE ); +- +-The following will set the LC_CTYPE behaviour according to the locale +-environment variables (the second argument C<"">). +-Please see your systems C documentation for the locale +-environment variables' meaning or consult L. +- +- $loc = setlocale( LC_CTYPE, "" ); +- +-The following will set the LC_COLLATE behaviour to Argentinian +-Spanish. B: The naming and availability of locales depends on +-your operating system. Please consult L for how to find +-out which locales are available in your system. +- +- $loc = setlocale( LC_COLLATE, "es_AR.ISO8859-1" ); +- +-=item setpgid +- +-This is similar to the C function C for +-setting the process group identifier of the current process. +- +-Returns C on failure. +- +-=item setsid +- +-This is identical to the C function C for +-setting the session identifier of the current process. +- +-=item setuid +- +-Sets the real user identifier and the effective user identifier for +-this process. Similar to assigning a value to the Perl's builtin +-C<$E> variable, see L, except that the latter +-will change only the real user identifier. +- +-=item sigaction +- +-Detailed signal management. This uses C objects for +-the C and C arguments (the oldaction can also be +-just a hash reference). Consult your system's C manpage +-for details, see also C. +- +-Synopsis: +- +- sigaction(signal, action, oldaction = 0) +- +-Returns C on failure. The C must be a number (like +-SIGHUP), not a string (like "SIGHUP"), though Perl does try hard +-to understand you. +- +-If you use the SA_SIGINFO flag, the signal handler will in addition to +-the first argument, the signal name, also receive a second argument, a +-hash reference, inside which are the following keys with the following +-semantics, as defined by POSIX/SUSv3: +- +- signo the signal number +- errno the error number +- code if this is zero or less, the signal was sent by +- a user process and the uid and pid make sense, +- otherwise the signal was sent by the kernel +- +-The following are also defined by POSIX/SUSv3, but unfortunately +-not very widely implemented: +- +- pid the process id generating the signal +- uid the uid of the process id generating the signal +- status exit value or signal for SIGCHLD +- band band event for SIGPOLL +- +-A third argument is also passed to the handler, which contains a copy +-of the raw binary contents of the siginfo structur