• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4 
5 #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
6 #  include "pycore_gc.h"          // PyGC_Head
7 #  include "pycore_runtime.h"     // _Py_ID()
8 #endif
9 #include "pycore_modsupport.h"    // _PyArg_UnpackKeywords()
10 
11 PyDoc_STRVAR(_wmi_exec_query__doc__,
12 "exec_query($module, /, query)\n"
13 "--\n"
14 "\n"
15 "Runs a WMI query against the local machine.\n"
16 "\n"
17 "This returns a single string with \'name=value\' pairs in a flat array separated\n"
18 "by null characters.");
19 
20 #define _WMI_EXEC_QUERY_METHODDEF    \
21     {"exec_query", _PyCFunction_CAST(_wmi_exec_query), METH_FASTCALL|METH_KEYWORDS, _wmi_exec_query__doc__},
22 
23 static PyObject *
24 _wmi_exec_query_impl(PyObject *module, PyObject *query);
25 
26 static PyObject *
_wmi_exec_query(PyObject * module,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)27 _wmi_exec_query(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
28 {
29     PyObject *return_value = NULL;
30     #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
31 
32     #define NUM_KEYWORDS 1
33     static struct {
34         PyGC_Head _this_is_not_used;
35         PyObject_VAR_HEAD
36         PyObject *ob_item[NUM_KEYWORDS];
37     } _kwtuple = {
38         .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
39         .ob_item = { &_Py_ID(query), },
40     };
41     #undef NUM_KEYWORDS
42     #define KWTUPLE (&_kwtuple.ob_base.ob_base)
43 
44     #else  // !Py_BUILD_CORE
45     #  define KWTUPLE NULL
46     #endif  // !Py_BUILD_CORE
47 
48     static const char * const _keywords[] = {"query", NULL};
49     static _PyArg_Parser _parser = {
50         .keywords = _keywords,
51         .fname = "exec_query",
52         .kwtuple = KWTUPLE,
53     };
54     #undef KWTUPLE
55     PyObject *argsbuf[1];
56     PyObject *query;
57 
58     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
59     if (!args) {
60         goto exit;
61     }
62     if (!PyUnicode_Check(args[0])) {
63         _PyArg_BadArgument("exec_query", "argument 'query'", "str", args[0]);
64         goto exit;
65     }
66     query = args[0];
67     return_value = _wmi_exec_query_impl(module, query);
68 
69 exit:
70     return return_value;
71 }
72 /*[clinic end generated code: output=ba04920d127f3ceb input=a9049054013a1b77]*/
73