[Python-checkins] CVS: python/dist/src/Python bltinmodule.c,2.248,2.249 errors.c,2.67,2.68

Martin v. L?wis loewis@users.sourceforge.net
2002年3月09日 04:07:53 -0800


Update of /cvsroot/python/python/dist/src/Python
In directory usw-pr-cvs1:/tmp/cvs-serv5110
Modified Files:
	bltinmodule.c errors.c 
Log Message:
Patch #494045: patches errno and stat to cope on plan9.
Index: bltinmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/bltinmodule.c,v
retrieving revision 2.248
retrieving revision 2.249
diff -C2 -d -r2.248 -r2.249
*** bltinmodule.c	9 Mar 2002 00:06:26 -0000	2.248
--- bltinmodule.c	9 Mar 2002 12:07:51 -0000	2.249
***************
*** 537,543 ****
 	PyCompilerFlags cf;
 	int exists;
- #ifndef RISCOS
- 	struct stat s;
- #endif
 
 	if (!PyArg_ParseTuple(args, "s|O!O!:execfile",
--- 537,540 ----
***************
*** 561,576 ****
 	exists = 0;
 	/* Test for existence or directory. */
! #ifndef RISCOS
! 	if (!stat(filename, &s)) {
! 		if (S_ISDIR(s.st_mode))
! #if defined(PYOS_OS2) && defined(PYCC_VACPP)
! 			errno = EOS2ERR;
! #else
! 			errno = EISDIR;
! #endif
! 		else
! 			exists = 1;
 	}
! #else
 	if (object_exists(filename)) {
 		if (isdir(filename))
--- 558,574 ----
 	exists = 0;
 	/* Test for existence or directory. */
! #if defined(PLAN9)
! 	{
! 		Dir *d;
! 
! 		if ((d = dirstat(filename))!=nil) {
! 			if(d->mode & DMDIR)
! 				werrstr("is a directory");
! 			else
! 				exists = 1;
! 			free(d);
! 		}
 	}
! #elif defined(RISCOS)
 	if (object_exists(filename)) {
 		if (isdir(filename))
***************
*** 579,583 ****
 			exists = 1;
 	}
! #endif /* RISCOS */
 
 if (exists) {
--- 577,595 ----
 			exists = 1;
 	}
! #else	/* standard Posix */
! 	{
! 		struct stat s;
! 		if (stat(filename, &s) == 0) {
! 			if (S_ISDIR(s.st_mode))
! #				if defined(PY_OS2) && defined(PYCC_VACPP)
! 					errno = EOS2ERR;
! #				else
! 					errno = EISDIR;
! #				endif
! 			else
! 				exists = 1;
! 		}
! 	}
! #endif
 
 if (exists) {
Index: errors.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/errors.c,v
retrieving revision 2.67
retrieving revision 2.68
diff -C2 -d -r2.67 -r2.68
*** errors.c	3 Mar 2002 21:30:27 -0000	2.67
--- errors.c	9 Mar 2002 12:07:51 -0000	2.68
***************
*** 265,268 ****
--- 265,271 ----
 	char *s;
 	int i = errno;
+ #ifdef PLAN9
+ 	char errbuf[ERRMAX];
+ #endif
 #ifdef MS_WIN32
 	char *s_buf = NULL;
***************
*** 272,275 ****
--- 275,282 ----
 		return NULL;
 #endif
+ #ifdef PLAN9
+ 	rerrstr(errbuf, sizeof errbuf);
+ 	s = errbuf;
+ #else
 	if (i == 0)
 		s = "Error"; /* Sometimes errno didn't get set */
***************
*** 306,310 ****
 		}
 	}
! #endif
 	if (filename != NULL)
 		v = Py_BuildValue("(iss)", i, s, filename);
--- 313,318 ----
 		}
 	}
! #endif /* Unix/Windows */
! #endif /* PLAN 9*/
 	if (filename != NULL)
 		v = Py_BuildValue("(iss)", i, s, filename);

AltStyle によって変換されたページ (->オリジナル) /