r23779: Change from v2 or later to v3 or later.
[samba.git] / source3 / python / py_conv.c
index 04b41948240009b95c1c0b5e971a4003d077b50b..e313fff7bf57510b507ff755f9ea937ed764fca1 100644 (file)
@@ -5,7 +5,7 @@
    
    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
+   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,
@@ -18,8 +18,6 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#include "includes.h"
-#include "Python.h"
 #include "py_conv.h"
 
 /* Helper for rpcstr_pull() function */
@@ -29,6 +27,11 @@ static void fstr_pull(fstring str, UNISTR *uni)
        rpcstr_pull(str, uni->buffer, sizeof(fstring), -1, STR_TERMINATE);
 }
 
+static void fstr_pull2(fstring str, UNISTR2 *uni)
+{
+       rpcstr_pull(str, uni->buffer, sizeof(fstring), -1, STR_TERMINATE);
+}
+
 /* Convert a structure to a Python dict */
 
 PyObject *from_struct(void *s, struct pyconv *conv)
@@ -42,12 +45,24 @@ PyObject *from_struct(void *s, struct pyconv *conv)
                switch (conv[i].type) {
                case PY_UNISTR: {
                        UNISTR *u = (UNISTR *)((char *)s + conv[i].offset);
-                       fstring s = "";
+                       fstring str = "";
 
                        if (u->buffer)
-                               fstr_pull(s, u);
+                               fstr_pull(str, u);
+
+                       item = PyString_FromString(str);
+                       PyDict_SetItemString(obj, conv[i].name, item);
 
-                       item = PyString_FromString(s);
+                       break;
+               }
+               case PY_UNISTR2: {
+                       UNISTR2 *u = (UNISTR2 *)((char *)s + conv[i].offset);
+                       fstring str = "";
+
+                       if (u->buffer)
+                               fstr_pull2(str, u);
+
+                       item = PyString_FromString(str);
                        PyDict_SetItemString(obj, conv[i].name, item);
 
                        break;
@@ -122,13 +137,13 @@ BOOL to_struct(void *s, PyObject *dict, struct pyconv *conv)
                switch (conv[i].type) {
                case PY_UNISTR: {
                        UNISTR *u = (UNISTR *)((char *)s + conv[i].offset);
-                       char *s = "";
+                       char *str = "";
 
                        if (!PyString_Check(obj))
                                goto done;
 
-                       s = PyString_AsString(obj);
-                       init_unistr(u, s);
+                       str = PyString_AsString(obj);
+                       init_unistr(u, str);
                        
                        break;
                }