summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2009-07-19 15:40:40 +0200
committerJulian Andres Klode <jak@debian.org>2009-07-19 15:40:40 +0200
commit48cc0bcaabe824f49987ed3236b9421c583226dd (patch)
treeb993f5ede89dfd33a189b8bcb172b523a9fb391b /python
parent92d2315a87d24c51f2f0d3265c87c59f0d9730c3 (diff)
downloadpython-apt-48cc0bcaabe824f49987ed3236b9421c583226dd.tar.gz
python/progress.cc: CdromProgress.ask_cdrom_name() shall return None on failure.
Diffstat (limited to 'python')
-rw-r--r--python/cdromprogress.cc6
-rw-r--r--python/progress.cc32
2 files changed, 23 insertions, 15 deletions
diff --git a/python/cdromprogress.cc b/python/cdromprogress.cc
index 09c76a2a..440b5ce6 100644
--- a/python/cdromprogress.cc
+++ b/python/cdromprogress.cc
@@ -37,7 +37,7 @@ static PyObject *cdromprogress_change_cdrom(PyObject *self, PyObject *args)
// Takes a single PyObject argument as *arg
static PyObject *cdromprogress_ask_cdrom_name(PyObject *self, PyObject *arg)
{
- Py_RETURN_FALSE;
+ Py_RETURN_NONE;
}
static PyMethodDef cdromprogress_methods[] = {
@@ -47,8 +47,8 @@ static PyMethodDef cdromprogress_methods[] = {
"change_cdrom() -> bool\n\nAsk for the CD-ROM to be changed.\n"
"Return False if the user requested to cancel the action (default)."},
{"ask_cdrom_name",cdromprogress_ask_cdrom_name,METH_O,
- "ask_cdrom_name(name: str) -> bool\n\nAsk for the name of the CD-ROM.\n"
- "Return False if the user requested to cancel the action (default)."},
+ "ask_cdrom_name() -> str\n\nAsk for the name of the CD-ROM.\n"
+ "Return None if the user requested to cancel the action (default)."},
{NULL}
};
diff --git a/python/progress.cc b/python/progress.cc
index b19ab0c7..55ed13f9 100644
--- a/python/progress.cc
+++ b/python/progress.cc
@@ -548,20 +548,28 @@ bool PyCdromProgress::ChangeCdrom()
bool PyCdromProgress::AskCdromName(string &Name)
{
PyObject *arglist = Py_BuildValue("()");
- PyObject *result;
-
- if (!RunSimpleCallback("ask_cdrom_name", arglist, &result))
- RunSimpleCallback("askCdromName", arglist, &result);
-
const char *new_name;
bool res;
- if(!PyArg_Parse(result, "(bs)", &res, &new_name))
- std::cerr << "AskCdromName: result could not be parsed" << std::endl;
-
- //std::cerr << "got: " << res << " " << "name: " << new_name << std::endl;
+ PyObject *result;
- // set the new name
- Name = string(new_name);
+ // New style: String on success, None on failure.
+ if (RunSimpleCallback("ask_cdrom_name", arglist, &result)) {
+ if(result == Py_None)
+ return false;
+ if(!PyArg_Parse(result, "s", &new_name))
+ std::cerr << "AskCdromName: result could not be parsed" << std::endl;
+ else
+ Name = string(new_name);
+ return true;
+ }
+ // Old style: (True, name) on success, (False, name) on failure.
+ else {
+ RunSimpleCallback("askCdromName", arglist, &result);
+ if(!PyArg_Parse(result, "(bs)", &res, &new_name))
+ std::cerr << "AskCdromName: result could not be parsed" << std::endl;
+ // set the new name
+ Name = string(new_name);
- return res;
+ return res;
+ }
}