summaryrefslogtreecommitdiff
path: root/lib/POSIX.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/POSIX.pm')
-rw-r--r--lib/POSIX.pm1045
1 files changed, 1034 insertions, 11 deletions
diff --git a/lib/POSIX.pm b/lib/POSIX.pm
index bf5d35568c..4d08f25e5c 100644
--- a/lib/POSIX.pm
+++ b/lib/POSIX.pm
@@ -52,7 +52,7 @@ $H{limits_h} = [qw( ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX
_POSIX_STREADM_MAX _POSIX_TZNAME_MAX)];
$H{locale_h} = [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC
- LC_TIME NULL localeconf setlocale)];
+ LC_TIME NULL localeconv setlocale)];
$H{math_h} = [qw(HUGE_VAL acos asin atan2 atan ceil cos cosh exp
fabs floor fmod frexp ldexp log10 log modf pow sin sinh
@@ -66,8 +66,7 @@ $H{signal_h} = [qw(SA_NOCLDSTOP SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE
SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV
SIGSTOP SIGTERM SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2
SIG_BLOCK SIG_DFL SIG_ERR SIG_IGN SIG_SETMASK SIG_UNBLOCK
- kill raise sigaction sigaddset sigdelset sigemptyset
- sigfillset sigismember signal sigpending sigprocmask
+ kill raise sigaction signal sigpending sigprocmask
sigsuspend)];
$H{stdarg_h} = [qw()];
@@ -170,15 +169,943 @@ sub import {
Exporter::import($this,@list);
}
+sub AUTOLOAD {
+ if ($AUTOLOAD =~ /::(_?[a-z])/) {
+ $AutoLoader::AUTOLOAD = $AUTOLOAD;
+ goto &AutoLoader::AUTOLOAD
+ }
+ local $constname = $AUTOLOAD;
+ $constname =~ s/.*:://;
+ $val = constant($constname, $_[0]);
+ if ($! != 0) {
+ ($pack,$file,$line) = caller;
+ if ($! =~ /Invalid/) {
+ die "$constname is not a valid POSIX macro at $file line $line.\n";
+ }
+ else {
+ die "Your vendor has not defined POSIX macro $constname, used at $file line $line.\n";
+ }
+ }
+ eval "sub $AUTOLOAD { $val }";
+ goto &$AUTOLOAD;
+}
+
bootstrap POSIX;
-sub usage { local ($mess, $pack, $file, $line) = @_;
- die "Usage: POSIX::$_[0] at $file line $line\n";
+sub usage {
+ local ($mess, $pack, $file, $line) = @_;
+ die "Usage: POSIX::$mess at $file line $line\n";
+}
+
+sub unimpl {
+ local ($mess, $pack, $file, $line) = @_;
+ $mess =~ s/xxx//;
+ die "Unimplemented: POSIX::$mess at $file line $line\n";
+}
+
+$gensym = "SYM000";
+
+sub gensym {
+ $gensym++;
+}
+
+sub ungensym {
+ delete $_POSIX{$_[0]};
}
1;
+package POSIX::SigAction;
+
+sub new {
+ bless {HANDLER => $_[1], MASK => $_[2], FLAGS => $_[3]};
+}
__END__
+
+sub assert {
+ usage "assert(expr)", caller if @_ != 1;
+ if (!$_[0]) {
+ local ($pack,$file,$line) = caller;
+ die "Assertion failed at $file line $line\n";
+ }
+}
+
+sub tolower {
+ usage "tolower(string)", caller if @_ != 1;
+ lc($_[0]);
+}
+
+sub toupper {
+ usage "toupper(string)", caller if @_ != 1;
+ uc($_[0]);
+}
+
+sub closedir {
+ usage "closedir(dirhandle)", caller if @_ != 1;
+ closedir($_[0]);
+ ungensym($_[0]);
+}
+
+sub opendir {
+ usage "opendir(directory)", caller if @_ != 1;
+ local($dirhandle) = &gensym;
+ opendir($dirhandle, $_[0])
+ ? $dirhandle
+ : (ungensym($dirhandle), undef);
+}
+
+sub readdir {
+ usage "readdir(dirhandle)", caller if @_ != 1;
+ readdir($_[0]);
+}
+
+sub rewinddir {
+ usage "rewinddir(dirhandle)", caller if @_ != 1;
+ rewinddir($_[0]);
+}
+
+sub errno {
+ usage "errno()", caller if @_ != 0;
+ $! + 0;
+}
+
+sub creat {
+ usage "creat(filename, mode)", caller if @_ != 2;
+ &open($_[0], &O_WRONLY | &O_CREAT | &O_TRUNC, $_[2]);
+}
+
+sub fcntl {
+ usage "fcntl(filehandle, cmd, arg)", caller if @_ != 3;
+ fcntl($_[0], $_[1], $_[2]);
+}
+
+sub getgrgid {
+ usage "getgrgid(gid)", caller if @_ != 1;
+ getgrgid($_[0]);
+}
+
+sub getgrnam {
+ usage "getgrnam(name)", caller if @_ != 1;
+ getgrnam($_[0]);
+}
+
+sub atan2 {
+ usage "atan2(x,y)", caller if @_ != 2;
+ atan2($_[0], $_[1]);
+}
+
+sub cos {
+ usage "cos(x)", caller if @_ != 1;
+ cos($_[0]);
+}
+
+sub exp {
+ usage "exp(x)", caller if @_ != 1;
+ exp($_[0]);
+}
+
+sub fabs {
+ usage "fabs(x)", caller if @_ != 1;
+ abs($_[0]);
+}
+
+sub log {
+ usage "log(x)", caller if @_ != 1;
+ log($_[0]);
+}
+
+sub pow {
+ usage "pow(x,exponent)", caller if @_ != 2;
+ $_[0] ** $_[1];
+}
+
+sub sin {
+ usage "sin(x)", caller if @_ != 1;
+ sin($_[0]);
+}
+
+sub sqrt {
+ usage "sqrt(x)", caller if @_ != 1;
+ sqrt($_[0]);
+}
+
+sub tan {
+ usage "tan(x)", caller if @_ != 1;
+ tan($_[0]);
+}
+
+sub getpwnam {
+ usage "getpwnam(name)", caller if @_ != 1;
+ getpwnam($_[0]);
+}
+
+sub getpwuid {
+ usage "getpwuid(uid)", caller if @_ != 1;
+ getpwuid($_[0]);
+}
+
+sub longjmp {
+ unimpl "longjmp() is C-specific: use die instead", caller;
+}
+
+sub setjmp {
+ unimpl "setjmp() is C-specific: use eval {} instead", caller;
+}
+
+sub siglongjmp {
+ unimpl "siglongjmp() is C-specific: use die instead", caller;
+}
+
+sub sigsetjmp {
+ unimpl "sigsetjmp() is C-specific: use eval {} instead", caller;
+}
+
+sub kill {
+ usage "kill(pid, sig)", caller if @_ != 2;
+ kill $_[1], $_[0];
+}
+
+sub raise {
+ usage "raise(sig)", caller if @_ != 1;
+ kill $$, $_[0]; # Is this good enough?
+}
+
+sub offsetof {
+ unimpl "offsetof() is C-specific, stopped", caller;
+}
+
+sub clearerr {
+ usage "clearerr(filehandle)", caller if @_ != 1;
+ seek($_[0], 0, 1);
+}
+
+sub fclose {
+ unimpl "fclose() is C-specific--use close instead", caller;
+}
+
+sub feof {
+ usage "feof(filehandle)", caller if @_ != 1;
+ eof($_[0]);
+}
+
+sub fgetc {
+ usage "fgetc(filehandle)", caller if @_ != 1;
+ getc($_[0]);
+}
+
+sub fgetpos {
+ unimpl "fgetpos(xxx)", caller if @_ != 123;
+ fgetpos($_[0]);
+}
+
+sub fgets {
+ usage "fgets(filehandle)", caller if @_ != 1;
+ local($handle) = @_;
+ scalar <$handle>;
+}
+
+sub fileno {
+ usage "fileno(filehandle)", caller if @_ != 1;
+ fileno($_[0]);
+}
+
+sub fopen {
+ unimpl "fopen() is C-specific--use open instead", caller;
+}
+
+sub fprintf {
+ unimpl "fprintf() is C-specific--use printf instead", caller;
+}
+
+sub fputc {
+ unimpl "fputc() is C-specific--use print instead", caller;
+}
+
+sub fputs {
+ unimpl "fputs() is C-specific--use print instead", caller;
+ usage "fputs(string, handle)", caller if @_ != 2;
+ local($handle) = pop;
+ print $handle @_;
+}
+
+sub fread {
+ unimpl "fread() is C-specific--use read instead", caller;
+ unimpl "fread(xxx)", caller if @_ != 123;
+ fread($_[0]);
+}
+
+sub freopen {
+ unimpl "freopen() is C-specific--use open instead", caller;
+ unimpl "freopen(xxx)", caller if @_ != 123;
+ freopen($_[0]);
+}
+
+sub fscanf {
+ unimpl "fscanf() is C-specific--use <> and regular expressions instead", caller;
+ unimpl "fscanf(xxx)", caller if @_ != 123;
+ fscanf($_[0]);
+}
+
+sub fseek {
+ unimpl "fseek() is C-specific--use seek instead", caller;
+ unimpl "fseek(xxx)", caller if @_ != 123;
+ fseek($_[0]);
+}
+
+sub fsetpos {
+ unimpl "fsetpos() is C-specific--use seek instead", caller;
+ unimpl "fsetpos(xxx)", caller if @_ != 123;
+ fsetpos($_[0]);
+}
+
+sub ftell {
+ unimpl "ftell() is C-specific--use tell instead", caller;
+ unimpl "ftell(xxx)", caller if @_ != 123;
+ ftell($_[0]);
+}
+
+sub fwrite {
+ unimpl "fwrite() is C-specific--use print instead", caller;
+ unimpl "fwrite(xxx)", caller if @_ != 123;
+ fwrite($_[0]);
+}
+
+sub getc {
+ usage "getc(handle)", caller if @_ != 1;
+ getc($_[0]);
+}
+
+sub getchar {
+ usage "getchar()", caller if @_ != 0;
+ getc(STDIN);
+}
+
+sub gets {
+ usage "gets(handle)", caller if @_ != 1;
+ local($handle) = shift;
+ scalar <$handle>;
+}
+
+sub perror {
+ unimpl "perror() is C-specific--print $! instead", caller;
+ unimpl "perror(xxx)", caller if @_ != 123;
+ perror($_[0]);
+}
+
+sub printf {
+ usage "printf(pattern, args...)", caller if @_ < 1;
+ printf STDOUT @_;
+}
+
+sub putc {
+ unimpl "putc() is C-specific--use print instead", caller;
+ unimpl "putc(xxx)", caller if @_ != 123;
+ putc($_[0]);
+}
+
+sub putchar {
+ unimpl "putchar() is C-specific--use print instead", caller;
+ unimpl "putchar(xxx)", caller if @_ != 123;
+ putchar($_[0]);
+}
+
+sub puts {
+ unimpl "puts() is C-specific--use print instead", caller;
+ unimpl "puts(xxx)", caller if @_ != 123;
+ puts($_[0]);
+}
+
+sub remove {
+ unimpl "remove(xxx)", caller if @_ != 123;
+ remove($_[0]);
+}
+
+sub rename {
+ unimpl "rename(xxx)", caller if @_ != 123;
+ rename($_[0]);
+}
+
+sub rewind {
+ unimpl "rewind(xxx)", caller if @_ != 123;
+ rewind($_[0]);
+}
+
+sub scanf {
+ unimpl "scanf(xxx)", caller if @_ != 123;
+ scanf($_[0]);
+}
+
+sub setbuf {
+ unimpl "setbuf(xxx)", caller if @_ != 123;
+ setbuf($_[0]);
+}
+
+sub setvbuf {
+ unimpl "setvbuf(xxx)", caller if @_ != 123;
+ setvbuf($_[0]);
+}
+
+sub sprintf {
+ unimpl "sprintf(xxx)", caller if @_ != 123;
+ sprintf($_[0]);
+}
+
+sub sscanf {
+ unimpl "sscanf(xxx)", caller if @_ != 123;
+ sscanf($_[0]);
+}
+
+sub tmpfile {
+ unimpl "tmpfile(xxx)", caller if @_ != 123;
+ tmpfile($_[0]);
+}
+
+sub tmpnam {
+ unimpl "tmpnam(xxx)", caller if @_ != 123;
+ tmpnam($_[0]);
+}
+
+sub ungetc {
+ unimpl "ungetc(xxx)", caller if @_ != 123;
+ ungetc($_[0]);
+}
+
+sub vfprintf {
+ unimpl "vfprintf(xxx)", caller if @_ != 123;
+ vfprintf($_[0]);
+}
+
+sub vprintf {
+ unimpl "vprintf(xxx)", caller if @_ != 123;
+ vprintf($_[0]);
+}
+
+sub vsprintf {
+ unimpl "vsprintf(xxx)", caller if @_ != 123;
+ vsprintf($_[0]);
+}
+
+sub abort {
+ unimpl "abort(xxx)", caller if @_ != 123;
+ abort($_[0]);
+}
+
+sub abs {
+ usage "abs(x)", caller if @_ != 1;
+ abs($_[0]);
+}
+
+sub atexit {
+ unimpl "atexit() is C-specific: use END {} instead", caller;
+}
+
+sub atof {
+ unimpl "atof() is C-specific, stopped", caller;
+}
+
+sub atoi {
+ unimpl "atoi() is C-specific, stopped", caller;
+}
+
+sub atol {
+ unimpl "atol() is C-specific, stopped", caller;
+}
+
+sub bsearch {
+ unimpl "bsearch(xxx)", caller if @_ != 123;
+ bsearch($_[0]);
+}
+
+sub calloc {
+ unimpl "calloc(xxx)", caller if @_ != 123;
+ calloc($_[0]);
+}
+
+sub div {
+ unimpl "div(xxx)", caller if @_ != 123;
+ div($_[0]);
+}
+
+sub exit {
+ unimpl "exit(xxx)", caller if @_ != 123;
+ exit($_[0]);
+}
+
+sub free {
+ unimpl "free(xxx)", caller if @_ != 123;
+ free($_[0]);
+}
+
+sub getenv {
+ unimpl "getenv(xxx)", caller if @_ != 123;
+ getenv($_[0]);
+}
+
+sub labs {
+ unimpl "labs(xxx)", caller if @_ != 123;
+ labs($_[0]);
+}
+
+sub ldiv {
+ unimpl "ldiv(xxx)", caller if @_ != 123;
+ ldiv($_[0]);
+}
+
+sub malloc {
+ unimpl "malloc(xxx)", caller if @_ != 123;
+ malloc($_[0]);
+}
+
+sub mblen {
+ unimpl "mblen(xxx)", caller if @_ != 123;
+ mblen($_[0]);
+}
+
+sub mbstowcs {
+ unimpl "mbstowcs(xxx)", caller if @_ != 123;
+ mbstowcs($_[0]);
+}
+
+sub mbtowc {
+ unimpl "mbtowc(xxx)", caller if @_ != 123;
+ mbtowc($_[0]);
+}
+
+sub qsort {
+ unimpl "qsort(xxx)", caller if @_ != 123;
+ qsort($_[0]);
+}
+
+sub rand {
+ unimpl "rand(xxx)", caller if @_ != 123;
+ rand($_[0]);
+}
+
+sub realloc {
+ unimpl "realloc(xxx)", caller if @_ != 123;
+ realloc($_[0]);
+}
+
+sub srand {
+ unimpl "srand(xxx)", caller if @_ != 123;
+ srand($_[0]);
+}
+
+sub strtod {
+ unimpl "strtod(xxx)", caller if @_ != 123;
+ strtod($_[0]);
+}
+
+sub strtol {
+ unimpl "strtol(xxx)", caller if @_ != 123;
+ strtol($_[0]);
+}
+
+sub stroul {
+ unimpl "stroul(xxx)", caller if @_ != 123;
+ stroul($_[0]);
+}
+
+sub system {
+ unimpl "system(xxx)", caller if @_ != 123;
+ system($_[0]);
+}
+
+sub wcstombs {
+ unimpl "wcstombs(xxx)", caller if @_ != 123;
+ wcstombs($_[0]);
+}
+
+sub wctomb {
+ unimpl "wctomb(xxx)", caller if @_ != 123;
+ wctomb($_[0]);
+}
+
+sub memchr {
+ unimpl "memchr(xxx)", caller if @_ != 123;
+ memchr($_[0]);
+}
+
+sub memcmp {
+ unimpl "memcmp(xxx)", caller if @_ != 123;
+ memcmp($_[0]);
+}
+
+sub memcpy {
+ unimpl "memcpy(xxx)", caller if @_ != 123;
+ memcpy($_[0]);
+}
+
+sub memmove {
+ unimpl "memmove(xxx)", caller if @_ != 123;
+ memmove($_[0]);
+}
+
+sub memset {
+ unimpl "memset(xxx)", caller if @_ != 123;
+ memset($_[0]);
+}
+
+sub strcat {
+ unimpl "strcat(xxx)", caller if @_ != 123;
+ strcat($_[0]);
+}
+
+sub strchr {
+ unimpl "strchr(xxx)", caller if @_ != 123;
+ strchr($_[0]);
+}
+
+sub strcmp {
+ unimpl "strcmp(xxx)", caller if @_ != 123;
+ strcmp($_[0]);
+}
+
+sub strcoll {
+ unimpl "strcoll(xxx)", caller if @_ != 123;
+ strcoll($_[0]);
+}
+
+sub strcpy {
+ unimpl "strcpy(xxx)", caller if @_ != 123;
+ strcpy($_[0]);
+}
+
+sub strcspn {
+ unimpl "strcspn(xxx)", caller if @_ != 123;
+ strcspn($_[0]);
+}
+
+sub strerror {
+ unimpl "strerror(xxx)", caller if @_ != 123;
+ strerror($_[0]);
+}
+
+sub strlen {
+ unimpl "strlen(xxx)", caller if @_ != 123;
+ strlen($_[0]);
+}
+
+sub strncat {
+ unimpl "strncat(xxx)", caller if @_ != 123;
+ strncat($_[0]);
+}
+
+sub strncmp {
+ unimpl "strncmp(xxx)", caller if @_ != 123;
+ strncmp($_[0]);
+}
+
+sub strncpy {
+ unimpl "strncpy(xxx)", caller if @_ != 123;
+ strncpy($_[0]);
+}
+
+sub strpbrk {
+ unimpl "strpbrk(xxx)", caller if @_ != 123;
+ strpbrk($_[0]);
+}
+
+sub strrchr {
+ unimpl "strrchr(xxx)", caller if @_ != 123;
+ strrchr($_[0]);
+}
+
+sub strspn {
+ unimpl "strspn(xxx)", caller if @_ != 123;
+ strspn($_[0]);
+}
+
+sub strstr {
+ unimpl "strstr(xxx)", caller if @_ != 123;
+ strstr($_[0]);
+}
+
+sub strtok {
+ unimpl "strtok(xxx)", caller if @_ != 123;
+ strtok($_[0]);
+}
+
+sub strxfrm {
+ unimpl "strxfrm(xxx)", caller if @_ != 123;
+ strxfrm($_[0]);
+}
+
+sub chmod {
+ unimpl "chmod(xxx)", caller if @_ != 123;
+ chmod($_[0]);
+}
+
+sub fstat {
+ unimpl "fstat(xxx)", caller if @_ != 123;
+ fstat($_[0]);
+}
+
+sub mkdir {
+ unimpl "mkdir(xxx)", caller if @_ != 123;
+ mkdir($_[0]);
+}
+
+sub mkfifo {
+ unimpl "mkfifo(xxx)", caller if @_ != 123;
+ mkfifo($_[0]);
+}
+
+sub stat {
+ unimpl "stat(xxx)", caller if @_ != 123;
+ stat($_[0]);
+}
+
+sub umask {
+ unimpl "umask(xxx)", caller if @_ != 123;
+ umask($_[0]);
+}
+
+sub times {
+ unimpl "times(xxx)", caller if @_ != 123;
+ times($_[0]);
+}
+
+sub wait {
+ unimpl "wait(xxx)", caller if @_ != 123;
+ wait($_[0]);
+}
+
+sub waitpid {
+ unimpl "waitpid(xxx)", caller if @_ != 123;
+ waitpid($_[0]);
+}
+
+sub cfgetispeed {
+ unimpl "cfgetispeed(xxx)", caller if @_ != 123;
+ cfgetispeed($_[0]);
+}
+
+sub cfgetospeed {
+ unimpl "cfgetospeed(xxx)", caller if @_ != 123;
+ cfgetospeed($_[0]);
+}
+
+sub cfsetispeed {
+ unimpl "cfsetispeed(xxx)", caller if @_ != 123;
+ cfsetispeed($_[0]);
+}
+
+sub cfsetospeed {
+ unimpl "cfsetospeed(xxx)", caller if @_ != 123;
+ cfsetospeed($_[0]);
+}
+
+sub tcdrain {
+ unimpl "tcdrain(xxx)", caller if @_ != 123;
+ tcdrain($_[0]);
+}
+
+sub tcflow {
+ unimpl "tcflow(xxx)", caller if @_ != 123;
+ tcflow($_[0]);
+}
+
+sub tcflush {
+ unimpl "tcflush(xxx)", caller if @_ != 123;
+ tcflush($_[0]);
+}
+
+sub tcgetattr {
+ unimpl "tcgetattr(xxx)", caller if @_ != 123;
+ tcgetattr($_[0]);
+}
+
+sub tcsendbreak {
+ unimpl "tcsendbreak(xxx)", caller if @_ != 123;
+ tcsendbreak($_[0]);
+}
+
+sub tcsetattr {
+ unimpl "tcsetattr(xxx)", caller if @_ != 123;
+ tcsetattr($_[0]);
+}
+
+sub asctime {
+ unimpl "asctime(xxx)", caller if @_ != 123;
+ asctime($_[0]);
+}
+
+sub clock {
+ unimpl "clock(xxx)", caller if @_ != 123;
+ clock($_[0]);
+}
+
+sub ctime {
+ unimpl "ctime(xxx)", caller if @_ != 123;
+ ctime($_[0]);
+}
+
+sub difftime {
+ unimpl "difftime(xxx)", caller if @_ != 123;
+ difftime($_[0]);
+}
+
+sub gmtime {
+ unimpl "gmtime(xxx)", caller if @_ != 123;
+ gmtime($_[0]);
+}
+
+sub localtime {
+ unimpl "localtime(xxx)", caller if @_ != 123;
+ localtime($_[0]);
+}
+
+sub mktime {
+ unimpl "mktime(xxx)", caller if @_ != 123;
+ mktime($_[0]);
+}
+
+sub strftime {
+ unimpl "strftime(xxx)", caller if @_ != 123;
+ strftime($_[0]);
+}
+
+sub time {
+ unimpl "time(xxx)", caller if @_ != 123;
+ time($_[0]);
+}
+
+sub tzset {
+ unimpl "tzset(xxx)", caller if @_ != 123;
+ tzset($_[0]);
+}
+
+sub tzname {
+ unimpl "tzname(xxx)", caller if @_ != 123;
+ tzname($_[0]);
+}
+
+sub _exit {
+ unimpl "_exit(xxx)", caller if @_ != 123;
+ _exit($_[0]);
+}
+
+sub access {
+ unimpl "access(xxx)", caller if @_ != 123;
+ access($_[0]);
+}
+
+sub alarm {
+ unimpl "alarm(xxx)", caller if @_ != 123;
+ alarm($_[0]);
+}
+
+sub chdir {
+ unimpl "chdir(xxx)", caller if @_ != 123;
+ chdir($_[0]);
+}
+
+sub chown {
+ unimpl "chown(xxx)", caller if @_ != 123;
+ chown($_[0]);
+}
+
+sub close {
+ unimpl "close(xxx)", caller if @_ != 123;
+ close($_[0]);
+}
+
+sub ctermid {
+ unimpl "ctermid(xxx)", caller if @_ != 123;
+ ctermid($_[0]);
+}
+
+sub cuserid {
+ unimpl "cuserid(xxx)", caller if @_ != 123;
+ cuserid($_[0]);
+}
+
+sub dup2 {
+ unimpl "dup2(xxx)", caller if @_ != 123;
+ dup2($_[0]);
+}
+
+sub dup {
+ unimpl "dup(xxx)", caller if @_ != 123;
+ dup($_[0]);
+}
+
+sub execl {
+ unimpl "execl(xxx)", caller if @_ != 123;
+ execl($_[0]);
+}
+
+sub execle {
+ unimpl "execle(xxx)", caller if @_ != 123;
+ execle($_[0]);
+}
+
+sub execlp {
+ unimpl "execlp(xxx)", caller if @_ != 123;
+ execlp($_[0]);
+}
+
+sub execv {
+ unimpl "execv(xxx)", caller if @_ != 123;
+ execv($_[0]);
+}
+
+sub execve {
+ unimpl "execve(xxx)", caller if @_ != 123;
+ execve($_[0]);
+}
+
+sub execvp {
+ unimpl "execvp(xxx)", caller if @_ != 123;
+ execvp($_[0]);
+}
+
+sub fork {
+ usage "fork()", caller if @_ != 0;
+ fork;
+}
+
+sub fpathconf {
+ unimpl "fpathconf(xxx)", caller if @_ != 123;
+ fpathconf($_[0]);
+}
+
+sub getcwd {
+ unimpl "getcwd(xxx)", caller if @_ != 123;
+ getcwd($_[0]);
+}
+
+sub getegid {
+ unimpl "getegid(xxx)", caller if @_ != 123;
+ getegid($_[0]);
+}
+
+sub geteuid {
+ unimpl "geteuid(xxx)", caller if @_ != 123;
+ geteuid($_[0]);
+}
+
+sub getgid {
+ unimpl "getgid(xxx)", caller if @_ != 123;
+ getgid($_[0]);
+}
+
+sub getgroups {
+ unimpl "getgroups(xxx)", caller if @_ != 123;
+ getgroups($_[0]);
+}
+
+sub getlogin {
+ unimpl "getlogin(xxx)", caller if @_ != 123;
+ getlogin($_[0]);
+}
+
+sub getpgrp {
+ unimpl "getpgrp(xxx)", caller if @_ != 123;
+ getpgrp($_[0]);
+}
+
sub getpid {
usage "getpid()", caller if @_ != 0;
$$;
@@ -189,12 +1116,108 @@ sub getppid {
getppid;
}
-sub fork {
- usage "fork()", caller if @_ != 0;
- fork;
+sub getuid {
+ unimpl "getuid(xxx)", caller if @_ != 123;
+ getuid($_[0]);
}
-sub kill {
- usage "kill(pid, sig)", caller if @_ != 2;
- kill $_[1], $_[0];
+sub isatty {
+ unimpl "isatty(xxx)", caller if @_ != 123;
+ isatty($_[0]);
+}
+
+sub link {
+ unimpl "link(xxx)", caller if @_ != 123;
+ link($_[0]);
+}
+
+sub lseek {
+ unimpl "lseek(xxx)", caller if @_ != 123;
+ lseek($_[0]);
+}
+
+sub pathconf {
+ unimpl "pathconf(xxx)", caller if @_ != 123;
+ pathconf($_[0]);
+}
+
+sub pause {
+ unimpl "pause(xxx)", caller if @_ != 123;
+ pause($_[0]);
+}
+
+sub pipe {
+ unimpl "pipe(xxx)", caller if @_ != 123;
+ pipe($_[0]);
+}
+
+sub read {
+ unimpl "read(xxx)", caller if @_ != 123;
+ read($_[0]);
+}
+
+sub rmdir {
+ unimpl "rmdir(xxx)", caller if @_ != 123;
+ rmdir($_[0]);
+}
+
+sub setgid {
+ unimpl "setgid(xxx)", caller if @_ != 123;
+ setgid($_[0]);
+}
+
+sub setpgid {
+ unimpl "setpgid(xxx)", caller if @_ != 123;
+ setpgid($_[0]);
+}
+
+sub setsid {
+ unimpl "setsid(xxx)", caller if @_ != 123;
+ setsid($_[0]);
+}
+
+sub setuid {
+ unimpl "setuid(xxx)", caller if @_ != 123;
+ setuid($_[0]);
+}
+
+sub sleep {
+ unimpl "sleep(xxx)", caller if @_ != 123;
+ sleep($_[0]);
+}
+
+sub sysconf {
+ unimpl "sysconf(xxx)", caller if @_ != 123;
+ sysconf($_[0]);
}
+
+sub tcgetpgrp {
+ unimpl "tcgetpgrp(xxx)", caller if @_ != 123;
+ tcgetpgrp($_[0]);
+}
+
+sub tcsetpgrp {
+ unimpl "tcsetpgrp(xxx)", caller if @_ != 123;
+ tcsetpgrp($_[0]);
+}
+
+sub ttyname {
+ unimpl "ttyname(xxx)", caller if @_ != 123;
+ ttyname($_[0]);
+}
+
+sub unlink {
+ unimpl "unlink(xxx)", caller if @_ != 123;
+ unlink($_[0]);
+}
+
+sub write {
+ unimpl "write(xxx)", caller if @_ != 123;
+ write($_[0]);
+}
+
+sub utime {
+ unimpl "utime(xxx)", caller if @_ != 123;
+ utime($_[0]);
+}
+