r26088: Import some native-python python modules and move original python swig tortur...
authorJelmer Vernooij <jelmer@samba.org>
Wed, 21 Nov 2007 12:07:16 +0000 (13:07 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 21 Dec 2007 04:45:59 +0000 (05:45 +0100)
22 files changed:
.bzrignore
source/lib/ldb/ldb.i
source/libcli/util/errors.i
source/main.mk
source/scripting/python/config.mk [new file with mode: 0644]
source/scripting/python/misc.i [new file with mode: 0644]
source/scripting/python/parammodule.c [new file with mode: 0644]
source/scripting/python/samba/__init__.py [new file with mode: 0644]
source/scripting/python/samba/getopt.py [new file with mode: 0644]
source/scripting/python/samba/samr.py [moved from source/scripting/swig/samr.py with 100% similarity]
source/scripting/python/samba/torture/pytorture [moved from source/scripting/swig/torture/pytorture with 100% similarity]
source/scripting/python/samba/torture/spoolss.py [moved from source/scripting/swig/torture/spoolss.py with 100% similarity]
source/scripting/python/samba/torture/torture_samr.py [moved from source/scripting/swig/torture/torture_samr.py with 100% similarity]
source/scripting/python/samba/torture/torture_tdb.py [moved from source/scripting/swig/torture/torture_tdb.py with 100% similarity]
source/scripting/python/samba/torture/winreg.py [moved from source/scripting/swig/torture/winreg.py with 100% similarity]
source/scripting/python/sidmodule.c [new file with mode: 0644]
source/scripting/python/uuidmodule.c [new file with mode: 0644]
source/scripting/swig/README [deleted file]
source/scripting/swig/config.m4 [deleted file]
source/scripting/swig/config.mk [deleted file]
source/scripting/swig/samba.i [deleted file]
source/scripting/swig/status_codes.i [deleted file]

index 38606678fb9ae228373334153e3f3e9c840c9423..5565c66ed020c99a76881feeb63179f916ed83e4 100644 (file)
@@ -208,3 +208,6 @@ source/lib/ldb/tdbtest.ldb
 libtdb.so.*
 libtalloc.so.*
 source/auth/credentials/credentials.py
+source/lib/ldb/ldb.py
+source/lib/registry/registry.py
+source/libcli/swig/libcli_nbt.py
index 9a55327a07528805e4454168f1de436f10f18cc6..b37082af38e67f705a79f5dbc0838881b4e85d60 100644 (file)
@@ -553,8 +553,8 @@ int ldb_valid_attr_name(const char *s);
 
 typedef unsigned long time_t;
 
-%{
-char *timestring(time_t t)
+%inline %{
+static char *timestring(time_t t)
 {
     char *tresult = ldb_timestring(NULL, t);
     char *result = strdup(tresult);
@@ -562,7 +562,6 @@ char *timestring(time_t t)
     return result; 
 }
 %}
-char *timestring(time_t t);
 
 %rename(string_to_time) ldb_string_to_time;
 time_t ldb_string_to_time(const char *s);
index 61cb7a090ad5c7d90c08d5e609cf9572775e2438..d51c9e0dede3d9a6d5645f448cef71b4c20764b4 100644 (file)
     }
 };
 
+%typemap(in) NTSTATUS {
+       if (PyLong_Check($input))
+               $1 = NT_STATUS(PyLong_AsUnsignedLong($input));
+       else if (PyInt_Check($input))
+               $1 = NT_STATUS(PyInt_AsLong($input));
+       else {
+               PyErr_SetString(PyExc_TypeError, "Expected a long or an int");
+               return NULL;
+       }
+}
+
 #endif
index a4c9764eb5ba307380e235b65b60e6f36a487102..6080ab947da061230f5dc485667b0eca172172bb 100644 (file)
@@ -29,7 +29,7 @@ include librpc/config.mk
 include client/config.mk
 include libcli/config.mk
 include scripting/ejs/config.mk
-include scripting/swig/config.mk
+include scripting/python/config.mk
 include kdc/config.mk
 
 DEFAULT_HEADERS = $(srcdir)/lib/util/dlinklist.h \
diff --git a/source/scripting/python/config.mk b/source/scripting/python/config.mk
new file mode 100644 (file)
index 0000000..1c9ffb2
--- /dev/null
@@ -0,0 +1,35 @@
+[PYTHON::python_param]
+PRIVATE_DEPENDENCIES = LIBSAMBA-CONFIG 
+OBJ_FILES = parammodule.o
+
+[PYTHON::python_uuid]
+PRIVATE_DEPENDENCIES = LIBNDR 
+OBJ_FILES = uuidmodule.o
+
+[PYTHON::python_sid]
+PRIVATE_DEPENDENCIES = LIBNDR 
+OBJ_FILES = sidmodule.o
+
+[PYTHON::python_misc]
+PRIVATE_DEPENDENCIES = LIBNDR LIBLDB
+SWIG_FILE = misc.i
+
+# Swig extensions
+swig: pythonmods
+
+.SUFFIXES: _wrap.c .i
+
+.i_wrap.c:
+       swig -Wall -I$(srcdir)/scripting/swig -python $<
+
+clean::
+       @echo "Removing SWIG output files"
+       @-rm -f bin/python/*
+       # FIXME: Remove _wrap.c files
+       #
+pythonmods: $(PYTHON_DSOS)
+
+PYDOCTOR_MODULES=bin/python/ldb.py bin/python/auth.py bin/python/credentials.py bin/python/registry.py
+
+pydoctor:: pythonmods
+       LD_LIBRARY_PATH=bin/shared PYTHONPATH=bin/python pydoctor --make-html --docformat=restructuredtext --add-package scripting/python/samba/ $(addprefix --add-module , $(PYDOCTOR_MODULES))
diff --git a/source/scripting/python/misc.i b/source/scripting/python/misc.i
new file mode 100644 (file)
index 0000000..0885223
--- /dev/null
@@ -0,0 +1,32 @@
+/* 
+   Unix SMB/CIFS implementation.
+   Copyright (C) Jelmer Vernooij <jelmer@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(package="samba.misc") misc
+
+%{
+#include "includes.h"
+#include "ldb.h"
+#include "auth/credentials/credentials.h"
+%}
+
+%import "stdint.i"
+%import "../../lib/talloc/talloc.i"
+
+%rename(random_password) generate_random_str;
+char *generate_random_str(TALLOC_CTX *mem_ctx, size_t len);
+
diff --git a/source/scripting/python/parammodule.c b/source/scripting/python/parammodule.c
new file mode 100644 (file)
index 0000000..38d312c
--- /dev/null
@@ -0,0 +1,182 @@
+/* 
+   Unix SMB/CIFS implementation.
+
+   Python wrapper for reading smb.conf files
+
+   Copyright (C) Jelmer Vernooij 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 2 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, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+#include "scripting/python/talloc.h"
+#include "Python.h"
+#include "param/param.h"
+
+staticforward PyTypeObject param_ParamFileType;
+
+typedef struct {
+       PyObject_HEAD
+       struct param_context *param_ctx;
+} param_ParamFileObject;
+
+static param_ParamFileObject *py_param_init(void)
+{
+       param_ParamFileObject *param; 
+
+       param = PyObject_New(param_ParamFileObject, &param_ParamFileType);
+
+       param->param_ctx = param_init(NULL);
+
+       return param;
+}
+
+static PyObject *py_param_load(PyObject *self, PyObject *args)
+{
+       char *filename = NULL;
+       param_ParamFileObject *param;
+
+       if (!PyArg_ParseTuple(args, "|s:new", &filename))
+               return NULL;
+
+       param = py_param_init();
+
+       if (filename != NULL) {
+               int ret = param_read(param->param_ctx, filename);
+
+               if (ret == -1) {
+                       PyErr_SetString(PyExc_TypeError, "reading file failed");
+                       return NULL;
+               }
+       }
+
+       return (PyObject *)param;
+}
+
+static void
+param_dealloc(PyObject* self)
+{
+       PyObject_Del(self);
+}
+
+static PyObject *py_param_get(PyObject *_self, PyObject *args)
+{
+       struct param_opt *param;
+       const char *section_name = NULL, *param_name = NULL;
+       param_ParamFileObject *self = (param_ParamFileObject *)_self;
+
+       if (!PyArg_ParseTuple(args, (char *)"s|s", &param_name, &section_name))
+               return NULL;
+
+       param = param_get(self->param_ctx, section_name, param_name);
+       if (param == NULL)
+               return Py_None;
+
+       return PyString_FromString(param->value);
+}
+
+static PyObject *py_param_set(PyObject *_self, PyObject *args)
+{
+       param_ParamFileObject *self = (param_ParamFileObject *)_self;
+       const char *section_name = NULL, *param_name = NULL, *param_value = NULL;
+
+       if (!PyArg_ParseTuple(args, "ss|s", &param_name, &param_value, &section_name))
+               return NULL;
+
+       if (section_name == NULL)
+               section_name = GLOBAL_NAME;
+
+       if (param_set_string(self->param_ctx, section_name, param_name, param_value) != 0) {
+               PyErr_SetString(PyExc_TypeError, "setting variable failed");
+               return NULL;
+       }
+
+       return Py_None;
+}
+
+static PyObject *py_param_save(PyObject *_self, PyObject *args)
+{
+       param_ParamFileObject *self = (param_ParamFileObject *)_self;
+       const char *filename = NULL;
+
+       if (!PyArg_ParseTuple(args, "s", &filename))
+               return NULL;
+
+       if (param_write(self->param_ctx, filename) != 0) {
+               PyErr_SetString(PyExc_TypeError, "unable to save");
+               return NULL;
+       }
+
+       return Py_None;
+}
+
+static PyObject *py_param_use(PyObject *_self, PyObject *args)
+{
+       param_ParamFileObject *self = (param_ParamFileObject *)_self;
+
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+
+       if (param_use(global_loadparm, self->param_ctx) != 0) {
+               PyErr_SetString(PyExc_TypeError, "unable to use");
+               return NULL;
+       }
+
+       return Py_None;
+}
+
+static PyMethodDef param_methods[] = {
+       {"get", (PyCFunction)py_param_get, METH_VARARGS,
+               "Get a parameter."},
+       {"set", (PyCFunction)py_param_set, METH_VARARGS,
+               "Set a parameter."},
+       {"save", (PyCFunction)py_param_save, METH_VARARGS,
+               "Save file" },
+       {"use", (PyCFunction)py_param_use, METH_VARARGS,
+               "Use param file" },
+       {NULL, NULL, 0, NULL}
+};
+
+static PyObject *
+param_getattr(PyTypeObject *obj, char *name)
+{
+       return Py_FindMethod(param_methods, (PyObject *)obj, name);
+}
+
+static PyTypeObject param_ParamFileType = {
+       PyObject_HEAD_INIT(NULL) 0,
+       .tp_name = "ParamFile",
+       .tp_basicsize = sizeof(param_ParamFileObject),
+       .tp_dealloc = param_dealloc,
+       .tp_getattr = param_getattr,
+};
+
+
+static PyMethodDef methods[] = {
+       { "ParamFile", (PyCFunction)py_param_load, METH_VARARGS, NULL},
+       { NULL, NULL }
+};
+
+PyDoc_STRVAR(param_doc, "Simple wrappers around the smb.conf parsers");
+
+PyMODINIT_FUNC initparam(void)
+{
+       PyObject *mod = Py_InitModule3("param", methods, param_doc);
+       if (mod == NULL)
+               return;
+
+       PyModule_AddObject(mod, "configfile", 
+                          PyString_FromString(lp_configfile(global_loadparm)));
+}
diff --git a/source/scripting/python/samba/__init__.py b/source/scripting/python/samba/__init__.py
new file mode 100644 (file)
index 0000000..46d8ff7
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+
+# Unix SMB/CIFS implementation.
+# Copyright (C) Andrew Tridgell <tridge@samba.org> 2005
+# Copyright (C) Jelmer Vernooij <jelmer@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/>.
+#
+
+import os
+from misc import ldb_set_credentials
+
+def Ldb(url, session_info=None, credentials=None, modules_dir=None):
+    """Open a Samba Ldb file. 
+
+    This is different from a regular Ldb file in that the Samba-specific
+    modules-dir is used by default and that credentials and session_info 
+    can be passed through (required by some modules).
+    """
+    import ldb
+    ret = ldb.Ldb()
+    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" % (level, text)
+    ldb_set_opaque("credentials", credentials)
+    ret.set_opaque("sessionInfo", session_info)
+    #ret.set_debug(samba_debug)
+    ret.connect(url)
+    return ret
+
+
+def substitute_var(text, values):
+    """substitute strings of the form ${NAME} in str, replacing
+    with substitutions from subobj.
+    
+    :param text: Text in which to subsitute.
+    :param values: Dictionary with keys and values.
+    """
+
+    for (name, value) in values.items():
+        text = text.replace("${%s}" % name, value)
+
+    return text
+
diff --git a/source/scripting/python/samba/getopt.py b/source/scripting/python/samba/getopt.py
new file mode 100644 (file)
index 0000000..8143dca
--- /dev/null
@@ -0,0 +1,46 @@
+#!/usr/bin/python
+
+# Samba-specific bits for optparse
+# Copyright (C) Jelmer Vernooij <jelmer@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/>.
+#
+
+import optparse
+from credentials import Credentials
+
+class SambaOptions(optparse.OptionGroup):
+    def __init__(self, parser):
+        optparse.OptionGroup.__init__(self, parser, "Samba Common Options")
+        self.add_option("--configfile", type="string", metavar="FILE",
+                        help="Configuration file")
+
+
+class VersionOptions(optparse.OptionGroup):
+    def __init__(self, parser):
+        optparse.OptionGroup.__init__(self, parser, "Version Options")
+
+
+class CredentialsOptions(optparse.OptionGroup):
+    def __init__(self, parser):
+        optparse.OptionGroup.__init__(self, parser, "Credentials Options")
+        self.add_option("--simple-bind-dn", type="string", metavar="DN",
+                        help="DN to use for a simple bind")
+        self.add_option("--password", type="string", metavar="PASSWORD",
+                        help="Password")
+
+    def get_credentials(self):
+        creds = Credentials()
+        # FIXME: Update
+        return creds
diff --git a/source/scripting/python/sidmodule.c b/source/scripting/python/sidmodule.c
new file mode 100644 (file)
index 0000000..2b3f152
--- /dev/null
@@ -0,0 +1,57 @@
+/* 
+   Unix SMB/CIFS implementation.
+   Samba utility functions
+   Copyright (C) Jelmer Vernooij <jelmer@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/>.
+*/
+
+#include "includes.h"
+#include "scripting/python/talloc.h"
+#include "Python.h"
+#include "libcli/security/security.h"
+
+static PyObject *sid_random(PyObject *self, PyObject *args)
+{
+       char *str;
+
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+
+       str = talloc_asprintf(NULL, "S-1-5-21-%u-%u-%u", 
+                                 (unsigned)generate_random(), 
+                                 (unsigned)generate_random(), 
+                                 (unsigned)generate_random());
+
+       if (str == NULL) {
+               PyErr_SetString(PyExc_TypeError, "can't generate random sid");
+               return NULL;
+       }
+
+       return PyString_FromString(str);
+}
+
+static PyMethodDef methods[] = {
+       { "random", (PyCFunction)sid_random, METH_VARARGS, NULL},
+       { NULL, NULL }
+};
+
+PyDoc_STRVAR(param_doc, "SID helper routines");
+
+PyMODINIT_FUNC initsid(void)
+{
+       PyObject *mod = Py_InitModule3("sid", methods, param_doc);
+       if (mod == NULL)
+               return;
+}
diff --git a/source/scripting/python/uuidmodule.c b/source/scripting/python/uuidmodule.c
new file mode 100644 (file)
index 0000000..9ae432d
--- /dev/null
@@ -0,0 +1,57 @@
+/* 
+   Unix SMB/CIFS implementation.
+   Samba utility functions
+   Copyright (C) Jelmer Vernooij <jelmer@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/>.
+*/
+
+#include "includes.h"
+#include "Python.h"
+#include "librpc/ndr/libndr.h"
+
+static PyObject *uuid_random(PyObject *self, PyObject *args)
+{
+       struct GUID guid;
+       char *str;
+
+       if (!PyArg_ParseTuple(args, ""))
+               return NULL;
+
+       guid = GUID_random();
+
+       str = GUID_string(NULL, &guid);
+       if (str == NULL) {
+               PyErr_SetString(PyExc_TypeError, "can't convert uuid to string");
+               return NULL;
+       }
+
+       talloc_free(str);
+
+       return PyString_FromString(str);
+}
+
+static PyMethodDef methods[] = {
+       { "random", (PyCFunction)uuid_random, METH_VARARGS, NULL},
+       { NULL, NULL }
+};
+
+PyDoc_STRVAR(param_doc, "UUID helper routines");
+
+PyMODINIT_FUNC inituuid(void)
+{
+       PyObject *mod = Py_InitModule3("uuid", methods, param_doc);
+       if (mod == NULL)
+               return;
+}
diff --git a/source/scripting/swig/README b/source/scripting/swig/README
deleted file mode 100644 (file)
index 38b95b2..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-README for Samba SWIG Python extensions
----------------------------------------
-
-Instructions for building:
-
-1. Run configure with the --with-python option to enable python
-   extensions. 
-
-2. Run 'make idl_full swig' to build extensions.
-
-3. At some stage there will be a proper system for installing the
-   extensions, but right now it's easier to run them in place.  Set
-   your PYTHONPATH to include the modules.  From the Samba source
-   directory, run:
-
-   export PYTHONPATH=`pwd`/scripting/swig
-
-Now you can go nuts and use the extensions.  Check the
-scripting/swig/torture directory for a testsuite.  There will
-hopefully be a bunch of usage examples somewhere.
diff --git a/source/scripting/swig/config.m4 b/source/scripting/swig/config.m4
deleted file mode 100644 (file)
index 9988399..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-dnl # Scripting subsystem
-
-# Check for python support
-
-PYTHON=
-AC_ARG_WITH(python,
-[  --with-python=PYTHONNAME  build Python libraries],
-[ case "${withval-python}" in
-  yes)
-        PYTHON=python
-        ;;
-  no)
-        PYTHON=
-        ;;
-  *)
-        PYTHON=${withval-python}
-        ;;
-  esac ])
-
-if test x"$PYTHON" != "x"; then
-       incdir=`python -c 'import sys; print "%s/include/python%d.%d" % (sys.prefix, sys.version_info[[0]], sys.version_info[[1]])'`
-       CPPFLAGS="$CPPFLAGS -I $incdir"
-else
-       SMB_ENABLE(swig_dcerpc, NO)
-fi
-
-AC_SUBST(PYTHON)
-
diff --git a/source/scripting/swig/config.mk b/source/scripting/swig/config.mk
deleted file mode 100644 (file)
index 193e84b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# Swig extensions
-swig: pythonmods
-
-pythonmods: $(PYTHON_DSOS)
-       
-.SUFFIXES: _wrap.c .i
-
-.i_wrap.c:
-       swig -Wall -I$(srcdir)/scripting/swig -python $<
-
-clean::
-       @echo "Removing SWIG output files"
-       @-rm -f bin/python/*
-       # FIXME: Remove _wrap.c files
-
-PYDOCTOR_MODULES=bin/python/ldb.py bin/python/auth.py bin/python/credentials.py bin/python/registry.py
-
-pydoctor::
-       LD_LIBRARY_PATH=bin/shared PYTHONPATH=bin/python pydoctor --make-html --docformat=restructedtext --add-package scripting/python/samba/ $(addprefix --add-module , $(PYDOCTOR_MODULES))
diff --git a/source/scripting/swig/samba.i b/source/scripting/swig/samba.i
deleted file mode 100644 (file)
index fe83ae3..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-
-   Common swig definitions
-   
-   Copyright (C) 2004 Tim Potter <tpot@samba.org>
-
-     ** NOTE! The following LGPL license applies to the swig
-     ** definitions. This does NOT imply that all of Samba is released
-     ** under the LGPL
-   
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 3 of the License, or (at your option) any later version.
-
-   This library 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with this library; if not, see <http://www.gnu.org/licenses/>.
-*/
-
-%typemap(in) NTSTATUS {
-       if (PyLong_Check($input))
-               $1 = NT_STATUS(PyLong_AsUnsignedLong($input));
-       else if (PyInt_Check($input))
-               $1 = NT_STATUS(PyInt_AsLong($input));
-       else {
-               PyErr_SetString(PyExc_TypeError, "Expected a long or an int");
-               return NULL;
-       }
-}
-
-%typemap(in) struct cli_credentials * {
-       $1 = cli_credentials_init(arg1);
-       if ($input == Py_None) {
-               cli_credentials_set_anonymous($1);
-       } else {
-               if (!PyTuple_Check($input) ||
-                   PyTuple_Size($input) != 3) {
-                       PyErr_SetString(PyExc_TypeError, "Expecting three element tuple");
-                       return NULL;
-               }
-               if (!PyString_Check(PyTuple_GetItem($input, 0)) ||
-                   !PyString_Check(PyTuple_GetItem($input, 1)) ||
-                   !PyString_Check(PyTuple_GetItem($input, 2))) {
-                       PyErr_SetString(PyExc_TypeError, "Expecting string elements");
-                       return NULL;
-               }
-               cli_credentials_set_domain($1, PyString_AsString(PyTuple_GetItem($input, 0)), CRED_SPECIFIED);
-               cli_credentials_set_username($1, PyString_AsString(PyTuple_GetItem($input, 1)), CRED_SPECIFIED);
-               cli_credentials_set_password($1, PyString_AsString(PyTuple_GetItem($input, 2)), CRED_SPECIFIED);
-       }
-}
diff --git a/source/scripting/swig/status_codes.i b/source/scripting/swig/status_codes.i
deleted file mode 100644 (file)
index cf13ac9..0000000
+++ /dev/null
@@ -1,554 +0,0 @@
-/* Win32 status codes */
-
-#define STATUS_BUFFER_OVERFLOW            0x80000005
-#define STATUS_NO_MORE_FILES              0x80000006
-#define NT_STATUS_NO_MORE_ENTRIES         0x8000001a
-
-#define STATUS_MORE_ENTRIES               0x0105
-#define STATUS_SOME_UNMAPPED              0x0107
-#define ERROR_INVALID_PARAMETER                  0x0057
-#define ERROR_INSUFFICIENT_BUFFER        0x007a
-#define STATUS_NOTIFY_ENUM_DIR            0x010c
-#define ERROR_INVALID_DATATYPE           0x070c
-
-/* NT status codes */
-
-#define NT_STATUS_OK 0x00000000
-#define NT_STATUS_UNSUCCESSFUL 0xC0000001
-#define NT_STATUS_NOT_IMPLEMENTED 0xC0000002
-#define NT_STATUS_INVALID_INFO_CLASS 0xC0000003
-#define NT_STATUS_INFO_LENGTH_MISMATCH 0xC0000004
-#define NT_STATUS_ACCESS_VIOLATION 0xC0000005
-#define NT_STATUS_IN_PAGE_ERROR 0xC0000006
-#define NT_STATUS_PAGEFILE_QUOTA 0xC0000007
-#define NT_STATUS_INVALID_HANDLE 0xC0000008
-#define NT_STATUS_BAD_INITIAL_STACK 0xC0000009
-#define NT_STATUS_BAD_INITIAL_PC 0xC000000a
-#define NT_STATUS_INVALID_CID 0xC000000b
-#define NT_STATUS_TIMER_NOT_CANCELED 0xC000000c
-#define NT_STATUS_INVALID_PARAMETER 0xC000000d
-#define NT_STATUS_NO_SUCH_DEVICE 0xC000000e
-#define NT_STATUS_NO_SUCH_FILE 0xC000000f
-#define NT_STATUS_INVALID_DEVICE_REQUEST 0xC0000010
-#define NT_STATUS_END_OF_FILE 0xC0000011
-#define NT_STATUS_WRONG_VOLUME 0xC0000012
-#define NT_STATUS_NO_MEDIA_IN_DEVICE 0xC0000013
-#define NT_STATUS_UNRECOGNIZED_MEDIA 0xC0000014
-#define NT_STATUS_NONEXISTENT_SECTOR 0xC0000015
-#define NT_STATUS_MORE_PROCESSING_REQUIRED 0xC0000016
-#define NT_STATUS_NO_MEMORY 0xC0000017
-#define NT_STATUS_CONFLICTING_ADDRESSES 0xC0000018
-#define NT_STATUS_NOT_MAPPED_VIEW 0xC0000019
-#define NT_STATUS_UNABLE_TO_FREE_VM 0xC000001a
-#define NT_STATUS_UNABLE_TO_DELETE_SECTION 0xC000001b
-#define NT_STATUS_INVALID_SYSTEM_SERVICE 0xC000001c
-#define NT_STATUS_ILLEGAL_INSTRUCTION 0xC000001d
-#define NT_STATUS_INVALID_LOCK_SEQUENCE 0xC000001e
-#define NT_STATUS_INVALID_VIEW_SIZE 0xC000001f
-#define NT_STATUS_INVALID_FILE_FOR_SECTION 0xC0000020
-#define NT_STATUS_ALREADY_COMMITTED 0xC0000021
-#define NT_STATUS_ACCESS_DENIED 0xC0000022
-#define NT_STATUS_BUFFER_TOO_SMALL 0xC0000023
-#define NT_STATUS_OBJECT_TYPE_MISMATCH 0xC0000024
-#define NT_STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025
-#define NT_STATUS_INVALID_DISPOSITION 0xC0000026
-#define NT_STATUS_UNWIND 0xC0000027
-#define NT_STATUS_BAD_STACK 0xC0000028
-#define NT_STATUS_INVALID_UNWIND_TARGET 0xC0000029
-#define NT_STATUS_NOT_LOCKED 0xC000002a
-#define NT_STATUS_PARITY_ERROR 0xC000002b
-#define NT_STATUS_UNABLE_TO_DECOMMIT_VM 0xC000002c
-#define NT_STATUS_NOT_COMMITTED 0xC000002d
-#define NT_STATUS_INVALID_PORT_ATTRIBUTES 0xC000002e
-#define NT_STATUS_PORT_MESSAGE_TOO_LONG 0xC000002f
-#define NT_STATUS_INVALID_PARAMETER_MIX 0xC0000030
-#define NT_STATUS_INVALID_QUOTA_LOWER 0xC0000031
-#define NT_STATUS_DISK_CORRUPT_ERROR 0xC0000032
-#define NT_STATUS_OBJECT_NAME_INVALID 0xC0000033
-#define NT_STATUS_OBJECT_NAME_NOT_FOUND 0xC0000034
-#define NT_STATUS_OBJECT_NAME_COLLISION 0xC0000035
-#define NT_STATUS_HANDLE_NOT_WAITABLE 0xC0000036
-#define NT_STATUS_PORT_DISCONNECTED 0xC0000037
-#define NT_STATUS_DEVICE_ALREADY_ATTACHED 0xC0000038
-#define NT_STATUS_OBJECT_PATH_INVALID 0xC0000039
-#define NT_STATUS_OBJECT_PATH_NOT_FOUND 0xC000003a
-#define NT_STATUS_OBJECT_PATH_SYNTAX_BAD 0xC000003b
-#define NT_STATUS_DATA_OVERRUN 0xC000003c
-#define NT_STATUS_DATA_LATE_ERROR 0xC000003d
-#define NT_STATUS_DATA_ERROR 0xC000003e
-#define NT_STATUS_CRC_ERROR 0xC000003f
-#define NT_STATUS_SECTION_TOO_BIG 0xC0000040
-#define NT_STATUS_PORT_CONNECTION_REFUSED 0xC0000041
-#define NT_STATUS_INVALID_PORT_HANDLE 0xC0000042
-#define NT_STATUS_SHARING_VIOLATION 0xC0000043
-#define NT_STATUS_QUOTA_EXCEEDED 0xC0000044
-#define NT_STATUS_INVALID_PAGE_PROTECTION 0xC0000045
-#define NT_STATUS_MUTANT_NOT_OWNED 0xC0000046
-#define NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED 0xC0000047
-#define NT_STATUS_PORT_ALREADY_SET 0xC0000048
-#define NT_STATUS_SECTION_NOT_IMAGE 0xC0000049
-#define NT_STATUS_SUSPEND_COUNT_EXCEEDED 0xC000004a
-#define NT_STATUS_THREAD_IS_TERMINATING 0xC000004b
-#define NT_STATUS_BAD_WORKING_SET_LIMIT 0xC000004c
-#define NT_STATUS_INCOMPATIBLE_FILE_MAP 0xC000004d
-#define NT_STATUS_SECTION_PROTECTION 0xC000004e
-#define NT_STATUS_EAS_NOT_SUPPORTED 0xC000004f
-#define NT_STATUS_EA_TOO_LARGE 0xC0000050
-#define NT_STATUS_NONEXISTENT_EA_ENTRY 0xC0000051
-#define NT_STATUS_NO_EAS_ON_FILE 0xC0000052
-#define NT_STATUS_EA_CORRUPT_ERROR 0xC0000053
-#define NT_STATUS_FILE_LOCK_CONFLICT 0xC0000054
-#define NT_STATUS_LOCK_NOT_GRANTED 0xC0000055
-#define NT_STATUS_DELETE_PENDING 0xC0000056
-#define NT_STATUS_CTL_FILE_NOT_SUPPORTED 0xC0000057
-#define NT_STATUS_UNKNOWN_REVISION 0xC0000058
-#define NT_STATUS_REVISION_MISMATCH 0xC0000059
-#define NT_STATUS_INVALID_OWNER 0xC000005a
-#define NT_STATUS_INVALID_PRIMARY_GROUP 0xC000005b
-#define NT_STATUS_NO_IMPERSONATION_TOKEN 0xC000005c
-#define NT_STATUS_CANT_DISABLE_MANDATORY 0xC000005d
-#define NT_STATUS_NO_LOGON_SERVERS 0xC000005e
-#define NT_STATUS_NO_SUCH_LOGON_SESSION 0xC000005f
-#define NT_STATUS_NO_SUCH_PRIVILEGE 0xC0000060
-#define NT_STATUS_PRIVILEGE_NOT_HELD 0xC0000061
-#define NT_STATUS_INVALID_ACCOUNT_NAME 0xC0000062
-#define NT_STATUS_USER_EXISTS 0xC0000063
-#define NT_STATUS_NO_SUCH_USER 0xC0000064
-#define NT_STATUS_GROUP_EXISTS 0xC0000065
-#define NT_STATUS_NO_SUCH_GROUP 0xC0000066
-#define NT_STATUS_MEMBER_IN_GROUP 0xC0000067
-#define NT_STATUS_MEMBER_NOT_IN_GROUP 0xC0000068
-#define NT_STATUS_LAST_ADMIN 0xC0000069
-#define NT_STATUS_WRONG_PASSWORD 0xC000006a
-#define NT_STATUS_ILL_FORMED_PASSWORD 0xC000006b
-#define NT_STATUS_PASSWORD_RESTRICTION 0xC000006c
-#define NT_STATUS_LOGON_FAILURE 0xC000006d
-#define NT_STATUS_ACCOUNT_RESTRICTION 0xC000006e
-#define NT_STATUS_INVALID_LOGON_HOURS 0xC000006f
-#define NT_STATUS_INVALID_WORKSTATION 0xC0000070
-#define NT_STATUS_PASSWORD_EXPIRED 0xC0000071
-#define NT_STATUS_ACCOUNT_DISABLED 0xC0000072
-#define NT_STATUS_NONE_MAPPED 0xC0000073
-#define NT_STATUS_TOO_MANY_LUIDS_REQUESTED 0xC0000074
-#define NT_STATUS_LUIDS_EXHAUSTED 0xC0000075
-#define NT_STATUS_INVALID_SUB_AUTHORITY 0xC0000076
-#define NT_STATUS_INVALID_ACL 0xC0000077
-#define NT_STATUS_INVALID_SID 0xC0000078
-#define NT_STATUS_INVALID_SECURITY_DESCR 0xC0000079
-#define NT_STATUS_PROCEDURE_NOT_FOUND 0xC000007a
-#define NT_STATUS_INVALID_IMAGE_FORMAT 0xC000007b
-#define NT_STATUS_NO_TOKEN 0xC000007c
-#define NT_STATUS_BAD_INHERITANCE_ACL 0xC000007d
-#define NT_STATUS_RANGE_NOT_LOCKED 0xC000007e
-#define NT_STATUS_DISK_FULL 0xC000007f
-#define NT_STATUS_SERVER_DISABLED 0xC0000080
-#define NT_STATUS_SERVER_NOT_DISABLED 0xC0000081
-#define NT_STATUS_TOO_MANY_GUIDS_REQUESTED 0xC0000082
-#define NT_STATUS_GUIDS_EXHAUSTED 0xC0000083
-#define NT_STATUS_INVALID_ID_AUTHORITY 0xC0000084
-#define NT_STATUS_AGENTS_EXHAUSTED 0xC0000085
-#define NT_STATUS_INVALID_VOLUME_LABEL 0xC0000086
-#define NT_STATUS_SECTION_NOT_EXTENDED 0xC0000087
-#define NT_STATUS_NOT_MAPPED_DATA 0xC0000088
-#define NT_STATUS_RESOURCE_DATA_NOT_FOUND 0xC0000089
-#define NT_STATUS_RESOURCE_TYPE_NOT_FOUND 0xC000008a
-#define NT_STATUS_RESOURCE_NAME_NOT_FOUND 0xC000008b
-#define NT_STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008c
-#define NT_STATUS_FLOAT_DENORMAL_OPERAND 0xC000008d
-#define NT_STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008e
-#define NT_STATUS_FLOAT_INEXACT_RESULT 0xC000008f
-#define NT_STATUS_FLOAT_INVALID_OPERATION 0xC0000090
-#define NT_STATUS_FLOAT_OVERFLOW 0xC0000091
-#define NT_STATUS_FLOAT_STACK_CHECK 0xC0000092
-#define NT_STATUS_FLOAT_UNDERFLOW 0xC0000093
-#define NT_STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094
-#define NT_STATUS_INTEGER_OVERFLOW 0xC0000095
-#define NT_STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
-#define NT_STATUS_TOO_MANY_PAGING_FILES 0xC0000097
-#define NT_STATUS_FILE_INVALID 0xC0000098
-#define NT_STATUS_ALLOTTED_SPACE_EXCEEDED 0xC0000099
-#define NT_STATUS_INSUFFICIENT_RESOURCES 0xC000009a
-#define NT_STATUS_DFS_EXIT_PATH_FOUND 0xC000009b
-#define NT_STATUS_DEVICE_DATA_ERROR 0xC000009c
-#define NT_STATUS_DEVICE_NOT_CONNECTED 0xC000009d
-#define NT_STATUS_DEVICE_POWER_FAILURE 0xC000009e
-#define NT_STATUS_FREE_VM_NOT_AT_BASE 0xC000009f
-#define NT_STATUS_MEMORY_NOT_ALLOCATED 0xC00000a0
-#define NT_STATUS_WORKING_SET_QUOTA 0xC00000a1
-#define NT_STATUS_MEDIA_WRITE_PROTECTED 0xC00000a2
-#define NT_STATUS_DEVICE_NOT_READY 0xC00000a3
-#define NT_STATUS_INVALID_GROUP_ATTRIBUTES 0xC00000a4
-#define NT_STATUS_BAD_IMPERSONATION_LEVEL 0xC00000a5
-#define NT_STATUS_CANT_OPEN_ANONYMOUS 0xC00000a6
-#define NT_STATUS_BAD_VALIDATION_CLASS 0xC00000a7
-#define NT_STATUS_BAD_TOKEN_TYPE 0xC00000a8
-#define NT_STATUS_BAD_MASTER_BOOT_RECORD 0xC00000a9
-#define NT_STATUS_INSTRUCTION_MISALIGNMENT 0xC00000aa
-#define NT_STATUS_INSTANCE_NOT_AVAILABLE 0xC00000ab
-#define NT_STATUS_PIPE_NOT_AVAILABLE 0xC00000ac
-#define NT_STATUS_INVALID_PIPE_STATE 0xC00000ad
-#define NT_STATUS_PIPE_BUSY 0xC00000ae
-#define NT_STATUS_ILLEGAL_FUNCTION 0xC00000af
-#define NT_STATUS_PIPE_DISCONNECTED 0xC00000b0
-#define NT_STATUS_PIPE_CLOSING 0xC00000b1
-#define NT_STATUS_PIPE_CONNECTED 0xC00000b2
-#define NT_STATUS_PIPE_LISTENING 0xC00000b3
-#define NT_STATUS_INVALID_READ_MODE 0xC00000b4
-#define NT_STATUS_IO_TIMEOUT 0xC00000b5
-#define NT_STATUS_FILE_FORCED_CLOSED 0xC00000b6
-#define NT_STATUS_PROFILING_NOT_STARTED 0xC00000b7
-#define NT_STATUS_PROFILING_NOT_STOPPED 0xC00000b8
-#define NT_STATUS_COULD_NOT_INTERPRET 0xC00000b9
-#define NT_STATUS_FILE_IS_A_DIRECTORY 0xC00000ba
-#define NT_STATUS_NOT_SUPPORTED 0xC00000bb
-#define NT_STATUS_REMOTE_NOT_LISTENING 0xC00000bc
-#define NT_STATUS_DUPLICATE_NAME 0xC00000bd
-#define NT_STATUS_BAD_NETWORK_PATH 0xC00000be
-#define NT_STATUS_NETWORK_BUSY 0xC00000bf
-#define NT_STATUS_DEVICE_DOES_NOT_EXIST 0xC00000c0
-#define NT_STATUS_TOO_MANY_COMMANDS 0xC00000c1
-#define NT_STATUS_ADAPTER_HARDWARE_ERROR 0xC00000c2
-#define NT_STATUS_INVALID_NETWORK_RESPONSE 0xC00000c3
-#define NT_STATUS_UNEXPECTED_NETWORK_ERROR 0xC00000c4
-#define NT_STATUS_BAD_REMOTE_ADAPTER 0xC00000c5
-#define NT_STATUS_PRINT_QUEUE_FULL 0xC00000c6
-#define NT_STATUS_NO_SPOOL_SPACE 0xC00000c7
-#define NT_STATUS_PRINT_CANCELLED 0xC00000c8
-#define NT_STATUS_NETWORK_NAME_DELETED 0xC00000c9
-#define NT_STATUS_NETWORK_ACCESS_DENIED 0xC00000ca
-#define NT_STATUS_BAD_DEVICE_TYPE 0xC00000cb
-#define NT_STATUS_BAD_NETWORK_NAME 0xC00000cc
-#define NT_STATUS_TOO_MANY_NAMES 0xC00000cd
-#define NT_STATUS_TOO_MANY_SESSIONS 0xC00000ce
-#define NT_STATUS_SHARING_PAUSED 0xC00000cf
-#define NT_STATUS_REQUEST_NOT_ACCEPTED 0xC00000d0
-#define NT_STATUS_REDIRECTOR_PAUSED 0xC00000d1
-#define NT_STATUS_NET_WRITE_FAULT 0xC00000d2
-#define NT_STATUS_PROFILING_AT_LIMIT 0xC00000d3
-#define NT_STATUS_NOT_SAME_DEVICE 0xC00000d4
-#define NT_STATUS_FILE_RENAMED 0xC00000d5
-#define NT_STATUS_VIRTUAL_CIRCUIT_CLOSED 0xC00000d6
-#define NT_STATUS_NO_SECURITY_ON_OBJECT 0xC00000d7
-#define NT_STATUS_CANT_WAIT 0xC00000d8
-#define NT_STATUS_PIPE_EMPTY 0xC00000d9
-#define NT_STATUS_CANT_ACCESS_DOMAIN_INFO 0xC00000da
-#define NT_STATUS_CANT_TERMINATE_SELF 0xC00000db
-#define NT_STATUS_INVALID_SERVER_STATE 0xC00000dc
-#define NT_STATUS_INVALID_DOMAIN_STATE 0xC00000dd
-#define NT_STATUS_INVALID_DOMAIN_ROLE 0xC00000de
-#define NT_STATUS_NO_SUCH_DOMAIN 0xC00000df
-#define NT_STATUS_DOMAIN_EXISTS 0xC00000e0
-#define NT_STATUS_DOMAIN_LIMIT_EXCEEDED 0xC00000e1
-#define NT_STATUS_OPLOCK_NOT_GRANTED 0xC00000e2
-#define NT_STATUS_INVALID_OPLOCK_PROTOCOL 0xC00000e3
-#define NT_STATUS_INTERNAL_DB_CORRUPTION 0xC00000e4
-#define NT_STATUS_INTERNAL_ERROR 0xC00000e5
-#define NT_STATUS_GENERIC_NOT_MAPPED 0xC00000e6
-#define NT_STATUS_BAD_DESCRIPTOR_FORMAT 0xC00000e7
-#define NT_STATUS_INVALID_USER_BUFFER 0xC00000e8
-#define NT_STATUS_UNEXPECTED_IO_ERROR 0xC00000e9
-#define NT_STATUS_UNEXPECTED_MM_CREATE_ERR 0xC00000ea
-#define NT_STATUS_UNEXPECTED_MM_MAP_ERROR 0xC00000eb
-#define NT_STATUS_UNEXPECTED_MM_EXTEND_ERR 0xC00000ec
-#define NT_STATUS_NOT_LOGON_PROCESS 0xC00000ed
-#define NT_STATUS_LOGON_SESSION_EXISTS 0xC00000ee
-#define NT_STATUS_INVALID_PARAMETER_1 0xC00000ef
-#define NT_STATUS_INVALID_PARAMETER_2 0xC00000f0
-#define NT_STATUS_INVALID_PARAMETER_3 0xC00000f1
-#define NT_STATUS_INVALID_PARAMETER_4 0xC00000f2
-#define NT_STATUS_INVALID_PARAMETER_5 0xC00000f3
-#define NT_STATUS_INVALID_PARAMETER_6 0xC00000f4
-#define NT_STATUS_INVALID_PARAMETER_7 0xC00000f5
-#define NT_STATUS_INVALID_PARAMETER_8 0xC00000f6
-#define NT_STATUS_INVALID_PARAMETER_9 0xC00000f7
-#define NT_STATUS_INVALID_PARAMETER_10 0xC00000f8
-#define NT_STATUS_INVALID_PARAMETER_11 0xC00000f9
-#define NT_STATUS_INVALID_PARAMETER_12 0xC00000fa
-#define NT_STATUS_REDIRECTOR_NOT_STARTED 0xC00000fb
-#define NT_STATUS_REDIRECTOR_STARTED 0xC00000fc
-#define NT_STATUS_STACK_OVERFLOW 0xC00000fd
-#define NT_STATUS_NO_SUCH_PACKAGE 0xC00000fe
-#define NT_STATUS_BAD_FUNCTION_TABLE 0xC00000ff
-#define NT_STATUS_DIRECTORY_NOT_EMPTY 0xC0000101
-#define NT_STATUS_FILE_CORRUPT_ERROR 0xC0000102
-#define NT_STATUS_NOT_A_DIRECTORY 0xC0000103
-#define NT_STATUS_BAD_LOGON_SESSION_STATE 0xC0000104
-#define NT_STATUS_LOGON_SESSION_COLLISION 0xC0000105
-#define NT_STATUS_NAME_TOO_LONG 0xC0000106
-#define NT_STATUS_FILES_OPEN 0xC0000107
-#define NT_STATUS_CONNECTION_IN_USE 0xC0000108
-#define NT_STATUS_MESSAGE_NOT_FOUND 0xC0000109
-#define NT_STATUS_PROCESS_IS_TERMINATING 0xC000010a
-#define NT_STATUS_INVALID_LOGON_TYPE 0xC000010b
-#define NT_STATUS_NO_GUID_TRANSLATION 0xC000010c
-#define NT_STATUS_CANNOT_IMPERSONATE 0xC000010d
-#define NT_STATUS_IMAGE_ALREADY_LOADED 0xC000010e
-#define NT_STATUS_ABIOS_NOT_PRESENT 0xC000010f
-#define NT_STATUS_ABIOS_LID_NOT_EXIST 0xC0000110
-#define NT_STATUS_ABIOS_LID_ALREADY_OWNED 0xC0000111
-#define NT_STATUS_ABIOS_NOT_LID_OWNER 0xC0000112
-#define NT_STATUS_ABIOS_INVALID_COMMAND 0xC0000113
-#define NT_STATUS_ABIOS_INVALID_LID 0xC0000114
-#define NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE 0xC0000115
-#define NT_STATUS_ABIOS_INVALID_SELECTOR 0xC0000116
-#define NT_STATUS_NO_LDT 0xC0000117
-#define NT_STATUS_INVALID_LDT_SIZE 0xC0000118
-#define NT_STATUS_INVALID_LDT_OFFSET 0xC0000119
-#define NT_STATUS_INVALID_LDT_DESCRIPTOR 0xC000011a
-#define NT_STATUS_INVALID_IMAGE_NE_FORMAT 0xC000011b
-#define NT_STATUS_RXACT_INVALID_STATE 0xC000011c
-#define NT_STATUS_RXACT_COMMIT_FAILURE 0xC000011d
-#define NT_STATUS_MAPPED_FILE_SIZE_ZERO 0xC000011e
-#define NT_STATUS_TOO_MANY_OPENED_FILES 0xC000011f
-#define NT_STATUS_CANCELLED 0xC0000120
-#define NT_STATUS_CANNOT_DELETE 0xC0000121
-#define NT_STATUS_INVALID_COMPUTER_NAME 0xC0000122
-#define NT_STATUS_FILE_DELETED 0xC0000123
-#define NT_STATUS_SPECIAL_ACCOUNT 0xC0000124
-#define NT_STATUS_SPECIAL_GROUP 0xC0000125
-#define NT_STATUS_SPECIAL_USER 0xC0000126
-#define NT_STATUS_MEMBERS_PRIMARY_GROUP 0xC0000127
-#define NT_STATUS_FILE_CLOSED 0xC0000128
-#define NT_STATUS_TOO_MANY_THREADS 0xC0000129
-#define NT_STATUS_THREAD_NOT_IN_PROCESS 0xC000012a
-#define NT_STATUS_TOKEN_ALREADY_IN_USE 0xC000012b
-#define NT_STATUS_PAGEFILE_QUOTA_EXCEEDED 0xC000012c
-#define NT_STATUS_COMMITMENT_LIMIT 0xC000012d
-#define NT_STATUS_INVALID_IMAGE_LE_FORMAT 0xC000012e
-#define NT_STATUS_INVALID_IMAGE_NOT_MZ 0xC000012f
-#define NT_STATUS_INVALID_IMAGE_PROTECT 0xC0000130
-#define NT_STATUS_INVALID_IMAGE_WIN_16 0xC0000131
-#define NT_STATUS_LOGON_SERVER_CONFLICT 0xC0000132
-#define NT_STATUS_TIME_DIFFERENCE_AT_DC 0xC0000133
-#define NT_STATUS_SYNCHRONIZATION_REQUIRED 0xC0000134
-#define NT_STATUS_DLL_NOT_FOUND 0xC0000135
-#define NT_STATUS_OPEN_FAILED 0xC0000136
-#define NT_STATUS_IO_PRIVILEGE_FAILED 0xC0000137
-#define NT_STATUS_ORDINAL_NOT_FOUND 0xC0000138
-#define NT_STATUS_ENTRYPOINT_NOT_FOUND 0xC0000139
-#define NT_STATUS_CONTROL_C_EXIT 0xC000013a
-#define NT_STATUS_LOCAL_DISCONNECT 0xC000013b
-#define NT_STATUS_REMOTE_DISCONNECT 0xC000013c
-#define NT_STATUS_REMOTE_RESOURCES 0xC000013d
-#define NT_STATUS_LINK_FAILED 0xC000013e
-#define NT_STATUS_LINK_TIMEOUT 0xC000013f
-#define NT_STATUS_INVALID_CONNECTION 0xC0000140
-#define NT_STATUS_INVALID_ADDRESS 0xC0000141
-#define NT_STATUS_DLL_INIT_FAILED 0xC0000142
-#define NT_STATUS_MISSING_SYSTEMFILE 0xC0000143
-#define NT_STATUS_UNHANDLED_EXCEPTION 0xC0000144
-#define NT_STATUS_APP_INIT_FAILURE 0xC0000145
-#define NT_STATUS_PAGEFILE_CREATE_FAILED 0xC0000146
-#define NT_STATUS_NO_PAGEFILE 0xC0000147
-#define NT_STATUS_INVALID_LEVEL 0xC0000148
-#define NT_STATUS_WRONG_PASSWORD_CORE 0xC0000149
-#define NT_STATUS_ILLEGAL_FLOAT_CONTEXT 0xC000014a
-#define NT_STATUS_PIPE_BROKEN 0xC000014b
-#define NT_STATUS_REGISTRY_CORRUPT 0xC000014c
-#define NT_STATUS_REGISTRY_IO_FAILED 0xC000014d
-#define NT_STATUS_NO_EVENT_PAIR 0xC000014e
-#define NT_STATUS_UNRECOGNIZED_VOLUME 0xC000014f
-#define NT_STATUS_SERIAL_NO_DEVICE_INITED 0xC0000150
-#define NT_STATUS_NO_SUCH_ALIAS 0xC0000151
-#define NT_STATUS_MEMBER_NOT_IN_ALIAS 0xC0000152
-#define NT_STATUS_MEMBER_IN_ALIAS 0xC0000153
-#define NT_STATUS_ALIAS_EXISTS 0xC0000154
-#define NT_STATUS_LOGON_NOT_GRANTED 0xC0000155
-#define NT_STATUS_TOO_MANY_SECRETS 0xC0000156
-#define NT_STATUS_SECRET_TOO_LONG 0xC0000157
-#define NT_STATUS_INTERNAL_DB_ERROR 0xC0000158
-#define NT_STATUS_FULLSCREEN_MODE 0xC0000159
-#define NT_STATUS_TOO_MANY_CONTEXT_IDS 0xC000015a
-#define NT_STATUS_LOGON_TYPE_NOT_GRANTED 0xC000015b
-#define NT_STATUS_NOT_REGISTRY_FILE 0xC000015c
-#define NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED 0xC000015d
-#define NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR 0xC000015e
-#define NT_STATUS_FT_MISSING_MEMBER 0xC000015f
-#define NT_STATUS_ILL_FORMED_SERVICE_ENTRY 0xC0000160
-#define NT_STATUS_ILLEGAL_CHARACTER 0xC0000161
-#define NT_STATUS_UNMAPPABLE_CHARACTER 0xC0000162
-#define NT_STATUS_UNDEFINED_CHARACTER 0xC0000163
-#define NT_STATUS_FLOPPY_VOLUME 0xC0000164
-#define NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND 0xC0000165
-#define NT_STATUS_FLOPPY_WRONG_CYLINDER 0xC0000166
-#define NT_STATUS_FLOPPY_UNKNOWN_ERROR 0xC0000167
-#define NT_STATUS_FLOPPY_BAD_REGISTERS 0xC0000168
-#define NT_STATUS_DISK_RECALIBRATE_FAILED 0xC0000169
-#define NT_STATUS_DISK_OPERATION_FAILED 0xC000016a
-#define NT_STATUS_DISK_RESET_FAILED 0xC000016b
-#define NT_STATUS_SHARED_IRQ_BUSY 0xC000016c
-#define NT_STATUS_FT_ORPHANING 0xC000016d
-#define NT_STATUS_PARTITION_FAILURE 0xC0000172
-#define NT_STATUS_INVALID_BLOCK_LENGTH 0xC0000173
-#define NT_STATUS_DEVICE_NOT_PARTITIONED 0xC0000174
-#define NT_STATUS_UNABLE_TO_LOCK_MEDIA 0xC0000175
-#define NT_STATUS_UNABLE_TO_UNLOAD_MEDIA 0xC0000176
-#define NT_STATUS_EOM_OVERFLOW 0xC0000177
-#define NT_STATUS_NO_MEDIA 0xC0000178
-#define NT_STATUS_NO_SUCH_MEMBER 0xC000017a
-#define NT_STATUS_INVALID_MEMBER 0xC000017b
-#define NT_STATUS_KEY_DELETED 0xC000017c
-#define NT_STATUS_NO_LOG_SPACE 0xC000017d
-#define NT_STATUS_TOO_MANY_SIDS 0xC000017e
-#define NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED 0xC000017f
-#define NT_STATUS_KEY_HAS_CHILDREN 0xC0000180
-#define NT_STATUS_CHILD_MUST_BE_VOLATILE 0xC0000181
-#define NT_STATUS_DEVICE_CONFIGURATION_ERROR 0xC0000182
-#define NT_STATUS_DRIVER_INTERNAL_ERROR 0xC0000183
-#define NT_STATUS_INVALID_DEVICE_STATE 0xC0000184
-#define NT_STATUS_IO_DEVICE_ERROR 0xC0000185
-#define NT_STATUS_DEVICE_PROTOCOL_ERROR 0xC0000186
-#define NT_STATUS_BACKUP_CONTROLLER 0xC0000187
-#define NT_STATUS_LOG_FILE_FULL 0xC0000188
-#define NT_STATUS_TOO_LATE 0xC0000189
-#define NT_STATUS_NO_TRUST_LSA_SECRET 0xC000018a
-#define NT_STATUS_NO_TRUST_SAM_ACCOUNT 0xC000018b
-#define NT_STATUS_TRUSTED_DOMAIN_FAILURE 0xC000018c
-#define NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE 0xC000018d
-#define NT_STATUS_EVENTLOG_FILE_CORRUPT 0xC000018e
-#define NT_STATUS_EVENTLOG_CANT_START 0xC000018f
-#define NT_STATUS_TRUST_FAILURE 0xC0000190
-#define NT_STATUS_MUTANT_LIMIT_EXCEEDED 0xC0000191
-#define NT_STATUS_NETLOGON_NOT_STARTED 0xC0000192
-#define NT_STATUS_ACCOUNT_EXPIRED 0xC0000193
-#define NT_STATUS_POSSIBLE_DEADLOCK 0xC0000194
-#define NT_STATUS_NETWORK_CREDENTIAL_CONFLICT 0xC0000195
-#define NT_STATUS_REMOTE_SESSION_LIMIT 0xC0000196
-#define NT_STATUS_EVENTLOG_FILE_CHANGED 0xC0000197
-#define NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT 0xC0000198
-#define NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT 0xC0000199
-#define NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT 0xC000019a
-#define NT_STATUS_DOMAIN_TRUST_INCONSISTENT 0xC000019b
-#define NT_STATUS_FS_DRIVER_REQUIRED 0xC000019c
-#define NT_STATUS_NO_USER_SESSION_KEY 0xC0000202
-#define NT_STATUS_USER_SESSION_DELETED 0xC0000203
-#define NT_STATUS_RESOURCE_LANG_NOT_FOUND 0xC0000204
-#define NT_STATUS_INSUFF_SERVER_RESOURCES 0xC0000205
-#define NT_STATUS_INVALID_BUFFER_SIZE 0xC0000206
-#define NT_STATUS_INVALID_ADDRESS_COMPONENT 0xC0000207
-#define NT_STATUS_INVALID_ADDRESS_WILDCARD 0xC0000208
-#define NT_STATUS_TOO_MANY_ADDRESSES 0xC0000209
-#define NT_STATUS_ADDRESS_ALREADY_EXISTS 0xC000020a
-#define NT_STATUS_ADDRESS_CLOSED 0xC000020b
-#define NT_STATUS_CONNECTION_DISCONNECTED 0xC000020c
-#define NT_STATUS_CONNECTION_RESET 0xC000020d
-#define NT_STATUS_TOO_MANY_NODES 0xC000020e
-#define NT_STATUS_TRANSACTION_ABORTED 0xC000020f
-#define NT_STATUS_TRANSACTION_TIMED_OUT 0xC0000210
-#define NT_STATUS_TRANSACTION_NO_RELEASE 0xC0000211
-#define NT_STATUS_TRANSACTION_NO_MATCH 0xC0000212
-#define NT_STATUS_TRANSACTION_RESPONDED 0xC0000213
-#define NT_STATUS_TRANSACTION_INVALID_ID 0xC0000214
-#define NT_STATUS_TRANSACTION_INVALID_TYPE 0xC0000215
-#define NT_STATUS_NOT_SERVER_SESSION 0xC0000216
-#define NT_STATUS_NOT_CLIENT_SESSION 0xC0000217
-#define NT_STATUS_CANNOT_LOAD_REGISTRY_FILE 0xC0000218
-#define NT_STATUS_DEBUG_ATTACH_FAILED 0xC0000219
-#define NT_STATUS_SYSTEM_PROCESS_TERMINATED 0xC000021a
-#define NT_STATUS_DATA_NOT_ACCEPTED 0xC000021b
-#define NT_STATUS_NO_BROWSER_SERVERS_FOUND 0xC000021c
-#define NT_STATUS_VDM_HARD_ERROR 0xC000021d
-#define NT_STATUS_DRIVER_CANCEL_TIMEOUT 0xC000021e
-#define NT_STATUS_REPLY_MESSAGE_MISMATCH 0xC000021f
-#define NT_STATUS_MAPPED_ALIGNMENT 0xC0000220
-#define NT_STATUS_IMAGE_CHECKSUM_MISMATCH 0xC0000221
-#define NT_STATUS_LOST_WRITEBEHIND_DATA 0xC0000222
-#define NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID 0xC0000223
-#define NT_STATUS_PASSWORD_MUST_CHANGE 0xC0000224
-#define NT_STATUS_NOT_FOUND 0xC0000225
-#define NT_STATUS_NOT_TINY_STREAM 0xC0000226
-#define NT_STATUS_RECOVERY_FAILURE 0xC0000227
-#define NT_STATUS_STACK_OVERFLOW_READ 0xC0000228
-#define NT_STATUS_FAIL_CHECK 0xC0000229
-#define NT_STATUS_DUPLICATE_OBJECTID 0xC000022a
-#define NT_STATUS_OBJECTID_EXISTS 0xC000022b
-#define NT_STATUS_CONVERT_TO_LARGE 0xC000022c
-#define NT_STATUS_RETRY 0xC000022d
-#define NT_STATUS_FOUND_OUT_OF_SCOPE 0xC000022e
-#define NT_STATUS_ALLOCATE_BUCKET 0xC000022f
-#define NT_STATUS_PROPSET_NOT_FOUND 0xC0000230
-#define NT_STATUS_MARSHALL_OVERFLOW 0xC0000231
-#define NT_STATUS_INVALID_VARIANT 0xC0000232
-#define NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND 0xC0000233
-#define NT_STATUS_ACCOUNT_LOCKED_OUT 0xC0000234
-#define NT_STATUS_HANDLE_NOT_CLOSABLE 0xC0000235
-#define NT_STATUS_CONNECTION_REFUSED 0xC0000236
-#define NT_STATUS_GRACEFUL_DISCONNECT 0xC0000237
-#define NT_STATUS_ADDRESS_ALREADY_ASSOCIATED 0xC0000238
-#define NT_STATUS_ADDRESS_NOT_ASSOCIATED 0xC0000239
-#define NT_STATUS_CONNECTION_INVALID 0xC000023a
-#define NT_STATUS_CONNECTION_ACTIVE 0xC000023b
-#define NT_STATUS_NETWORK_UNREACHABLE 0xC000023c
-#define NT_STATUS_HOST_UNREACHABLE 0xC000023d
-#define NT_STATUS_PROTOCOL_UNREACHABLE 0xC000023e
-#define NT_STATUS_PORT_UNREACHABLE 0xC000023f
-#define NT_STATUS_REQUEST_ABORTED 0xC0000240
-#define NT_STATUS_CONNECTION_ABORTED 0xC0000241
-#define NT_STATUS_BAD_COMPRESSION_BUFFER 0xC0000242
-#define NT_STATUS_USER_MAPPED_FILE 0xC0000243
-#define NT_STATUS_AUDIT_FAILED 0xC0000244
-#define NT_STATUS_TIMER_RESOLUTION_NOT_SET 0xC0000245
-#define NT_STATUS_CONNECTION_COUNT_LIMIT 0xC0000246
-#define NT_STATUS_LOGIN_TIME_RESTRICTION 0xC0000247
-#define NT_STATUS_LOGIN_WKSTA_RESTRICTION 0xC0000248
-#define NT_STATUS_IMAGE_MP_UP_MISMATCH 0xC0000249
-#define NT_STATUS_INSUFFICIENT_LOGON_INFO 0xC0000250
-#define NT_STATUS_BAD_DLL_ENTRYPOINT 0xC0000251
-#define NT_STATUS_BAD_SERVICE_ENTRYPOINT 0xC0000252
-#define NT_STATUS_LPC_REPLY_LOST 0xC0000253
-#define NT_STATUS_IP_ADDRESS_CONFLICT1 0xC0000254
-#define NT_STATUS_IP_ADDRESS_CONFLICT2 0xC0000255
-#define NT_STATUS_REGISTRY_QUOTA_LIMIT 0xC0000256
-#define NT_STATUS_PATH_NOT_COVERED 0xC0000257
-#define NT_STATUS_NO_CALLBACK_ACTIVE 0xC0000258
-#define NT_STATUS_LICENSE_QUOTA_EXCEEDED 0xC0000259
-#define NT_STATUS_PWD_TOO_SHORT 0xC000025a
-#define NT_STATUS_PWD_TOO_RECENT 0xC000025b
-#define NT_STATUS_PWD_HISTORY_CONFLICT 0xC000025c
-#define NT_STATUS_PLUGPLAY_NO_DEVICE 0xC000025e
-#define NT_STATUS_UNSUPPORTED_COMPRESSION 0xC000025f
-#define NT_STATUS_INVALID_HW_PROFILE 0xC0000260
-#define NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH 0xC0000261
-#define NT_STATUS_DRIVER_ORDINAL_NOT_FOUND 0xC0000262
-#define NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND 0xC0000263
-#define NT_STATUS_RESOURCE_NOT_OWNED 0xC0000264
-#define NT_STATUS_TOO_MANY_LINKS 0xC0000265
-#define NT_STATUS_QUOTA_LIST_INCONSISTENT 0xC0000266
-#define NT_STATUS_FILE_IS_OFFLINE 0xC0000267
-#define NT_STATUS_NOT_A_REPARSE_POINT 0xC0000275
-#define NT_STATUS_NO_SUCH_JOB 0xC0000EDE
-
-#define WERR_OK 0
-#define WERR_BADFUNC 1
-#define WERR_BADFILE 2
-#define WERR_ACCESS_DENIED 5
-#define WERR_BADFID 6
-#define WERR_NOMEM 8
-#define WERR_GENERAL_FAILURE 31
-#define WERR_NOT_SUPPORTED 50
-#define WERR_BAD_NETPATH 53
-#define WERR_PRINTQ_FULL 61
-#define WERR_NO_SPOOL_SPACE 62
-#define WERR_NO_SUCH_SHARE 67
-#define WERR_ALREADY_EXISTS 80
-#define WERR_BAD_PASSWORD 86
-#define WERR_INVALID_PARAM 87
-#define WERR_INSUFFICIENT_BUFFER 122
-#define WERR_INVALID_NAME 123
-#define WERR_UNKNOWN_LEVEL 124
-#define WERR_OBJECT_PATH_INVALID 161
-#define WERR_NO_MORE_ITEMS 259
-#define WERR_MORE_DATA 234
-#define WERR_INVALID_OWNER 1307
-#define WERR_CAN_NOT_COMPLETE 1003
-#define WERR_INVALID_SECURITY_DESCRIPTOR 1338
-#define WERR_SERVER_UNAVAILABLE 1722
-#define WERR_UNKNOWN_PRINTER_DRIVER 1797
-#define WERR_INVALID_ENVIRONMENT 1805
-#define WERR_INVALID_FORM_NAME 1902
-#define WERR_INVALID_FORM_SIZE 1903
-#define WERR_BUF_TOO_SMALL 2123
-#define WERR_JOB_NOT_FOUND 2151
-#define WERR_DEST_NOT_FOUND 2152
-#define WERR_NOT_LOCAL_DOMAIN 2320
-#define WERR_STATUS_MORE_ENTRIES 0x0105