The branch, master has been updated via 0eb459edd8a talloc: remove Python 2 #if clauses via 2edd028fc78 s4/wmi: begone from 206dcf7d426 lib:util: File descriptor being closed repeatedly.
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 0eb459edd8ac6fff4d590b932b708ef97e26e372 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Fri Feb 10 15:53:10 2023 +1300 talloc: remove Python 2 #if clauses Also fix an obsolete related comment. Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> Autobuild-User(master): Andreas Schneider <a...@cryptomilk.org> Autobuild-Date(master): Fri Feb 17 14:52:26 UTC 2023 on atb-devel-224 commit 2edd028fc78be5fbac6fd8184db0d7290523903b Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Fri Feb 10 15:40:15 2023 +1300 s4/wmi: begone We don't use this and will never use this. Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Andreas Schneider <a...@samba.org> ----------------------------------------------------------------------- Summary of changes: lib/talloc/pytalloc.c | 52 +- lib/talloc/test_pytalloc.c | 14 - source4/lib/wmi/tools/wmic.c | 221 --- source4/lib/wmi/tools/wmis.c | 222 --- source4/lib/wmi/wbemdata.c | 451 ----- source4/lib/wmi/wmi.h | 48 - source4/lib/wmi/wmi.i | 352 ---- source4/lib/wmi/wmi.py | 120 -- source4/lib/wmi/wmi_wrap.c | 4304 ----------------------------------------- source4/lib/wmi/wmicore.c | 253 --- source4/lib/wmi/wscript_build | 26 - 11 files changed, 4 insertions(+), 6059 deletions(-) delete mode 100644 source4/lib/wmi/tools/wmic.c delete mode 100644 source4/lib/wmi/tools/wmis.c delete mode 100644 source4/lib/wmi/wbemdata.c delete mode 100644 source4/lib/wmi/wmi.h delete mode 100644 source4/lib/wmi/wmi.i delete mode 100644 source4/lib/wmi/wmi.py delete mode 100644 source4/lib/wmi/wmi_wrap.c delete mode 100644 source4/lib/wmi/wmicore.c delete mode 100644 source4/lib/wmi/wscript_build Changeset truncated at 500 lines: diff --git a/lib/talloc/pytalloc.c b/lib/talloc/pytalloc.c index 41decc45f61..9d62eed455e 100644 --- a/lib/talloc/pytalloc.c +++ b/lib/talloc/pytalloc.c @@ -101,9 +101,9 @@ static void pytalloc_dealloc(PyObject* self) } /** - * Default (but only slightly more useful than the default) implementation of cmp. + * Default objects do not support ordered comparisons, but talloc + * objects do, sorting by pointers clustered by type. */ -#if PY_MAJOR_VERSION >= 3 static PyObject *pytalloc_default_richcmp(PyObject *obj1, PyObject *obj2, int op) { void *ptr1; @@ -131,17 +131,6 @@ static PyObject *pytalloc_default_richcmp(PyObject *obj1, PyObject *obj2, int op Py_INCREF(Py_NotImplemented); return Py_NotImplemented; } -#else -static int pytalloc_default_cmp(PyObject *_obj1, PyObject *_obj2) -{ - pytalloc_Object *obj1 = (pytalloc_Object *)_obj1, - *obj2 = (pytalloc_Object *)_obj2; - if (obj1->ob_type != obj2->ob_type) - return ((char *)obj1->ob_type - (char *)obj2->ob_type); - - return ((char *)pytalloc_get_ptr(obj1) - (char *)pytalloc_get_ptr(obj2)); -} -#endif static PyTypeObject TallocObject_Type = { .tp_name = "talloc.Object", @@ -150,11 +139,7 @@ static PyTypeObject TallocObject_Type = { .tp_dealloc = (destructor)pytalloc_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, .tp_repr = pytalloc_default_repr, -#if PY_MAJOR_VERSION >= 3 .tp_richcompare = pytalloc_default_richcmp, -#else - .tp_compare = pytalloc_default_cmp, -#endif }; /** @@ -181,9 +166,9 @@ static void pytalloc_base_dealloc(PyObject* self) } /** - * Default (but only slightly more useful than the default) implementation of cmp. + * Default objects do not support ordered comparisons, but talloc + * objects do, sorting by pointers clustered by type. */ -#if PY_MAJOR_VERSION >= 3 static PyObject *pytalloc_base_default_richcmp(PyObject *obj1, PyObject *obj2, int op) { void *ptr1; @@ -211,17 +196,6 @@ static PyObject *pytalloc_base_default_richcmp(PyObject *obj1, PyObject *obj2, i Py_INCREF(Py_NotImplemented); return Py_NotImplemented; } -#else -static int pytalloc_base_default_cmp(PyObject *_obj1, PyObject *_obj2) -{ - pytalloc_BaseObject *obj1 = (pytalloc_BaseObject *)_obj1, - *obj2 = (pytalloc_BaseObject *)_obj2; - if (obj1->ob_type != obj2->ob_type) - return ((char *)obj1->ob_type - (char *)obj2->ob_type); - - return ((char *)pytalloc_get_ptr(obj1) - (char *)pytalloc_get_ptr(obj2)); -} -#endif static PyTypeObject TallocBaseObject_Type = { .tp_name = "talloc.BaseObject", @@ -230,11 +204,7 @@ static PyTypeObject TallocBaseObject_Type = { .tp_dealloc = (destructor)pytalloc_base_dealloc, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, .tp_repr = pytalloc_base_default_repr, -#if PY_MAJOR_VERSION >= 3 .tp_richcompare = pytalloc_base_default_richcmp, -#else - .tp_compare = pytalloc_base_default_cmp, -#endif }; static PyTypeObject TallocGenericObject_Type = { @@ -247,7 +217,6 @@ static PyTypeObject TallocGenericObject_Type = { #define MODULE_DOC PyDoc_STR("Python wrapping of talloc-maintained objects.") -#if PY_MAJOR_VERSION >= 3 static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, .m_name = "talloc", @@ -255,7 +224,6 @@ static struct PyModuleDef moduledef = { .m_size = -1, .m_methods = talloc_methods, }; -#endif static PyObject *module_init(void); static PyObject *module_init(void) @@ -271,11 +239,7 @@ static PyObject *module_init(void) if (PyType_Ready(&TallocGenericObject_Type) < 0) return NULL; -#if PY_MAJOR_VERSION >= 3 m = PyModule_Create(&moduledef); -#else - m = Py_InitModule3("talloc", talloc_methods, MODULE_DOC); -#endif if (m == NULL) return NULL; @@ -298,16 +262,8 @@ err: return NULL; } -#if PY_MAJOR_VERSION >= 3 PyMODINIT_FUNC PyInit_talloc(void); PyMODINIT_FUNC PyInit_talloc(void) { return module_init(); } -#else -void inittalloc(void); -void inittalloc(void) -{ - module_init(); -} -#endif diff --git a/lib/talloc/test_pytalloc.c b/lib/talloc/test_pytalloc.c index 3b0484b2274..aa05d8c342b 100644 --- a/lib/talloc/test_pytalloc.c +++ b/lib/talloc/test_pytalloc.c @@ -181,7 +181,6 @@ static PyTypeObject DBaseObject_Type = { #define MODULE_DOC PyDoc_STR("Test utility module for pytalloc") -#if PY_MAJOR_VERSION >= 3 static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, .m_name = "_test_pytalloc", @@ -189,7 +188,6 @@ static struct PyModuleDef moduledef = { .m_size = -1, .m_methods = test_talloc_methods, }; -#endif static PyObject *module_init(void); static PyObject *module_init(void) @@ -207,11 +205,7 @@ static PyObject *module_init(void) return NULL; } -#if PY_MAJOR_VERSION >= 3 m = PyModule_Create(&moduledef); -#else - m = Py_InitModule3("_test_pytalloc", test_talloc_methods, MODULE_DOC); -#endif if (m == NULL) { return NULL; @@ -229,16 +223,8 @@ static PyObject *module_init(void) } -#if PY_MAJOR_VERSION >= 3 PyMODINIT_FUNC PyInit__test_pytalloc(void); PyMODINIT_FUNC PyInit__test_pytalloc(void) { return module_init(); } -#else -void init_test_pytalloc(void); -void init_test_pytalloc(void) -{ - module_init(); -} -#endif diff --git a/source4/lib/wmi/tools/wmic.c b/source4/lib/wmi/tools/wmic.c deleted file mode 100644 index 4817decc816..00000000000 --- a/source4/lib/wmi/tools/wmic.c +++ /dev/null @@ -1,221 +0,0 @@ -/* - WMI Sample client - Copyright (C) 2006 Andrzej Hajda <andrzej.ha...@wp.pl> - Copyright (C) 2008 Jelmer Vernooij <jel...@samba.org> - - 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 "lib/cmdline/popt_common.h" -#include "librpc/rpc/dcerpc.h" -#include "librpc/gen_ndr/ndr_oxidresolver.h" -#include "librpc/gen_ndr/ndr_oxidresolver_c.h" -#include "librpc/gen_ndr/ndr_dcom.h" -#include "librpc/gen_ndr/ndr_dcom_c.h" -#include "librpc/gen_ndr/ndr_remact_c.h" -#include "librpc/gen_ndr/ndr_epmapper_c.h" -#include "librpc/gen_ndr/com_dcom.h" - -#include "lib/com/dcom/dcom.h" -#include "lib/com/com.h" - -#include "lib/wmi/wmi.h" - -struct program_args { - char *hostname; - char *query; - char *ns; -}; - -static void parse_args(int argc, char *argv[], struct program_args *pmyargs) -{ - poptContext pc; - int opt, i; - - int argc_new; - char **argv_new; - - struct poptOption long_options[] = { - POPT_AUTOHELP - POPT_COMMON_SAMBA - POPT_COMMON_CONNECTION - POPT_COMMON_CREDENTIALS - POPT_COMMON_VERSION - {"namespace", 0, POPT_ARG_STRING, &pmyargs->ns, 0, - "WMI namespace, default to root\\cimv2", 0}, - POPT_TABLEEND - }; - - pc = poptGetContext("wmi", argc, (const char **) argv, - long_options, POPT_CONTEXT_KEEP_FIRST); - - poptSetOtherOptionHelp(pc, "//host query\n\nExample: wmic -U [domain/]adminuser%password //host \"select * from Win32_ComputerSystem\""); - - while ((opt = poptGetNextOpt(pc)) != -1) { - poptPrintUsage(pc, stdout, 0); - poptFreeContext(pc); - exit(1); - } - - argv_new = discard_const_p(char *, poptGetArgs(pc)); - - argc_new = argc; - for (i = 0; i < argc; i++) { - if (argv_new[i] == NULL) { - argc_new = i; - break; - } - } - - if (argc_new != 3 || argv_new[1][0] != '/' - || argv_new[1][1] != '/') { - poptPrintUsage(pc, stdout, 0); - poptFreeContext(pc); - exit(1); - } - - pmyargs->hostname = argv_new[1] + 2; - pmyargs->query = argv_new[2]; - poptFreeContext(pc); -} - -#define WERR_CHECK(msg) if (!W_ERROR_IS_OK(result)) { \ - DEBUG(0, ("ERROR: %s\n", msg)); \ - goto error; \ - } else { \ - DEBUG(1, ("OK : %s\n", msg)); \ - } - -#define RETURN_CVAR_ARRAY_STR(fmt, arr) {\ - uint32_t i;\ - char *r;\ -\ - if (!arr) {\ - return talloc_strdup(mem_ctx, "NULL");\ - }\ - r = talloc_strdup(mem_ctx, "(");\ - for (i = 0; i < arr->count; ++i) {\ - r = talloc_asprintf_append(r, fmt "%s", arr->item[i], (i+1 == arr->count)?"":",");\ - }\ - return talloc_asprintf_append(r, ")");\ -} - -char *string_CIMVAR(TALLOC_CTX *mem_ctx, union CIMVAR *v, enum CIMTYPE_ENUMERATION cimtype) -{ - switch (cimtype) { - case CIM_SINT8: return talloc_asprintf(mem_ctx, "%d", v->v_sint8); - case CIM_UINT8: return talloc_asprintf(mem_ctx, "%u", v->v_uint8); - case CIM_SINT16: return talloc_asprintf(mem_ctx, "%d", v->v_sint16); - case CIM_UINT16: return talloc_asprintf(mem_ctx, "%u", v->v_uint16); - case CIM_SINT32: return talloc_asprintf(mem_ctx, "%d", v->v_sint32); - case CIM_UINT32: return talloc_asprintf(mem_ctx, "%u", v->v_uint32); - case CIM_SINT64: return talloc_asprintf(mem_ctx, "%lld", v->v_sint64); - case CIM_UINT64: return talloc_asprintf(mem_ctx, "%llu", v->v_sint64); - case CIM_REAL32: return talloc_asprintf(mem_ctx, "%f", (double)v->v_uint32); - case CIM_REAL64: return talloc_asprintf(mem_ctx, "%f", (double)v->v_uint64); - case CIM_BOOLEAN: return talloc_asprintf(mem_ctx, "%s", v->v_boolean?"True":"False"); - case CIM_STRING: - case CIM_DATETIME: - case CIM_REFERENCE: return talloc_asprintf(mem_ctx, "%s", v->v_string); - case CIM_CHAR16: return talloc_asprintf(mem_ctx, "Unsupported"); - case CIM_OBJECT: return talloc_asprintf(mem_ctx, "Unsupported"); - case CIM_ARR_SINT8: RETURN_CVAR_ARRAY_STR("%d", v->a_sint8); - case CIM_ARR_UINT8: RETURN_CVAR_ARRAY_STR("%u", v->a_uint8); - case CIM_ARR_SINT16: RETURN_CVAR_ARRAY_STR("%d", v->a_sint16); - case CIM_ARR_UINT16: RETURN_CVAR_ARRAY_STR("%u", v->a_uint16); - case CIM_ARR_SINT32: RETURN_CVAR_ARRAY_STR("%d", v->a_sint32); - case CIM_ARR_UINT32: RETURN_CVAR_ARRAY_STR("%u", v->a_uint32); - case CIM_ARR_SINT64: RETURN_CVAR_ARRAY_STR("%lld", v->a_sint64); - case CIM_ARR_UINT64: RETURN_CVAR_ARRAY_STR("%llu", v->a_uint64); - case CIM_ARR_REAL32: RETURN_CVAR_ARRAY_STR("%f", v->a_real32); - case CIM_ARR_REAL64: RETURN_CVAR_ARRAY_STR("%f", v->a_real64); - case CIM_ARR_BOOLEAN: RETURN_CVAR_ARRAY_STR("%d", v->a_boolean); - case CIM_ARR_STRING: RETURN_CVAR_ARRAY_STR("%s", v->a_string); - case CIM_ARR_DATETIME: RETURN_CVAR_ARRAY_STR("%s", v->a_datetime); - case CIM_ARR_REFERENCE: RETURN_CVAR_ARRAY_STR("%s", v->a_reference); - default: return talloc_asprintf(mem_ctx, "Unsupported"); - } -} - -#undef RETURN_CVAR_ARRAY_STR - -int main(int argc, char **argv) -{ - struct program_args args = {}; - uint32_t cnt = 5, ret; - char *class_name = NULL; - WERROR result; - NTSTATUS status; - struct IWbemServices *pWS = NULL; - struct BSTR queryLanguage, query; - struct IEnumWbemClassObject *pEnum = NULL; - struct com_context *ctx = NULL; - - parse_args(argc, argv, &args); - - wmi_init(&ctx, popt_get_cmdline_credentials()); - - if (!args.ns) - args.ns = "root\\cimv2"; - result = WBEM_ConnectServer(ctx, args.hostname, args.ns, 0, 0, 0, 0, 0, 0, &pWS); - WERR_CHECK("Login to remote object."); - - queryLanguage.data = "WQL"; - query.data = args.query; - result = IWbemServices_ExecQuery(pWS, ctx, queryLanguage, query, WBEM_FLAG_RETURN_IMMEDIATELY | WBEM_FLAG_ENSURE_LOCATABLE, NULL, &pEnum); - WERR_CHECK("WMI query execute."); - - IEnumWbemClassObject_Reset(pEnum, ctx); - WERR_CHECK("Reset result of WMI query."); - - do { - uint32_t i, j; - struct WbemClassObject *co[cnt]; - - result = IEnumWbemClassObject_SmartNext(pEnum, ctx, 0xFFFFFFFF, cnt, co, &ret); - /* WERR_INVALID_FUNCTION is OK, it means only that there is less returned objects than requested */ - if (!W_ERROR_EQUAL(result, WERR_INVALID_FUNCTION)) { - WERR_CHECK("Retrieve result data."); - } else { - DEBUG(1, ("OK : Retrieved less objects than requested (it is normal).\n")); - } - if (!ret) break; - - for (i = 0; i < ret; ++i) { - if (!class_name || strcmp(co[i]->obj_class->__CLASS, class_name)) { - if (class_name) talloc_free(class_name); - class_name = talloc_strdup(ctx, co[i]->obj_class->__CLASS); - printf("CLASS: %s\n", class_name); - for (j = 0; j < co[i]->obj_class->__PROPERTY_COUNT; ++j) - printf("%s%s", j?"|":"", co[i]->obj_class->properties[j].property.name); - printf("\n"); - } - for (j = 0; j < co[i]->obj_class->__PROPERTY_COUNT; ++j) { - char *s; - s = string_CIMVAR(ctx, &co[i]->instance->data[j], co[i]->obj_class->properties[j].property.desc->cimtype & CIM_TYPEMASK); - printf("%s%s", j?"|":"", s); - } - printf("\n"); - } - } while (ret == cnt); - talloc_free(ctx); - return 0; -error: - status = werror_to_ntstatus(result); - fprintf(stderr, "NTSTATUS: %s - %s\n", nt_errstr(status), get_friendly_nt_error_msg(status)); - talloc_free(ctx); - return 1; -} diff --git a/source4/lib/wmi/tools/wmis.c b/source4/lib/wmi/tools/wmis.c deleted file mode 100644 index 395cec2ce6d..00000000000 --- a/source4/lib/wmi/tools/wmis.c +++ /dev/null @@ -1,222 +0,0 @@ -/* - WMI Sample client - Copyright (C) 2006 Andrzej Hajda <andrzej.ha...@wp.pl> - Copyright (C) 2008 Jelmer Vernooij <jel...@samba.org> - - 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 "lib/cmdline/popt_common.h" -#include "auth/credentials/credentials.h" -#include "librpc/rpc/dcerpc.h" -#include "librpc/gen_ndr/ndr_oxidresolver.h" -#include "librpc/gen_ndr/ndr_oxidresolver_c.h" -#include "librpc/gen_ndr/dcom.h" -#include "librpc/gen_ndr/ndr_dcom.h" -#include "librpc/gen_ndr/ndr_dcom_c.h" -#include "librpc/gen_ndr/ndr_remact_c.h" -#include "librpc/gen_ndr/ndr_epmapper_c.h" -#include "librpc/gen_ndr/com_dcom.h" - -#include "lib/com/dcom/dcom.h" -#include "librpc/gen_ndr/com_wmi.h" -#include "librpc/ndr/ndr_table.h" - -#include "lib/wmi/wmi.h" - -struct program_args { - char *hostname; - char *query; -}; - -static void parse_args(int argc, char *argv[], struct program_args *pmyargs) -{ - poptContext pc; - int opt, i; - - int argc_new; - char **argv_new; - - struct poptOption long_options[] = { - POPT_AUTOHELP - POPT_COMMON_SAMBA - POPT_COMMON_CONNECTION - POPT_COMMON_CREDENTIALS - POPT_COMMON_VERSION - POPT_TABLEEND - }; - - pc = poptGetContext("wmi", argc, (const char **) argv, - long_options, POPT_CONTEXT_KEEP_FIRST); - - poptSetOtherOptionHelp(pc, "//host\n\nExample: wmis -U [domain/]adminuser%password //host"); - - while ((opt = poptGetNextOpt(pc)) != -1) { - poptPrintUsage(pc, stdout, 0); - poptFreeContext(pc); - exit(1); - } - - argv_new = discard_const_p(char *, poptGetArgs(pc)); - - argc_new = argc; - for (i = 0; i < argc; i++) { - if (argv_new[i] == NULL) { - argc_new = i; - break; - } - } - - if (argc_new < 2 || argv_new[1][0] != '/' - || argv_new[1][1] != '/') { - poptPrintUsage(pc, stdout, 0); -- Samba Shared Repository