On Wed, Mar 30, 2011 at 01:54:43PM -0700, Jason Gerecke wrote:
> When setting an XInternAtom property, 'prop_extra' listed
> the number of extra properties beyond the first that needed
> to be set. For instance WACOM_PROP_TABLET_AREA had a total
> of 4 properties, so prop_extra=3.
>
> To provide better argument validation though, we change this
> to 'arg_count' and list the total number of arguments
> expected. This doesn't really do anything for normal properties
> (since arg_count = prop_extra + 1), but does let us check
> for the proper number of arguments in odd cases (e.g.
> ResetArea takes 0 arguments).
>
> Signed-off-by: Jason Gerecke <[email protected]>
> ---
> tools/xsetwacom.c | 40 +++++++++++++++++++++++++++++++++-------
> 1 files changed, 33 insertions(+), 7 deletions(-)
>
> diff --git a/tools/xsetwacom.c b/tools/xsetwacom.c
> index 4194781..ae35996 100644
> --- a/tools/xsetwacom.c
> +++ b/tools/xsetwacom.c
> @@ -86,7 +86,7 @@ typedef struct _param
> const char *prop_name; /* property name */
> const int prop_format; /* property format */
> const int prop_offset; /* offset (index) into the property values */
> - const int prop_extra; /* extra number of items after first one */
> + const int arg_count; /* extra number of items after first one */
I've updated the comment here. merged otherwise.
Cheers,
Peter
> const unsigned int prop_flags;
> void (*set_func)(Display *dpy, XDevice *dev, struct _param *param, int
> argc, char **argv); /* handler function, if appropriate */
> void (*get_func)(Display *dpy, XDevice *dev, struct _param *param, int
> argc, char **argv); /* handler function for getting, if appropriate */
> @@ -120,12 +120,13 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_TABLET_AREA,
> .prop_format = 32,
> .prop_offset = 0,
> - .prop_extra = 3
> + .arg_count = 4,
> },
> {
> .name = "Button",
> .desc = "X11 event to which the given button should be mapped.
> ",
> .prop_name = WACOM_PROP_BUTTON_ACTIONS,
> + .arg_count = 1,
> .set_func = map_actions,
> .get_func = get_map,
> },
> @@ -136,6 +137,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_DEBUGLEVELS,
> .prop_format = 8,
> .prop_offset = 0,
> + .arg_count = 1,
> },
> {
> .name = "TabletDebugLevel",
> @@ -145,6 +147,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_DEBUGLEVELS,
> .prop_format = 8,
> .prop_offset = 1,
> + .arg_count = 1,
> },
> {
> .name = "Suppress",
> @@ -152,6 +155,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_SAMPLE,
> .prop_format = 32,
> .prop_offset = 0,
> + .arg_count = 1,
> },
> {
> .name = "RawSample",
> @@ -160,6 +164,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_SAMPLE,
> .prop_format = 32,
> .prop_offset = 1,
> + .arg_count = 1,
> },
> {
> .name = "PressureCurve",
> @@ -167,11 +172,12 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_PRESSURECURVE,
> .prop_format = 32,
> .prop_offset = 0,
> - .prop_extra = 3,
> + .arg_count = 4,
> },
> {
> .name = "Mode",
> .desc = "Switches cursor movement mode (default is absolute). ",
> + .arg_count = 1,
> .set_func = set_mode,
> .get_func = get_mode,
> },
> @@ -183,6 +189,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_HOVER,
> .prop_format = 8,
> .prop_offset = 0,
> + .arg_count = 1,
> .prop_flags = PROP_FLAG_BOOLEAN
> },
> {
> @@ -191,6 +198,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_TOUCH,
> .prop_format = 8,
> .prop_offset = 0,
> + .arg_count = 1,
> .prop_flags = PROP_FLAG_BOOLEAN
> },
> {
> @@ -200,6 +208,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_ENABLE_GESTURE,
> .prop_format = 8,
> .prop_offset = 0,
> + .arg_count = 1,
> .prop_flags = PROP_FLAG_BOOLEAN
> },
> {
> @@ -209,6 +218,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_GESTURE_PARAMETERS,
> .prop_format = 32,
> .prop_offset = 0,
> + .arg_count = 1,
> },
> {
> .name = "ScrollDistance",
> @@ -217,6 +227,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_GESTURE_PARAMETERS,
> .prop_format = 32,
> .prop_offset = 1,
> + .arg_count = 1,
> },
> {
> .name = "TapTime",
> @@ -225,6 +236,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_GESTURE_PARAMETERS,
> .prop_format = 32,
> .prop_offset = 2,
> + .arg_count = 1,
> },
> {
> .name = "Capacity",
> @@ -233,6 +245,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_CAPACITY,
> .prop_format = 32,
> .prop_offset = 0,
> + .arg_count = 1,
> },
> {
> .name = "CursorProximity",
> @@ -243,6 +256,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_PROXIMITY_THRESHOLD,
> .prop_format = 32,
> .prop_offset = 0,
> + .arg_count = 1,
> },
> {
> .name = "Rotate",
> @@ -251,6 +265,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_ROTATION,
> .set_func = set_rotate,
> .get_func = get_rotate,
> + .arg_count = 1,
> },
> {
> .name = "RelWheelUp",
> @@ -258,6 +273,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_WHEELBUTTONS,
> .prop_format = 8,
> .prop_offset = 0,
> + .arg_count = 0,
> .set_func = map_actions,
> .get_func = get_map,
> },
> @@ -267,6 +283,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_WHEELBUTTONS,
> .prop_format = 8,
> .prop_offset = 1,
> + .arg_count = 0,
> .set_func = map_actions,
> .get_func = get_map,
> },
> @@ -276,6 +293,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_WHEELBUTTONS,
> .prop_format = 8,
> .prop_offset = 2,
> + .arg_count = 0,
> .set_func = map_actions,
> .get_func = get_map,
> },
> @@ -285,6 +303,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_WHEELBUTTONS,
> .prop_format = 8,
> .prop_offset = 3,
> + .arg_count = 0,
> .set_func = map_actions,
> .get_func = get_map,
> },
> @@ -294,6 +313,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_STRIPBUTTONS,
> .prop_format = 8,
> .prop_offset = 0,
> + .arg_count = 0,
> .set_func = map_actions,
> .get_func = get_map,
> },
> @@ -303,6 +323,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_STRIPBUTTONS,
> .prop_format = 8,
> .prop_offset = 1,
> + .arg_count = 0,
> .set_func = map_actions,
> .get_func = get_map,
> },
> @@ -312,6 +333,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_STRIPBUTTONS,
> .prop_format = 8,
> .prop_offset = 2,
> + .arg_count = 0,
> .set_func = map_actions,
> .get_func = get_map,
> },
> @@ -321,6 +343,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_STRIPBUTTONS,
> .prop_format = 8,
> .prop_offset = 3,
> + .arg_count = 0,
> .set_func = map_actions,
> .get_func = get_map,
> },
> @@ -331,6 +354,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_PRESSURE_THRESHOLD,
> .prop_format = 32,
> .prop_offset = 0,
> + .arg_count = 1,
> },
> {
> .name = "ResetArea",
> @@ -338,6 +362,7 @@ static param_t parameters[] =
> .prop_name = WACOM_PROP_TABLET_AREA,
> .prop_format = 32,
> .prop_offset = 0,
> + .arg_count = 0,
> .prop_flags = PROP_FLAG_WRITEONLY,
> .set_func = set_xydefault,
> },
> @@ -369,6 +394,7 @@ static param_t parameters[] =
> .name = "MapToOutput",
> .desc = "Map the device to the given output. ",
> .set_func = set_output,
> + .arg_count = 1,
> .prop_flags = PROP_FLAG_WRITEONLY
> },
> {
> @@ -2159,7 +2185,7 @@ static void get_param(Display *dpy, XDevice *dev,
> param_t *param, int argc, char
> switch(param->prop_format)
> {
> case 8:
> - for (i = 0; i < 1 + param->prop_extra; i++)
> + for (i = 0; i < param->arg_count; i++)
> {
> int val = data[param->prop_offset + i];
>
> @@ -2168,18 +2194,18 @@ static void get_param(Display *dpy, XDevice *dev,
> param_t *param, int argc, char
> else
> sprintf(&str[strlen(str)], "%d", val);
>
> - if (i < param->prop_extra)
> + if (i < param->arg_count - 1)
> strcat(str, " ");
> }
> print_value(param, "%s", str);
> break;
> case 32:
> - for (i = 0; i < 1 + param->prop_extra; i++)
> + for (i = 0; i < param->arg_count; i++)
> {
> long *ldata = (long*)data;
> sprintf(&str[strlen(str)], "%ld",
> ldata[param->prop_offset + i]);
>
> - if (i < param->prop_extra)
> + if (i < param->arg_count - 1)
> strcat(str, " ");
> }
> print_value(param, "%s", str);
> --
> 1.7.4.1
>
>
> ------------------------------------------------------------------------------
> Create and publish websites with WebMatrix
> Use the most popular FREE web apps or write code yourself;
> WebMatrix provides all the features you need to develop and
> publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
> _______________________________________________
> Linuxwacom-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
>
------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself;
WebMatrix provides all the features you need to develop and
publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel