[SCM] Samba Shared Repository - branch master updated - a32194033a6dcfe368b7ff64789fa152f090e7e6

Jelmer Vernooij jelmer at samba.org
Sun Dec 21 15:39:31 GMT 2008


The branch, master has been updated
       via  a32194033a6dcfe368b7ff64789fa152f090e7e6 (commit)
       via  f06b083ff3498e9a2157fdab687e2600a9b8ca72 (commit)
       via  676919872df9d108289ba989e55f64eb78e66860 (commit)
      from  cf9f2484b70f5b21f0020800ff0f36d49d18b175 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a32194033a6dcfe368b7ff64789fa152f090e7e6
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Dec 21 16:39:17 2008 +0100

    Move tests for ParamFile.

commit f06b083ff3498e9a2157fdab687e2600a9b8ca72
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Dec 21 16:32:47 2008 +0100

    Convert param Python module to "manual" C.

commit 676919872df9d108289ba989e55f64eb78e66860
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sun Dec 21 15:55:23 2008 +0100

    Provide simple Python replacement for ParamFile, which currently exists
    with a lot of overhead.

-----------------------------------------------------------------------

Summary of changes:
 source4/param/config.mk                        |   10 +-
 source4/param/param.i                          |  360 --
 source4/param/param.py                         |  267 --
 source4/param/param_wrap.c                     | 4882 ------------------------
 source4/param/pyparam.c                        |  167 +-
 source4/param/tests/bindings.py                |   20 -
 source4/scripting/python/samba/provision.py    |    4 +-
 source4/scripting/python/samba/samba3.py       |   65 +-
 source4/scripting/python/samba/tests/samba3.py |   24 +-
 source4/setup/provision                        |    2 +-
 10 files changed, 109 insertions(+), 5692 deletions(-)
 delete mode 100644 source4/param/param.i
 delete mode 100644 source4/param/param.py
 delete mode 100644 source4/param/param_wrap.c


Changeset truncated at 500 lines:

diff --git a/source4/param/config.mk b/source4/param/config.mk
index 18354ea..1341a92 100644
--- a/source4/param/config.mk
+++ b/source4/param/config.mk
@@ -58,11 +58,9 @@ PRIVATE_DEPENDENCIES = LIBLDB TDB_WRAP UTIL_TDB NDR_SECURITY
 SECRETS_OBJ_FILES = $(paramsrcdir)/secrets.o
 
 [PYTHON::param]
-LIBRARY_REALNAME = samba/_param.$(SHLIBEXT)
-PRIVATE_DEPENDENCIES = LIBSAMBA-HOSTCONFIG
+LIBRARY_REALNAME = samba/param.$(SHLIBEXT)
+PRIVATE_DEPENDENCIES = LIBSAMBA-HOSTCONFIG PYTALLOC
 
-param_OBJ_FILES = $(paramsrcdir)/param_wrap.o
+param_OBJ_FILES = $(paramsrcdir)/pyparam.o
 
-$(eval $(call python_py_module_template,samba/param.py,$(paramsrcdir)/param.py))
-
-$(param_OBJ_FILES): CFLAGS+=$(CFLAG_NO_UNUSED_MACROS) $(CFLAG_NO_CAST_QUAL)
+$(param_OBJ_FILES): CFLAGS+=$(CFLAG_NO_CAST_QUAL)
diff --git a/source4/param/param.i b/source4/param/param.i
deleted file mode 100644
index c04c927..0000000
--- a/source4/param/param.i
+++ /dev/null
@@ -1,360 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   Copyright (C) Jelmer Vernooij <jelmer at samba.org> 2007
-   
-   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 3 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, see <http://www.gnu.org/licenses/>.
-*/
-
-%module(docstring="Parsing and writing Samba configuration files.",package="samba.param") param
-
-%{
-#include <stdint.h>
-#include <stdbool.h>
-
-#include "includes.h"
-#include "param/param.h"
-#include "param/loadparm.h"
-
-typedef struct param_context param;
-typedef struct loadparm_context loadparm_context;
-typedef struct loadparm_service loadparm_service;
-typedef struct param_section param_section;
-typedef struct param_opt param_opt;
-%}
-
-%import "stdint.i"
-%import "carrays.i"
-%import "typemaps.i"
-%import "../lib/talloc/talloc.i"
-
-%typemap(default,noblock=1) struct loadparm_context * {
-    $1 = loadparm_init(NULL);
-}
-
-%rename(LoadParm) loadparm_context;
-
-%talloctype(loadparm_context);
-
-typedef struct loadparm_context {
-    %extend {
-        loadparm_context(TALLOC_CTX *mem_ctx) { return loadparm_init(mem_ctx); }
-        struct loadparm_service *default_service() { return lp_default_service($self); }
-        %feature("docstring") load "S.load(filename) -> None\n" \
-                                   "Load specified file.";
-        bool load(const char *filename) { return lp_load($self, filename); }
-        %feature("docstring") load_default "S.load_default() -> None\n" \
-                                   "Load default smb.conf file.";
-        bool load_default() { return lp_load_default($self); }
-#ifdef SWIGPYTHON
-        int __len__() { return lp_numservices($self); }
-        struct loadparm_service *__getitem__(const char *name) { return lp_service($self, name); }
-#endif
-        %feature("docstring") configfile "S.configfile() -> string\n" \
-                                   "Return name of last config file that was loaded.";
-        const char *configfile() { return lp_configfile($self); }
-        %feature("docstring") is_mydomain "S.is_mydomain(domain_name) -> bool\n" \
-                                   "Check whether the specified name matches our domain name.";
-        bool is_mydomain(const char *domain) { return lp_is_mydomain($self, domain); }
-        %feature("docstring") is_myname "S.is_myname(netbios_name) -> bool\n" \
-                                   "Check whether the specified name matches one of our netbios names.";
-        bool is_myname(const char *name) { return lp_is_myname($self, name); }
-        int use(struct param_context *param_ctx) { return param_use($self, param_ctx); }
-        %feature("docstring") set "S.set(name, value) -> bool\n" \
-                                   "Change a parameter.";
-        bool set(const char *parm_name, const char *parm_value) {
-            if (parm_value == NULL)
-                return false;
-            return lp_set_cmdline($self, parm_name, parm_value);
-        }
-
-        char *private_path(const char *name, TALLOC_CTX *mem_ctx) {
-            return private_path(mem_ctx, $self, name);
-        }
-
-        %feature("docstring") set "S.get(name, service_name) -> value\n" \
-                                   "Find specified parameter.";
-        PyObject *get(const char *param_name, const char *service_name)
-        {
-            struct parm_struct *parm = NULL;
-            void *parm_ptr = NULL;
-            int i;
-
-            if (service_name != NULL) {
-                struct loadparm_service *service;
-                /* its a share parameter */
-                service = lp_service($self, service_name);
-                if (service == NULL) {
-                    return Py_None;
-                }
-                if (strchr(param_name, ':')) {
-                    /* its a parametric option on a share */
-                    const char *type = talloc_strndup($self, 
-                                      param_name, 
-                                      strcspn(param_name, ":"));
-                    const char *option = strchr(param_name, ':') + 1;
-                    const char *value;
-                    if (type == NULL || option == NULL) {
-                        return Py_None;
-                    }
-                    value = lp_get_parametric($self, service, type, option);
-                    if (value == NULL) {
-                        return Py_None;
-                    }
-                    return PyString_FromString(value);
-                }
-
-                parm = lp_parm_struct(param_name);
-                if (parm == NULL || parm->class == P_GLOBAL) {
-                    return Py_None;
-                }
-                parm_ptr = lp_parm_ptr($self, service, parm);
-            } else if (strchr(param_name, ':')) {
-                /* its a global parametric option */
-                const char *type = talloc_strndup($self, 
-                                  param_name, strcspn(param_name, ":"));
-                const char *option = strchr(param_name, ':') + 1;
-                const char *value;
-                if (type == NULL || option == NULL) {
-                    return Py_None;
-                }
-                value = lp_get_parametric($self, NULL, type, option);
-                if (value == NULL)
-                    return Py_None;
-                return PyString_FromString(value);
-            } else {
-                /* its a global parameter */
-                parm = lp_parm_struct(param_name);
-                if (parm == NULL) {
-                    return Py_None;
-                }
-                parm_ptr = lp_parm_ptr($self, NULL, parm);
-            }
-
-            if (parm == NULL || parm_ptr == NULL) {
-                return Py_None;
-            }
-
-            /* construct and return the right type of python object */
-            switch (parm->type) {
-            case P_STRING:
-            case P_USTRING:
-                return PyString_FromString(*(char **)parm_ptr);
-            case P_BOOL:
-                return PyBool_FromLong(*(bool *)parm_ptr);
-            case P_INTEGER:
-            case P_OCTAL:
-            case P_BYTES:
-                return PyLong_FromLong(*(int *)parm_ptr);
-            case P_ENUM:
-                for (i=0; parm->enum_list[i].name; i++) {
-                    if (*(int *)parm_ptr == parm->enum_list[i].value) {
-                        return PyString_FromString(parm->enum_list[i].name);
-                    }
-                }
-                return Py_None;
-            case P_LIST: 
-                {
-                    int j;
-                    const char **strlist = *(const char ***)parm_ptr;
-                    PyObject *pylist = PyList_New(str_list_length(strlist));
-                    for (j = 0; strlist[j]; j++) 
-                        PyList_SetItem(pylist, j, 
-                                       PyString_FromString(strlist[j]));
-                    return pylist;
-                }
-
-                break;
-            }
-            return Py_None;
-        }
-    }
-} loadparm_context;
-
-%nodefaultctor loadparm_service;
-%nodefaultdtor loadparm_service;
-
-typedef struct loadparm_service {
-    %extend { 
-        const char *volume_label(struct loadparm_service *sDefault) { return volume_label($self, sDefault); }
-        const char *printername(struct loadparm_service *sDefault) { return lp_printername($self, sDefault); }
-        int maxprintjobs(struct loadparm_service *sDefault) { return lp_maxprintjobs($self, sDefault); } 
-    }
-} loadparm_service;
-
-%rename(ParamFile) param_context;
-
-%talloctype(param_context);
-typedef struct param_context {
-    %extend { 
-        param(TALLOC_CTX *mem_ctx) { return param_init(mem_ctx); }
-        %feature("docstring") add_section "S.get_section(name) -> section\n"
-                                          "Get an existing section.";
-        struct param_section *get_section(const char *name);
-        %feature("docstring") add_section "S.add_section(name) -> section\n"
-                                          "Add a new section.";
-        struct param_section *add_section(const char *name);
-        struct param_opt *get(const char *name, const char *section_name="global");
-        const char *get_string(const char *name, const char *section_name="global");
-        int set_string(const char *param, const char *value, const char *section="global");
-#ifdef SWIGPYTHON
-        int set(const char *parameter, PyObject *ob, const char *section_name="global")
-        {
-            struct param_opt *opt = param_get_add($self, parameter, section_name);
-
-            talloc_free(opt->value);
-            opt->value = talloc_strdup(opt, PyString_AsString(PyObject_Str(ob)));
-
-            return 0;
-        }
-        
-#endif
-
-        %feature("docstring") first_section "S.first_section() -> section\n"
-                                          "Find first section";
-        struct param_section *first_section() { return $self->sections; }
-        %feature("docstring") next_section "S.next_section(prev) -> section\n"
-                                          "Find next section";
-        struct param_section *next_section(struct param_section *s) { return s->next; }
-
-        %feature("docstring") read "S.read(filename) -> bool\n"
-                                          "Read a filename.";
-        int read(const char *fn);
-        %feature("docstring") read "S.write(filename) -> bool\n"
-                                          "Write this object to a file.";
-        int write(const char *fn);
-    }
-    %pythoncode {
-        def __getitem__(self, name):
-            ret = self.get_section(name)
-            if ret is None:
-                raise KeyError("No such section %s" % name)
-            return ret
-
-        class SectionIterator:
-            def __init__(self, param):
-                self.param = param
-                self.key = None
-
-            def __iter__(self):
-                return self
-                
-            def next(self):
-                if self.key is None:
-                    self.key = self.param.first_section()
-                    if self.key is None:
-                        raise StopIteration
-                    return self.key
-                else:
-                    self.key = self.param.next_section(self.key)
-                    if self.key is None:
-                        raise StopIteration
-                    return self.key
-
-        def __iter__(self):
-            return self.SectionIterator(self)
-    }
-} param;
-
-%talloctype(param_opt);
-
-typedef struct param_opt {
-    %immutable key;
-    %immutable value;
-    const char *key, *value;
-    %extend {
-#ifdef SWIGPYTHON
-        const char *__str__() { return $self->value; }
-#endif
-    }
-} param_opt;
-
-%talloctype(param);
-typedef struct param_section {
-    %immutable name;
-    const char *name;
-    %extend {
-        struct param_opt *get(const char *name);
-        struct param_opt *first_parameter() { return $self->parameters; }
-        struct param_opt *next_parameter(struct param_opt *s) { return s->next; }
-    }
-    %pythoncode {
-        def __getitem__(self, name):
-            ret = self.get(name)
-            if ret is None:
-                raise KeyError("No such option %s" % name)
-            return ret
-
-        class ParamIterator:
-            def __init__(self, section):
-                self.section = section
-                self.key = None
-
-            def __iter__(self):
-                return self
-                
-            def next(self):
-                if self.key is None:
-                    self.key = self.section.first_parameter()
-                    if self.key is None:
-                        raise StopIteration
-                    return self.key
-                else:
-                    self.key = self.section.next_parameter(self.key)
-                    if self.key is None:
-                        raise StopIteration
-                    return self.key
-
-        def __iter__(self):
-            return self.ParamIterator(self)
-    }
-} param_section;
-
-%{
-
-struct loadparm_context *lp_from_py_object(PyObject *py_obj)
-{
-    struct loadparm_context *lp_ctx;
-    if (PyString_Check(py_obj)) {
-        lp_ctx = loadparm_init(NULL);
-        if (!lp_load(lp_ctx, PyString_AsString(py_obj))) {
-            talloc_free(lp_ctx);
-            return NULL;
-        }
-        return lp_ctx;
-    }
-
-    if (py_obj == Py_None) {
-        lp_ctx = loadparm_init(NULL);
-        if (!lp_load_default(lp_ctx)) {
-            talloc_free(lp_ctx);
-            return NULL;
-        }
-        return lp_ctx;
-    }
-
-    if (SWIG_ConvertPtr(py_obj, (void *)&lp_ctx, SWIGTYPE_p_loadparm_context, 0 |  0 ) < 0)
-        return NULL;
-    return lp_ctx;
-}
-
-struct loadparm_context *py_default_loadparm_context(TALLOC_CTX *mem_ctx)
-{
-    struct loadparm_context *ret;
-    ret = loadparm_init(mem_ctx);
-    if (!lp_load_default(ret))
-        return NULL;
-    return ret;
-}
-
-%}
diff --git a/source4/param/param.py b/source4/param/param.py
deleted file mode 100644
index 3662c99..0000000
--- a/source4/param/param.py
+++ /dev/null
@@ -1,267 +0,0 @@
-# This file was automatically generated by SWIG (http://www.swig.org).
-# Version 1.3.36
-#
-# Don't modify this file, modify the SWIG interface instead.
-
-"""
-Parsing and writing Samba configuration files.
-"""
-
-import _param
-import new
-new_instancemethod = new.instancemethod
-try:
-    _swig_property = property
-except NameError:
-    pass # Python < 2.2 doesn't have 'property'.
-def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
-    if (name == "thisown"): return self.this.own(value)
-    if (name == "this"):
-        if type(value).__name__ == 'PySwigObject':
-            self.__dict__[name] = value
-            return
-    method = class_type.__swig_setmethods__.get(name,None)
-    if method: return method(self,value)
-    if (not static) or hasattr(self,name):
-        self.__dict__[name] = value
-    else:
-        raise AttributeError("You cannot add attributes to %s" % self)
-
-def _swig_setattr(self,class_type,name,value):
-    return _swig_setattr_nondynamic(self,class_type,name,value,0)
-
-def _swig_getattr(self,class_type,name):
-    if (name == "thisown"): return self.this.own()
-    method = class_type.__swig_getmethods__.get(name,None)
-    if method: return method(self)
-    raise AttributeError,name
-
-def _swig_repr(self):
-    try: strthis = "proxy of " + self.this.__repr__()
-    except: strthis = ""
-    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
-
-import types
-try:
-    _object = types.ObjectType
-    _newclass = 1
-except AttributeError:
-    class _object : pass
-    _newclass = 0
-del types
-
-
-def _swig_setattr_nondynamic_method(set):
-    def set_attr(self,name,value):
-        if (name == "thisown"): return self.this.own(value)
-        if hasattr(self,name) or (name == "this"):
-            set(self,name,value)
-        else:
-            raise AttributeError("You cannot add attributes to %s" % self)
-    return set_attr
-
-
-class LoadParm(object):
-    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
-    __repr__ = _swig_repr
-    def __init__(self, *args, **kwargs): 
-        _param.LoadParm_swiginit(self,_param.new_LoadParm(*args, **kwargs))
-    def load(*args, **kwargs):
-        """
-        S.load(filename) -> None
-        Load specified file.
-        """
-        return _param.LoadParm_load(*args, **kwargs)
-
-    def load_default(*args, **kwargs):
-        """
-        S.load_default() -> None
-        Load default smb.conf file.
-        """
-        return _param.LoadParm_load_default(*args, **kwargs)
-
-    def configfile(*args, **kwargs):
-        """
-        S.configfile() -> string
-        Return name of last config file that was loaded.
-        """
-        return _param.LoadParm_configfile(*args, **kwargs)
-
-    def is_mydomain(*args, **kwargs):
-        """
-        S.is_mydomain(domain_name) -> bool
-        Check whether the specified name matches our domain name.
-        """
-        return _param.LoadParm_is_mydomain(*args, **kwargs)
-
-    def is_myname(*args, **kwargs):
-        """
-        S.is_myname(netbios_name) -> bool
-        Check whether the specified name matches one of our netbios names.
-        """
-        return _param.LoadParm_is_myname(*args, **kwargs)
-
-    def set(*args, **kwargs):
-        """
-        S.set(name, value) -> bool
-        Change a parameter.
-        """


-- 
Samba Shared Repository


More information about the samba-cvs mailing list