On Mon, Mar 14, 2011 at 04:19:24PM -0700, Jason Gerecke wrote:
> Have it return true/false to indicate conversion success/failure.
> Note that in its current state the function cannot tell if there
> was a conversion failure...
> 
> Signed-off-by: Jason Gerecke <killert...@gmail.com>
> ---
>  Changes from v3:
> 
>  * Less PEBKAC. (no default needed on our int val...)
> 
>  tools/xsetwacom.c |   36 ++++++++++++++++++++++++++++--------
>  1 files changed, 28 insertions(+), 8 deletions(-)
> 
> diff --git a/tools/xsetwacom.c b/tools/xsetwacom.c
> index bb120c0..aa95538 100644
> --- a/tools/xsetwacom.c
> +++ b/tools/xsetwacom.c
> @@ -1423,18 +1423,29 @@ error:
>       return;
>  }
>  
> -static int convert_value_from_user(param_t *param, char *value)
> -{
> -     int val;
>  
> +/**
> + * Performs intelligent string->int conversion. In addition to converting 
> strings
> + * of digits into their corresponding integer values, it converts special 
> string
> + * constants such as "off" (0) and "on" (1).
> + *
> + * The caller is expected to allocate and free memory for return_value.
> + *
> + * @param      param        the property paramaters
> + * @param      value        the string to be converted
> + * @param[out] return_value the integer representation of the 'value' 
> parameter
> + * @return TRUE if the conversion succeeded, FALSE otherwise
> + */
> +static Bool convert_value_from_user(param_t *param, char *value, int 
> *return_value)
> +{
>       if ((param->prop_flags & PROP_FLAG_BOOLEAN) && strcmp(value, "off") == 
> 0)
> -                     val = 0;
> +                     *return_value = 0;
>       else if ((param->prop_flags & PROP_FLAG_BOOLEAN) && strcmp(value, "on") 
> == 0)
> -                     val = 1;
> +                     *return_value = 1;
>       else
> -             val = atoi(value);
> +             *return_value = atoi(value);
>  
> -     return val;
> +     return True;
>  }
>  
>  static void set(Display *dpy, int argc, char **argv)
> @@ -1510,7 +1521,16 @@ static void set(Display *dpy, int argc, char **argv)
>  
>       for (i = 0; i < nvals; i++)
>       {
> -             val = convert_value_from_user(param, values[i]);
> +             Bool success;
> +             int val;

xsetwacom.c: In function ‘set’:
xsetwacom.c:1474:9: warning: unused variable ‘val’

squashed the removal of the other val into this commit.

merged, thanks.

Cheers,
  Peter

> +
> +             success = convert_value_from_user(param, values[i], &val);
> +             if (!success)
> +             {
> +                     fprintf(stderr, "'%s' is not a valid value for the '%s' 
> property.\n",
> +                             values[i], param->name);
> +                     goto out;
> +             }
>  
>               switch(param->prop_format)
>               {
> -- 
> 1.7.1

------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to