On Friday, 2017-02-24 13:10:17 +1000, Peter Hutterer wrote:
> And why isn't this a thing in glibc yet

Indeed :(
So many bugs caused by someone assuming `if (strcmp(a, b))` means a==b...

> 
> Signed-off-by: Peter Hutterer <[email protected]>
> ---
>  src/xf86libinput.c | 21 ++++++++++++---------
>  1 file changed, 12 insertions(+), 9 deletions(-)
> 
> diff --git a/src/xf86libinput.c b/src/xf86libinput.c
> index 703d872..c1214b7 100644
> --- a/src/xf86libinput.c
> +++ b/src/xf86libinput.c
> @@ -65,6 +65,9 @@
>  #define TOUCH_MAX_SLOTS 15
>  #define XORG_KEYCODE_OFFSET 8
>  
> +#define streq(a, b) (strcmp(a, b) == 0)
> +#define strneq(a, b, n) (strncmp(a, b, n) == 0)

strneq() reads to me as "string not equal"...
streqn() might be a better name?

And a bit of a nitpick, but could you move its introduction to the patch
that starts using it (ie. 3/3)?

Otherwise, this patch is:
Reviewed-by: Eric Engestrom <[email protected]>

(the other patches require more knowledge than I have)

> +
>  /*
>     libinput does not provide axis information for absolute devices, instead
>     it scales into the screen dimensions provided. So we set up the axes with
> @@ -259,7 +262,7 @@ xf86libinput_is_subdevice(InputInfoPtr pInfo)
>       BOOL is_subdevice;
>  
>       source = xf86SetStrOption(pInfo->options, "_source", "");
> -     is_subdevice = strcmp(source, "_driver/libinput") == 0;
> +     is_subdevice = streq(source, "_driver/libinput");
>       free(source);
>  
>       return is_subdevice;
> @@ -1213,7 +1216,7 @@ is_libinput_device(InputInfoPtr pInfo)
>       BOOL rc;
>  
>       driver = xf86CheckStrOption(pInfo->options, "driver", "");
> -     rc = strcmp(driver, "libinput") == 0;
> +     rc = streq(driver, "libinput");
>       free(driver);
>  
>       return rc;
> @@ -2187,7 +2190,7 @@ open_restricted(const char *path, int flags, void *data)
>       nt_list_for_each_entry(pInfo, xf86FirstLocalDevice(), next) {
>               char *device = xf86CheckStrOption(pInfo->options, "Device", 
> NULL);
>  
> -             if (device != NULL && strcmp(path, device) == 0) {
> +             if (device != NULL && streq(path, device)) {
>                       free(device);
>                       break;
>               }
> @@ -2353,9 +2356,9 @@ xf86libinput_parse_tap_buttonmap_option(InputInfoPtr 
> pInfo,
>                              "TappingButtonMap",
>                              NULL);
>       if (str) {
> -             if (strcmp(str, "lmr") == 0)
> +             if (streq(str, "lmr"))
>                       map = LIBINPUT_CONFIG_TAP_MAP_LMR;
> -             else if (strcmp(str, "lrm") == 0)
> +             else if (streq(str, "lrm"))
>                       map = LIBINPUT_CONFIG_TAP_MAP_LRM;
>               else
>                       xf86IDrvMsg(pInfo, X_ERROR,
> @@ -2468,11 +2471,11 @@ xf86libinput_parse_sendevents_option(InputInfoPtr 
> pInfo,
>                                  "SendEventsMode",
>                                  NULL);
>       if (modestr) {
> -             if (strcmp(modestr, "enabled") == 0)
> +             if (streq(modestr, "enabled"))
>                       mode = LIBINPUT_CONFIG_SEND_EVENTS_ENABLED;
> -             else if (strcmp(modestr, "disabled") == 0)
> +             else if (streq(modestr, "disabled"))
>                       mode = LIBINPUT_CONFIG_SEND_EVENTS_DISABLED;
> -             else if (strcmp(modestr, "disabled-on-external-mouse") == 0)
> +             else if (streq(modestr, "disabled-on-external-mouse"))
>                       mode = 
> LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE;
>               else
>                       xf86IDrvMsg(pInfo, X_ERROR,
> @@ -2866,7 +2869,7 @@ xf86libinput_parse_tablet_area_option(InputInfoPtr 
> pInfo,
>       str = xf86SetStrOption(pInfo->options,
>                              "TabletToolAreaRatio",
>                              NULL);
> -     if (!str || strcmp(str, "default") == 0)
> +     if (!str || streq(str, "default"))
>               goto out;
>  
>       rc = sscanf(str, "%d:%d", &area.x, &area.y);
> -- 
> 2.9.3
> 
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to