From: Kay Sievers Date: Mon, 1 Jul 2013 17:39:50 +0000 (+0200) Subject: hwdb: remove support for (not fully implemented) conditional properties X-Git-Tag: v205~42 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=3cf7b686e6b29f78de0af5929602cae4482f6d49 hwdb: remove support for (not fully implemented) conditional properties --- diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c index a56ad753e..5645a1143 100644 --- a/src/libudev/libudev-hwdb.c +++ b/src/libudev/libudev-hwdb.c @@ -140,9 +140,13 @@ static const struct trie_node_f *node_lookup_f(struct udev_hwdb *hwdb, const str } static int hwdb_add_property(struct udev_hwdb *hwdb, const char *key, const char *value) { - /* TODO: add sub-matches (+) against DMI data */ + /* + * Silently ignore all properties which do not start with a + * space; future extensions might use additional prefixes. + */ if (key[0] != ' ') return 0; + if (udev_list_entry_add(&hwdb->properties_list, key+1, value) == NULL) return -ENOMEM; return 0; diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index 3e849aaed..10b490ee2 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -406,14 +406,12 @@ static int import_file(struct trie *trie, const char *filename) { FILE *f; char line[LINE_MAX]; char match[LINE_MAX]; - char cond[LINE_MAX]; f = fopen(filename, "re"); if (f == NULL) return -errno; match[0] = '\0'; - cond[0] = '\0'; while (fgets(line, sizeof(line), f)) { size_t len; @@ -423,7 +421,6 @@ static int import_file(struct trie *trie, const char *filename) { /* new line, new record */ if (line[0] == '\n') { match[0] = '\0'; - cond[0] = '\0'; continue; } @@ -436,20 +433,10 @@ static int import_file(struct trie *trie, const char *filename) { /* start of new record */ if (match[0] == '\0') { strcpy(match, line); - cond[0] = '\0'; continue; } - if (line[0] == '+') { - strcpy(cond, line); - continue; - } - - /* TODO: support +; skip the entire record until we support it */ - if (cond[0] != '\0') - continue; - - /* value lines */ + /* value line */ if (line[0] == ' ') { char *value; @@ -459,7 +446,10 @@ static int import_file(struct trie *trie, const char *filename) { value[0] = '\0'; value++; trie_insert(trie, trie->root, match, line, value); + continue; } + + log_error("Error parsing line '%s' in '%s\n", line, filename); } fclose(f); return 0;