From: Kern Sibbald Date: Sat, 9 Apr 2005 17:13:12 +0000 (+0000) Subject: Update FD and SD Python calling sequence X-Git-Tag: Release-7.0.0~8895 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9c4cc35e4530a8d3c684ab482b9bcbd755b2f51c;p=bacula%2Fbacula Update FD and SD Python calling sequence git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1917 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/bacula/src/filed/python.c b/bacula/src/filed/python.c index 91e5a67501..4619cfa2c3 100644 --- a/bacula/src/filed/python.c +++ b/bacula/src/filed/python.c @@ -35,6 +35,8 @@ #undef _POSIX_C_SOURCE #include +extern JCR *get_jcr_from_PyObject(PyObject *self); + PyObject *bacula_get(PyObject *self, PyObject *args); PyObject *bacula_set(PyObject *self, PyObject *args, PyObject *keyw); @@ -43,7 +45,7 @@ PyMethodDef BaculaMethods[] = { {"get", bacula_get, METH_VARARGS, "Get Bacula FD variables."}, {"set", (PyCFunction)bacula_set, METH_VARARGS|METH_KEYWORDS, "Set FD Bacula variables."}, - {NULL, NULL, 0, NULL} /* last item */ + {NULL, NULL, 0, NULL} /* last item */ }; @@ -61,27 +63,26 @@ static struct s_vars vars[] = { { N_("JobName"), "s"}, /* 5 */ { N_("JobStatus"), "s"}, /* 6 */ - { NULL, NULL} + { NULL, NULL} }; /* Return Bacula variables */ PyObject *bacula_get(PyObject *self, PyObject *args) { - PyObject *CObject; JCR *jcr; char *item; bool found = false; int i; char buf[10]; - if (!PyArg_ParseTuple(args, "Os:get", &CObject, &item)) { + if (!PyArg_ParseTuple(args, "s:get", &item)) { return NULL; } - jcr = (JCR *)PyCObject_AsVoidPtr(CObject); + jcr = get_jcr_from_PyObject(self); for (i=0; vars[i].name; i++) { if (strcmp(vars[i].name, item) == 0) { - found = true; - break; + found = true; + break; } } if (!found) { @@ -90,17 +91,17 @@ PyObject *bacula_get(PyObject *self, PyObject *args) switch (i) { case 0: /* FD's name */ return Py_BuildValue(vars[i].fmt, my_name); - case 1: /* level */ + case 1: /* level */ return Py_BuildValue(vars[i].fmt, job_level_to_str(jcr->JobLevel)); - case 2: /* type */ + case 2: /* type */ return Py_BuildValue(vars[i].fmt, job_type_to_str(jcr->JobType)); - case 3: /* JobId */ + case 3: /* JobId */ return Py_BuildValue(vars[i].fmt, jcr->JobId); - case 4: /* Client */ + case 4: /* Client */ return Py_BuildValue(vars[i].fmt, jcr->client_name); - case 5: /* JobName */ + case 5: /* JobName */ return Py_BuildValue(vars[i].fmt, jcr->Job); - case 6: /* JobStatus */ + case 6: /* JobStatus */ buf[1] = 0; buf[0] = jcr->JobStatus; return Py_BuildValue(vars[i].fmt, buf); @@ -111,15 +112,16 @@ PyObject *bacula_get(PyObject *self, PyObject *args) /* Set Bacula variables */ PyObject *bacula_set(PyObject *self, PyObject *args, PyObject *keyw) { - PyObject *CObject; JCR *jcr; char *msg = NULL; - static char *kwlist[] = {"jcr", "JobReport", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, keyw, "O|ss:set", kwlist, - &CObject, &msg)) { + static char *kwlist[] = {"JobReport", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, keyw, "|s:set", kwlist, + &msg)) { return NULL; } - jcr = (JCR *)PyCObject_AsVoidPtr(CObject); + jcr = get_jcr_from_PyObject(self); + if (msg) { Jmsg(jcr, M_INFO, 0, "%s", msg); diff --git a/bacula/src/stored/python.c b/bacula/src/stored/python.c index 9a93f48fed..c193219078 100644 --- a/bacula/src/stored/python.c +++ b/bacula/src/stored/python.c @@ -35,6 +35,8 @@ #undef _POSIX_C_SOURCE #include +extern JCR *get_jcr_from_PyObject(PyObject *self); + PyObject *bacula_get(PyObject *self, PyObject *args); PyObject *bacula_set(PyObject *self, PyObject *args, PyObject *keyw); @@ -43,7 +45,7 @@ PyMethodDef BaculaMethods[] = { {"get", bacula_get, METH_VARARGS, "Get Bacula variables."}, {"set", (PyCFunction)bacula_set, METH_VARARGS|METH_KEYWORDS, "Set Bacula variables."}, - {NULL, NULL, 0, NULL} /* last item */ + {NULL, NULL, 0, NULL} /* last item */ }; @@ -66,52 +68,52 @@ static struct s_vars vars[] = { { N_("VolumeName"), "s"}, /* 10 */ { N_("Device"), "s"}, /* 11 */ - { NULL, NULL} + { NULL, NULL} }; /* Return Bacula variables */ PyObject *bacula_get(PyObject *self, PyObject *args) { - PyObject *CObject; JCR *jcr; char *item; bool found = false; int i; char buf[10]; - - if (!PyArg_ParseTuple(args, "Os:get", &CObject, &item)) { + + if (!PyArg_ParseTuple(args, "s:get", &item)) { return NULL; } - jcr = (JCR *)PyCObject_AsVoidPtr(CObject); + jcr = get_jcr_from_PyObject(self); + for (i=0; vars[i].name; i++) { if (strcmp(vars[i].name, item) == 0) { - found = true; - break; + found = true; + break; } } if (!found) { return NULL; } switch (i) { - case 0: /* Job */ + case 0: /* Job */ return Py_BuildValue(vars[i].fmt, jcr->job_name); /* Non-unique name */ case 1: /* SD's name */ return Py_BuildValue(vars[i].fmt, my_name); - case 2: /* level */ + case 2: /* level */ return Py_BuildValue(vars[i].fmt, job_level_to_str(jcr->JobLevel)); - case 3: /* type */ + case 3: /* type */ return Py_BuildValue(vars[i].fmt, job_type_to_str(jcr->JobType)); - case 4: /* JobId */ + case 4: /* JobId */ return Py_BuildValue(vars[i].fmt, jcr->JobId); - case 5: /* Client */ + case 5: /* Client */ return Py_BuildValue(vars[i].fmt, jcr->client_name); - case 6: /* Pool */ + case 6: /* Pool */ return Py_BuildValue(vars[i].fmt, jcr->dcr->pool_name); - case 7: /* MediaType */ + case 7: /* MediaType */ return Py_BuildValue(vars[i].fmt, jcr->dcr->media_type); - case 8: /* JobName */ + case 8: /* JobName */ return Py_BuildValue(vars[i].fmt, jcr->Job); - case 9: /* JobStatus */ + case 9: /* JobStatus */ buf[1] = 0; buf[0] = jcr->JobStatus; return Py_BuildValue(vars[i].fmt, buf); @@ -126,15 +128,15 @@ PyObject *bacula_get(PyObject *self, PyObject *args) /* Set Bacula variables */ PyObject *bacula_set(PyObject *self, PyObject *args, PyObject *keyw) { - PyObject *CObject; JCR *jcr; char *msg = NULL; - static char *kwlist[] = {"jcr", "JobReport", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, keyw, "O|ss:set", kwlist, - &CObject, &msg)) { + static char *kwlist[] = {"JobReport", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, keyw, "|s:set", kwlist, + &msg)) { return NULL; } - jcr = (JCR *)PyCObject_AsVoidPtr(CObject); + jcr = get_jcr_from_PyObject(self); if (msg) { Jmsg(jcr, M_INFO, 0, "%s", msg);