home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / usr / lib / perl / 5.8.8 / Fcntl.pm < prev    next >
Encoding:
Perl POD Document  |  2007-03-05  |  3.4 KB  |  182 lines

  1. package Fcntl;
  2.  
  3. our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $AUTOLOAD);
  4.  
  5. require Exporter;
  6. use XSLoader ();
  7. @ISA = qw(Exporter);
  8. $VERSION = "1.05";
  9. # Items to export into callers namespace by default
  10. # (move infrequently used names to @EXPORT_OK below)
  11. @EXPORT =
  12.   qw(
  13.     FD_CLOEXEC
  14.     F_ALLOCSP
  15.     F_ALLOCSP64
  16.     F_COMPAT
  17.     F_DUP2FD
  18.     F_DUPFD
  19.     F_EXLCK
  20.     F_FREESP
  21.     F_FREESP64
  22.     F_FSYNC
  23.     F_FSYNC64
  24.     F_GETFD
  25.     F_GETFL
  26.     F_GETLK
  27.     F_GETLK64
  28.     F_GETOWN
  29.     F_NODNY
  30.     F_POSIX
  31.     F_RDACC
  32.     F_RDDNY
  33.     F_RDLCK
  34.     F_RWACC
  35.     F_RWDNY
  36.     F_SETFD
  37.     F_SETFL
  38.     F_SETLK
  39.     F_SETLK64
  40.     F_SETLKW
  41.     F_SETLKW64
  42.     F_SETOWN
  43.     F_SHARE
  44.     F_SHLCK
  45.     F_UNLCK
  46.     F_UNSHARE
  47.     F_WRACC
  48.     F_WRDNY
  49.     F_WRLCK
  50.     O_ACCMODE
  51.     O_ALIAS
  52.     O_APPEND
  53.     O_ASYNC
  54.     O_BINARY
  55.     O_CREAT
  56.     O_DEFER
  57.     O_DIRECT
  58.     O_DIRECTORY
  59.     O_DSYNC
  60.     O_EXCL
  61.     O_EXLOCK
  62.     O_LARGEFILE
  63.     O_NDELAY
  64.     O_NOCTTY
  65.     O_NOFOLLOW
  66.     O_NOINHERIT
  67.     O_NONBLOCK
  68.     O_RANDOM
  69.     O_RAW
  70.     O_RDONLY
  71.     O_RDWR
  72.     O_RSRC
  73.     O_RSYNC
  74.     O_SEQUENTIAL
  75.     O_SHLOCK
  76.     O_SYNC
  77.     O_TEMPORARY
  78.     O_TEXT
  79.     O_TRUNC
  80.     O_WRONLY
  81.      );
  82.  
  83. # Other items we are prepared to export if requested
  84. @EXPORT_OK = qw(
  85.     DN_ACCESS
  86.     DN_ATTRIB
  87.     DN_CREATE
  88.     DN_DELETE
  89.     DN_MODIFY
  90.     DN_MULTISHOT
  91.     DN_RENAME
  92.     FAPPEND
  93.     FASYNC
  94.     FCREAT
  95.     FDEFER
  96.     FDSYNC
  97.     FEXCL
  98.     FLARGEFILE
  99.     FNDELAY
  100.     FNONBLOCK
  101.     FRSYNC
  102.     FSYNC
  103.     FTRUNC
  104.     F_GETLEASE
  105.     F_GETSIG
  106.     F_NOTIFY
  107.     F_SETLEASE
  108.     F_SETSIG
  109.     LOCK_EX
  110.     LOCK_MAND
  111.     LOCK_NB
  112.     LOCK_READ
  113.     LOCK_RW
  114.     LOCK_SH
  115.     LOCK_UN
  116.     LOCK_WRITE
  117.     O_IGNORE_CTTY
  118.     O_NOATIME
  119.     O_NOLINK
  120.     O_NOTRANS
  121.     SEEK_CUR
  122.     SEEK_END
  123.     SEEK_SET
  124.     S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT
  125.     S_IREAD S_IWRITE S_IEXEC
  126.     S_IRGRP S_IWGRP S_IXGRP S_IRWXG
  127.     S_IROTH S_IWOTH S_IXOTH S_IRWXO
  128.     S_IRUSR S_IWUSR S_IXUSR S_IRWXU
  129.     S_ISUID S_ISGID S_ISVTX S_ISTXT
  130.     _S_IFMT S_IFREG S_IFDIR S_IFLNK
  131.     &S_ISREG &S_ISDIR &S_ISLNK &S_ISSOCK &S_ISBLK &S_ISCHR &S_ISFIFO
  132.     &S_ISWHT &S_ISENFMT &S_IFMT &S_IMODE
  133. );
  134. # Named groups of exports
  135. %EXPORT_TAGS = (
  136.     'flock'   => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)],
  137.     'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE
  138.              FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC)],
  139.     'seek'    => [qw(SEEK_SET SEEK_CUR SEEK_END)],
  140.     'mode'    => [qw(S_ISUID S_ISGID S_ISVTX S_ISTXT
  141.              _S_IFMT S_IFREG S_IFDIR S_IFLNK
  142.              S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT
  143.              S_IRUSR S_IWUSR S_IXUSR S_IRWXU
  144.              S_IRGRP S_IWGRP S_IXGRP S_IRWXG
  145.              S_IROTH S_IWOTH S_IXOTH S_IRWXO
  146.              S_IREAD S_IWRITE S_IEXEC
  147.              S_ISREG S_ISDIR S_ISLNK S_ISSOCK
  148.              S_ISBLK S_ISCHR S_ISFIFO
  149.              S_ISWHT S_ISENFMT        
  150.              S_IFMT S_IMODE
  151.                   )],
  152. );
  153.  
  154. sub S_IFMT  { @_ ? ( $_[0] & _S_IFMT() ) : _S_IFMT()  }
  155. sub S_IMODE { $_[0] & 07777 }
  156.  
  157. sub S_ISREG    { ( $_[0] & _S_IFMT() ) == S_IFREG()   }
  158. sub S_ISDIR    { ( $_[0] & _S_IFMT() ) == S_IFDIR()   }
  159. sub S_ISLNK    { ( $_[0] & _S_IFMT() ) == S_IFLNK()   }
  160. sub S_ISSOCK   { ( $_[0] & _S_IFMT() ) == S_IFSOCK()  }
  161. sub S_ISBLK    { ( $_[0] & _S_IFMT() ) == S_IFBLK()   }
  162. sub S_ISCHR    { ( $_[0] & _S_IFMT() ) == S_IFCHR()   }
  163. sub S_ISFIFO   { ( $_[0] & _S_IFMT() ) == S_IFIFO()   }
  164. sub S_ISWHT    { ( $_[0] & _S_IFMT() ) == S_IFWHT()   }
  165. sub S_ISENFMT  { ( $_[0] & _S_IFMT() ) == S_IFENFMT() }
  166.  
  167. sub AUTOLOAD {
  168.     (my $constname = $AUTOLOAD) =~ s/.*:://;
  169.     die "&Fcntl::constant not defined" if $constname eq 'constant';
  170.     my ($error, $val) = constant($constname);
  171.     if ($error) {
  172.         my (undef,$file,$line) = caller;
  173.         die "$error at $file line $line.\n";
  174.     }
  175.     *$AUTOLOAD = sub { $val };
  176.     goto &$AUTOLOAD;
  177. }
  178.  
  179. XSLoader::load 'Fcntl', $VERSION;
  180.  
  181. 1;
  182.