summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2012-02-02 05:28:17 +0000
committerBastien Nocera <hadess@hadess.net>2012-02-02 05:28:17 +0000
commitdfff16f3e32519ad071bdb1233c75bfe3ffa5557 (patch)
tree6b2dca39092529d8522e6ae3d002c4d8dca6cb83
parent3d2e54526454ed1436b6436dffb0e8769fdbff1d (diff)
Don't print duplicate udev rules
https://bugs.freedesktop.org/show_bug.cgi?id=45513
-rw-r--r--libfprint/fprint-list-udev-rules.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/libfprint/fprint-list-udev-rules.c b/libfprint/fprint-list-udev-rules.c
index e474dd7..182ee10 100644
--- a/libfprint/fprint-list-udev-rules.c
+++ b/libfprint/fprint-list-udev-rules.c
@@ -39,2 +39,4 @@ struct fp_driver whitelist = {
+GHashTable *printed = NULL;
+
static void print_driver (struct fp_driver *driver)
@@ -44,2 +46,4 @@ static void print_driver (struct fp_driver *driver)
for (i = 0; driver->id_table[i].vendor != 0; i++) {
+ char *key;
+
blacklist = 0;
@@ -49,2 +53,3 @@ static void print_driver (struct fp_driver *driver)
blacklist = 1;
+ break;
}
@@ -54,2 +59,11 @@ static void print_driver (struct fp_driver *driver)
+ key = g_strdup_printf ("%04x:%04x", driver->id_table[i].vendor, driver->id_table[i].product);
+
+ if (g_hash_table_lookup (printed, key) != NULL) {
+ g_free (key);
+ continue;
+ }
+
+ g_hash_table_insert (printed, key, GINT_TO_POINTER (1));
+
printf ("SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ATTRS{dev}==\"*\", ATTR{power/control}=\"auto\"\n", driver->id_table[i].vendor, driver->id_table[i].product);
@@ -65,2 +79,4 @@ int main (int argc, char **argv)
+ printed = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+
for (i = 0; list[i] != NULL; i++) {
@@ -71,2 +87,4 @@ int main (int argc, char **argv)
+ g_hash_table_destroy (printed);
+
return 0;