diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/arfile.cc | 41 | ||||
| -rw-r--r-- | python/tarfile.cc | 22 |
2 files changed, 33 insertions, 30 deletions
diff --git a/python/arfile.cc b/python/arfile.cc index 96702f57..50cd1246 100644 --- a/python/arfile.cc +++ b/python/arfile.cc @@ -147,14 +147,14 @@ static const char *ararchive_getmember_doc = "LookupError if there is no ArMember with the given name."; static PyObject *ararchive_getmember(PyArArchiveObject *self, PyObject *arg) { - const char *name; + PyApt_Filename name; CppPyObject<ARArchive::Member*> *ret; - if (! (name = PyObject_AsString(arg))) + if (!name.init(arg)) return 0; const ARArchive::Member *member = self->Object->FindMember(name); if (!member) { - PyErr_Format(PyExc_LookupError,"No member named '%s'",name); + PyErr_Format(PyExc_LookupError,"No member named '%s'",name.path); return 0; } @@ -171,12 +171,12 @@ static const char *ararchive_extractdata_doc = "LookupError if there is no ArMember with the given name."; static PyObject *ararchive_extractdata(PyArArchiveObject *self, PyObject *args) { - char *name = 0; - if (PyArg_ParseTuple(args, "s:extractdata", &name) == 0) + PyApt_Filename name; + if (PyArg_ParseTuple(args, "O&:extractdata", PyApt_Filename::Converter, &name) == 0) return 0; const ARArchive::Member *member = self->Object->FindMember(name); if (!member) { - PyErr_Format(PyExc_LookupError,"No member named '%s'",name); + PyErr_Format(PyExc_LookupError,"No member named '%s'",name.path); return 0; } if (!self->Fd.Seek(member->Start)) @@ -247,15 +247,17 @@ static const char *ararchive_extract_doc = "does not exist, raise LookupError."; static PyObject *ararchive_extract(PyArArchiveObject *self, PyObject *args) { - char *name = 0; - char *target = ""; - if (PyArg_ParseTuple(args, "s|s:extract", &name, &target) == 0) + PyApt_Filename name; + PyApt_Filename target; + + target = ""; + if (PyArg_ParseTuple(args, "O&|O&:extract", PyApt_Filename::Converter, &name, PyApt_Filename::Converter, &target) == 0) return 0; const ARArchive::Member *member = self->Object->FindMember(name); if (!member) { - PyErr_Format(PyExc_LookupError,"No member named '%s'",name); + PyErr_Format(PyExc_LookupError,"No member named '%s'",name.path); return 0; } return _extract(self->Fd, member, target); @@ -269,8 +271,9 @@ static const char *ararchive_extractall_doc = static PyObject *ararchive_extractall(PyArArchiveObject *self, PyObject *args) { - char *target = ""; - if (PyArg_ParseTuple(args, "|s:extractall", &target) == 0) + PyApt_Filename target; + target = ""; + if (PyArg_ParseTuple(args, "|O&:extractall", PyApt_Filename::Converter, &target) == 0) return 0; const ARArchive::Member *member = self->Object->Members(); @@ -292,14 +295,14 @@ static const char *ararchive_gettar_doc = "It just opens a new TarFile on the given position in the stream."; static PyObject *ararchive_gettar(PyArArchiveObject *self, PyObject *args) { - const char *name; + PyApt_Filename name; const char *comp; - if (PyArg_ParseTuple(args, "ss:gettar", &name, &comp) == 0) + if (PyArg_ParseTuple(args, "O&s:gettar", PyApt_Filename::Converter, &name, &comp) == 0) return 0; const ARArchive::Member *member = self->Object->FindMember(name); if (!member) { - PyErr_Format(PyExc_LookupError,"No member named '%s'",name); + PyErr_Format(PyExc_LookupError,"No member named '%s'",name.path); return 0; } @@ -374,13 +377,13 @@ static PyObject *ararchive_new(PyTypeObject *type, PyObject *args, { PyObject *file; PyArArchiveObject *self; - char *filename = 0; + PyApt_Filename filename; int fileno; if (PyArg_ParseTuple(args,"O:__new__",&file) == 0) return 0; // We receive a filename. - if ((filename = (char*)PyObject_AsString(file))) { + if (filename.init(file)) { self = (PyArArchiveObject *)CppPyObject_NEW<ARArchive*>(0,type); new (&self->Fd) FileFd(filename,FileFd::ReadOnly); } @@ -409,8 +412,8 @@ static void ararchive_dealloc(PyObject *self) // Return bool or -1 (exception). static int ararchive_contains(PyObject *self, PyObject *arg) { - const char *name = PyObject_AsString(arg); - if (!name) + PyApt_Filename name; + if (!name.init(arg)) return -1; return (GetCpp<ARArchive*>(self)->FindMember(name) != 0); } diff --git a/python/tarfile.cc b/python/tarfile.cc index 920f032e..7f65a5c7 100644 --- a/python/tarfile.cc +++ b/python/tarfile.cc @@ -309,7 +309,7 @@ static PyObject *tarfile_new(PyTypeObject *type,PyObject *args,PyObject *kwds) { PyObject *file; PyTarFileObject *self; - char *filename; + PyApt_Filename filename; int fileno; int min = 0; int max = 0xFFFFFFFF; @@ -323,8 +323,8 @@ static PyObject *tarfile_new(PyTypeObject *type,PyObject *args,PyObject *kwds) self = (PyTarFileObject*)CppPyObject_NEW<ExtractTar*>(file,type); // We receive a filename. - if ((filename = (char*)PyObject_AsString(file))) - new (&self->Fd) FileFd(filename,FileFd::ReadOnly); + if (filename.init(file)) + new (&self->Fd) FileFd((const char *) filename,FileFd::ReadOnly); else if ((fileno = PyObject_AsFileDescriptor(file)) != -1) { // clear the error set by PyObject_AsString(). PyErr_Clear(); @@ -349,8 +349,8 @@ static const char *tarfile_extractall_doc = static PyObject *tarfile_extractall(PyObject *self, PyObject *args) { std::string cwd = SafeGetCWD(); - char *rootdir = 0; - if (PyArg_ParseTuple(args,"|s:extractall",&rootdir) == 0) + PyApt_Filename rootdir; + if (PyArg_ParseTuple(args,"|O&:extractall", PyApt_Filename::Converter, &rootdir) == 0) return 0; if (rootdir) { @@ -384,8 +384,8 @@ static const char *tarfile_go_doc = static PyObject *tarfile_go(PyObject *self, PyObject *args) { PyObject *callback; - char *member = 0; - if (PyArg_ParseTuple(args,"O|s",&callback,&member) == 0) + PyApt_Filename member; + if (PyArg_ParseTuple(args,"O|O&",&callback, PyApt_Filename::Converter, &member) == 0) return 0; if (member && strcmp(member, "") == 0) member = 0; @@ -397,7 +397,7 @@ static PyObject *tarfile_go(PyObject *self, PyObject *args) return 0; if (member && !stream.py_data) return PyErr_Format(PyExc_LookupError, "There is no member named '%s'", - member); + member.path); return HandleErrors(PyBool_FromLong(res)); } @@ -407,8 +407,8 @@ static const char *tarfile_extractdata_doc = "LookupError if there is no member with the given name."; static PyObject *tarfile_extractdata(PyObject *self, PyObject *args) { - const char *member; - if (PyArg_ParseTuple(args,"s",&member) == 0) + PyApt_Filename member; + if (PyArg_ParseTuple(args,"O&", PyApt_Filename::Converter, &member) == 0) return 0; PyDirStream stream(NULL, member); ((PyTarFileObject*)self)->Fd.Seek(((PyTarFileObject*)self)->min); @@ -417,7 +417,7 @@ static PyObject *tarfile_extractdata(PyObject *self, PyObject *args) if (!stream.py_data) return PyErr_Format(PyExc_LookupError, "There is no member named '%s'", - member); + member.path); if (stream.error) { return 0; } |
