]> granicus.if.org Git - python/commitdiff
Issue #16136: Remove VMS support and VMS-related code
authorChristian Heimes <christian@cheimes.de>
Sat, 21 Dec 2013 15:19:10 +0000 (16:19 +0100)
committerChristian Heimes <christian@cheimes.de>
Sat, 21 Dec 2013 15:19:10 +0000 (16:19 +0100)
20 files changed:
Doc/whatsnew/3.4.rst
Include/pyerrors.h
Lib/test/test_pep3151.py
Misc/NEWS
Modules/_cryptmodule.c
Modules/fcntlmodule.c
Modules/fpectlmodule.c
Modules/getpath.c
Modules/grpmodule.c
Modules/main.c
Modules/mmapmodule.c
Modules/posixmodule.c
Modules/pwdmodule.c
Modules/selectmodule.c
Modules/socketmodule.c
Objects/exceptions.c
Parser/myreadline.c
Python/dynload_shlib.c
Python/random.c
Python/sysmodule.c

index 8311a0596d291a97f474896aff2665f045ab12d9..d07fa8c1a6a4036ddae601c7e9254a614fe828e1 100644 (file)
@@ -977,6 +977,7 @@ Unsupported Operating Systems
 
 * OS/2
 * Windows 2000
+* VMS
 
 
 Deprecated Python modules, functions and methods
index 6a8e0e810e36ed03082b3a8c9691ff8b5be11769..ebc027fea383136ff660b8e58135e5fb1a977f4d 100644 (file)
@@ -199,9 +199,6 @@ PyAPI_DATA(PyObject *) PyExc_IOError;
 #ifdef MS_WINDOWS
 PyAPI_DATA(PyObject *) PyExc_WindowsError;
 #endif
-#ifdef __VMS
-PyAPI_DATA(PyObject *) PyExc_VMSError;
-#endif
 
 PyAPI_DATA(PyObject *) PyExc_RecursionErrorInst;
 
index 2792c10f9892c68e369ee6d8645e02444b9e902d..7d4a5d8446343fc035c0236488f68267a4697c46 100644 (file)
@@ -157,8 +157,6 @@ class AttributesTest(unittest.TestCase):
         e.characters_written = 5
         self.assertEqual(e.characters_written, 5)
 
-    # XXX VMSError not tested
-
 
 class ExplicitSubclassingTest(unittest.TestCase):
 
index c38a8c474d4b9f2f5f94146bdd5fdd944e87b9d0..6778ec712d7bf0d658102dd8de06cd44d83b0d4a 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -256,6 +256,8 @@ Tests
 Build
 -----
 
+- Issue #16136: Remove VMS support
+
 - Issue #18215: Add script Tools/ssl/test_multiple_versions.py to compile and
   run Python's unit tests with multiple versions of OpenSSL.
 
index 51007889bf820c07321942133fdde8adb31c535e..62aa06cd8567baf15f59bc3b84584ced36137e89 100644 (file)
@@ -5,19 +5,12 @@
 
 #include <sys/types.h>
 
-#ifdef __VMS
-#include <openssl/des.h>
-#endif
-
 /* Module crypt */
 
 
 static PyObject *crypt_crypt(PyObject *self, PyObject *args)
 {
     char *word, *salt;
-#ifndef __VMS
-    extern char * crypt(const char *, const char *);
-#endif
 
     if (!PyArg_ParseTuple(args, "ss:crypt", &word, &salt)) {
         return NULL;
index 79d292f1ae44f432ce98dc413a55819512d3be9e..cf0ac19976f915c8831a393d33472a4e1ca8a4be 100644 (file)
@@ -208,11 +208,7 @@ fcntl_ioctl(PyObject *self, PyObject *args)
       return NULL;
     }
     Py_BEGIN_ALLOW_THREADS
-#ifdef __VMS
-    ret = ioctl(fd, code, (void *)arg);
-#else
     ret = ioctl(fd, code, arg);
-#endif
     Py_END_ALLOW_THREADS
     if (ret < 0) {
         PyErr_SetFromErrno(PyExc_IOError);
index 6af2f82f70737905042e2b477c36427f78f10c7d..052b83480daad6a1d58cb978e91bab8065f388c6 100644 (file)
@@ -70,10 +70,6 @@ extern "C" {
 
 #if defined(__FreeBSD__)
 #  include <ieeefp.h>
-#elif defined(__VMS)
-#define __NEW_STARLET
-#include <starlet.h>
-#include <ieeedef.h>
 #endif
 
 #ifndef WANT_SIGFPE_HANDLER
@@ -182,23 +178,6 @@ static void fpe_reset(Sigfunc *handler)
     ieee_set_fp_control(fp_control);
     PyOS_setsig(SIGFPE, handler);
 
-/*-- DEC ALPHA VMS --------------------------------------------------------*/
-#elif defined(__ALPHA) && defined(__VMS)
-        IEEE clrmsk;
-        IEEE setmsk;
-        clrmsk.ieee$q_flags =
-                IEEE$M_TRAP_ENABLE_UNF |  IEEE$M_TRAP_ENABLE_INE |
-                 IEEE$M_MAP_UMZ;
-        setmsk.ieee$q_flags =
-                IEEE$M_TRAP_ENABLE_INV | IEEE$M_TRAP_ENABLE_DZE |
-                IEEE$M_TRAP_ENABLE_OVF;
-        sys$ieee_set_fp_control(&clrmsk, &setmsk, 0);
-        PyOS_setsig(SIGFPE, handler);
-
-/*-- HP IA64 VMS --------------------------------------------------------*/
-#elif defined(__ia64) && defined(__VMS)
-    PyOS_setsig(SIGFPE, handler);
-
 /*-- Cray Unicos ----------------------------------------------------------*/
 #elif defined(cray)
     /* UNICOS delivers SIGFPE by default, but no matherr */
@@ -251,14 +230,6 @@ static PyObject *turnoff_sigfpe(PyObject *self,PyObject *args)
 #ifdef __FreeBSD__
     fpresetsticky(fpgetsticky());
     fpsetmask(0);
-#elif defined(__VMS)
-        IEEE clrmsk;
-         clrmsk.ieee$q_flags =
-                IEEE$M_TRAP_ENABLE_UNF |  IEEE$M_TRAP_ENABLE_INE |
-                IEEE$M_MAP_UMZ | IEEE$M_TRAP_ENABLE_INV |
-                IEEE$M_TRAP_ENABLE_DZE | IEEE$M_TRAP_ENABLE_OVF |
-                IEEE$M_INHERIT;
-        sys$ieee_set_fp_control(&clrmsk, 0, 0);
 #else
     fputs("Operation not implemented\n", stderr);
 #endif
index 9e79c26b9e4a2dd07c3d1243c6df39bce1d9ff96..c057737ec2bbd1d96ef53548211fee15197da2ea 100644 (file)
 #endif
 
 #ifndef PREFIX
-#  ifdef __VMS
-#    define PREFIX ""
-#  else
-#    define PREFIX "/usr/local"
-#  endif
+#  define PREFIX "/usr/local"
 #endif
 
 #ifndef EXEC_PREFIX
index a85a2715e91f002c3df7a763a16b1f33b068ae80..c8a93723eaefd780d1ffd75e5b72e7915abc8a7a 100644 (file)
@@ -58,17 +58,12 @@ mkgrent(struct group *p)
 
 #define SET(i,val) PyStructSequence_SET_ITEM(v, i, val)
     SET(setIndex++, PyUnicode_DecodeFSDefault(p->gr_name));
-#ifdef __VMS
-    SET(setIndex++, Py_None);
-    Py_INCREF(Py_None);
-#else
     if (p->gr_passwd)
             SET(setIndex++, PyUnicode_DecodeFSDefault(p->gr_passwd));
     else {
             SET(setIndex++, Py_None);
             Py_INCREF(Py_None);
     }
-#endif
     SET(setIndex++, _PyLong_FromGid(p->gr_gid));
     SET(setIndex++, w);
 #undef SET
index 9171070ab5dd2f4ee731981c1b17f91edc5e1edc..87a21d7c30f259b9d6e6d820e0e5e3f8f6c0368e 100644 (file)
@@ -5,11 +5,6 @@
 
 #include <locale.h>
 
-#ifdef __VMS
-#error "PEP 11: VMS is now unsupported, code will be removed in Python 3.4"
-#include <unixlib.h>
-#endif
-
 #if defined(MS_WINDOWS) || defined(__CYGWIN__)
 #include <windows.h>
 #ifdef HAVE_FCNTL_H
@@ -124,19 +119,7 @@ usage(int exitcode, wchar_t* program)
         fprintf(f, usage_5, DELIM, PYTHONHOMEHELP);
         fputs(usage_6, f);
     }
-#if defined(__VMS)
-    if (exitcode == 0) {
-        /* suppress 'error' message */
-        return 1;
-    }
-    else {
-        /* STS$M_INHIB_MSG + SS$_ABORT */
-        return 0x1000002c;
-    }
-#else
     return exitcode;
-#endif
-    /*NOTREACHED*/
 }
 
 static void RunStartupFile(PyCompilerFlags *cf)
@@ -580,14 +563,7 @@ Py_Main(int argc, wchar_t **argv)
     if (command == NULL && module == NULL && _PyOS_optind < argc &&
         wcscmp(argv[_PyOS_optind], L"-") != 0)
     {
-#ifdef __VMS
-        filename = decc$translate_vms(argv[_PyOS_optind]);
-        if (filename == (char *)0 || filename == (char *)-1)
-            filename = argv[_PyOS_optind];
-
-#else
         filename = argv[_PyOS_optind];
-#endif
     }
 
     stdin_is_interactive = Py_FdIsInteractive(stdin, (char *)0);
@@ -623,11 +599,6 @@ Py_Main(int argc, wchar_t **argv)
 #endif /* !MS_WINDOWS */
         /* Leave stderr alone - it should be unbuffered anyway. */
     }
-#ifdef __VMS
-    else {
-        setvbuf (stdout, (char *)NULL, _IOLBF, BUFSIZ);
-    }
-#endif /* __VMS */
 
 #ifdef __APPLE__
     /* On MacOS X, when the Python interpreter is embedded in an
index 366dac15e67566243231113da9271b4fd4fc701a..07b5c6bcd1df4b2757bdc94384740d3b79ce68e0 100644 (file)
@@ -1158,12 +1158,6 @@ new_mmap_object(PyTypeObject *type, PyObject *args, PyObject *kwdict)
         (void)fcntl(fd, F_FULLFSYNC);
 #endif
 #ifdef HAVE_FSTAT
-#  ifdef __VMS
-    /* on OpenVMS we must ensure that all bytes are written to the file */
-    if (fd != -1) {
-        fsync(fd);
-    }
-#  endif
     if (fd != -1 && fstat(fd, &st) == 0 && S_ISREG(st.st_mode)) {
         if (map_size == 0) {
             if (st.st_size == 0) {
index ec70948e22035cba4b707a4d01a4578ff6f48919..1258670e72623b8846cb99eba4276f476f67cc77 100644 (file)
 #include "posixmodule.h"
 #endif
 
-#if defined(__VMS)
-#    error "PEP 11: VMS is now unsupported, code will be removed in Python 3.4"
-#    include <unixio.h>
-#endif /* defined(__VMS) */
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -164,9 +159,6 @@ corresponding Unix manual entries for more information on calls.");
 #define HAVE_FSYNC      1
 #define fsync _commit
 #else
-#if defined(__VMS)
-/* Everything needed is defined in vms/pyconfig.h */
-#else                   /* all other compilers */
 /* Unix functions that the configure script doesn't check for */
 #define HAVE_EXECV      1
 #define HAVE_FORK       1
@@ -184,7 +176,6 @@ corresponding Unix manual entries for more information on calls.");
 #define HAVE_SYSTEM     1
 #define HAVE_WAIT       1
 #define HAVE_TTYNAME    1
-#endif  /* __VMS */
 #endif  /* _MSC_VER */
 #endif  /* __BORLANDC__ */
 #endif  /* ! __WATCOMC__ || __QNX__ */
@@ -2765,17 +2756,7 @@ os_ttyname_impl(PyModuleDef *module, int fd)
 {
     char *ret;
 
-#if defined(__VMS)
-    /* file descriptor 0 only, the default input device (stdin) */
-    if (fd == 0) {
-        ret = ttyname();
-    }
-    else {
-        ret = NULL;
-    }
-#else
     ret = ttyname(fd);
-#endif
     if (ret == NULL)
         posix_error();
     return ret;
@@ -8340,10 +8321,6 @@ posix_fstat(PyObject *self, PyObject *args)
     int res;
     if (!PyArg_ParseTuple(args, "i:fstat", &fd))
         return NULL;
-#ifdef __VMS
-    /* on OpenVMS we must ensure that all bytes are written to the file */
-    fsync(fd);
-#endif
     Py_BEGIN_ALLOW_THREADS
     res = FSTAT(fd, &st);
     Py_END_ALLOW_THREADS
index 99094004411f19cc39898822fb567941f8701175..ebb87120180c8bde0de89b11f1db48d0d4518f81 100644 (file)
@@ -69,18 +69,10 @@ mkpwent(struct passwd *p)
 #define SETS(i,val) sets(v, i, val)
 
     SETS(setIndex++, p->pw_name);
-#ifdef __VMS
-    SETS(setIndex++, "");
-#else
     SETS(setIndex++, p->pw_passwd);
-#endif
     PyStructSequence_SET_ITEM(v, setIndex++, _PyLong_FromUid(p->pw_uid));
     PyStructSequence_SET_ITEM(v, setIndex++, _PyLong_FromGid(p->pw_gid));
-#ifdef __VMS
-    SETS(setIndex++, "");
-#else
     SETS(setIndex++, p->pw_gecos);
-#endif
     SETS(setIndex++, p->pw_dir);
     SETS(setIndex++, p->pw_shell);
 
index 0293c8b47b25bdd8aa12301b3346fba267ff910f..d44e8de929caf30d15f0bd8720efa45c7805fe71 100644 (file)
@@ -52,9 +52,6 @@ extern void bzero(void *, int);
 #  include <winsock.h>
 #else
 #  define SOCKET int
-#  if defined(__VMS)
-#    include <socket.h>
-#  endif
 #endif
 
 /* list of Python objects and their file descriptor */
@@ -1708,17 +1705,17 @@ static PyTypeObject kqueue_queue_Type;
  * kevent is not standard and its members vary across BSDs.
  */
 #if !defined(__OpenBSD__)
-#   define IDENT_TYPE  T_UINTPTRT
-#   define IDENT_CAST  Py_intptr_t
-#   define DATA_TYPE   T_INTPTRT
+#   define IDENT_TYPE  T_UINTPTRT
+#   define IDENT_CAST  Py_intptr_t
+#   define DATA_TYPE   T_INTPTRT
 #   define DATA_FMT_UNIT INTPTRT_FMT_UNIT
-#   define IDENT_AsType        PyLong_AsUintptr_t
+#   define IDENT_AsType PyLong_AsUintptr_t
 #else
-#   define IDENT_TYPE  T_UINT
-#   define IDENT_CAST  int
-#   define DATA_TYPE   T_INT
+#   define IDENT_TYPE  T_UINT
+#   define IDENT_CAST  int
+#   define DATA_TYPE   T_INT
 #   define DATA_FMT_UNIT "i"
-#   define IDENT_AsType        PyLong_AsUnsignedLong
+#   define IDENT_AsType PyLong_AsUnsignedLong
 #endif
 
 /* Unfortunately, we can't store python objects in udata, because
@@ -1770,7 +1767,7 @@ kqueue_event_init(kqueue_event_Object *self, PyObject *args, PyObject *kwds)
 
     if (PyLong_Check(pfd)
 #if IDENT_TYPE == T_UINT
-       && PyLong_AsUnsignedLong(pfd) <= UINT_MAX
+        && PyLong_AsUnsignedLong(pfd) <= UINT_MAX
 #endif
     ) {
         self->e.ident = IDENT_AsType(pfd);
@@ -2253,7 +2250,7 @@ arguments; each contains the subset of the corresponding file descriptors\n\
 that are ready.\n\
 \n\
 *** IMPORTANT NOTICE ***\n\
-On Windows and OpenVMS, only sockets are supported; on Unix, all file\n\
+On Windows only sockets are supported; on Unix, all file\n\
 descriptors can be used.");
 
 static PyMethodDef select_methods[] = {
@@ -2271,7 +2268,7 @@ PyDoc_STRVAR(module_doc,
 "This module supports asynchronous I/O on multiple file descriptors.\n\
 \n\
 *** IMPORTANT NOTICE ***\n\
-On Windows and OpenVMS, only sockets are supported; on Unix, all file descriptors.");
+On Windows only sockets are supported; on Unix, all file descriptors.");
 
 
 static struct PyModuleDef selectmodule = {
index 92d52d11ce5161febfd4c1533addb5e1ca5399ab..0aba5911e25bc9234eb3fe8a715808f221f2db6a 100644 (file)
@@ -188,7 +188,7 @@ if_indextoname(index) -- return the corresponding interface name\n\
 #if defined(WITH_THREAD) && (defined(__APPLE__) || \
     (defined(__FreeBSD__) && __FreeBSD_version+0 < 503000) || \
     defined(__OpenBSD__) || defined(__NetBSD__) || \
-    defined(__VMS) || !defined(HAVE_GETADDRINFO))
+    !defined(HAVE_GETADDRINFO))
 #define USE_GETADDRINFO_LOCK
 #endif
 
@@ -212,10 +212,6 @@ if_indextoname(index) -- return the corresponding interface name\n\
 # include <ctype.h>
 #endif
 
-#if defined(__VMS)
-#  include <ioctl.h>
-#endif
-
 #ifdef __APPLE__
 # include <sys/ioctl.h>
 #endif
@@ -403,11 +399,6 @@ const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
 #endif
 #endif
 
-#ifdef __VMS
-/* TCP/IP Services for VMS uses a maximum send/recv buffer length */
-#define SEGMENT_SIZE (32 * 1024 -1)
-#endif
-
 /* Convert "sock_addr_t *" to "struct sockaddr *". */
 #define SAS2SA(x)       (&((x)->sa))
 
@@ -556,37 +547,13 @@ set_gaierror(int error)
     return NULL;
 }
 
-#ifdef __VMS
-/* Function to send in segments */
-static int
-sendsegmented(int sock_fd, char *buf, int len, int flags)
-{
-    int n = 0;
-    int remaining = len;
-
-    while (remaining > 0) {
-        unsigned int segment;
-
-        segment = (remaining >= SEGMENT_SIZE ? SEGMENT_SIZE : remaining);
-        n = send(sock_fd, buf, segment, flags);
-        if (n < 0) {
-            return n;
-        }
-        remaining -= segment;
-        buf += segment;
-    } /* end while */
-
-    return len;
-}
-#endif
-
 /* Function to perform the setting of socket blocking mode
    internally. block = (1 | 0). */
 static int
 internal_setblocking(PySocketSockObject *s, int block)
 {
 #if !defined(MS_WINDOWS) \
-    && !((defined(HAVE_SYS_IOCTL_H) && defined(FIONBIO)) || defined(__VMS))
+    && !((defined(HAVE_SYS_IOCTL_H) && defined(FIONBIO)))
     int delay_flag, new_delay_flag;
 #endif
 #ifdef SOCK_NONBLOCK
@@ -598,7 +565,7 @@ internal_setblocking(PySocketSockObject *s, int block)
 
     Py_BEGIN_ALLOW_THREADS
 #ifndef MS_WINDOWS
-#if (defined(HAVE_SYS_IOCTL_H) && defined(FIONBIO)) || defined(__VMS)
+#if (defined(HAVE_SYS_IOCTL_H) && defined(FIONBIO))
     block = !block;
     ioctl(s->sock_fd, FIONBIO, (unsigned int *)&block);
 #else
@@ -2227,13 +2194,7 @@ sock_getsockopt(PySocketSockObject *s, PyObject *args)
             return s->errorhandler();
         return PyLong_FromLong(flag);
     }
-#ifdef __VMS
-    /* socklen_t is unsigned so no negative test is needed,
-       test buflen == 0 is previously done */
-    if (buflen > 1024) {
-#else
     if (buflen <= 0 || buflen > 1024) {
-#endif
         PyErr_SetString(PyExc_OSError,
                         "getsockopt buflen out of range");
         return NULL;
@@ -2603,10 +2564,6 @@ sock_recv_guts(PySocketSockObject *s, char* cbuf, Py_ssize_t len, int flags)
 {
     Py_ssize_t outlen = -1;
     int timeout;
-#ifdef __VMS
-    int remaining;
-    char *read_buf;
-#endif
 
     if (!IS_SELECTABLE(s)) {
         select_error();
@@ -2617,7 +2574,6 @@ sock_recv_guts(PySocketSockObject *s, char* cbuf, Py_ssize_t len, int flags)
         return 0;
     }
 
-#ifndef __VMS
     BEGIN_SELECT_LOOP(s)
     Py_BEGIN_ALLOW_THREADS
     timeout = internal_select_ex(s, 0, interval);
@@ -2643,48 +2599,6 @@ sock_recv_guts(PySocketSockObject *s, char* cbuf, Py_ssize_t len, int flags)
         s->errorhandler();
         return -1;
     }
-#else
-    read_buf = cbuf;
-    remaining = len;
-    while (remaining != 0) {
-        unsigned int segment;
-        int nread = -1;
-
-        segment = remaining /SEGMENT_SIZE;
-        if (segment != 0) {
-            segment = SEGMENT_SIZE;
-        }
-        else {
-            segment = remaining;
-        }
-
-        BEGIN_SELECT_LOOP(s)
-        Py_BEGIN_ALLOW_THREADS
-        timeout = internal_select_ex(s, 0, interval);
-        if (!timeout)
-            nread = recv(s->sock_fd, read_buf, segment, flags);
-        Py_END_ALLOW_THREADS
-        if (timeout == 1) {
-            PyErr_SetString(socket_timeout, "timed out");
-            return -1;
-        }
-        END_SELECT_LOOP(s)
-
-        if (nread < 0) {
-            s->errorhandler();
-            return -1;
-        }
-        if (nread != remaining) {
-            read_buf += nread;
-            break;
-        }
-
-        remaining -= segment;
-        read_buf += segment;
-    }
-    outlen = read_buf - cbuf;
-#endif /* !__VMS */
-
     return outlen;
 }
 
@@ -3318,9 +3232,7 @@ sock_send(PySocketSockObject *s, PyObject *args)
     Py_BEGIN_ALLOW_THREADS
     timeout = internal_select_ex(s, 1, interval);
     if (!timeout) {
-#ifdef __VMS
-        n = sendsegmented(s->sock_fd, buf, len, flags);
-#elif defined(MS_WINDOWS)
+#ifdef MS_WINDOWS
         if (len > INT_MAX)
             len = INT_MAX;
         n = send(s->sock_fd, buf, (int)len, flags);
@@ -3375,9 +3287,7 @@ sock_sendall(PySocketSockObject *s, PyObject *args)
         timeout = internal_select(s, 1);
         n = -1;
         if (!timeout) {
-#ifdef __VMS
-            n = sendsegmented(s->sock_fd, buf, len, flags);
-#elif defined(MS_WINDOWS)
+#ifdef MS_WINDOWS
             if (len > INT_MAX)
                 len = INT_MAX;
             n = send(s->sock_fd, buf, (int)len, flags);
@@ -5310,9 +5220,9 @@ socket_getaddrinfo(PyObject *self, PyObject *args, PyObject* kwargs)
 #if defined(__APPLE__) && defined(AI_NUMERICSERV)
     if ((flags & AI_NUMERICSERV) && (pptr == NULL || (pptr[0] == '0' && pptr[1] == 0))) {
         /* On OSX upto at least OSX 10.8 getaddrinfo crashes
-        * if AI_NUMERICSERV is set and the servname is NULL or "0".
-        * This workaround avoids a segfault in libsystem.
-        */
+         * if AI_NUMERICSERV is set and the servname is NULL or "0".
+         * This workaround avoids a segfault in libsystem.
+         */
         pptr = "00";
     }
 #endif
index af40bc8feae6fb4d85c522e60f9fb238405a1e8b..bff7f0819e3978a079a439bb83eef2b631126749 100644 (file)
@@ -16,9 +16,6 @@ PyObject *PyExc_IOError = NULL;
 #ifdef MS_WINDOWS
 PyObject *PyExc_WindowsError = NULL;
 #endif
-#ifdef __VMS
-PyObject *PyExc_VMSError = NULL;
-#endif
 
 /* The dict map from errno codes to OSError subclasses */
 static PyObject *errnomap = NULL;
@@ -2472,9 +2469,6 @@ _PyExc_Init(PyObject *bltinmod)
     INIT_ALIAS(IOError, OSError)
 #ifdef MS_WINDOWS
     INIT_ALIAS(WindowsError, OSError)
-#endif
-#ifdef __VMS
-    INIT_ALIAS(VMSError, OSError)
 #endif
     POST_INIT(EOFError)
     POST_INIT(RuntimeError)
index a1c4b5c896ae1dd021332c4e20da92d0041422a2..28c7b6d7fff83c2c1d0f6421ef8a364abda5fa6f 100644 (file)
 #include "windows.h"
 #endif /* MS_WINDOWS */
 
-#ifdef __VMS
-extern char* vms__StdioReadline(FILE *sys_stdin, FILE *sys_stdout, char *prompt);
-#endif
-
 
 PyThreadState* _PyOS_ReadlineTState;
 
@@ -189,11 +185,7 @@ PyOS_Readline(FILE *sys_stdin, FILE *sys_stdout, const char *prompt)
 
 
     if (PyOS_ReadlineFunctionPointer == NULL) {
-#ifdef __VMS
-        PyOS_ReadlineFunctionPointer = vms__StdioReadline;
-#else
         PyOS_ReadlineFunctionPointer = PyOS_StdioReadline;
-#endif
     }
 
 #ifdef WITH_THREAD
index 888fbfcc68c6cd15c749db30450d173748158881..5cd1efdf7673a169ec620bdd66c1e9cee165bf5f 100644 (file)
@@ -36,25 +36,16 @@ const char *_PyImport_DynLoadFiletab[] = {
 #ifdef __CYGWIN__
     ".dll",
 #else  /* !__CYGWIN__ */
-#ifdef __VMS
-    ".exe",
-    ".EXE",
-#else  /* !__VMS */
     "." SOABI ".so",
     ".abi" PYTHON_ABI_STRING ".so",
     ".so",
-#endif  /* __VMS */
 #endif  /* __CYGWIN__ */
     NULL,
 };
 
 static struct {
     dev_t dev;
-#ifdef __VMS
-    ino_t ino[3];
-#else
     ino_t ino;
-#endif
     void *handle;
 } handles[128];
 static int nhandles = 0;
@@ -95,29 +86,12 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname,
         }
         if (nhandles < 128) {
             handles[nhandles].dev = statb.st_dev;
-#ifdef __VMS
-            handles[nhandles].ino[0] = statb.st_ino[0];
-            handles[nhandles].ino[1] = statb.st_ino[1];
-            handles[nhandles].ino[2] = statb.st_ino[2];
-#else
             handles[nhandles].ino = statb.st_ino;
-#endif
         }
     }
 
     dlopenflags = PyThreadState_GET()->interp->dlopenflags;
 
-#ifdef __VMS
-    /* VMS currently don't allow a pathname, use a logical name instead */
-    /* Concatenate 'python_module_' and shortname */
-    /* so "import vms.bar" will use the logical python_module_bar */
-    /* As C module use only one name space this is probably not a */
-    /* important limitation */
-    PyOS_snprintf(pathbuf, sizeof(pathbuf), "python_module_%-.200s",
-                  shortname);
-    pathname = pathbuf;
-#endif
-
     handle = dlopen(pathname, dlopenflags);
 
     if (handle == NULL) {
index de8e9e72c74c54e3b55af29ef8c724b1aa03e195..cdace0036b0ae13f90ac9d54208a38cff9dee96a 100644 (file)
@@ -68,28 +68,7 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise)
 #endif /* MS_WINDOWS */
 
 
-#ifdef __VMS
-/* Use openssl random routine */
-#include <openssl/rand.h>
-static int
-vms_urandom(unsigned char *buffer, Py_ssize_t size, int raise)
-{
-    if (RAND_pseudo_bytes(buffer, size) < 0) {
-        if (raise) {
-            PyErr_Format(PyExc_ValueError,
-                         "RAND_pseudo_bytes");
-        } else {
-            Py_FatalError("Failed to initialize the randomized hash "
-                          "secret using RAND_pseudo_bytes");
-        }
-        return -1;
-    }
-    return 0;
-}
-#endif /* __VMS */
-
-
-#if !defined(MS_WINDOWS) && !defined(__VMS)
+#ifndef MS_WINDOWS
 static int urandom_fd = -1;
 
 /* Read size bytes from /dev/urandom into buffer.
@@ -195,7 +174,7 @@ dev_urandom_close(void)
     }
 }
 
-#endif /* !defined(MS_WINDOWS) && !defined(__VMS) */
+#endif /* MS_WINDOWS */
 
 /* Fill buffer with pseudo-random bytes generated by a linear congruent
    generator (LCG):
@@ -237,11 +216,7 @@ _PyOS_URandom(void *buffer, Py_ssize_t size)
 #ifdef MS_WINDOWS
     return win32_urandom((unsigned char *)buffer, size, 1);
 #else
-# ifdef __VMS
-    return vms_urandom((unsigned char *)buffer, size, 1);
-# else
     return dev_urandom_python((char*)buffer, size);
-# endif
 #endif
 }
 
@@ -285,12 +260,8 @@ _PyRandom_Init(void)
     else {
 #ifdef MS_WINDOWS
         (void)win32_urandom(secret, secret_size, 0);
-#else /* #ifdef MS_WINDOWS */
-# ifdef __VMS
-        vms_urandom(secret, secret_size, 0);
-# else
+#else
         dev_urandom_noraise(secret, secret_size);
-# endif
 #endif
     }
 }
@@ -298,7 +269,7 @@ _PyRandom_Init(void)
 void
 _PyRandom_Fini(void)
 {
-#if !defined(MS_WINDOWS) && !defined(__VMS)
+#ifndef MS_WINDOWS
     dev_urandom_close();
 #endif
 }
index cf580f104038bf18b63cbd44c59eb086baf4c6af..976d5a0c37d905e77ed7af1448c0ebc0bd2cf1b9 100644 (file)
@@ -32,10 +32,6 @@ extern void *PyWin_DLLhModule;
 extern const char *PyWin_DLLVersionString;
 #endif
 
-#ifdef __VMS
-#include <unixlib.h>
-#endif
-
 #ifdef HAVE_LANGINFO_H
 #include <locale.h>
 #include <langinfo.h>
@@ -1867,22 +1863,7 @@ makeargvobject(int argc, wchar_t **argv)
     if (av != NULL) {
         int i;
         for (i = 0; i < argc; i++) {
-#ifdef __VMS
-            PyObject *v;
-
-            /* argv[0] is the script pathname if known */
-            if (i == 0) {
-                char* fn = decc$translate_vms(argv[0]);
-                if ((fn == (char *)0) || fn == (char *)-1)
-                    v = PyUnicode_FromString(argv[0]);
-                else
-                    v = PyUnicode_FromString(
-                        decc$translate_vms(argv[0]));
-            } else
-                v = PyUnicode_FromString(argv[i]);
-#else
             PyObject *v = PyUnicode_FromWideChar(argv[i], -1);
-#endif
             if (v == NULL) {
                 Py_DECREF(av);
                 av = NULL;