X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev%2Flib%2Flibudev-util.c;h=9353e8eda792ef2bf9a85ebfd607d84c6ef0fc7c;hb=86b5778857522087e74182f26f0e565adea0c699;hp=6ec835e62445695dc05a4432819e6a09102f5007;hpb=279595bd1af86db92b063ac8b70c7ef51c67363c;p=elogind.git diff --git a/udev/lib/libudev-util.c b/udev/lib/libudev-util.c index 6ec835e62..9353e8eda 100644 --- a/udev/lib/libudev-util.c +++ b/udev/lib/libudev-util.c @@ -17,8 +17,6 @@ * along with this program. If not, see . */ -#include "config.h" - #include #include #include @@ -33,7 +31,7 @@ #include "libudev.h" #include "libudev-private.h" -static ssize_t get_sys_link(struct udev *udev, const char *slink, const char *syspath, char *subsystem, size_t size) +static ssize_t get_sys_link(struct udev *udev, const char *slink, const char *syspath, char *value, size_t size) { char path[UTIL_PATH_SIZE]; ssize_t len; @@ -50,8 +48,8 @@ static ssize_t get_sys_link(struct udev *udev, const char *slink, const char *sy if (pos == NULL) return -1; pos = &pos[1]; - info(udev, "resolved link to: '%s'\n", pos); - return util_strlcpy(subsystem, pos, size); + dbg(udev, "resolved link to: '%s'\n", pos); + return util_strlcpy(value, pos, size); } ssize_t util_get_sys_subsystem(struct udev *udev, const char *syspath, char *subsystem, size_t size) @@ -94,61 +92,6 @@ int util_resolve_sys_link(struct udev *udev, char *syspath, size_t size) return 0; } -struct util_name_entry *util_name_list_add(struct udev *udev, struct list_head *name_list, - const char *name, const char *value, int sort) -{ - struct util_name_entry *name_loop; - struct util_name_entry *name_new; - - /* avoid duplicate entries */ - list_for_each_entry(name_loop, name_list, node) { - if (strcmp(name_loop->name, name) == 0) { - dbg(udev, "'%s' is already in the list\n", name); - return name_loop; - } - } - - if (sort) { - list_for_each_entry(name_loop, name_list, node) { - if (strcmp(name_loop->name, name) > 0) - break; - } - } - - name_new = malloc(sizeof(struct util_name_entry)); - if (name_new == NULL) - return NULL; - memset(name_new, 0x00, sizeof(struct util_name_entry)); - name_new->name = strdup(name); - if (name_new->name == NULL) { - free(name_new); - return NULL; - } - if (value != NULL) { - name_new->value = strdup(value); - if (name_new->value == NULL) { - free(name_new); - return NULL; - } - } - dbg(udev, "adding '%s=%s'\n", name_new->name, name_new->value); - list_add_tail(&name_new->node, &name_loop->node); - return name_new; -} - -void util_name_list_cleanup(struct udev *udev, struct list_head *name_list) -{ - struct util_name_entry *name_loop; - struct util_name_entry *name_tmp; - - list_for_each_entry_safe(name_loop, name_tmp, name_list, node) { - list_del(&name_loop->node); - free(name_loop->name); - free(name_loop->value); - free(name_loop); - } -} - int util_log_priority(const char *priority) { char *endptr; @@ -171,7 +114,6 @@ size_t util_path_encode(char *s, size_t len) char t[(len * 3)+1]; size_t i, j; - t[0] = '\0'; for (i = 0, j = 0; s[i] != '\0'; i++) { if (s[i] == '/') { memcpy(&t[j], "\\x2f", 4); @@ -184,8 +126,11 @@ size_t util_path_encode(char *s, size_t len) j++; } } - t[j] = '\0'; - strncpy(s, t, len); + if (len == 0) + return j; + i = (j < len - 1) ? j : len - 1; + memcpy(s, t, i); + s[i] = '\0'; return j; }