summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog1
-rw-r--r--python/acquire.cc50
2 files changed, 33 insertions, 18 deletions
diff --git a/debian/changelog b/debian/changelog
index 843c6b3b..c4486505 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -19,6 +19,7 @@ python-apt (0.7.92) UNRELEASED; urgency=low
and memory leaks. Simply create a new cache instead.
* Merge 0.7.10.4 from unstable
* debian/control: Update Standards-Version to 3.8.2
+ * Make AcquireFile a subclass of AcquireItem
[ Sebastian Heinlein ]
* apt/progress.py: Extract the package name from the status message
diff --git a/python/acquire.cc b/python/acquire.cc
index b0dd2cab..e13e47d6 100644
--- a/python/acquire.cc
+++ b/python/acquire.cc
@@ -14,20 +14,27 @@
#define MkGet(PyFunc,Ret) static PyObject *PyFunc(PyObject *Self,void*) \
{ \
- pkgAcquire::ItemIterator &I = GetCpp<pkgAcquire::ItemIterator>(Self); \
+ pkgAcquire::Item *Itm; \
+ if (PyObject_TypeCheck(Self, &PkgAcquireFileType)) { \
+ Itm = GetCpp<pkgAcqFile*>(Self); \
+ } else { \
+ pkgAcquire::ItemIterator &I = GetCpp<pkgAcquire::ItemIterator>(Self); \
+ Itm = *I; \
+ } \
return Ret; \
}
// Define our getters
-MkGet(AcquireItemGetComplete,Py_BuildValue("i",(*I)->Complete));
-MkGet(AcquireItemGetDescURI,Safe_FromString((*I)->DescURI().c_str()));
-MkGet(AcquireItemGetDestFile,Safe_FromString((*I)->DestFile.c_str()));
-MkGet(AcquireItemGetErrorText,Safe_FromString((*I)->ErrorText.c_str()));
-MkGet(AcquireItemGetFileSize,Py_BuildValue("i",(*I)->FileSize));
-MkGet(AcquireItemGetID,Py_BuildValue("i",(*I)->ID));
-MkGet(AcquireItemGetIsTrusted,Py_BuildValue("i",(*I)->IsTrusted()));
-MkGet(AcquireItemGetLocal,Py_BuildValue("i",(*I)->Local));
-MkGet(AcquireItemGetStatus,Py_BuildValue("i",(*I)->Status));
+MkGet(AcquireItemGetComplete,Py_BuildValue("i",Itm->Complete));
+MkGet(AcquireItemGetDescURI,Safe_FromString(Itm->DescURI().c_str()));
+MkGet(AcquireItemGetDestFile,Safe_FromString(Itm->DestFile.c_str()));
+MkGet(AcquireItemGetErrorText,Safe_FromString(Itm->ErrorText.c_str()));
+MkGet(AcquireItemGetFileSize,Py_BuildValue("i",Itm->FileSize));
+MkGet(AcquireItemGetID,Py_BuildValue("i",Itm->ID));
+MkGet(AcquireItemGetIsTrusted,Py_BuildValue("i",Itm->IsTrusted()));
+MkGet(AcquireItemGetLocal,Py_BuildValue("i",Itm->Local));
+MkGet(AcquireItemGetStatus,Py_BuildValue("i",Itm->Status));
+
// Constants
MkGet(AcquireItemGetStatIdle,Py_BuildValue("i", pkgAcquire::Item::StatIdle));
@@ -43,7 +50,7 @@ static PyGetSetDef AcquireItemGetSet[] = {
{"destfile",AcquireItemGetDestFile},
{"error_text",AcquireItemGetErrorText},
{"filesize",AcquireItemGetFileSize},
- {"is",AcquireItemGetID},
+ {"id",AcquireItemGetID},
{"is_trusted",AcquireItemGetIsTrusted},
{"local",AcquireItemGetLocal},
{"status",AcquireItemGetStatus},
@@ -75,16 +82,23 @@ static PyGetSetDef AcquireItemGetSet[] = {
static PyObject *AcquireItemRepr(PyObject *Self)
{
- pkgAcquire::ItemIterator &I = GetCpp<pkgAcquire::ItemIterator>(Self);
+ pkgAcquire::Item *Itm;
+ if (PyObject_TypeCheck(Self, &PkgAcquireFileType)) {
+ Itm = GetCpp<pkgAcqFile*>(Self);
+ } else {
+ pkgAcquire::ItemIterator &I = GetCpp<pkgAcquire::ItemIterator>(Self);
+ Itm = *I;
+ }
char S[300];
- snprintf(S,sizeof(S),"<pkgAcquire::ItemIterator object: "
+ snprintf(S,sizeof(S),"<%s object: "
"Status: %i Complete: %i Local: %i IsTrusted: %i "
"FileSize: %i DestFile:'%s' "
"DescURI: '%s' ID:%i ErrorText: '%s'>",
- (*I)->Status, (*I)->Complete, (*I)->Local, (*I)->IsTrusted(),
- (*I)->FileSize, (*I)->DestFile.c_str(), (*I)->DescURI().c_str(),
- (*I)->ID,(*I)->ErrorText.c_str());
+ Self->ob_type->tp_name,
+ Itm->Status, Itm->Complete, Itm->Local, Itm->IsTrusted(),
+ Itm->FileSize, Itm->DestFile.c_str(), Itm->DescURI().c_str(),
+ Itm->ID,Itm->ErrorText.c_str());
return PyString_FromString(S);
}
@@ -383,8 +397,8 @@ PyTypeObject PkgAcquireFileType =
0, // tp_iternext
0, // tp_methods
0, // tp_members
- 0, // tp_getset
- 0, // tp_base
+ 0, // tp_getset
+ &AcquireItemType, // tp_base
0, // tp_dict
0, // tp_descr_get
0, // tp_descr_set