X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FFcntl%2FFcntl.xs;h=c907c9ac8d0b2ab7d1f2be01fc069757317b5f1d;hb=2dc92170b2dd9e41c48e775084065721dadbc042;hp=bc16cc9645a0265de810ca1b7b2454f5d8fed28d;hpb=c5be433b5c5658093bc9cae4434721a0b63e7a85;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/Fcntl/Fcntl.xs b/ext/Fcntl/Fcntl.xs index bc16cc9..c907c9a 100644 --- a/ext/Fcntl/Fcntl.xs +++ b/ext/Fcntl/Fcntl.xs @@ -15,6 +15,10 @@ #endif #endif +#ifdef I_UNISTD +#include +#endif + /* This comment is a kludge to get metaconfig to see the symbols VAL_O_NONBLOCK VAL_EAGAIN @@ -29,374 +33,8 @@ --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 'F': - if (strnEQ(name, "F_", 2)) { - 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_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_POSIX")) -#ifdef F_POSIX - return F_POSIX; -#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_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_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_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, "FEXCL")) -#ifdef FEXCL - return FEXCL; -#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, "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_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_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_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 - } else - goto not_there; - 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