From 239223bc8dd66da418f41d1bd9c5585a4ab8ade3 Mon Sep 17 00:00:00 2001
From: Marc Fiuczynski <mef@cs.princeton.edu>
Date: Tue, 15 May 2007 16:22:37 +0000
Subject: [PATCH] - clean up vserver_set_rlimit() - clean up
 vserver_isrunning() to return Python Bool

---
 python/vserverimpl.c | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/python/vserverimpl.c b/python/vserverimpl.c
index 85563cc..15388ee 100644
--- a/python/vserverimpl.c
+++ b/python/vserverimpl.c
@@ -102,9 +102,9 @@ vserver_isrunning(PyObject *self, PyObject *args)
   sprintf(fname,"/proc/virtual/%d", ctx);
 
   if(stat(&fname[0],&statbuf)==0)
-    ret = Py_BuildValue("i",1);
+    ret = PyBool_FromLong(1);
   else
-    ret = Py_BuildValue("i",0);
+    ret = PyBool_FromLong(0);
 
   return ret;
 }
@@ -114,6 +114,7 @@ __vserver_get_rlimit(xid_t xid, int resource) {
   struct vc_rlimit limits;
   PyObject *ret;
 
+  errno = 0;
   if (vc_get_rlimit(xid, resource, &limits)==-1)
     ret = PyErr_SetFromErrno(PyExc_OSError);
   else
@@ -139,7 +140,7 @@ vserver_get_rlimit(PyObject *self, PyObject *args) {
 static PyObject *
 vserver_set_rlimit(PyObject *self, PyObject *args) {
   struct vc_rlimit limits;
-  struct rlimit olim, nlim;
+  struct rlimit lim;
   xid_t xid;
   int resource, lresource;
   PyObject *ret;
@@ -159,23 +160,19 @@ vserver_set_rlimit(PyObject *self, PyObject *args) {
     goto do_vc_set_rlimit;
   case VLIMIT_OPENFD:
     lresource = RLIMIT_NOFILE;
+    break;
   default:
     break;
   }
 
-  getrlimit(lresource,&olim);
-  if ((limits.min != VC_LIM_KEEP) && (limits.min > olim.rlim_cur)) {
-    nlim.rlim_cur = limits.min;
-    if (limits.min > olim.rlim_max) {
-      nlim.rlim_max = limits.min;
-    } else {
-      nlim.rlim_max = olim.rlim_max;
-    }
-    setrlimit(lresource, &nlim);
+  getrlimit(lresource,&lim);
+  if (adjust_lim(&limits,&lim)) {
+    setrlimit(lresource, &lim);
   }
 
  do_vc_set_rlimit:
-  if (vc_set_rlimit(xid, resource, &limits)) 
+  errno = 0;
+  if (vc_set_rlimit(xid, resource, &limits)==-1) 
     ret = PyErr_SetFromErrno(PyExc_OSError);
   else
     ret = __vserver_get_rlimit(xid, resource);
-- 
2.47.0