astra / python /cdrom.cc
Lorenzob's picture
Upload folder using huggingface_hub
859a779 verified
raw
history blame
5.16 kB
/* cdrom.cc - Wrapper for pkgCdrom.
*
* Copyright 2004-2009 Canonical Ltd.
* Copyright 2009 Julian Andres Klode <jak@debian.org>
*
* Authors: Michael Vogt
* Julian Andres Klode
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
#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", // tp_name
sizeof(CppPyObject<pkgCdrom>), // tp_basicsize
0, // tp_itemsize
// Methods
CppDealloc<pkgCdrom>, // tp_dealloc
0, // tp_print
0, // tp_getattr
0, // tp_setattr
0, // tp_compare
0, // tp_repr
0, // tp_as_number
0, // tp_as_sequence
0, // tp_as_mapping
0, // tp_hash
0, // tp_call
0, // tp_str
_PyAptObject_getattro, // tp_getattro
0, // tp_setattro
0, // tp_as_buffer
Py_TPFLAGS_DEFAULT | // tp_flags
Py_TPFLAGS_BASETYPE,
cdrom_doc, // tp_doc
0, // tp_traverse
0, // tp_clear
0, // tp_richcompare
0, // tp_weaklistoffset
0, // tp_iter
0, // tp_iternext
cdrom_methods, // tp_methods
0, // tp_members
0, // tp_getset
0, // tp_base
0, // tp_dict
0, // tp_descr_get
0, // tp_descr_set
0, // tp_dictoffset
0, // tp_init
0, // tp_alloc
cdrom_new, // tp_new
};