Ignore:
Timestamp:
Nov 27, 2012, 4:43:17 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.0

Location:
trunk/server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source4/param/pyparam_util.c

    r414 r745  
    1818*/
    1919
    20 #include <stdint.h>
    21 #include <stdbool.h>
    22 
     20#include <Python.h>
    2321#include "includes.h"
    2422#include "param/param.h"
    2523#include "param/loadparm.h"
    26 #include <Python.h>
    27 #include "pytalloc.h"
     24#include "lib/talloc/pytalloc.h"
    2825
    2926#define PyLoadparmContext_AsLoadparmContext(obj) py_talloc_get_type(obj, struct loadparm_context)
    3027
    31 _PUBLIC_ struct loadparm_context *lp_from_py_object(PyObject *py_obj)
     28_PUBLIC_ struct loadparm_context *lpcfg_from_py_object(TALLOC_CTX *mem_ctx, PyObject *py_obj)
    3229{
    33     struct loadparm_context *lp_ctx;
     30        struct loadparm_context *lp_ctx;
     31        PyObject *param_mod;
     32        PyTypeObject *lp_type;
     33        bool is_lpobj;
    3434
    35     if (PyString_Check(py_obj)) {
    36         lp_ctx = loadparm_init(NULL);
    37         if (!lp_load(lp_ctx, PyString_AsString(py_obj))) {
    38             talloc_free(lp_ctx);
     35        if (PyString_Check(py_obj)) {
     36                lp_ctx = loadparm_init_global(false);
     37                if (!lpcfg_load(lp_ctx, PyString_AsString(py_obj))) {
    3938                        PyErr_Format(PyExc_RuntimeError, "Unable to load %s",
    40                                                 PyString_AsString(py_obj));
    41             return NULL;
    42         }
    43         return lp_ctx;
    44     }
     39                                    PyString_AsString(py_obj));
     40                        return NULL;
     41                }
     42                return lp_ctx;
     43        }
    4544
    46     if (py_obj == Py_None) {
    47         lp_ctx = loadparm_init(NULL);
    48                 /* We're not checking that loading the file succeeded *on purpose */
    49         lp_load_default(lp_ctx);
    50         return lp_ctx;
    51     }
     45        if (py_obj == Py_None) {
     46                return loadparm_init_global(true);
     47        }
    5248
    53     return PyLoadparmContext_AsLoadparmContext(py_obj);
     49        param_mod = PyImport_ImportModule("samba.param");
     50        if (param_mod == NULL) {
     51                return NULL;
     52        }
     53
     54        lp_type = (PyTypeObject *)PyObject_GetAttrString(param_mod, "LoadParm");
     55        Py_DECREF(param_mod);
     56        if (lp_type == NULL) {
     57                PyErr_SetString(PyExc_RuntimeError, "Unable to import LoadParm");
     58                return NULL;
     59        }
     60
     61        is_lpobj = PyObject_TypeCheck(py_obj, lp_type);
     62        Py_DECREF(lp_type);
     63        if (is_lpobj) {
     64                return talloc_reference(mem_ctx, PyLoadparmContext_AsLoadparmContext(py_obj));
     65        }
     66
     67        PyErr_SetNone(PyExc_TypeError);
     68        return NULL;
    5469}
    5570
    5671struct loadparm_context *py_default_loadparm_context(TALLOC_CTX *mem_ctx)
    5772{
    58     struct loadparm_context *ret;
    59     ret = loadparm_init(mem_ctx);
    60     if (!lp_load_default(ret))
    61         return NULL;
    62     return ret;
     73        return loadparm_init_global(true);
    6374}
    6475
Note: See TracChangeset for help on using the changeset viewer.