chiark / gitweb /
move some info() to dbg()
[elogind.git] / udev / lib / libudev-util.c
index aa544fea2291da4be0c20642f70fee3c3e89c717..9353e8eda792ef2bf9a85ebfd607d84c6ef0fc7c 100644 (file)
@@ -31,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;
@@ -48,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)
@@ -64,17 +64,12 @@ ssize_t util_get_sys_driver(struct udev *udev, const char *syspath, char *driver
 
 int util_resolve_sys_link(struct udev *udev, char *syspath, size_t size)
 {
-       struct stat statbuf;
        char link_target[UTIL_PATH_SIZE];
 
        int len;
        int i;
        int back;
 
-       if (lstat(syspath, &statbuf) < 0)
-               return -1;
-       if (!S_ISLNK(statbuf.st_mode))
-               return -1;
        len = readlink(syspath, link_target, sizeof(link_target));
        if (len <= 0)
                return -1;
@@ -97,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;
@@ -174,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);
@@ -187,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;
 }