summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/acquire.cc12
-rw-r--r--python/apt_instmodule.cc13
-rw-r--r--python/apt_pkgmodule.cc8
-rw-r--r--python/apt_pkgmodule.h1
-rw-r--r--python/cache.cc2
-rw-r--r--python/depcache.cc6
-rw-r--r--python/metaindex.cc3
-rw-r--r--python/progress.cc6
8 files changed, 38 insertions, 13 deletions
diff --git a/python/acquire.cc b/python/acquire.cc
index 65f8f2d7..9cf84928 100644
--- a/python/acquire.cc
+++ b/python/acquire.cc
@@ -242,6 +242,8 @@ PyTypeObject PkgAcquireFileType =
0, // tp_hash
};
+char *doc_GetPkgAcqFile =
+"GetPkgAcqFile(pkgAquire, uri[, md5, size, descr, shortDescr, destDir, destFile]) -> PkgAcqFile\n";
PyObject *GetPkgAcqFile(PyObject *Self, PyObject *Args, PyObject * kwds)
{
PyObject *pyfetcher;
@@ -250,11 +252,11 @@ PyObject *GetPkgAcqFile(PyObject *Self, PyObject *Args, PyObject * kwds)
uri = md5 = descr = shortDescr = destDir = destFile = "";
char * kwlist[] = {"owner","uri", "md5", "size", "descr", "shortDescr",
- NULL};
+ "destDir", "destFile", NULL};
- if (PyArg_ParseTupleAndKeywords(Args, kwds, "O!s|siss", kwlist,
+ if (PyArg_ParseTupleAndKeywords(Args, kwds, "O!s|sissss", kwlist,
&PkgAcquireType, &pyfetcher, &uri, &md5,
- &size, &descr, &shortDescr) == 0)
+ &size, &descr, &shortDescr, &destDir, &destFile) == 0)
return 0;
pkgAcquire *fetcher = GetCpp<pkgAcquire*>(pyfetcher);
@@ -263,7 +265,9 @@ PyObject *GetPkgAcqFile(PyObject *Self, PyObject *Args, PyObject * kwds)
md5, // md5
size, // size
descr, // descr
- shortDescr); // short-desc
+ shortDescr,
+ destDir,
+ destFile); // short-desc
CppPyObject<pkgAcqFile*> *AcqFileObj = CppPyObject_NEW<pkgAcqFile*>(&PkgAcquireFileType);
AcqFileObj->Object = af;
diff --git a/python/apt_instmodule.cc b/python/apt_instmodule.cc
index 43d5e7f7..ea703b21 100644
--- a/python/apt_instmodule.cc
+++ b/python/apt_instmodule.cc
@@ -74,6 +74,7 @@ static char *doc_debExtractArchive =
static PyObject *debExtractArchive(PyObject *Self,PyObject *Args)
{
char *Rootdir = NULL;
+ char cwd[512];
PyObject *File;
if (PyArg_ParseTuple(Args,"O!|s",&PyFile_Type,&File,&Rootdir) == 0)
return 0;
@@ -83,21 +84,27 @@ static PyObject *debExtractArchive(PyObject *Self,PyObject *Args)
{
if(Rootdir != NULL)
{
+ getcwd(cwd, sizeof(cwd));
chdir(Rootdir);
}
// Open the file and associate the .deb
FileFd Fd(fileno(PyFile_AsFile(File)),false);
debDebFile Deb(Fd);
- if (_error->PendingError() == true)
- return HandleErrors();
+ if (_error->PendingError() == true) {
+ if (Rootdir != NULL)
+ chdir (cwd);
+ return HandleErrors(Py_BuildValue("b",false));
+ }
// extracts relative to the current dir
pkgDirStream Extract;
res = Deb.ExtractArchive(Extract);
+ if (Rootdir != NULL)
+ chdir (cwd);
if (res == false)
- return HandleErrors();
+ return HandleErrors(Py_BuildValue("b",res));
}
return HandleErrors(Py_BuildValue("b",res));
}
diff --git a/python/apt_pkgmodule.cc b/python/apt_pkgmodule.cc
index fd7a83cd..7b13c838 100644
--- a/python/apt_pkgmodule.cc
+++ b/python/apt_pkgmodule.cc
@@ -447,7 +447,7 @@ static PyMethodDef methods[] =
// Acquire
{"GetAcquire",GetAcquire,METH_VARARGS,"GetAcquire() -> Acquire"},
- {"GetPkgAcqFile",(PyCFunction)GetPkgAcqFile,METH_KEYWORDS|METH_VARARGS,"GetPkgAcquireFile() -> pkgAcquireFile"},
+ {"GetPkgAcqFile",(PyCFunction)GetPkgAcqFile,METH_KEYWORDS|METH_VARARGS, doc_GetPkgAcqFile},
// PkgManager
{"GetPackageManager",GetPkgManager,METH_VARARGS,"GetPackageManager(DepCache) -> PackageManager"},
@@ -517,6 +517,12 @@ extern "C" void initapt_pkg()
AddInt(Dict,"CurStateConfigFiles",pkgCache::State::ConfigFiles);
AddInt(Dict,"CurStateInstalled",pkgCache::State::Installed);
+ AddInt(Dict,"SelStateUnknown",pkgCache::State::Unknown);
+ AddInt(Dict,"SelStateInstall",pkgCache::State::Install);
+ AddInt(Dict,"SelStateHold",pkgCache::State::Hold);
+ AddInt(Dict,"SelStateDeInstall",pkgCache::State::DeInstall);
+ AddInt(Dict,"SelStatePurge",pkgCache::State::Purge);
+
AddInt(Dict,"InstStateOk",pkgCache::State::Ok);
AddInt(Dict,"InstStateReInstReq",pkgCache::State::ReInstReq);
AddInt(Dict,"InstStateHold",pkgCache::State::Hold);
diff --git a/python/apt_pkgmodule.h b/python/apt_pkgmodule.h
index f59c8ca0..6e02d8e3 100644
--- a/python/apt_pkgmodule.h
+++ b/python/apt_pkgmodule.h
@@ -75,6 +75,7 @@ PyObject *GetCdrom(PyObject *Self,PyObject *Args);
// acquire
extern PyTypeObject PkgAcquireType;
+extern char *doc_GetPkgAcqFile;
PyObject *GetAcquire(PyObject *Self,PyObject *Args);
PyObject *GetPkgAcqFile(PyObject *Self, PyObject *Args, PyObject *kwds);
diff --git a/python/cache.cc b/python/cache.cc
index 66a2c5d9..bd280dec 100644
--- a/python/cache.cc
+++ b/python/cache.cc
@@ -599,7 +599,7 @@ static PyObject *VersionAttr(PyObject *Self,char *Name)
else if (strcmp("Priority",Name) == 0)
return Py_BuildValue("i",Ver->Priority);
else if (strcmp("PriorityStr",Name) == 0)
- return PyString_FromString(Ver.PriorityType());
+ return Safe_FromString(Ver.PriorityType());
else if (strcmp("Downloadable", Name) == 0)
return Py_BuildValue("b", Ver.Downloadable());
else if (strcmp("TranslatedDescription", Name) == 0) {
diff --git a/python/depcache.cc b/python/depcache.cc
index 5664a6d8..2446dc71 100644
--- a/python/depcache.cc
+++ b/python/depcache.cc
@@ -197,7 +197,7 @@ static PyObject *PkgDepCacheSetCandidateVer(PyObject *Self,PyObject *Args)
return 0;
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
- pkgCache::VerIterator I = GetCpp<pkgCache::VerIterator>(VersionObj);
+ pkgCache::VerIterator &I = GetCpp<pkgCache::VerIterator>(VersionObj);
if(I.end()) {
return HandleErrors(Py_BuildValue("b",false));
}
@@ -215,7 +215,9 @@ static PyObject *PkgDepCacheGetCandidateVer(PyObject *Self,PyObject *Args)
return 0;
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
- pkgCache::VerIterator I = depcache->GetCandidateVer(Pkg);
+ pkgDepCache::StateCache & State = (*depcache)[Pkg];
+ pkgCache::VerIterator I = State.CandidateVerIter(*depcache);
+
if(I.end()) {
Py_INCREF(Py_None);
return Py_None;
diff --git a/python/metaindex.cc b/python/metaindex.cc
index c9a86ab4..45c8ef2a 100644
--- a/python/metaindex.cc
+++ b/python/metaindex.cc
@@ -38,6 +38,9 @@ static PyObject *MetaIndexAttr(PyObject *Self,char *Name)
}
return List;
}
+
+ PyErr_SetString(PyExc_AttributeError,Name);
+ return 0;
}
static PyObject *MetaIndexRepr(PyObject *Self)
diff --git a/python/progress.cc b/python/progress.cc
index 793265db..99ad0a25 100644
--- a/python/progress.cc
+++ b/python/progress.cc
@@ -185,8 +185,10 @@ bool PyFetchProgress::Pulse(pkgAcquire * Owner)
bool res = true;
if(!PyArg_Parse(result, "b", &res))
{
- // mvo: this is harmless, we shouldn't print anything here
- //std::cerr << "result could not be parsed" << std::endl;
+ // most of the time the user who subclasses the pulse()
+ // method forgot to add a return {True,False} so we just
+ // assume he wants a True
+ return true;
}
// fetching can be canceld by returning false