[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