[Python-3000-checkins] r57500 - python/branches/py3k/Modules/zipimport.c

neal.norwitz python-3000-checkins at python.org
Sun Aug 26 07:08:21 CEST 2007


Author: neal.norwitz
Date: Sun Aug 26 07:08:21 2007
New Revision: 57500

Modified:
   python/branches/py3k/Modules/zipimport.c
Log:
Use unicode (and bytes as appropriate)

Modified: python/branches/py3k/Modules/zipimport.c
==============================================================================
--- python/branches/py3k/Modules/zipimport.c	(original)
+++ python/branches/py3k/Modules/zipimport.c	Sun Aug 26 07:08:21 2007
@@ -144,11 +144,11 @@
 		}
 	}
 
-	self->archive = PyString_FromString(buf);
+	self->archive = PyUnicode_FromString(buf);
 	if (self->archive == NULL)
 		return -1;
 
-	self->prefix = PyString_FromString(prefix);
+	self->prefix = PyUnicode_FromString(prefix);
 	if (self->prefix == NULL)
 		return -1;
 
@@ -180,10 +180,10 @@
 	char *archive = "???";
 	char *prefix = "";
 
-	if (self->archive != NULL && PyString_Check(self->archive))
-		archive = PyString_AsString(self->archive);
-	if (self->prefix != NULL && PyString_Check(self->prefix))
-		prefix = PyString_AsString(self->prefix);
+	if (self->archive != NULL && PyUnicode_Check(self->archive))
+		archive = PyUnicode_AsString(self->archive);
+	if (self->prefix != NULL && PyUnicode_Check(self->prefix))
+		prefix = PyUnicode_AsString(self->prefix);
 	if (prefix != NULL && *prefix)
 		return PyUnicode_FromFormat("<zipimporter object \"%.300s%c%.150s\">",
 		                            archive, SEP, prefix);
@@ -249,7 +249,7 @@
 
 	subname = get_subname(fullname);
 
-	len = make_filename(PyString_AsString(self->prefix), subname, path);
+	len = make_filename(PyUnicode_AsString(self->prefix), subname, path);
 	if (len < 0)
 		return MI_ERROR;
 
@@ -322,12 +322,12 @@
 		/* add __path__ to the module *before* the code gets
 		   executed */
 		PyObject *pkgpath, *fullpath;
-		char *prefix = PyString_AsString(self->prefix);
+		char *prefix = PyUnicode_AsString(self->prefix);
 		char *subname = get_subname(fullname);
 		int err;
 
-		fullpath = PyString_FromFormat("%s%c%s%s",
-					PyString_AsString(self->archive),
+		fullpath = PyUnicode_FromFormat("%s%c%s%s",
+					PyUnicode_AsString(self->archive),
 					SEP,
 					*prefix ? prefix : "",
 					subname);
@@ -404,9 +404,9 @@
 	}
 	path = buf;
 #endif
-	len = PyString_Size(self->archive);
+	len = PyUnicode_GET_SIZE(self->archive);
 	if ((size_t)len < strlen(path) &&
-	    strncmp(path, PyString_AsString(self->archive), len) == 0 &&
+	    strncmp(path, PyUnicode_AsString(self->archive), len) == 0 &&
 	    path[len] == SEP) {
 		path = path + len + 1;
 	}
@@ -416,7 +416,7 @@
 		PyErr_SetFromErrnoWithFilename(PyExc_IOError, path);
 		return NULL;
 	}
-	return get_data(PyString_AsString(self->archive), toc_entry);
+	return get_data(PyUnicode_AsString(self->archive), toc_entry);
 }
 
 static PyObject *
@@ -453,7 +453,7 @@
 	}
 	subname = get_subname(fullname);
 
-	len = make_filename(PyString_AsString(self->prefix), subname, path);
+	len = make_filename(PyUnicode_AsString(self->prefix), subname, path);
 	if (len < 0)
 		return NULL;
 
@@ -466,7 +466,7 @@
 
 	toc_entry = PyDict_GetItemString(self->files, path);
 	if (toc_entry != NULL) {
-		PyObject *bytes = get_data(PyString_AsString(self->archive), toc_entry);
+		PyObject *bytes = get_data(PyUnicode_AsString(self->archive), toc_entry);
 		PyObject *res = PyUnicode_FromString(PyBytes_AsString(bytes));
 		Py_XDECREF(bytes);
 		return res;
@@ -794,7 +794,7 @@
 	Py_ssize_t bytes_read = 0;
 	long l;
 	char *datapath;
-	long compress, data_size, file_size, file_offset;
+	long compress, data_size, file_size, file_offset, bytes_size;
 	long time, date, crc;
 
 	if (!PyArg_ParseTuple(toc_entry, "slllllll", &datapath, &compress,
@@ -826,13 +826,16 @@
 	    PyMarshal_ReadShortFromFile(fp);	/* local header size */
 	file_offset += l;	/* Start of file data */
 
-	raw_data = PyString_FromStringAndSize((char *)NULL, compress == 0 ?
-					      data_size : data_size + 1);
+	bytes_size = compress == 0 ? data_size : data_size + 1;
+	if (bytes_size == 0)
+		bytes_size++;
+	raw_data = PyBytes_FromStringAndSize((char *)NULL, bytes_size);
+					     
 	if (raw_data == NULL) {
 		fclose(fp);
 		return NULL;
 	}
-	buf = PyString_AsString(raw_data);
+	buf = PyBytes_AsString(raw_data);
 
 	err = fseek(fp, file_offset, 0);
 	if (err == 0)
@@ -1041,7 +1044,7 @@
 {
 	PyObject *data, *code;
 	char *modpath;
-	char *archive = PyString_AsString(self->archive);
+	char *archive = PyUnicode_AsString(self->archive);
 
 	if (archive == NULL)
 		return NULL;
@@ -1050,7 +1053,7 @@
 	if (data == NULL)
 		return NULL;
 
-	modpath = PyString_AsString(PyTuple_GetItem(toc_entry, 0));
+	modpath = PyUnicode_AsString(PyTuple_GetItem(toc_entry, 0));
 
 	if (isbytecode) {
 		code = unmarshal_code(modpath, data, mtime);
@@ -1075,7 +1078,7 @@
 
 	subname = get_subname(fullname);
 
-	len = make_filename(PyString_AsString(self->prefix), subname, path);
+	len = make_filename(PyUnicode_AsString(self->prefix), subname, path);
 	if (len < 0)
 		return NULL;
 
@@ -1085,7 +1088,7 @@
 		strcpy(path + len, zso->suffix);
 		if (Py_VerboseFlag > 1)
 			PySys_WriteStderr("# trying %s%c%s\n",
-					  PyString_AsString(self->archive),
+					  PyUnicode_AsString(self->archive),
 					  SEP, path);
 		toc_entry = PyDict_GetItemString(self->files, path);
 		if (toc_entry != NULL) {
@@ -1107,7 +1110,7 @@
 				continue;
 			}
 			if (code != NULL && p_modpath != NULL)
-				*p_modpath = PyString_AsString(
+				*p_modpath = PyUnicode_AsString(
 					PyTuple_GetItem(toc_entry, 0));
 			return code;
 		}


More information about the Python-3000-checkins mailing list