]> xenbits.xensource.com Git - libvirt.git/commitdiff
Use unsigned long in cmdSetmem.
authorChris Lalancette <clalance@redhat.com>
Thu, 17 Jun 2010 19:36:36 +0000 (15:36 -0400)
committerChris Lalancette <clalance@redhat.com>
Tue, 20 Jul 2010 13:35:29 +0000 (09:35 -0400)
The virsh command "setmem" takes as input a number that
should represent an unsigned long number of kilobytes.  Fix
cmdSetmem to properly parse this as an unsigned long instead
of an int.

Signed-off-by: Chris Lalancette <clalance@redhat.com>
tools/virsh.c

index ffd22ab3205797cbe835ca37654841b9b7b6020a..b0578470214708cad62f323393c13cac8adc6314 100644 (file)
@@ -223,6 +223,8 @@ static int vshCmddefHelp(vshControl *ctl, const char *name);
 
 static vshCmdOpt *vshCommandOpt(const vshCmd *cmd, const char *name);
 static int vshCommandOptInt(const vshCmd *cmd, const char *name, int *found);
+static unsigned long vshCommandOptUL(const vshCmd *cmd, const char *name,
+                                     int *found);
 static char *vshCommandOptString(const vshCmd *cmd, const char *name,
                                  int *found);
 static long long vshCommandOptLongLong(const vshCmd *cmd, const char *name,
@@ -2515,7 +2517,7 @@ cmdSetmem(vshControl *ctl, const vshCmd *cmd)
 {
     virDomainPtr dom;
     virDomainInfo info;
-    int kilobytes;
+    unsigned long kilobytes;
     int ret = TRUE;
 
     if (!vshConnectionUsability(ctl, ctl->conn))
@@ -2524,10 +2526,10 @@ cmdSetmem(vshControl *ctl, const vshCmd *cmd)
     if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
         return FALSE;
 
-    kilobytes = vshCommandOptInt(cmd, "kilobytes", &kilobytes);
+    kilobytes = vshCommandOptUL(cmd, "kilobytes", NULL);
     if (kilobytes <= 0) {
         virDomainFree(dom);
-        vshError(ctl, _("Invalid value of %d for memory size"), kilobytes);
+        vshError(ctl, _("Invalid value of %lu for memory size"), kilobytes);
         return FALSE;
     }
 
@@ -2539,7 +2541,7 @@ cmdSetmem(vshControl *ctl, const vshCmd *cmd)
 
     if (kilobytes > info.maxMem) {
         virDomainFree(dom);
-        vshError(ctl, _("Requested memory size %d kb is larger than maximum of %lu kb"),
+        vshError(ctl, _("Requested memory size %lu kb is larger than maximum of %lu kb"),
                  kilobytes, info.maxMem);
         return FALSE;
     }
@@ -9735,6 +9737,26 @@ vshCommandOptInt(const vshCmd *cmd, const char *name, int *found)
     return res;
 }
 
+static unsigned long
+vshCommandOptUL(const vshCmd *cmd, const char *name, int *found)
+{
+    vshCmdOpt *arg = vshCommandOpt(cmd, name);
+    unsigned long res = 0;
+    int num_found = FALSE;
+    char *end_p = NULL;
+
+    if ((arg != NULL) && (arg->data != NULL)) {
+        res = strtoul(arg->data, &end_p, 10);
+        if ((arg->data == end_p) || (*end_p!= 0))
+            num_found = FALSE;
+        else
+            num_found = TRUE;
+    }
+    if (found)
+        *found = num_found;
+    return res;
+}
+
 /*
  * Returns option as STRING
  */