X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=python%2F_libvserver.c;h=fc2e7b1835b905fce6a466f6059a01ffc634b321;hb=a69bad017fcc766676f529fa1a78d3596087273c;hp=b1eb86a8fc1a1c76b3d410e7a803e960ef9c50da;hpb=adfc83d4b20c0797654b9a30b6f7699ab90d31ea;p=util-vserver.git diff --git a/python/_libvserver.c b/python/_libvserver.c index b1eb86a..fc2e7b1 100644 --- a/python/_libvserver.c +++ b/python/_libvserver.c @@ -1,4 +1,4 @@ -/* +/* $Id$ * Copyright (C) 2008 Daniel Hokka Zakrisson * * This program is free software; you can redistribute it and/or @@ -39,7 +39,6 @@ static inline PyObject *NONE(void) } static PyObject * - pyvserver_get_version(PyObject UNUSED *self, PyObject UNUSED *args) { int ver = vc_get_version(); @@ -120,7 +119,7 @@ pyvserver_virt_stat(PyObject UNUSED *self, PyObject *args) if (vc_virt_stat(xid, &stats) == -1) return PyErr_SetFromErrno(PyExc_OSError); - return Py_BuildValue("(KKIIIII(III))", stats.offset, stats.uptime, + return Py_BuildValue("(KKIIIIIIII)", stats.offset, stats.uptime, stats.nr_threads, stats.nr_running, stats.nr_uninterruptible, stats.nr_onhold, stats.nr_forks, stats.load[0], stats.load[1], @@ -164,7 +163,7 @@ pyvserver_set_cflags(PyObject UNUSED *self, PyObject *args) xid_t xid; struct vc_ctx_flags flags; - if (!PyArg_ParseTuple(args, "I(KK)", &xid, flags.flagword, flags.mask)) + if (!PyArg_ParseTuple(args, "I(KK)", &xid, &flags.flagword, &flags.mask)) return NULL; if (vc_set_cflags(xid, &flags) == -1) @@ -592,6 +591,7 @@ pyvserver_get_vhi_name(PyObject UNUSED *self, PyObject *args) xid_t xid; vc_uts_type type; char val[65]; + int i; if (!PyArg_ParseTuple(args, "Ii", &xid, &type)) return NULL; @@ -599,7 +599,10 @@ pyvserver_get_vhi_name(PyObject UNUSED *self, PyObject *args) if (vc_get_vhi_name(xid, type, val, sizeof(val)) == -1) return PyErr_SetFromErrno(PyExc_OSError); - return Py_BuildValue("s#", val, sizeof(val)); + for (i = sizeof(val); i > 0 && val[i - 1] == '\0'; i--) + ; + + return Py_BuildValue("s#", val, i); } static PyObject * @@ -1025,7 +1028,7 @@ pyvserver_list2 ## name(PyObject UNUSED *self, PyObject *args) \ char const *str; \ int len; \ struct vc_err_listparser err; \ - list_type val; \ + list_type val = { .mask_member = 0 }; \ \ if (!PyArg_ParseTuple(args, "s#", &str, &len)) \ return NULL; \ @@ -1137,10 +1140,28 @@ PyModule_AddLongLongConstant(PyObject *mod, const char *str, long long val) return; } +#if PY_MAJOR_VERSION == 2 PyMODINIT_FUNC init_libvserver(void) { PyObject *mod; mod = Py_InitModule("_libvserver", methods); #include "_libvserver-constants.c" + return mod; +} +#else +PyMODINIT_FUNC +PyInit__libvserver(void) +{ + static struct PyModuleDef lvmodule = { + PyModuleDef_HEAD_INIT, + "_libvserver", + NULL, + -1, + methods + }; + PyObject *mod = PyModule_Create(&lvmodule); +#include "_libvserver-constants.c" + return mod; } +#endif