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 b505239..c907c9a 100644 (file)
@@ -1,8 +1,23 @@
+#define PERL_NO_GET_CONTEXT
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
 
-#include <fcntl.h>
+#ifdef VMS
+#  include <file.h>
+#else
+#if defined(__GNUC__) && defined(__cplusplus) && defined(WIN32)
+#define _NO_OLDNAMES
+#endif 
+#  include <fcntl.h>
+#if defined(__GNUC__) && defined(__cplusplus) && defined(WIN32)
+#undef _NO_OLDNAMES
+#endif 
+#endif
+
+#ifdef I_UNISTD
+#include <unistd.h>
+#endif
 
 /* This comment is a kludge to get metaconfig to see the symbols
     VAL_O_NONBLOCK
    --AD  October 16, 1995
 */
 
-static int
-not_here(s)
-char *s;
-{
-    croak("%s not implemented on this architecture", s);
-    return -1;
-}
-
-static double
-constant(name, arg)
-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_GETFD"))
-#ifdef F_GETFD
-               return F_GETFD;
-#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_SETFD"))
-#ifdef F_SETFD
-               return F_SETFD;
-#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_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_SETLKW"))
-#ifdef F_SETLKW
-               return F_SETLKW;
-#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_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;
-       } else
-         if (strEQ(name, "FD_CLOEXEC"))
-#ifdef FD_CLOEXEC
-           return FD_CLOEXEC;
-#else
-           goto not_there;
-#endif
-       break;
-    case 'O':
-       if (strnEQ(name, "O_", 2)) {
-           if (strEQ(name, "O_CREAT"))
-#ifdef O_CREAT
-               return O_CREAT;
-#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_NOCTTY"))
-#ifdef O_NOCTTY
-               return O_NOCTTY;
-#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_APPEND"))
-#ifdef O_APPEND
-               return O_APPEND;
-#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_NDELAY"))
-#ifdef O_NDELAY
-               return O_NDELAY;
-#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_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