svn commit: samba r26041 - in branches/4.0-python: . source source/lib/ldb source/lib/ldb/tests/python source/lib/registry source/scripting/python source/scripting/python/samba source/setup

jelmer at samba.org jelmer at samba.org
Mon Nov 19 19:28:21 GMT 2007


Author: jelmer
Date: 2007-11-19 19:28:19 +0000 (Mon, 19 Nov 2007)
New Revision: 26041

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26041

Log:
Some more cleanups, support setting the debug function for ldb from python.
Modified:
   branches/4.0-python/
   branches/4.0-python/source/BRANCH.TODO
   branches/4.0-python/source/lib/ldb/ldb.i
   branches/4.0-python/source/lib/ldb/tests/python/api.py
   branches/4.0-python/source/lib/registry/registry.i
   branches/4.0-python/source/scripting/python/miscmodule.c
   branches/4.0-python/source/scripting/python/samba/__init__.py
   branches/4.0-python/source/scripting/python/samba/provision.py
   branches/4.0-python/source/scripting/python/sidmodule.c
   branches/4.0-python/source/scripting/python/uuidmodule.c
   branches/4.0-python/source/setup/provision


Changeset:

Property changes on: branches/4.0-python
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:file-ids
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/4.0-python/source/BRANCH.TODO
===================================================================
--- branches/4.0-python/source/BRANCH.TODO	2007-11-19 18:20:55 UTC (rev 26040)
+++ branches/4.0-python/source/BRANCH.TODO	2007-11-19 19:28:19 UTC (rev 26041)
@@ -2,3 +2,4 @@
 - make sure exceptions are properly thrown everywhere
  - Use LdbError, NtStatusError, WinError rather than RuntimeError
 - fix web server
+- allow non-top-level modules in build system

Modified: branches/4.0-python/source/lib/ldb/ldb.i
===================================================================
--- branches/4.0-python/source/lib/ldb/ldb.i	2007-11-19 18:20:55 UTC (rev 26040)
+++ branches/4.0-python/source/lib/ldb/ldb.i	2007-11-19 19:28:19 UTC (rev 26041)
@@ -392,6 +392,26 @@
 
 typedef struct ldb_ldif ldb_ldif;
 
+#ifdef SWIGPYTHON
+%{
+static void py_ldb_debug(void *context, enum ldb_debug_level level, const char *fmt, va_list ap)
+{
+    char *text;
+    PyObject *fn = context;
+
+    vasprintf(&text, fmt, ap);
+    PyObject_CallFunction(fn, "(i,s)", level, text);
+    free(text);
+}
+%}
+
+%typemap(in) (void (*debug)(void *context, enum ldb_debug_level level, const char *fmt, va_list ap),
+                            void *context) {
+    $1 = py_ldb_debug;
+    $2 = $input;
+}
+#endif
+
 %inline {
     static PyObject *ldb_ldif_to_pyobject(ldb_ldif *ldif)
     {
@@ -457,6 +477,9 @@
         const char *errstring();
         void set_create_perms(unsigned int perms);
         void set_modules_dir(const char *path);
+        ldb_error set_debug(void (*debug)(void *context, enum ldb_debug_level level, 
+                                          const char *fmt, va_list ap),
+                            void *context);
         ldb_error transaction_start();
         ldb_error transaction_commit();
         ldb_error transaction_cancel();

Modified: branches/4.0-python/source/lib/ldb/tests/python/api.py
===================================================================
--- branches/4.0-python/source/lib/ldb/tests/python/api.py	2007-11-19 18:20:55 UTC (rev 26040)
+++ branches/4.0-python/source/lib/ldb/tests/python/api.py	2007-11-19 19:28:19 UTC (rev 26041)
@@ -13,6 +13,7 @@
         self.assertTrue(ldb.valid_attr_name("foo"))
         self.assertFalse(ldb.valid_attr_name("24foo"))
 
+
 class SimpleLdb(unittest.TestCase):
     def test_connect(self):
         ldb.Ldb("foo.tdb")
@@ -184,7 +185,13 @@
         l.transaction_cancel()
         self.assertEquals(0, len(l.search(ldb.Dn(l, "dc=foo"))))
 
+    def test_set_debug(self):
+        def my_report_fn(level, text):
+            pass
+        l = ldb.Ldb("foo.tdb")
+        l.set_debug(my_report_fn)
 
+
 class DnTests(unittest.TestCase):
     def setUp(self):
         self.ldb = ldb.Ldb("foo.tdb")

Modified: branches/4.0-python/source/lib/registry/registry.i
===================================================================
--- branches/4.0-python/source/lib/registry/registry.i	2007-11-19 18:20:55 UTC (rev 26040)
+++ branches/4.0-python/source/lib/registry/registry.i	2007-11-19 19:28:19 UTC (rev 26041)
@@ -51,7 +51,6 @@
 }
 
 %typemap(argout) struct registry_context ** {
-    Py_XDECREF($result);
     $result = SWIG_NewPointerObj(*$1, SWIGTYPE_p_registry_context, 0);
 }
 

Modified: branches/4.0-python/source/scripting/python/miscmodule.c
===================================================================
--- branches/4.0-python/source/scripting/python/miscmodule.c	2007-11-19 18:20:55 UTC (rev 26040)
+++ branches/4.0-python/source/scripting/python/miscmodule.c	2007-11-19 19:28:19 UTC (rev 26041)
@@ -29,7 +29,7 @@
 	if (!PyArg_ParseTuple(args, "d", &length))
 	        return NULL;
 
-	str = generate_random_str(PyMemCtx(), length);
+	str = generate_random_str(NULL, length);
 
 	if (str == NULL) {
 		PyErr_SetString(PyExc_TypeError, "can't generate random password");
@@ -41,7 +41,6 @@
 
 static PyObject *py_nttime(PyObject *self, PyObject *args)
 {
-	char *str;
 	struct timeval tv = timeval_current();
 
 	if (!PyArg_ParseTuple(args, ""))

Modified: branches/4.0-python/source/scripting/python/samba/__init__.py
===================================================================
--- branches/4.0-python/source/scripting/python/samba/__init__.py	2007-11-19 18:20:55 UTC (rev 26040)
+++ branches/4.0-python/source/scripting/python/samba/__init__.py	2007-11-19 19:28:19 UTC (rev 26041)
@@ -32,6 +32,9 @@
     if modules_dir is None:
         modules_dir = os.path.join(os.getcwd(), "bin", "modules", "ldb")
     ret.set_modules_dir(modules_dir)
+    def samba_debug(level,text):
+        print "%d %s\n" % (level, text)
+    ret.set_debug(samba_debug)
     ret.connect(url)
     return ret
 

Modified: branches/4.0-python/source/scripting/python/samba/provision.py
===================================================================
--- branches/4.0-python/source/scripting/python/samba/provision.py	2007-11-19 18:20:55 UTC (rev 26040)
+++ branches/4.0-python/source/scripting/python/samba/provision.py	2007-11-19 19:28:19 UTC (rev 26041)
@@ -12,9 +12,11 @@
 import uuid, sid, misc
 from socket import gethostname, gethostbyname
 import param
+import registry
 from samba import Ldb, substitute_var
 from ldb import Dn, SCOPE_SUBTREE, SCOPE_ONELEVEL, SCOPE_BASE
 
+
 class InvalidNetbiosName(Exception):
     def __init__(self, name):
         super(InvalidNetbiosName, self).__init__("The name '%r' is not a valid NetBIOS name" % name)
@@ -324,6 +326,7 @@
     for (changetype, msg) in ldb.parse_ldif(data):
         ldb.modify(msg)
 
+
 def setup_file(setup_dir, template, message, fname, subobj):
     """Setup a file in the private dir."""
     f = fname
@@ -465,10 +468,10 @@
     setup_ldb(setup_dir, "secrets.ldif", session_info, credentials, subobj, paths.secrets, False)
 
     message("Setting up registry")
-    import registry
     reg = registry.Registry()
-    reg.mount(paths.hklm, registry.HKEY_LOCAL_MACHINE, [])
-    reg.apply_patchfile(os.path.join(setup_dir, "provision.reg"))
+    # FIXME: Still fails for some reason:
+    #reg.mount(paths.hklm, registry.HKEY_LOCAL_MACHINE, [])
+    #reg.apply_patchfile(os.path.join(setup_dir, "provision.reg"))
 
     message("Setting up templates into %s" % paths.templates)
     setup_ldb(setup_dir, "provision_templates.ldif", session_info, credentials, subobj, paths.templates)

Modified: branches/4.0-python/source/scripting/python/sidmodule.c
===================================================================
--- branches/4.0-python/source/scripting/python/sidmodule.c	2007-11-19 18:20:55 UTC (rev 26040)
+++ branches/4.0-python/source/scripting/python/sidmodule.c	2007-11-19 19:28:19 UTC (rev 26041)
@@ -29,7 +29,7 @@
 	if (!PyArg_ParseTuple(args, ""))
 	        return NULL;
 
-	str = talloc_asprintf(PyMemCtx(), "S-1-5-21-%8u-%8u-%8u", 
+	str = talloc_asprintf(NULL, "S-1-5-21-%8u-%8u-%8u", 
 				  (unsigned)generate_random(), 
 				  (unsigned)generate_random(), 
 				  (unsigned)generate_random());

Modified: branches/4.0-python/source/scripting/python/uuidmodule.c
===================================================================
--- branches/4.0-python/source/scripting/python/uuidmodule.c	2007-11-19 18:20:55 UTC (rev 26040)
+++ branches/4.0-python/source/scripting/python/uuidmodule.c	2007-11-19 19:28:19 UTC (rev 26041)
@@ -18,7 +18,6 @@
 */
 
 #include "includes.h"
-#include "scripting/python/talloc.h"
 #include "Python.h"
 #include "librpc/ndr/libndr.h"
 
@@ -32,7 +31,7 @@
 
 	guid = GUID_random();
 
-	str = GUID_string(PyMemCtx(), &guid);
+	str = GUID_string(NULL, &guid);
 	if (str == NULL) {
 		PyErr_SetString(PyExc_TypeError, "can't convert uuid to string");
 		return NULL;

Modified: branches/4.0-python/source/setup/provision
===================================================================
--- branches/4.0-python/source/setup/provision	2007-11-19 18:20:55 UTC (rev 26040)
+++ branches/4.0-python/source/setup/provision	2007-11-19 19:28:19 UTC (rev 26041)
@@ -94,18 +94,13 @@
 
 opts = parser.parse_args()[0]
 
-#
-#  print a message if quiet is not set
-#
 def message(text):
+	"""print a message if quiet is not set."""
 	if opts.quiet:
 		print text
 
 hostname = opts.host_name
 
-#
-#   main program
-#
 if opts.realm is None or opts.domain is None or opts.host_name is None:
 	if opts.realm is None:
 		print >>sys.stderr, "No realm set"



More information about the samba-cvs mailing list