This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[Patch 5.8.1 Encode.pm] v-strings deprecated
[perl5.git] / ext / Fcntl / Fcntl.xs
index 8d4a073..c907c9a 100644 (file)
    --AD  October 16, 1995
 */
 
-static int
-not_here(char *s)
-{
-    croak("%s not implemented on this architecture", s);
-    return -1;
-}
-
-static double
-constant(char *name, int arg)
-{
-    errno = 0;
-    switch (*name) {
-    case '_':
-       if (strEQ(name, "_S_IFMT")) /* Yes, _S_IFMT. */
-#ifdef S_IFMT
-         return S_IFMT;
-#else
-         goto not_there;
-#endif
-       break;
-    case 'F':
-       if (strnEQ(name, "F_", 2)) {
-           if (strEQ(name, "F_ALLOCSP"))
-#ifdef F_ALLOCSP
-               return F_ALLOCSP;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_ALLOCSP64"))
-#ifdef F_ALLOCSP64
-               return F_ALLOCSP64;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_COMPAT"))
-#ifdef F_COMPAT
-               return F_COMPAT;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_DUP2FD"))
-#ifdef F_DUP2FD
-               return F_DUP2FD;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_DUPFD"))
-#ifdef F_DUPFD
-               return F_DUPFD;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_EXLCK"))
-#ifdef F_EXLCK
-               return F_EXLCK;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_FREESP"))
-#ifdef F_FREESP
-               return F_FREESP;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_FREESP64"))
-#ifdef F_FREESP64
-               return F_FREESP64;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_FSYNC"))
-#ifdef F_FSYNC
-               return F_FSYNC;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_FSYNC64"))
-#ifdef F_FSYNC64
-               return F_FSYNC64;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_GETFD"))
-#ifdef F_GETFD
-               return F_GETFD;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_GETFL"))
-#ifdef F_GETFL
-               return F_GETFL;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_GETLK"))
-#ifdef F_GETLK
-               return F_GETLK;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_GETLK64"))
-#ifdef F_GETLK64
-               return F_GETLK64;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_GETOWN"))
-#ifdef F_GETOWN
-               return F_GETOWN;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_NODNY"))
-#ifdef F_NODNY
-               return F_NODNY;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_POSIX"))
-#ifdef F_POSIX
-               return F_POSIX;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_RDACC"))
-#ifdef F_RDACC
-               return F_RDACC;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_RDDNY"))
-#ifdef F_RDDNY
-               return F_RDDNY;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_RDLCK"))
-#ifdef F_RDLCK
-               return F_RDLCK;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_RWACC"))
-#ifdef F_RWACC
-               return F_RWACC;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_RWDNY"))
-#ifdef F_RWDNY
-               return F_RWDNY;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_SETFD"))
-#ifdef F_SETFD
-               return F_SETFD;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_SETFL"))
-#ifdef F_SETFL
-               return F_SETFL;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_SETLK"))
-#ifdef F_SETLK
-               return F_SETLK;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_SETLK64"))
-#ifdef F_SETLK64
-               return F_SETLK64;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_SETLKW"))
-#ifdef F_SETLKW
-               return F_SETLKW;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_SETLKW64"))
-#ifdef F_SETLKW64
-               return F_SETLKW64;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_SETOWN"))
-#ifdef F_SETOWN
-               return F_SETOWN;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_SHARE"))
-#ifdef F_SHARE
-               return F_SHARE;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_SHLCK"))
-#ifdef F_SHLCK
-               return F_SHLCK;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_UNLCK"))
-#ifdef F_UNLCK
-               return F_UNLCK;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_UNSHARE"))
-#ifdef F_UNSHARE
-               return F_UNSHARE;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_WRACC"))
-#ifdef F_WRACC
-               return F_WRACC;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_WRDNY"))
-#ifdef F_WRDNY
-               return F_WRDNY;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "F_WRLCK"))
-#ifdef F_WRLCK
-               return F_WRLCK;
-#else
-               goto not_there;
-#endif
-           errno = EINVAL;
-           return 0;
-       }
-        if (strEQ(name, "FAPPEND"))
-#ifdef FAPPEND
-            return FAPPEND;
-#else
-            goto not_there;
-#endif
-        if (strEQ(name, "FASYNC"))
-#ifdef FASYNC
-            return FASYNC;
-#else
-            goto not_there;
-#endif
-        if (strEQ(name, "FCREAT"))
-#ifdef FCREAT
-            return FCREAT;
-#else
-            goto not_there;
-#endif
-       if (strEQ(name, "FD_CLOEXEC"))
-#ifdef FD_CLOEXEC
-           return FD_CLOEXEC;
-#else
-           goto not_there;
-#endif
-       if (strEQ(name, "FDEFER"))
-#ifdef FDEFER
-           return FDEFER;
-#else
-           goto not_there;
-#endif
-        if (strEQ(name, "FDSYNC"))
-#ifdef FDSYNC
-            return FDSYNC;
-#else
-            goto not_there;
-#endif
-        if (strEQ(name, "FEXCL"))
-#ifdef FEXCL
-            return FEXCL;
-#else
-            goto not_there;
-#endif
-        if (strEQ(name, "FLARGEFILE"))
-#ifdef FLARGEFILE
-            return FLARGEFILE;
-#else
-            goto not_there;
-#endif
-        if (strEQ(name, "FNDELAY"))
-#ifdef FNDELAY
-            return FNDELAY;
-#else
-            goto not_there;
-#endif
-        if (strEQ(name, "FNONBLOCK"))
-#ifdef FNONBLOCK
-            return FNONBLOCK;
-#else
-            goto not_there;
-#endif
-        if (strEQ(name, "FRSYNC"))
-#ifdef FRSYNC
-            return FRSYNC;
-#else
-            goto not_there;
-#endif
-        if (strEQ(name, "FSYNC"))
-#ifdef FSYNC
-            return FSYNC;
-#else
-            goto not_there;
-#endif
-        if (strEQ(name, "FTRUNC"))
-#ifdef FTRUNC
-            return FTRUNC;
-#else
-            goto not_there;
-#endif
-       break;
-    case 'L':
-       if (strnEQ(name, "LOCK_", 5)) {
-           /* We support flock() on systems which don't have it, so
-              always supply the constants. */
-           if (strEQ(name, "LOCK_SH"))
-#ifdef LOCK_SH
-               return LOCK_SH;
-#else
-               return 1;
-#endif
-           if (strEQ(name, "LOCK_EX"))
-#ifdef LOCK_EX
-               return LOCK_EX;
-#else
-               return 2;
-#endif
-           if (strEQ(name, "LOCK_NB"))
-#ifdef LOCK_NB
-               return LOCK_NB;
-#else
-               return 4;
-#endif
-           if (strEQ(name, "LOCK_UN"))
-#ifdef LOCK_UN
-               return LOCK_UN;
-#else
-               return 8;
-#endif
-       } else
-         goto not_there;
-       break;
-    case 'O':
-       if (strnEQ(name, "O_", 2)) {
-           if (strEQ(name, "O_ACCMODE"))
-#ifdef O_ACCMODE
-               return O_ACCMODE;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_APPEND"))
-#ifdef O_APPEND
-               return O_APPEND;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_ASYNC"))
-#ifdef O_ASYNC
-               return O_ASYNC;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_BINARY"))
-#ifdef O_BINARY
-               return O_BINARY;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_CREAT"))
-#ifdef O_CREAT
-               return O_CREAT;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_DEFER"))
-#ifdef O_DEFER
-               return O_DEFER;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_DIRECT"))
-#ifdef O_DIRECT
-               return O_DIRECT;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_DIRECTORY"))
-#ifdef O_DIRECTORY
-               return O_DIRECTORY;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_DSYNC"))
-#ifdef O_DSYNC
-               return O_DSYNC;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_EXCL"))
-#ifdef O_EXCL
-               return O_EXCL;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_EXLOCK"))
-#ifdef O_EXLOCK
-               return O_EXLOCK;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_LARGEFILE"))
-#ifdef O_LARGEFILE
-               return O_LARGEFILE;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_NDELAY"))
-#ifdef O_NDELAY
-               return O_NDELAY;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_NOCTTY"))
-#ifdef O_NOCTTY
-               return O_NOCTTY;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_NOFOLLOW"))
-#ifdef O_NOFOLLOW
-               return O_NOFOLLOW;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_NONBLOCK"))
-#ifdef O_NONBLOCK
-               return O_NONBLOCK;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_RDONLY"))
-#ifdef O_RDONLY
-               return O_RDONLY;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_RDWR"))
-#ifdef O_RDWR
-               return O_RDWR;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_RSYNC"))
-#ifdef O_RSYNC
-               return O_RSYNC;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_SHLOCK"))
-#ifdef O_SHLOCK
-               return O_SHLOCK;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_SYNC"))
-#ifdef O_SYNC
-               return O_SYNC;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_TEMPORARY"))
-#ifdef O_TEMPORARY
-               return O_TEMPORARY;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_TEXT"))
-#ifdef O_TEXT
-               return O_TEXT;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_TRUNC"))
-#ifdef O_TRUNC
-               return O_TRUNC;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_WRONLY"))
-#ifdef O_WRONLY
-               return O_WRONLY;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_ALIAS"))
-#ifdef O_ALIAS
-               return O_ALIAS;
-#else
-               goto not_there;
-#endif
-           if (strEQ(name, "O_RSRC"))
-#ifdef O_RSRC
-               return O_RSRC;
-#else
-               goto not_there;
-#endif
-       } else
-         goto not_there;
-       break;
-    case 'S':
-      switch (name[1]) {
-      case '_':
-       if (strEQ(name, "S_ISUID"))
-#ifdef S_ISUID
-         return S_ISUID;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_ISGID"))
-#ifdef S_ISGID
-         return S_ISGID;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_ISVTX"))
-#ifdef S_ISVTX
-         return S_ISVTX;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_ISTXT"))
-#ifdef S_ISTXT
-         return S_ISTXT;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IFREG"))
-#ifdef S_IFREG
-         return S_IFREG;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IFDIR"))
-#ifdef S_IFDIR
-         return S_IFDIR;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IFLNK"))
-#ifdef S_IFLNK
-         return S_IFLNK;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IFSOCK"))
-#ifdef S_IFSOCK
-         return S_IFSOCK;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IFBLK"))
-#ifdef S_IFBLK
-         return S_IFBLK;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IFCHR"))
-#ifdef S_IFCHR
-         return S_IFCHR;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IFIFO"))
-#ifdef S_IFIFO
-         return S_IFIFO;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IFWHT"))
-#ifdef S_IFWHT
-         return S_IFWHT;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_ENFMT"))
-#ifdef S_ENFMT
-         return S_ENFMT;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IRUSR"))
-#ifdef S_IRUSR
-         return S_IRUSR;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IWUSR"))
-#ifdef S_IWUSR
-         return S_IWUSR;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IXUSR"))
-#ifdef S_IXUSR
-         return S_IXUSR;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IRWXU"))
-#ifdef S_IRWXU
-         return S_IRWXU;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IRGRP"))
-#ifdef S_IRGRP
-         return S_IRGRP;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IWGRP"))
-#ifdef S_IWGRP
-         return S_IWGRP;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IXGRP"))
-#ifdef S_IXGRP
-         return S_IXGRP;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IRWXG"))
-#ifdef S_IRWXG
-         return S_IRWXG;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IROTH"))
-#ifdef S_IROTH
-         return S_IROTH;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IWOTH"))
-#ifdef S_IWOTH
-         return S_IWOTH;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IXOTH"))
-#ifdef S_IXOTH
-         return S_IXOTH;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IRWXO"))
-#ifdef S_IRWXO
-         return S_IRWXO;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IREAD"))
-#ifdef S_IREAD
-         return S_IREAD;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IWRITE"))
-#ifdef S_IWRITE
-         return S_IWRITE;
-#else
-         goto not_there;
-#endif
-       if (strEQ(name, "S_IEXEC"))
-#ifdef S_IEXEC
-         return S_IEXEC;
-#else
-         goto not_there;
-#endif
-       break;
-      case 'E':
-         if (strEQ(name, "SEEK_CUR"))
-#ifdef SEEK_CUR
-           return SEEK_CUR;
-#else
-           return 1;
-#endif
-       if (strEQ(name, "SEEK_END"))
-#ifdef SEEK_END
-           return SEEK_END;
-#else
-           return 2;
-#endif
-       if (strEQ(name, "SEEK_SET"))
-#ifdef SEEK_SET
-           return SEEK_SET;
-#else
-           return 0;
-#endif
-       break;
-      }    
-    }
-    errno = EINVAL;
-    return 0;
-
-not_there:
-    errno = ENOENT;
-    return 0;
-}
-
+#include "const-c.inc"
 
 MODULE = Fcntl         PACKAGE = Fcntl
 
-double
-constant(name,arg)
-       char *          name
-       int             arg
-
+INCLUDE: const-xs.inc