]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/lib/pythonlib.c
- Require 5 arguments to mtx-changer except list and slots
[bacula/bacula] / bacula / src / lib / pythonlib.c
index 5af7ff6a0a9ba5e6825fb7e4dda73e1b117b399f..884727193d468434edb77c8af156a98c4b0b337e 100644 (file)
@@ -7,24 +7,18 @@
  *   Version $Id$
  *
  */
-
 /*
    Copyright (C) 2004-2005 Kern Sibbald
 
    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.
+   modify it under the terms of the GNU General Public License
+   version 2 as amended with additional clauses defined in the
+   file LICENSE in the main source directory.
 
    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., 59 Temple Place - Suite 330, Boston,
-   MA 02111-1307, USA.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
+   the file LICENSE for additional details.
 
  */
 
@@ -36,6 +30,8 @@
 #undef _POSIX_C_SOURCE
 #include <Python.h>
 
+extern char *configfile;
+
 /* Imported subroutines */
 //extern PyMethodDef JobMethods[];
 extern PyObject *job_getattr(PyObject *self, char *attrname);
@@ -61,6 +57,7 @@ static PyMethodDef BaculaMethods[] = {
     {NULL, NULL, 0, NULL}             /* last item */
 };
 
+static char my_version[] = VERSION " " BDATE;
 
 /*
  * This is a Bacula Job type as defined in Python. We store a pointer
@@ -103,7 +100,10 @@ void init_python_interpreter(const char *progname, const char *scripts,
    Py_Initialize();
    PyEval_InitThreads();
    bacula_module = Py_InitModule("bacula", BaculaMethods);
-   PyModule_AddStringConstant(bacula_module, "name", my_name);
+   PyModule_AddStringConstant(bacula_module, "Name", my_name);
+   PyModule_AddStringConstant(bacula_module, "Version", my_version);
+   PyModule_AddStringConstant(bacula_module, "ConfigFile", configfile);
+   PyModule_AddStringConstant(bacula_module, "WorkingDir", (char *)working_directory);
    if (!bacula_module) {
       Jmsg0(NULL, M_ERROR_TERM, 0, "Could not initialize Python\n");
    }
@@ -250,8 +250,7 @@ int generate_daemon_event(JCR *jcr, const char *event)
 
    } else if (strcmp(event, "JobEnd") == 0) {
       if (!JobEnd_method || !jcr->Python_job) {
-         Dmsg2(000, "No JobEnd method=%p Job=%p\n", JobEnd_method, jcr->Python_job);
-         stat = 0;
+         stat = 0;                    /* probably already here */
          goto bail_out;
       }
       bstrncpy(jcr->event, event, sizeof(jcr->event));
@@ -284,10 +283,12 @@ int generate_daemon_event(JCR *jcr, const char *event)
    }
 
 bail_out:
-   Py_XDECREF((PyObject *)jcr->Python_job);
-   jcr->Python_job = NULL;
-   Py_XDECREF((PyObject *)jcr->Python_events);
-   jcr->Python_events = NULL;
+   if (jcr) {
+      Py_XDECREF((PyObject *)jcr->Python_job);
+      jcr->Python_job = NULL;
+      Py_XDECREF((PyObject *)jcr->Python_events);
+      jcr->Python_events = NULL;
+   }
    /* Fall through */
 jobstart_ok:
    Py_XDECREF(result);