[Python-checkins] python/dist/src/Python dynload_shlib.c,2.14,2.15 sysmodule.c,2.117,2.118

loewis@users.sourceforge.net loewis@users.sourceforge.net
Sat, 03 May 2003 02:14:56 -0700


Update of /cvsroot/python/python/dist/src/Python
In directory sc8-pr-cvs1:/tmp/cvs-serv20733/Python

Modified Files:
	dynload_shlib.c sysmodule.c 
Log Message:
Patch #708495: Port more stuff to OpenVMS.


Index: dynload_shlib.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/dynload_shlib.c,v
retrieving revision 2.14
retrieving revision 2.15
diff -C2 -d -r2.14 -r2.15
*** dynload_shlib.c	26 Feb 2002 11:41:34 -0000	2.14
--- dynload_shlib.c	3 May 2003 09:14:53 -0000	2.15
***************
*** 41,48 ****
--- 41,55 ----
  	{".dll", "rb", C_EXTENSION},
  #else
+ #ifdef __VMS
+         {".exe", "rb", C_EXTENSION},
+         {".EXE", "rb", C_EXTENSION},
+         {"module.exe", "rb", C_EXTENSION},
+         {"MODULE.EXE", "rb", C_EXTENSION},
+ #else
  	{".so", "rb", C_EXTENSION},
  	{"module.so", "rb", C_EXTENSION},
  #endif
  #endif
+ #endif
  	{0, 0}
  };
***************
*** 50,54 ****
--- 57,65 ----
  static struct {
  	dev_t dev;
+ #ifdef __VMS
+ 	ino_t ino[3];
+ #else
  	ino_t ino;
+ #endif
  	void *handle;
  } handles[128];
***************
*** 88,92 ****
--- 99,109 ----
  		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
  		}
  	}
***************
*** 98,101 ****
--- 115,129 ----
  	if (Py_VerboseFlag)
  		printf("dlopen(\"%s\", %x);\n", pathname, 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);

Index: sysmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/sysmodule.c,v
retrieving revision 2.117
retrieving revision 2.118
diff -C2 -d -r2.117 -r2.118
*** sysmodule.c	9 Apr 2003 19:06:19 -0000	2.117
--- sysmodule.c	3 May 2003 09:14:54 -0000	2.118
***************
*** 33,36 ****
--- 33,40 ----
  #endif
  
+ #ifdef __VMS
+ #include <unixlib.h>
+ #endif
+ 
  PyObject *
  PySys_GetObject(char *name)
***************
*** 1051,1055 ****
--- 1055,1074 ----
  		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 = PyString_FromString(argv[0]);
+ 				else
+ 					v = PyString_FromString(
+ 						decc$translate_vms(argv[0]));
+ 			} else
+ 				v = PyString_FromString(argv[i]);
+ #else
  			PyObject *v = PyString_FromString(argv[i]);
+ #endif
  			if (v == NULL) {
  				Py_DECREF(av);