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?

> 
> Signed-off-by: Chris Lalancette <clala...@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

-- 
--
Chris Lalancette

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

Reply via email to