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