summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2006-01-04 23:27:33 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2006-01-04 23:27:33 +0000
commit170c310e75aa0bc417cb67f6e560fdaab482d72e (patch)
tree7d83888cf413bccbd80b4e5388761c0f66fa20bb /python
parent5462bd26c53ed6cddfec2d22a85034db2c786b51 (diff)
downloadpython-apt-170c310e75aa0bc417cb67f6e560fdaab482d72e.tar.gz
* added support for pkgIndexFile
Diffstat (limited to 'python')
-rw-r--r--python/apt_pkgmodule.h4
-rw-r--r--python/indexfile.cc76
-rw-r--r--python/makefile3
-rw-r--r--python/sourcelist.cc22
4 files changed, 102 insertions, 3 deletions
diff --git a/python/apt_pkgmodule.h b/python/apt_pkgmodule.h
index 84b0069f..fe7dfe88 100644
--- a/python/apt_pkgmodule.h
+++ b/python/apt_pkgmodule.h
@@ -91,4 +91,8 @@ PyObject *GetPkgSrcRecords(PyObject *Self,PyObject *Args);
extern PyTypeObject PkgSourceListType;
PyObject *GetPkgSourceList(PyObject *Self,PyObject *Args);
+// pkgSourceList
+extern PyTypeObject PackageIndexFileType;
+
+
#endif
diff --git a/python/indexfile.cc b/python/indexfile.cc
new file mode 100644
index 00000000..4e106e25
--- /dev/null
+++ b/python/indexfile.cc
@@ -0,0 +1,76 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+// $Id: indexfile.cc,v 1.2 2003/12/26 17:04:22 mdz Exp $
+/* ######################################################################
+
+ pkgIndexFile - Wrapper for the pkgIndexFilefunctions
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include "generic.h"
+#include "apt_pkgmodule.h"
+
+#include <apt-pkg/indexfile.h>
+
+#include <Python.h>
+
+
+
+static PyObject *PackageIndexFileAttr(PyObject *Self,char *Name)
+{
+ pkgIndexFile *File = GetCpp<pkgIndexFile*>(Self);
+ if (strcmp("Label",Name) == 0)
+ return Safe_FromString(File->GetType()->Label);
+ else if (strcmp("Describe",Name) == 0)
+ return Safe_FromString(File->Describe().c_str());
+ else if (strcmp("Exists",Name) == 0)
+ return Py_BuildValue("i",(File->Exists()));
+ else if (strcmp("HasPackages",Name) == 0)
+ return Py_BuildValue("i",(File->HasPackages()));
+ else if (strcmp("Size",Name) == 0)
+ return Py_BuildValue("i",(File->Size()));
+ else if (strcmp("IsTrusted",Name) == 0)
+ return Py_BuildValue("i",(File->IsTrusted()));
+
+ PyErr_SetString(PyExc_AttributeError,Name);
+ return 0;
+}
+
+static PyObject *PackageIndexFileRepr(PyObject *Self)
+{
+ pkgIndexFile *File = GetCpp<pkgIndexFile*>(Self);
+
+ char S[300];
+ snprintf(S,sizeof(S),"<pkIndexFile object: "
+ "Label:'%s' Describe='%s' Exists='%i' "
+ "HasPackages='%i' Size='%i' "
+ "IsTrusted='%i' ArchiveURI='%s'>",
+ File->GetType()->Label, File->Describe().c_str(), File->Exists(),
+ File->HasPackages(), File->Size(),
+ File->IsTrusted(), File->ArchiveURI("").c_str());
+ return PyString_FromString(S);
+}
+PyTypeObject PackageIndexFileType =
+{
+ PyObject_HEAD_INIT(&PyType_Type)
+ 0, // ob_size
+ "pkgIndexFile", // tp_name
+ sizeof(CppOwnedPyObject<pkgIndexFile*>), // tp_basicsize
+ 0, // tp_itemsize
+ // Methods
+ CppOwnedDealloc<pkgIndexFile*>, // tp_dealloc
+ 0, // tp_print
+ PackageIndexFileAttr, // tp_getattr
+ 0, // tp_setattr
+ 0, // tp_compare
+ PackageIndexFileRepr, // tp_repr
+ 0, // tp_as_number
+ 0, // tp_as_sequence
+ 0, // tp_as_mapping
+ 0, // tp_hash
+};
+
+
+
+
diff --git a/python/makefile b/python/makefile
index 7fb1d756..24ef3238 100644
--- a/python/makefile
+++ b/python/makefile
@@ -11,7 +11,8 @@ SLIBS = -lapt-pkg
LIB_MAKES = apt-pkg/makefile
APT_PKG_SRC = apt_pkgmodule.cc configuration.cc generic.cc tag.cc string.cc \
cache.cc pkgrecords.cc pkgsrcrecords.cc sourcelist.cc \
- depcache.cc progress.cc cdrom.cc acquire.cc pkgmanager.cc
+ depcache.cc progress.cc cdrom.cc acquire.cc pkgmanager.cc \
+ indexfile.cc
SOURCE := $(APT_PKG_SRC)
include $(PYTHON_H) progress.h
diff --git a/python/sourcelist.cc b/python/sourcelist.cc
index 497731c0..16e51368 100644
--- a/python/sourcelist.cc
+++ b/python/sourcelist.cc
@@ -3,7 +3,7 @@
// $Id: sourcelist.cc,v 1.2 2003/12/26 17:04:22 mdz Exp $
/* ######################################################################
- Package Records - Wrapper for the package records functions
+ SourcesList - Wrapper for the SourcesList functions
##################################################################### */
/*}}}*/
@@ -16,6 +16,7 @@
#include <Python.h>
/*}}}*/
+
// PkgsourceList Class /*{{{*/
// ---------------------------------------------------------------------
@@ -24,7 +25,24 @@ static char *doc_PkgSourceListFindIndex = "xxx";
static PyObject *PkgSourceListFindIndex(PyObject *Self,PyObject *Args)
{
pkgSourceList *list = GetCpp<pkgSourceList*>(Self);
- return Py_BuildValue("i", 1);
+ PyObject *pyPkgFileIter;
+ PyObject *pyPkgIndexFile;
+
+ if (PyArg_ParseTuple(Args, "O!", &PackageFileType,&pyPkgFileIter) == 0)
+ return 0;
+
+ pkgCache::PkgFileIterator &i = GetCpp<pkgCache::PkgFileIterator>(pyPkgFileIter);
+ pkgIndexFile *index;
+ if(list->FindIndex(i, index))
+ {
+ pyPkgIndexFile = CppOwnedPyObject_NEW<pkgIndexFile*>(pyPkgFileIter,&PackageIndexFileType,index);
+ return pyPkgIndexFile;
+ }
+
+ //&PackageIndexFileType,&pyPkgIndexFile)
+
+ Py_INCREF(Py_None);
+ return Py_None;
}
static char *doc_PkgSourceListReadMainList = "xxx";