diff options
author | Andy Dougherty <doughera@lafcol.lafayette.edu> | 1996-08-25 01:27:42 +0000 |
---|---|---|
committer | Andy Dougherty <doughera@lafcol.lafayette.edu> | 1996-08-25 01:27:42 +0000 |
commit | 9bb683e6b9e9c477f8ad211dd2f5b8c19d1b7bc2 (patch) | |
tree | ebad7e18a7d88b3ea7143ce23cdec0011846628c /ext | |
parent | 8971618ed9d829d1bde5e12f0500700acb21ec7d (diff) | |
download | perl-9bb683e6b9e9c477f8ad211dd2f5b8c19d1b7bc2.tar.gz |
perl 5.003_03: [patch introduction and re-organisation]perl-5.003_03
# This is my patch perl5.003_03.pat to perl5.003_02
# The full description is below.
# Please execute the following commands before applying this patch.
# (You can feed this patch to 'sh' to do so.)
# Andy Dougherty <doughera@lafcol.lafayette.edu>
# Absorbed into Changes5.002
rm -f Changes.Conf
# Not needed.
rm -f ext/POSIX/mkposixman.pl
# Moved to README.os2. I'm not sure why the README files are
# here rather than in the appropriate subdirectories.
rm -f os2/README
# Not needed.
rm -f pod/Makefile.PL
# New test for bit ops
touch t/op/bop.t
# Patches that create new tests don't always make them executable.
chmod +x t/*/*.t
# Create a new directory for Porting and Patching info.
mkdir Porting
exit 0
This is patch perl5.003_03.pat to perl version 5.003_02.
This takes you from 5.003_02 to 5.003_03.
To apply this patch, run the above commands,
cd to your perl source directory and then type
patch -p1 -N < perl5.003_03.pat
The changes are described after each /^Index/ line below. This is
designed so you can examine each change with a command such as
csplit -k perl5.003_03.pat '/^Index:/' '{99}'
Patch and enjoy,
Andy Dougherty doughera@lafcol.lafayette.edu
Dept. of Physics
Lafayette College, Easton PA 18042
Diffstat (limited to 'ext')
-rwxr-xr-x | ext/POSIX/mkposixman.pl | 1134 |
1 files changed, 0 insertions, 1134 deletions
diff --git a/ext/POSIX/mkposixman.pl b/ext/POSIX/mkposixman.pl deleted file mode 100755 index 3daa1bff7b..0000000000 --- a/ext/POSIX/mkposixman.pl +++ /dev/null @@ -1,1134 +0,0 @@ -#!/tmp/perl5 -w -#!/tmp/perl5 - -# Ramrodded by Dean Roehrich. -# -# Submissions for function descriptions are needed. Don't write a tutorial, -# and don't repeat things that can be found in the system's manpages, -# just give a quick 2-3 line note and a one-line example. -# -# Check the latest version of the Perl5 Module List for Dean's current -# email address (listed as DMR). -# -my $VERS = 951129; # yymmdd - -local *main::XS; -local *main::PM; - -open( XS, "<POSIX.xs" ) || die "Unable to open POSIX.xs"; -open( PM, "<POSIX.pm" ) || die "Unable to open POSIX.pm"; -close STDOUT; -open( STDOUT, ">POSIX.pod" ) || die "Unable to open POSIX.pod"; - -print <<'EOQ'; -=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. Things which are C<#defines> in C, like EINTR or O_NDELAY, are -automatically exported into your namespace. All functions are only exported -if you ask for them explicitly. Most likely people will prefer to use the -fully-qualified function names. - -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<perlfunc> 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. - -EOQ - -use strict; - - -my $constants = {}; -my $macros = {}; -my $packages = []; -my $posixpack = Package->new( 'POSIX' ); -my $descriptions = Description->new; - -get_constants( 'XS', $constants, $macros ); -get_functions( 'XS', $packages, $posixpack ); -get_PMfunctions( 'PM', $packages, $posixpack, $descriptions ); - - -# It is possible that the matches of setup_*() may depend on -# the matches of an earlier setup_*(). If you change the order, -# be careful that you're getting only what you want, and no more. -# -my $termios_flags = setup_termios( $constants ); -my $wait_stuff = setup_wait( $constants, $macros ); -my $stat = setup_file_char( $constants, $macros ); -my $port = setup_pat( $constants, '^_POSIX' ); -my $sc = setup_pat( $constants, '^_SC_' ); -my $pc = setup_pat( $constants, '^_PC_' ); -my $fcntl = setup_pat( $constants, '^([FO]_|FD_)' ); -my $sigs = setup_pat( $constants, '^(SIG|SA_)' ); -my $float = setup_pat( $constants, '^(L?DBL_|FLT_)' ); -my $locale = setup_pat( $constants, '^LC_' ); -my $stdio = setup_pat( $constants, '(^BUFSIZ$)|(^L_)|(^_IO...$)|(^EOF$)|(^FILENAME_MAX$)|(^TMP_MAX$)' ); -my $stdlib = setup_pat( $constants, '(^EXIT_)|(^MB_CUR_MAX$)|(^RAND_MAX$)' ); -my $limits = setup_pat( $constants, '(_MAX$)|(_MIN$)|(_BIT$)|(^MAX_)|(_BUF$)' ); -my $math = setup_pat( $constants, '^HUGE_VAL$' ); -my $time = setup_pat( $constants, '^CL' ); -my $unistd = setup_pat( $constants, '(_FILENO$)|(^SEEK_...$)|(^._OK$)' ); -my $errno = setup_pat( $constants, '^E' ); - -print_posix( $posixpack, $descriptions ); -print_classes( $packages, $constants, $termios_flags, $descriptions ); -print_misc( 'Pathname Constants', $pc ); -print_misc( 'POSIX Constants', $port ); -print_misc( 'System Configuration', $sc ); -print_misc( 'Errno', $errno ); -print_misc( 'Fcntl', $fcntl ); -print_misc( 'Float', $float ); -print_misc( 'Limits', $limits ); -print_misc( 'Locale', $locale ); -print_misc( 'Math', $math ); -print_misc( 'Signal', $sigs ); -print_misc( 'Stat', $stat ); -print_misc( 'Stdlib', $stdlib ); -print_misc( 'Stdio', $stdio ); -print_misc( 'Time', $time ); -print_misc( 'Unistd', $unistd ); -print_misc( 'Wait', $wait_stuff ); - -print_vers( $VERS ); - -dregs( $macros, $constants ); - -exit(0); - -Unimplemented. - -sub dregs { - my $macros = shift; - my $constants = shift; - - foreach (keys %$macros){ - warn "Unknown macro $_ in the POSIX.xs module.\n"; - } - foreach (keys %$constants){ - warn "Unknown constant $_ in the POSIX.xs module.\n"; - } -} - -sub get_constants { - no strict 'refs'; - my $fh = shift; - my $constants = shift; - my $macros = shift; - my $v; - - while(<$fh>){ - last if /^constant/; - } - while(<$fh>){ # }{{ - last if /^}/; - if( /return\s+([^;]+)/ ){ - $v = $1; - # skip non-symbols - if( $v !~ /^\d+$/ ){ - # remove any C casts - $v =~ s,\(.*?\)\s*(\w),$1,; - # is it a macro? - if( $v =~ s/(\(.*?\))// ){ - $macros->{$v} = $1; - } - else{ - $constants->{$v} = 1; - } - } - } - } -} - -Close the file. This uses file descriptors such as those obtained by calling -C<POSIX::open>. - - $fd = POSIX::open( "foo", &POSIX::O_RDONLY ); - POSIX::close( $fd ); - -sub get_functions { - no strict 'refs'; - my $fh = shift; - my $packages = shift; - my $posixpack = shift; - my $header = 0; - my $pack = ''; - my $prefix = ''; - my( $x, $y ); - my( $curfuncs, $curpack ); - my $ret; - - while(<$fh>){ - if( /^MODULE.*?PACKAGE\s*=\s*([^\s]+)/ ){ - $pack = $1; - $prefix = ''; - if( /PREFIX\s*=\s*([^\n]+)/ ){ - $prefix = $1; - } - #print "package($pack) prefix($prefix)\n"; - if( $pack eq 'POSIX' ){ - $curpack = $posixpack; - } - else{ - $curpack = Package->new( $pack ); - push @$packages, $curpack; - } - $curfuncs = $curpack->curfuncs; - next; - } - - chop; - # find function header - if( /^[^\s]/ && ! /^#/ ){ - $ret = /^SysRet/ ? 2 : 1; - chop($x = <$fh>); - next if( $pack eq 'POSIX' and $x =~ /^constant/ ); - $x =~ /^(.*?)\s*\((.*?)\)/; - ($x,$y) = ($1, $2); # func,sig - $x =~ s/^$prefix//; - $curfuncs->{$x} = $ret; - ++$header - } - # leave function header - else{ - $header = 0; - } - } -} - - -sub get_PMfunctions { - no strict 'refs'; - my $fh = shift; - my $packages = shift; - my $posixpack = shift; - my $desc = shift; - my $pack = ''; - my( $curfuncs, $curpack ); - my $y; - my $x; - my $sub = ''; - - # find the second package statement. - while(<$fh>){ - if( /^package\s+(.*?);/ ){ - $pack = $1; - last if $pack ne 'POSIX'; - } - } - - # Check if this package is already - # being used. - $curpack = ''; - foreach (@$packages){ - if( $_->name eq $pack ){ - $curpack = $_; - last; - } - } - # maybe start a new package. - if( $curpack eq '' ){ - $curpack = Package->new( $pack ); - push @$packages, $curpack; - } - $curfuncs = $curpack->curfuncs; - - # now fetch functions - while(<$fh>){ - if( /^package\s+(.*?);/ ){ - $pack = $1; - if( $pack eq 'POSIX' ){ - $curpack = $posixpack; - } - else{ - # Check if this package is already - # being used. - $curpack = ''; - foreach (@$packages){ - if( $_->name() eq $pack ){ - $curpack = $_; - last; - } - } - # maybe start a new package. - if( $curpack eq '' ){ - $curpack = Package->new( $pack ); - push @$packages, $curpack; - } - } - $curfuncs = $curpack->curfuncs; - next; - } - if( /^sub\s+(.*?)\s/ ){ - $sub = $1; - - # special cases - if( $pack eq 'POSIX::SigAction' and - $sub eq 'new' ){ - $curfuncs->{$sub} = 1; - } - elsif( $pack eq 'POSIX' and $sub eq 'perror' ){ - $curfuncs->{$sub} = 1; - } - - next; - } - if( /usage.*?\((.*?)\)/ ){ - $y = $1; - $curfuncs->{$sub} = 1; - next; - } - if( /^\s+unimpl\s+"(.*?)"/ ){ - $y = $1; - $y =~ s/, stopped//; - $desc->append( $pack, $sub, $y ); - $curfuncs->{$sub} = 1; - next; - } - if( /^\s+redef\s+"(.*?)"/ ){ - $x = $1; - $y = "Use method C<$x> instead"; - $desc->append( $pack, $sub, $y ); - $curfuncs->{$sub} = 1; - next; - } - } -} - -Retrieves the value of a configurable limit on a file or directory. This -uses file descriptors such as those obtained by calling C<POSIX::open>. - -The following will determine the maximum length of the longest allowable -pathname on the filesystem which holds C</tmp/foo>. - - $fd = POSIX::open( "/tmp/foo", &POSIX::O_RDONLY ); - $path_max = POSIX::fpathconf( $fd, &POSIX::_PC_PATH_MAX ); -Return the mantissa and exponent of a floating-point number. - - ($mantissa, $exponent) = POSIX::frexp( 3.14 ); -Get file status. This uses file descriptors such as those obtained by -calling C<POSIX::open>. The data returned is identical to the data from -Perl's builtin C<stat> function. - - $fd = POSIX::open( "foo", &POSIX::O_RDONLY ); - @stats = POSIX::fstat( $fd ); - -sub print_posix { - my $pack = shift; - my $desc = shift; - - print "=head1 FUNCTIONS\n\n"; - print "=over 8\n\n"; - dumpfuncs( $pack, $desc ); - print "=back\n\n"; -} - -sub print_classes { - my $packages = shift; - my $constants = shift; - my $termios = shift; - my $desc = shift; - my $pack; - my @pkgs; - - print "=head1 CLASSES\n\n"; - @pkgs = sort { $main::a->name() cmp $main::b->name() } @$packages; - while( @pkgs ){ - $pack = shift @pkgs; - print "=head2 ", $pack->name(), "\n\n"; - print "=over 8\n\n"; - - dumpfuncs( $pack, $desc ); - - if( $pack->name() =~ /termios/i ){ - dumpflags( $termios ); - } - print "=back\n\n"; - } -} - -sub setup_termios { - my $constants = shift; - my $obj; - - $obj = { - 'c_iflag field' => [qw( BRKINT ICRNL IGNBRK IGNCR IGNPAR - INLCR INPCK ISTRIP IXOFF IXON - PARMRK )], - 'c_oflag field' => [qw( OPOST )], - 'c_cflag field' => [qw( CLOCAL CREAD CSIZE CS5 CS6 CS7 CS8 - CSTOPB HUPCL PARENB PARODD )], - 'c_lflag field' => [qw( ECHO ECHOE ECHOK ECHONL ICANON - IEXTEN ISIG NOFLSH TOSTOP )], - 'c_cc field' => [qw( VEOF VEOL VERASE VINTR VKILL VQUIT - VSUSP VSTART VSTOP VMIN VTIME NCCS )], - 'Baud rate' => [], - 'Terminal interface' => [], - }; - # look for baud rates in constants, add to termios - foreach (keys %$constants){ - if( /^B\d+$/ ){ - push @{$obj->{'Baud rate'}}, $_; - } - } - # look for TC* in constants, add to termios - foreach (keys %$constants){ - if( /^TC/ ){ - push @{$obj->{'Terminal interface'}}, $_; - } - } - # trim the constants - foreach (keys %$obj){ - trim_hash( 'Constant', $obj->{$_}, $constants ); - } - return $obj; -} - - -sub dumpfuncs { - my $pack = shift; - my $desc = shift; - my $curfuncs = $pack->curfuncs; - my $pname = $pack->name; - my $func; - my @funcs = sort keys %$curfuncs; - - if( exists $curfuncs->{'new'} ){ # do new first - @funcs = grep( $_ ne 'new', @funcs ); - unshift @funcs, 'new'; - } - while( @funcs ){ - $func = shift @funcs; - if( $func eq 'DESTROY' ){ - next; # don't do DESTROY - } - print "=item $func\n\n"; - if( $desc->print( $pname, $func, $curfuncs->{$func} ) ){ - # if it was printed, note that - delete $curfuncs->{$func}; - } - } -} - -sub dumpflags { - my $flags = shift; - my $field; - - foreach $field (sort keys %$flags){ - print "=item $field values\n\n"; - print join( ' ', @{$flags->{$field}} ), "\n\n"; - } -} - -sub setup_wait { - my $constants = shift; - my $macros = shift; - my $obj; - - $obj = { - 'Macros' => [qw( WIFEXITED WEXITSTATUS WIFSIGNALED - WTERMSIG WIFSTOPPED WSTOPSIG )], - 'Constants' => [qw( WNOHANG WUNTRACED )], - }; - trim_hash( 'Constant', $obj->{Constants}, $constants ); - trim_hash( 'Macro', $obj->{Macros}, $macros ); - return $obj; -} - -sub setup_file_char { - my $constants = shift; - my $macros = shift; - my $obj; - - $obj = { - 'Macros' => [], - 'Constants' => [], - }; - # find S_* constants and add to object. - foreach (sort keys %$constants){ - if( /^S_/ ){ - push @{$obj->{'Constants'}}, $_; - } - } - # find S_* macros and add to object. - foreach (sort keys %$macros){ - if( /^S_/ ){ - push @{$obj->{'Macros'}}, $_; - } - } - # trim the hashes - trim_hash( 'Constant', $obj->{Constants}, $constants ); - trim_hash( 'Macro', $obj->{Macros}, $macros ); - return $obj; -} - - -sub setup_pat { - my $constants = shift; - my $pat = shift; - my $obj; - - $obj = { 'Constants' => [] }; - foreach (sort keys %$constants){ - if( /$pat/ ){ - push @{$obj->{'Constants'}}, $_; - } - } - trim_hash( 'Constant', $obj->{Constants}, $constants ); - return $obj; -} - -Get numeric formatting information. Returns a reference to a hash -containing the current locale formatting values. - -The database for the B<de> (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"; -Move the read/write file pointer. This uses file descriptors such as -those obtained by calling C<POSIX::open>. - - $fd = POSIX::open( "foo", &POSIX::O_RDONLY ); - $off_t = POSIX::lseek( $fd, 0, &POSIX::SEEK_SET ); - -sub print_vers { - my $vers = shift; - - print "=head1 CREATION\n\n"; - print "This document generated by $0 version $vers.\n\n"; -} - -sub print_misc { - my $hdr = shift; - my $obj = shift; - my $item; - - print "=head1 ", uc($hdr), "\n\n"; - print "=over 8\n\n"; - foreach $item (sort keys %$obj){ - print "=item $item\n\n"; - print join( ' ', @{$obj->{$item}}), "\n\n"; - } - print "=back\n\n"; -} - -sub trim_hash { - my $name = shift; - my $av = shift; - my $hv = shift; - - foreach (@$av){ - if( exists $hv->{$_} ){ - delete $hv->{$_}; - } - else{ - warn "$name $_ is not in the POSIX.xs module"; - } - } -} - -{ package Package; ## Package package - - sub new { - my $type = shift; - my $pack = shift || die; - my $self = [ $pack, {} ]; - bless $self, $type; - } - sub name { - my $self = shift; - $self->[0]; - } - sub curfuncs { - my $self = shift; - $self->[1]; - } - sub DESTROY { - my $self = shift; - my $pack = $self->name; - foreach (keys %{$self->curfuncs}){ - if( $_ eq 'DESTROY' ){ - next; # don't expect much on DESTROY - } - warn "Function ". $pack . "::$_ did not have a description.\n"; - } - } -} -{ package Description; ## Function description - - sub new { - my $type = shift; - my $self = {}; - bless $self, $type; - $self->fetch; - return $self; - } - sub fetch { - my $self = shift; - my $pack = ''; - my $c; - my( $sub, $as ); - - while(<main::DATA>){ - next if /^#/; - $sub = $as = ''; - if( /^==(.*)/ ){ - $pack = $1; - next; - } - if( /^=([^\+]+)\+\+/ ){ - $sub = $1; - $as = $sub; - } - elsif( /^=([^\+]+)\+C/ ){ - $sub = $1; - $as = 'C'; - } - elsif( /^=([^\+]+)\+(\w+)/ ){ - $sub = $1; - $as = $2; - } - elsif( /^=(.*)/ ){ - $sub = $1; - } - - if( $sub ne '' ){ - $sub = $1; - $self->{$pack."::$sub"} = ''; - $c = \($self->{$pack."::$sub"}); - if( $as eq 'C' ){ - $$c .= "This is identical to the C function C<$sub()>.\n"; - } - elsif( $as ne '' ){ - $$c .= "This is identical to Perl's builtin C<$as()> function.\n"; - } - next; - } - $$c .= $_; - } - } - sub DESTROY { - my $self = shift; - foreach (keys %$self){ - warn "Function $_ is not in the POSIX.xs module.\n"; - } - } - sub append { - my $self = shift; - my $pack = shift; - my $sub = shift; - my $str = shift || die; - - if( exists $self->{$pack."::$sub"} ){ - $self->{$pack."::$sub"} .= "\n$str.\n"; - } - else{ - $self->{$pack."::$sub"} = "$str.\n"; - } - } - sub print { - my $self = shift; - my $pack = shift; - my $sub = shift; - my $rtype = shift || die; - my $ret = 0; - - if( exists $self->{$pack."::$sub"} ){ - if( $rtype > 1 ){ - $self->{$pack."::$sub"} =~ s/identical/similar/; - } - print $self->{$pack."::$sub"}, "\n"; - delete $self->{$pack."::$sub"}; - if( $rtype > 1 ){ - print "Returns C<undef> on failure.\n\n"; - } - $ret = 1; - } - $ret; - } -} - -Create an interprocess channel. This returns file descriptors like those -returned by C<POSIX::open>. - - ($fd0, $fd1) = POSIX::pipe(); - POSIX::write( $fd0, "hello", 5 ); - POSIX::read( $fd1, $buf, 5 ); -Read from a file. This uses file descriptors such as those obtained by -calling C<POSIX::open>. 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 ); -This is similar to the C function C<setpgid()>. -Detailed signal management. This uses C<POSIX::SigAction> objects for the -C<action> and C<oldaction> arguments. Consult your system's C<sigaction> -manpage for details. - -Synopsis: - - sigaction(sig, action, oldaction = 0) -Install a signal mask and suspend process until signal arrives. This uses -C<POSIX::SigSet> objects for the C<signal_mask> argument. Consult your -system's C<sigsuspend> manpage for details. - -Synopsis: - - sigsuspend(signal_mask) -This is identical to Perl's builtin C<sprintf()> function. -Convert date and time information to string. Returns the string. - -Synopsis: - - strftime(fmt, sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = 0) - -The month (C<mon>), weekday (C<wday>), and yearday (C<yday>) begin at zero. -I.e. January is 0, not 1; Sunday is 0, not 1; January 1st is 0, not 1. The -year (C<year>) is given in years since 1900. I.e. The year 1995 is 95; the -year 2001 is 101. Consult your system's C<strftime()> manpage for details -about these and the other arguments. - -The string for Tuesday, December 12, 1995. - - $str = POSIX::strftime( "%A, %B %d, %Y", 0, 0, 0, 12, 11, 95, 2 ); - print "$str\n"; -String transformation. Returns the transformed string. - - $dst = POSIX::strxfrm( $src ); -Get name of current operating system. - - ($sysname, $nodename, $release, $version, $machine ) = POSIX::uname(); -Returns the current file position, in bytes. - - $pos = $fh->tell; -Get terminal control attributes. - -Obtain the attributes for stdin. - - $termios->getattr() - -Obtain the attributes for stdout. - - $termios->getattr( 1 ) -Set terminal control attributes. - -Set attributes immediately for stdout. - - $termios->setattr( 1, &POSIX::TCSANOW ); - -__END__ -########## -==POSIX::SigSet -=new -Create a new SigSet object. This object will be destroyed automatically -when it is no longer needed. Arguments may be supplied to initialize the -set. - -Create an empty set. - - $sigset = POSIX::SigSet->new; - -Create a set with SIGUSR1. - - $sigset = POSIX::SigSet->new( &POSIX::SIGUSR1 ); -=addset -Add a signal to a SigSet object. - - $sigset->addset( &POSIX::SIGUSR2 ); -=delset -Remove a signal from the SigSet object. - - $sigset->delset( &POSIX::SIGUSR2 ); -=emptyset -Initialize the SigSet object to be empty. - - $sigset->emptyset(); -=fillset -Initialize the SigSet object to include all signals. - - $sigset->fillset(); -=ismember -Tests the SigSet object to see if it contains a specific signal. - - if( $sigset->ismember( &POSIX::SIGUSR1 ) ){ - print "contains SIGUSR1\n"; - } -########## -==POSIX::Termios -=new -Create a new Termios object. This object will be destroyed automatically -when it is no longer needed. - - $termios = POSIX::Termios->new; -=getiflag -Retrieve the c_iflag field of a termios object. - - $c_iflag = $termios->getiflag; -=getoflag -Retrieve the c_oflag field of a termios object. - - $c_oflag = $termios->getoflag; -=getcflag -Retrieve the c_cflag field of a termios object. - - $c_cflag = $termios->getcflag; -=getlflag -Retrieve the c_lflag field of a termios object. - - $c_lflag = $termios->getlflag; -=getcc -Retrieve a value from the c_cc field of a termios object. The c_cc field is -an array so an index must be specified. - - $c_cc[1] = $termios->getcc(1); -=getospeed -Retrieve the output baud rate. - - $ospeed = $termios->getospeed; -=getispeed -Retrieve the input baud rate. - - $ispeed = $termios->getispeed; -=setiflag -Set the c_iflag field of a termios object. - - $termios->setiflag( &POSIX::BRKINT ); -=setoflag -Set the c_oflag field of a termios object. - - $termios->setoflag( &POSIX::OPOST ); -=setcflag -Set the c_cflag field of a termios object. - - $termios->setcflag( &POSIX::CLOCAL ); -=setlflag -Set the c_lflag field of a termios object. - - $termios->setlflag( &POSIX::ECHO ); -=setcc -Set a value in the c_cc field of a termios object. The c_cc field is an -array so an index must be specified. - - $termios->setcc( 1, &POSIX::VEOF ); -=setospeed -Set the output baud rate. - - $termios->setospeed( &POSIX::B9600 ); -=setispeed -Set the input baud rate. - - $termios->setispeed( &POSIX::B9600 ); -## -=setattr -=getattr -########## -==FileHandle -=new -=new_from_fd -=flush -=getc -=ungetc -=seek -=setbuf -=error -=clearerr -=tell -=getpos -=gets -=close -=new_tmpfile -=eof -=fileno -=setpos -=setvbuf -########## -==POSIX -=tolower+lc -=toupper+uc -=remove+unlink -=fabs+abs -=strstr+index -## -=closedir++ -=readdir++ -=rewinddir++ -=fcntl++ -=getgrgid++ -=getgrnam++ -=atan2++ -=cos++ -=exp++ -=abs++ -=log++ -=sin++ -=sqrt++ -=getpwnam++ -=getpwuid++ -=kill++ -=getc++ -=rename++ -=exit++ -=system++ -=chmod++ -=mkdir++ -=stat++ -=umask++ -=gmtime++ -=localtime++ -=time++ -=alarm++ -=chdir++ -=chown++ -=fork++ -=getlogin++ -=getpgrp++ -=getppid++ -=link++ -=rmdir++ -=sleep++ -=unlink++ -=utime++ -## -=perror+C -=pause+C -=tzset+C -=difftime+C -=ctime+C -=clock+C -=asctime+C -=strcoll+C -=abort+C -=tcgetpgrp+C -=setsid+C -=_exit+C -=tanh+C -=tan+C -=sinh+C -=log10+C -=ldexp+C -=fmod+C -=floor+C -=cosh+C -=ceil+C -=atan+C -=asin+C -=acos+C -## -=isatty -Returns a boolean indicating whether the specified filehandle is connected -to a tty. -=setuid -Sets the real user id for this process. -=setgid -Sets the real group id for this process. -=getpid -Returns the process's id. -=getuid -Returns the user's id. -=getegid -Returns the effective group id. -=geteuid -Returns the effective user id. -=getgid -Returns the user's real group id. -=getgroups -Returns the ids of the user's supplementary groups. -=getcwd -Returns the name of the current working directory. -=strerror -Returns the error string for the specified errno. -=getenv -Returns the value of the specified enironment variable. -=getchar -Returns one character from STDIN. -=raise -Sends the specified signal to the current process. -=gets -Returns one line from STDIN. -=printf -Prints the specified arguments to STDOUT. -=rewind -Seeks to the beginning of the file. -## -=tmpnam -Returns a name for a temporary file. - - $tmpfile = POSIX::tmpnam(); -=cuserid -Get the character login name of the user. - - $name = POSIX::cuserid(); -=ctermid -Generates the path name for controlling terminal. - - $path = POSIX::ctermid(); -=times -The times() function returns elapsed realtime since some point in the past -(such as system startup), user and system times for this process, and user -and system times used by child processes. All times are returned in clock -ticks. - - ($realtime, $user, $system, $cuser, $csystem) = POSIX::times(); - -Note: Perl's builtin C<times()> function returns four values, measured in -seconds. -=pow -Computes $x raised to the power $exponent. - - $ret = POSIX::pow( $x, $exponent ); -=errno -Returns the value of errno. - - $errno = POSIX::errno(); -=sysconf -Retrieves values of system configurable variables. - -The following will get the machine's clock speed. - - $clock_ticks = POSIX::sysconf( &POSIX::_SC_CLK_TCK ); -=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</tmp>. - - $path_max = POSIX::pathconf( "/tmp", &POSIX::_PC_PATH_MAX ); -=access -Determines the accessibility of a file. - - if( POSIX::access( "/", &POSIX::R_OK ) ){ - print "have read permission\n"; - } -=setlocale -Modifies and queries program's locale. - -The following will set the traditional UNIX system locale behavior. - -This document generated by ./mkposixman.PL version 19951212. -## -=waitpid -=wait -=fstat -=sprintf -=opendir -=creat -=ttyname -=tzname -=fpathconf -=mktime -=tcsendbreak -=tcflush -=tcflow -=tcdrain -=tcsetpgrp -=mkfifo -=strxfrm -=wctomb -=wcstombs -=mbtowc -=mbstowcs -=mblen -=write -=uname -=setpgid -=read -=pipe -=nice -=lseek -=dup2 -=dup -=close -=sigsuspend -=sigprocmask -=sigpending -=sigaction -=modf -=frexp -=localeconv -=open -=isxdigit -=isupper -=isspace -=ispunct -=isprint -=isgraph -=isdigit -=iscntrl -=isalpha -=isalnum -=islower -=assert -=strftime -########## -==POSIX::SigAction -=new -Creates a new SigAction object. This object will be destroyed automatically -when it is no longer needed. |