[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] Use unsigned long in cmdSetmem.



 On 07/19/2010 03:24 PM, Chris Lalancette wrote:
On 07/08/10 - 11:39:07AM, Chris Lalancette wrote:
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.
ping, any reviews here?

ACK.

Signed-off-by: Chris Lalancette<clalance redhat com>
---
  tools/virsh.c |   30 ++++++++++++++++++++++++++----
  1 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/tools/virsh.c b/tools/virsh.c
index 551e97b..63816dc 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -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,
@@ -2534,7 +2536,7 @@ cmdSetmem(vshControl *ctl, const vshCmd *cmd)
  {
      virDomainPtr dom;
      virDomainInfo info;
-    int kilobytes;
+    unsigned long kilobytes;
      int ret = TRUE;

      if (!vshConnectionUsability(ctl, ctl->conn))
@@ -2543,10 +2545,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;
      }

@@ -2558,7 +2560,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;
      }
@@ -9628,6 +9630,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
   */
--
1.7.1.1

--
libvir-list mailing list
libvir-list redhat com
https://www.redhat.com/mailman/listinfo/libvir-list


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]