|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "generic.h" |
|
#include "apt_pkgmodule.h" |
|
#include "progress.h" |
|
|
|
#include <apt-pkg/cdrom.h> |
|
|
|
static char *cdrom_add_doc = |
|
"add(progress: apt_pkg.CdromProgress) -> bool\n\n" |
|
"Add the given CD-ROM to the sources.list. Return True on success;\n" |
|
"raise an error on failure or return False."; |
|
static PyObject *cdrom_add(PyObject *Self,PyObject *Args) |
|
{ |
|
pkgCdrom &Cdrom = GetCpp<pkgCdrom>(Self); |
|
|
|
PyObject *pyCdromProgressInst = 0; |
|
if (PyArg_ParseTuple(Args, "O", &pyCdromProgressInst) == 0) { |
|
return 0; |
|
} |
|
|
|
PyCdromProgress progress; |
|
progress.setCallbackInst(pyCdromProgressInst); |
|
|
|
bool res = Cdrom.Add(&progress); |
|
|
|
return HandleErrors(PyBool_FromLong(res)); |
|
} |
|
|
|
static char *cdrom_ident_doc = |
|
"ident(progress: apt_pkg.CdromProgress) -> str\n\n" |
|
"Try to identify the CD-ROM and if successful return the hexadecimal\n" |
|
"CDROM-ID (and a integer version suffix separated by -) as a\n" |
|
"string. Otherwise, return None or raise an error.\n\n" |
|
"The ID is created by hashing all file and directory names on the\n" |
|
"CD-ROM and appending the version."; |
|
static PyObject *cdrom_ident(PyObject *Self,PyObject *Args) |
|
{ |
|
pkgCdrom &Cdrom = GetCpp<pkgCdrom>(Self); |
|
PyObject *pyCdromProgressInst = 0; |
|
if (PyArg_ParseTuple(Args, "O", &pyCdromProgressInst) == 0) { |
|
return 0; |
|
} |
|
|
|
PyCdromProgress progress; |
|
progress.setCallbackInst(pyCdromProgressInst); |
|
|
|
std::string ident; |
|
bool res = Cdrom.Ident(ident, &progress); |
|
|
|
if (res) |
|
return CppPyString(ident); |
|
else { |
|
Py_INCREF(Py_None); |
|
return HandleErrors(Py_None); |
|
} |
|
} |
|
|
|
|
|
static PyMethodDef cdrom_methods[] = { |
|
{"add",cdrom_add,METH_VARARGS,cdrom_add_doc}, |
|
{"ident",cdrom_ident,METH_VARARGS,cdrom_ident_doc}, |
|
{} |
|
}; |
|
|
|
static PyObject *cdrom_new(PyTypeObject *type,PyObject *Args,PyObject *kwds) |
|
{ |
|
return CppPyObject_NEW<pkgCdrom>(NULL, type); |
|
} |
|
|
|
static char *cdrom_doc = |
|
"Cdrom()\n\n" |
|
"Cdrom objects can be used to identify Debian installation media and to\n" |
|
"add them to /etc/apt/sources.list."; |
|
PyTypeObject PyCdrom_Type = { |
|
PyVarObject_HEAD_INIT(&PyType_Type, 0) |
|
"apt_pkg.Cdrom", |
|
sizeof(CppPyObject<pkgCdrom>), |
|
0, |
|
|
|
CppDealloc<pkgCdrom>, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
_PyAptObject_getattro, |
|
0, |
|
0, |
|
Py_TPFLAGS_DEFAULT | |
|
Py_TPFLAGS_BASETYPE, |
|
cdrom_doc, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
cdrom_methods, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
0, |
|
cdrom_new, |
|
}; |
|
|
|
|