[systemd-devel] [PATCH udev v2] udev: Add program/rule to export touchscreen/tablet size as udev properties

Lennart Poettering lennart at poettering.net
Fri Dec 19 08:20:51 PST 2014


On Fri, 19.12.14 16:01, Carlos Garnacho (carlosg at gnome.org) wrote:

> +
> +#include <linux/input.h>
> +#include "udev.h"
> +
> +/* Resolution is defined to be in units/mm for ABS_X/Y */
> +#define ABS_SIZE_MM(absinfo) ((absinfo.maximum - absinfo.minimum) / absinfo.resolution)

Just out of principle: can you turn this into a function please? We
try to avoid function-like macros that evaluate passed arguments
multiple times, because of the risk of side effects.

(Also, for macros like this, please always enclose the arguments you
use in ())

> +#define BUF_LEN 10
> +
> +static void extract_info(struct udev_device *dev, const char *devpath, bool test)
> +{
> +        struct input_absinfo xabsinfo = { 0 }, yabsinfo = { 0 };

Why { 0 } instead of {}? I mean, the struct has more members anyway,
and 0 is the default anyway, if you don't specify anything.

> +        char width[BUF_LEN], height[BUF_LEN];

Please size these arrays with the right length. We have
DECIMAL_STR_MAX(int) as a macro to get the right size.

> +        _cleanup_close_ int fd = -1;
> +
> +        if ((fd = open(devpath, O_RDONLY)) < 0)
> +                return;

Please split this into two lines. Also out of principle, always use
O_CLOEXEC (see CODING_STYLE for details):

fd = open(devpath, O_RDONLY|O_CLOEXEC);
if (fd < 0) 
     return;

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list