Reported-by: Reynolds, Doug" <doug.reyno...@hp.com>
Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
---
 tools/generate-udev-rules.c | 42 ++++++++++++++++++++++++++----------------
 1 file changed, 26 insertions(+), 16 deletions(-)

diff --git a/tools/generate-udev-rules.c b/tools/generate-udev-rules.c
index 379d6cc..d717f4b 100644
--- a/tools/generate-udev-rules.c
+++ b/tools/generate-udev-rules.c
@@ -96,33 +96,31 @@ static void print_udev_entry_matchstr(WacomDevice *device, 
const char *matchstr)
                printf ("ATTRS{name}==\"* Pad\", %s 
ENV{ID_INPUT_TABLET_PAD}=\"1\"\n", matchstr);
 }
 
-static void print_uinput_entry_for_match (WacomDevice *device, const 
WacomMatch *match,
-                                         WacomBusType bus_type_filter)
+static char * generate_uinput_match (WacomDevice *device, const WacomMatch 
*match)
 {
        WacomBusType type       = libwacom_match_get_bustype (match);
        int          vendor     = libwacom_match_get_vendor_id (match);
        int          product    = libwacom_match_get_product_id (match);
        const char *subsystem;
-
-       if (bus_type_filter != type)
-               return;
+       char *matchstr;
 
        switch(type) {
                case WBUSTYPE_USB: subsystem = "usb"; break;
                case WBUSTYPE_BLUETOOTH: subsystem = "bluetooth"; break;
                case WBUSTYPE_SERIAL: subsystem = "tty"; break;
                default:
-                                     return;
+                       return NULL;
        }
 
-       printf("ENV{DEVPATH}==\"/devices/virtual/*\", "
-                       "ENV{PRODUCT}==\"*/%x/%x/*\", "
-                       "ENV{UINPUT_DEVICE}=\"1\", "
-                       "ENV{UINPUT_SUBSYSTEM}=\"%s\", "
-                       "ENV{ID_VENDOR_ID}=\"%04x\", "
-                       "ENV{ID_MODEL_ID}=\"%04x\", "
-                       "\n", vendor, product,
-                       subsystem, vendor, product);
+       matchstr = g_strdup_printf("ENV{DEVPATH}==\"/devices/virtual/*\", "
+                                  "ENV{PRODUCT}==\"*/%x/%x/*\", "
+                                  "ENV{UINPUT_DEVICE}=\"1\", "
+                                  "ENV{UINPUT_SUBSYSTEM}=\"%s\", "
+                                  "ENV{ID_VENDOR_ID}=\"%04x\", "
+                                  "ENV{ID_MODEL_ID}=\"%04x\", ",
+                                  vendor, product,
+                                  subsystem, vendor, product);
+       return matchstr;
 }
 
 static void print_uinput_entry (WacomDevice *device, WacomBusType 
bus_type_filter)
@@ -130,8 +128,20 @@ static void print_uinput_entry (WacomDevice *device, 
WacomBusType bus_type_filte
        const WacomMatch **matches, **match;
 
        matches = libwacom_get_matches(device);
-       for (match = matches; *match; match++)
-               print_uinput_entry_for_match(device, *match, bus_type_filter);
+       for (match = matches; *match; match++) {
+               WacomBusType type = libwacom_match_get_bustype (*match);
+               char *matchstr;
+
+               if (bus_type_filter != type)
+                       continue;
+
+               matchstr = generate_uinput_match (device, *match);
+               if (matchstr == NULL)
+                       continue;
+
+               print_udev_entry_matchstr (device, matchstr);
+               g_free (matchstr);
+       }
 }
 
 
-- 
2.3.5


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to