Fix incorrect variable usage
[util-vserver.git] / python / _libvserver.c
index c5eb892..d433d4b 100644 (file)
@@ -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)
@@ -278,7 +277,7 @@ pyvserver_get_rlimit(PyObject UNUSED *self, PyObject *args)
   if (vc_get_rlimit(xid, resource, &limit) == -1)
     return PyErr_SetFromErrno(PyExc_OSError);
 
-  return Py_BuildValue("(KKK)", limit.min, limit.soft, limit.hard);
+  return Py_BuildValue("(LLL)", limit.min, limit.soft, limit.hard);
 }
 
 static PyObject *
@@ -591,7 +590,7 @@ pyvserver_get_vhi_name(PyObject UNUSED *self, PyObject *args)
 {
   xid_t xid;
   vc_uts_type type;
-  char val[256];
+  char val[65];
 
   if (!PyArg_ParseTuple(args, "Ii", &xid, &type))
     return NULL;
@@ -607,11 +606,12 @@ pyvserver_enter_namespace(PyObject UNUSED *self, PyObject *args)
 {
   xid_t xid;
   uint_least64_t mask;
+  uint32_t index;
 
-  if (!PyArg_ParseTuple(args, "IK", &xid, &mask))
+  if (!PyArg_ParseTuple(args, "IKI", &xid, &mask, &index))
     return NULL;
 
-  if (vc_enter_namespace(xid, mask) == -1)
+  if (vc_enter_namespace(xid, mask, index) == -1)
     return PyErr_SetFromErrno(PyExc_OSError);
 
   return NONE();
@@ -622,11 +622,12 @@ pyvserver_set_namespace(PyObject UNUSED *self, PyObject *args)
 {
   xid_t xid;
   uint_least64_t mask;
+  uint32_t index;
 
-  if (!PyArg_ParseTuple(args, "IK", &xid, &mask))
+  if (!PyArg_ParseTuple(args, "IKI", &xid, &mask, &index))
     return NULL;
 
-  if (vc_set_namespace(xid, mask) == -1)
+  if (vc_set_namespace(xid, mask, index) == -1)
     return PyErr_SetFromErrno(PyExc_OSError);
 
   return NONE();
@@ -785,7 +786,7 @@ pyvserver_get_sched(PyObject UNUSED *self, PyObject *args)
   xid_t xid;
   struct vc_set_sched sched;
 
-  if (!PyArg_ParseTuple(args, "I", &xid))
+  if (!PyArg_ParseTuple(args, "Iii", &xid, &sched.cpu_id, &sched.bucket_id))
     return NULL;
 
   if (vc_get_sched(xid, &sched) == -1)
@@ -1023,7 +1024,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; \
@@ -1126,6 +1127,15 @@ static PyMethodDef methods[] = {
   { NULL, NULL, 0, NULL }
 };
 
+static void
+PyModule_AddLongLongConstant(PyObject *mod, const char *str, long long val)
+{
+       PyObject *o = PyLong_FromLongLong(val);
+       if (!o || PyModule_AddObject(mod, str, o) == -1)
+               /* This ought to be reported somehow... */
+               return;
+}
+
 PyMODINIT_FUNC init_libvserver(void)
 {
   PyObject *mod;