[Python-checkins] python/dist/src/Objects fileobject.c,2.188,2.189

mondragon at users.sourceforge.net mondragon at users.sourceforge.net
Sun Mar 21 15:24:09 EST 2004


Update of /cvsroot/python/python/dist/src/Objects
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15479/Objects
Modified Files:
	fileobject.c 
Log Message:
Changed file.name to be the object passed as the 'name' argument to file()
Fixes SF Bug #773356
Index: fileobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/fileobject.c,v
retrieving revision 2.188
retrieving revision 2.189
diff -C2 -d -r2.188 -r2.189
*** fileobject.c	19 Mar 2004 15:22:36 -0000	2.188
--- fileobject.c	21 Mar 2004 20:24:07 -0000	2.189
***************
*** 96,101 ****
 
 static PyObject *
! fill_file_fields(PyFileObject *f, FILE *fp, char *name, char *mode,
! 		 int (*close)(FILE *), PyObject *wname)
 {
 	assert(f != NULL);
--- 96,101 ----
 
 static PyObject *
! fill_file_fields(PyFileObject *f, FILE *fp, PyObject *name, char *mode,
! 		 int (*close)(FILE *))
 {
 	assert(f != NULL);
***************
*** 106,115 ****
 	Py_DECREF(f->f_mode);
 	Py_DECREF(f->f_encoding);
! #ifdef Py_USING_UNICODE
! 	if (wname)
! 		f->f_name = PyUnicode_FromObject(wname);
! 	else
! #endif
! 		f->f_name = PyString_FromString(name);
 	f->f_mode = PyString_FromString(mode);
 
--- 106,113 ----
 	Py_DECREF(f->f_mode);
 	Py_DECREF(f->f_encoding);
! 
! Py_INCREF (name);
! f->f_name = name;
! 
 	f->f_mode = PyString_FromString(mode);
 
***************
*** 203,211 ****
 				 mode);
 		else
- #ifdef MS_WINDOWS
 			PyErr_SetFromErrnoWithFilenameObject(PyExc_IOError, f->f_name);
- #else
- 			PyErr_SetFromErrnoWithFilename(PyExc_IOError, name);
- #endif /* MS_WINDOWS */
 		f = NULL;
 	}
--- 201,205 ----
***************
*** 221,228 ****
 							 NULL, NULL);
 	if (f != NULL) {
! 		if (fill_file_fields(f, fp, name, mode, close, NULL) == NULL) {
 			Py_DECREF(f);
 			f = NULL;
 		}
 	}
 	return (PyObject *) f;
--- 215,224 ----
 							 NULL, NULL);
 	if (f != NULL) {
! PyObject *o_name = PyString_FromString(name);
! 		if (fill_file_fields(f, fp, o_name, mode, close) == NULL) {
 			Py_DECREF(f);
 			f = NULL;
 		}
+ Py_DECREF(o_name);
 	}
 	return (PyObject *) f;
***************
*** 1854,1859 ****
 						kwlist, &po, &mode, &bufsize)) {
 			wideargument = 1;
! 			if (fill_file_fields(foself, NULL, name, mode,
! 					 fclose, po) == NULL)
 				goto Error;
 		} else {
--- 1850,1855 ----
 						kwlist, &po, &mode, &bufsize)) {
 			wideargument = 1;
! 			if (fill_file_fields(foself, NULL, po, mode,
! 					 fclose) == NULL)
 				goto Error;
 		} else {
***************
*** 1866,1869 ****
--- 1862,1867 ----
 
 	if (!wideargument) {
+ PyObject *o_name;
+ 
 		if (!PyArg_ParseTupleAndKeywords(args, kwds, "et|si:file", kwlist,
 						 Py_FileSystemDefaultEncoding,
***************
*** 1871,1876 ****
 						 &mode, &bufsize))
 			return -1;
! 		if (fill_file_fields(foself, NULL, name, mode,
! 				 fclose, NULL) == NULL)
 			goto Error;
 	}
--- 1869,1880 ----
 						 &mode, &bufsize))
 			return -1;
! 
! /* We parse again to get the name as a PyObject */
! if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|si:file", kwlist,
! &o_name, &mode, &bufsize))
! return -1;
! 
! 		if (fill_file_fields(foself, NULL, o_name, mode,
! 				 fclose) == NULL)
 			goto Error;
 	}


More information about the Python-checkins mailing list

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