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;
}