summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extras/floppy/Makefile.am1
-rw-r--r--extras/usb_id/Makefile.am1
-rw-r--r--extras/usb_id/usb_id.c22
-rw-r--r--udev/Makefile.am1
-rw-r--r--udev/lib/list.h286
-rw-r--r--udev/test-udev.c2
-rw-r--r--udev/udev_db.c36
-rw-r--r--udev/udev_device_event.c28
-rw-r--r--udev/udev_node.c48
-rw-r--r--udev/udev_rules.c160
-rw-r--r--udev/udev_rules_parse.c14
-rw-r--r--udev/udev_sysdeps.c68
-rw-r--r--udev/udev_sysdeps.h8
-rw-r--r--udev/udev_sysfs.c132
-rw-r--r--udev/udev_utils.c2
-rw-r--r--udev/udev_utils_file.c2
-rw-r--r--udev/udevadm-info.c36
-rw-r--r--udev/udevadm-settle.c12
-rw-r--r--udev/udevadm-test.c12
-rw-r--r--udev/udevadm-trigger.c124
-rw-r--r--udev/udevd.c34
21 files changed, 620 insertions, 409 deletions
diff --git a/extras/floppy/Makefile.am b/extras/floppy/Makefile.am
index 9c5fe50114..59fc4e560f 100644
--- a/extras/floppy/Makefile.am
+++ b/extras/floppy/Makefile.am
@@ -12,7 +12,6 @@ create_floppy_devices_SOURCES = \
../../udev/lib/libudev.h \
../../udev/lib/libudev.c \
../../udev/lib/libudev-util.c \
- ../../udev/udev_sysdeps.c \
../../udev/udev_utils.c
if USE_SELINUX
diff --git a/extras/usb_id/Makefile.am b/extras/usb_id/Makefile.am
index eac385c3c1..c8d743b5f4 100644
--- a/extras/usb_id/Makefile.am
+++ b/extras/usb_id/Makefile.am
@@ -12,7 +12,6 @@ usb_id_SOURCES = \
../../udev/lib/libudev.h \
../../udev/lib/libudev.c \
../../udev/lib/libudev-util.c \
- ../../udev/udev_sysdeps.c \
../../udev/udev_sysfs.c \
../../udev/udev_utils.c
diff --git a/extras/usb_id/usb_id.c b/extras/usb_id/usb_id.c
index fb4c28ac3e..9938dc00ef 100644
--- a/extras/usb_id/usb_id.c
+++ b/extras/usb_id/usb_id.c
@@ -147,7 +147,7 @@ static int set_usb_mass_storage_ifsubtype(char *to, const char *from, size_t len
break;
}
}
- strlcpy(to, type, len);
+ util_strlcpy(to, type, len);
return type_num;
}
@@ -180,7 +180,7 @@ static void set_scsi_type(char *to, const char *from, size_t len)
break;
}
}
- strlcpy(to, type, len);
+ util_strlcpy(to, type, len);
}
/*
@@ -408,14 +408,14 @@ int main(int argc, char **argv)
env = getenv("DEVPATH");
if (env != NULL)
- strlcpy(devpath, env, sizeof(devpath));
+ util_strlcpy(devpath, env, sizeof(devpath));
else {
if (argv[optind] == NULL) {
fprintf(stderr, "No device specified\n");
retval = 1;
goto exit;
}
- strlcpy(devpath, argv[optind], sizeof(devpath));
+ util_strlcpy(devpath, argv[optind], sizeof(devpath));
}
retval = usb_id(udev, devpath);
@@ -423,16 +423,16 @@ int main(int argc, char **argv)
if (retval == 0) {
char serial[256];
- strlcpy(serial, vendor_str, sizeof(serial));
- strlcat(serial, "_", sizeof(serial));
- strlcat(serial, model_str, sizeof(serial));
+ util_strlcpy(serial, vendor_str, sizeof(serial));
+ util_strlcat(serial, "_", sizeof(serial));
+ util_strlcat(serial, model_str, sizeof(serial));
if (serial_str[0] != '\0') {
- strlcat(serial, "_", sizeof(serial));
- strlcat(serial, serial_str, sizeof(serial));
+ util_strlcat(serial, "_", sizeof(serial));
+ util_strlcat(serial, serial_str, sizeof(serial));
}
if (instance_str[0] != '\0') {
- strlcat(serial, "-", sizeof(serial));
- strlcat(serial, instance_str, sizeof(serial));
+ util_strlcat(serial, "-", sizeof(serial));
+ util_strlcat(serial, instance_str, sizeof(serial));
}
if (export) {
diff --git a/udev/Makefile.am b/udev/Makefile.am
index 66edd341fd..62739c05d9 100644
--- a/udev/Makefile.am
+++ b/udev/Makefile.am
@@ -25,7 +25,6 @@ common_files = \
udev_node.c \
udev_rules.c \
udev_rules_parse.c \
- udev_sysdeps.c \
udev_sysfs.c \
udev_utils.c \
udev_utils_file.c \
diff --git a/udev/lib/list.h b/udev/lib/list.h
new file mode 100644
index 0000000000..3266e1b124
--- /dev/null
+++ b/udev/lib/list.h
@@ -0,0 +1,286 @@
+/*
+ * Based on list.h in the Linux kernel source tree.
+ */
+
+#ifndef _LIST_H
+#define _LIST_H
+
+/**
+ * container_of - cast a member of a structure out to the containing structure
+ *
+ * @ptr: the pointer to the member.
+ * @type: the type of the container struct this is embedded in.
+ * @member: the name of the member within the struct.
+ *
+ */
+#define container_of(ptr, type, member) ({ \
+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
+ (type *)( (char *)__mptr - offsetof(type,member) );})
+
+/*
+ * These are non-NULL pointers that will result in page faults
+ * under normal circumstances, used to verify that nobody uses
+ * non-initialized list entries.
+ */
+#define LIST_POISON1 ((void *) 0x00100100)
+#define LIST_POISON2 ((void *) 0x00200200)
+
+/*
+ * Simple doubly linked list implementation.
+ *
+ * Some of the internal functions ("__xxx") are useful when
+ * manipulating whole lists rather than single entries, as
+ * sometimes we already know the next/prev entries and we can
+ * generate better code by using them directly rather than
+ * using the generic single-entry routines.
+ */
+
+struct list_head {
+ struct list_head *next, *prev;
+};
+
+#define LIST_HEAD_INIT(name) { &(name), &(name) }
+
+#define LIST_HEAD(name) \
+ struct list_head name = LIST_HEAD_INIT(name)
+
+#define INIT_LIST_HEAD(ptr) do { \
+ (ptr)->next = (ptr); (ptr)->prev = (ptr); \
+} while (0)
+
+/*
+ * Insert a new entry between two known consecutive entries.
+ *
+ * This is only for internal list manipulation where we know
+ * the prev/next entries already!
+ */
+static inline void __list_add(struct list_head *new,
+ struct list_head *prev,
+ struct list_head *next)
+{
+ next->prev = new;
+ new->next = next;
+ new->prev = prev;
+ prev->next = new;
+}
+
+/**
+ * list_add - add a new entry
+ * @new: new entry to be added
+ * @head: list head to add it after
+ *
+ * Insert a new entry after the specified head.
+ * This is good for implementing stacks.
+ */
+static inline void list_add(struct list_head *new, struct list_head *head)
+{
+ __list_add(new, head, head->next);
+}
+
+/**
+ * list_add_tail - add a new entry
+ * @new: new entry to be added
+ * @head: list head to add it before
+ *
+ * Insert a new entry before the specified head.
+ * This is useful for implementing queues.
+ */
+static inline void list_add_tail(struct list_head *new, struct list_head *head)
+{
+ __list_add(new, head->prev, head);
+}
+
+/*
+ * Delete a list entry by making the prev/next entries
+ * point to each other.
+ *
+ * This is only for internal list manipulation where we know
+ * the prev/next entries already!
+ */
+static inline void __list_del(struct list_head * prev, struct list_head * next)
+{
+ next->prev = prev;
+ prev->next = next;
+}
+
+/**
+ * list_del - deletes entry from list.
+ * @entry: the element to delete from the list.
+ * Note: list_empty on entry does not return true after this, the entry is
+ * in an undefined state.
+ */
+static inline void list_del(struct list_head *entry)
+{
+ __list_del(entry->prev, entry->next);
+ entry->next = LIST_POISON1;
+ entry->prev = LIST_POISON2;
+}
+
+/**
+ * list_del_init - deletes entry from list and reinitialize it.
+ * @entry: the element to delete from the list.
+ */
+static inline void list_del_init(struct list_head *entry)
+{
+ __list_del(entry->prev, entry->next);
+ INIT_LIST_HEAD(entry);
+}
+
+/**
+ * list_move - delete from one list and add as another's head
+ * @list: the entry to move
+ * @head: the head that will precede our entry
+ */
+static inline void list_move(struct list_head *list, struct list_head *head)
+{
+ __list_del(list->prev, list->next);
+ list_add(list, head);
+}
+
+/**
+ * list_move_tail - delete from one list and add as another's tail
+ * @list: the entry to move
+ * @head: the head that will follow our entry
+ */
+static inline void list_move_tail(struct list_head *list,
+ struct list_head *head)
+{
+ __list_del(list->prev, list->next);
+ list_add_tail(list, head);
+}
+
+/**
+ * list_empty - tests whether a list is empty
+ * @head: the list to test.
+ */
+static inline int list_empty(struct list_head *head)
+{
+ return head->next == head;
+}
+
+static inline void __list_splice(struct list_head *list,
+ struct list_head *head)
+{
+ struct list_head *first = list->next;
+ struct list_head *last = list->prev;
+ struct list_head *at = head->next;
+
+ first->prev = head;
+ head->next = first;
+
+ last->next = at;
+ at->prev = last;
+}
+
+/**
+ * list_splice - join two lists
+ * @list: the new list to add.
+ * @head: the place to add it in the first list.
+ */
+static inline void list_splice(struct list_head *list, struct list_head *head)
+{
+ if (!list_empty(list))
+ __list_splice(list, head);
+}
+
+/**
+ * list_splice_init - join two lists and reinitialise the emptied list.
+ * @list: the new list to add.
+ * @head: the place to add it in the first list.
+ *
+ * The list at @list is reinitialised
+ */
+static inline void list_splice_init(struct list_head *list,
+ struct list_head *head)
+{
+ if (!list_empty(list)) {
+ __list_splice(list, head);
+ INIT_LIST_HEAD(list);
+ }
+}
+
+/**
+ * list_entry - get the struct for this entry
+ * @ptr: the &struct list_head pointer.
+ * @type: the type of the struct this is embedded in.
+ * @member: the name of the list_struct within the struct.
+ */
+#define list_entry(ptr, type, member) \
+ container_of(ptr, type, member)
+
+/**
+ * list_for_each - iterate over a list
+ * @pos: the &struct list_head to use as a loop counter.
+ * @head: the head for your list.
+ */
+#define list_for_each(pos, head) \
+ for (pos = (head)->next; pos != (head); \
+ pos = pos->next)
+
+/**
+ * __list_for_each - iterate over a list
+ * @pos: the &struct list_head to use as a loop counter.
+ * @head: the head for your list.
+ *
+ * This variant differs from list_for_each() in that it's the
+ * simplest possible list iteration code.
+ * Use this for code that knows the list to be very short (empty
+ * or 1 entry) most of the time.
+ */
+#define __list_for_each(pos, head) \
+ for (pos = (head)->next; pos != (head); pos = pos->next)
+
+/**
+ * list_for_each_prev - iterate over a list backwards
+ * @pos: the &struct list_head to use as a loop counter.
+ * @head: the head for your list.
+ */
+#define list_for_each_prev(pos, head) \
+ for (pos = (head)->prev; pos != (head); pos = pos->prev)
+
+/**
+ * list_for_each_safe - iterate over a list safe against removal of list entry
+ * @pos: the &struct list_head to use as a loop counter.
+ * @n: another &struct list_head to use as temporary storage
+ * @head: the head for your list.
+ */
+#define list_for_each_safe(pos, n, head) \
+ for (pos = (head)->next, n = pos->next; pos != (head); \
+ pos = n, n = pos->next)
+
+/**
+ * list_for_each_entry - iterate over list of given type
+ * @pos: the type * to use as a loop counter.
+ * @head: the head for your list.
+ * @member: the name of the list_struct within the struct.
+ */
+#define list_for_each_entry(pos, head, member) \
+ for (pos = list_entry((head)->next, typeof(*pos), member); \
+ &pos->member != (head); \
+ pos = list_entry(pos->member.next, typeof(*pos), member))
+
+/**
+ * list_for_each_entry_reverse - iterate backwards over list of given type.
+ * @pos: the type * to use as a loop counter.
+ * @head: the head for your list.
+ * @member: the name of the list_struct within the struct.
+ */
+#define list_for_each_entry_reverse(pos, head, member) \
+ for (pos = list_entry((head)->prev, typeof(*pos), member); \
+ &pos->member != (head); \
+ pos = list_entry(pos->member.prev, typeof(*pos), member))
+
+/**
+ * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry
+ * @pos: the type * to use as a loop counter.
+ * @n: another type * to use as temporary storage
+ * @head: the head for your list.
+ * @member: the name of the list_struct within the struct.
+ */
+#define list_for_each_entry_safe(pos, n, head, member) \
+ for (pos = list_entry((head)->next, typeof(*pos), member), \
+ n = list_entry(pos->member.next, typeof(*pos), member); \
+ &pos->member != (head); \
+ pos = n, n = list_entry(n->member.next, typeof(*n), member))
+
+#endif /* _LIST_H */
diff --git a/udev/test-udev.c b/udev/test-udev.c
index d33fcf566d..dae7aaa634 100644
--- a/udev/test-udev.c
+++ b/udev/test-udev.c
@@ -109,7 +109,7 @@ int main(int argc, char *argv[])
/* override built-in sysfs device */
udevice->dev = dev;
- strlcpy(udevice->action, action, sizeof(udevice->action));
+ util_strlcpy(udevice->action, action, sizeof(udevice->action));
/* get dev_t from environment, which is needed for "remove" to work, "add" works also from sysfs */
maj = getenv("MAJOR");
diff --git a/udev/udev_db.c b/udev/udev_db.c
index 2c3a24939e..763178d50c 100644
--- a/udev/udev_db.c
+++ b/udev/udev_db.c
@@ -35,9 +35,9 @@ static size_t devpath_to_db_path(struct udev *udev, const char *devpath, char *f
size_t start;
/* translate to location of db file */
- strlcpy(filename, udev_get_dev_path(udev), len);
- start = strlcat(filename, "/.udev/db/", len);
- strlcat(filename, devpath, len);
+ util_strlcpy(filename, udev_get_dev_path(udev), len);
+ start = util_strlcat(filename, "/.udev/db/", len);
+ util_strlcat(filename, devpath, len);
return util_path_encode(&filename[start], len - start);
}
@@ -50,15 +50,15 @@ static int name_index(struct udev *udev, const char *devpath, const char *name,
int fd;
/* directory with device name */
- strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
- start = strlcat(filename, "/.udev/names/", sizeof(filename));
- strlcat(filename, name, sizeof(filename));
+ util_strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
+ start = util_strlcat(filename, "/.udev/names/", sizeof(filename));
+ util_strlcat(filename, name, sizeof(filename));
util_path_encode(&filename[start], sizeof(filename) - start);
/* entry with the devpath */
- strlcpy(device, devpath, sizeof(device));
+ util_strlcpy(device, devpath, sizeof(device));
util_path_encode(device, sizeof(device));
- strlcat(filename, "/", sizeof(filename));
- strlcat(filename, device, sizeof(filename));
+ util_strlcat(filename, "/", sizeof(filename));
+ util_strlcat(filename, device, sizeof(filename));
if (add) {
info(udev, "creating index: '%s'\n", filename);
@@ -81,9 +81,9 @@ int udev_db_get_devices_by_name(struct udev *udev, const char *name, struct list
DIR *dir;
int rc = 0;
- strlcpy(dirname, udev_get_dev_path(udev), sizeof(dirname));
- start = strlcat(dirname, "/.udev/names/", sizeof(dirname));
- strlcat(dirname, name, sizeof(dirname));
+ util_strlcpy(dirname, udev_get_dev_path(udev), sizeof(dirname));
+ start = util_strlcat(dirname, "/.udev/names/", sizeof(dirname));
+ util_strlcat(dirname, name, sizeof(dirname));
util_path_encode(&dirname[start], sizeof(dirname) - start);
dir = opendir(dirname);
@@ -104,7 +104,7 @@ int udev_db_get_devices_by_name(struct udev *udev, const char *name, struct list
if (ent->d_name[0] == '.')
continue;
- strlcpy(device, ent->d_name, sizeof(device));
+ util_strlcpy(device, ent->d_name, sizeof(device));
util_path_decode(device);
name_list_add(udev, name_list, device, 0);
rc++;
@@ -219,7 +219,7 @@ int udev_db_get_device(struct udevice *udevice, const char *devpath)
return -1;
}
dbg(udevice->udev, "db link points to '%s'\n", target);
- strlcpy(udevice->name, target, sizeof(udevice->name));
+ util_strlcpy(udevice->name, target, sizeof(udevice->name));
return 0;
}
@@ -241,7 +241,7 @@ int udev_db_get_device(struct udevice *udevice, const char *devpath)
switch(bufline[0]) {
case 'N':
- strlcpy(udevice->name, line, sizeof(udevice->name));
+ util_strlcpy(udevice->name, line, sizeof(udevice->name));
break;
case 'M':
sscanf(line, "%u:%u", &maj, &min);
@@ -298,8 +298,8 @@ int udev_db_get_all_entries(struct udev *udev, struct list_head *name_list)
char dbpath[PATH_MAX];
DIR *dir;
- strlcpy(dbpath, udev_get_dev_path(udev), sizeof(dbpath));
- strlcat(dbpath, "/.udev/db", sizeof(dbpath));
+ util_strlcpy(dbpath, udev_get_dev_path(udev), sizeof(dbpath));
+ util_strlcat(dbpath, "/.udev/db", sizeof(dbpath));
dir = opendir(dbpath);
if (dir == NULL) {
info(udev, "no udev_db available '%s': %s\n", dbpath, strerror(errno));
@@ -316,7 +316,7 @@ int udev_db_get_all_entries(struct udev *udev, struct list_head *name_list)
if (ent->d_name[0] == '.')
continue;
- strlcpy(device, ent->d_name, sizeof(device));
+ util_strlcpy(device, ent->d_name, sizeof(device));
util_path_decode(device);
name_list_add(udev, name_list, device, 1);
dbg(udev, "added '%s'\n", device);
diff --git a/udev/udev_device_event.c b/udev/udev_device_event.c
index 102ea87a48..aacd1d2bc1 100644
--- a/udev/udev_device_event.c
+++ b/udev/udev_device_event.c
@@ -31,7 +31,6 @@
#include "udev.h"
#include "udev_rules.h"
-
static void kernel_log(struct ifreq ifr)
{
int klog;
@@ -69,8 +68,8 @@ static int rename_netif(struct udevice *udevice)
}
memset(&ifr, 0x00, sizeof(struct ifreq));
- strlcpy(ifr.ifr_name, udevice->dev->kernel, IFNAMSIZ);
- strlcpy(ifr.ifr_newname, udevice->name, IFNAMSIZ);
+ util_strlcpy(ifr.ifr_name, udevice->dev->kernel, IFNAMSIZ);
+ util_strlcpy(ifr.ifr_newname, udevice->name, IFNAMSIZ);
retval = ioctl(sk, SIOCSIFNAME, &ifr);
if (retval == 0)
kernel_log(ifr);
@@ -79,22 +78,24 @@ static int rename_netif(struct udevice *udevice)
/* see if the destination interface name already exists */
if (errno != EEXIST) {
- err(udevice->udev, "error changing netif name %s to %s: %s\n", ifr.ifr_name, ifr.ifr_newname, strerror(errno));
+ err(udevice->udev, "error changing netif name %s to %s: %s\n",
+ ifr.ifr_name, ifr.ifr_newname, strerror(errno));
goto exit;
}
/* free our own name, another process may wait for us */
- strlcpy(ifr.ifr_newname, udevice->dev->kernel, IFNAMSIZ);
- strlcat(ifr.ifr_newname, "_rename", IFNAMSIZ);
+ util_strlcpy(ifr.ifr_newname, udevice->dev->kernel, IFNAMSIZ);
+ util_strlcat(ifr.ifr_newname, "_rename", IFNAMSIZ);
retval = ioctl(sk, SIOCSIFNAME, &ifr);
if (retval != 0) {
- err(udevice->udev, "error changing netif name %s to %s: %s\n", ifr.ifr_name, ifr.ifr_newname, strerror(errno));
+ err(udevice->udev, "error changing netif name %s to %s: %s\n",
+ ifr.ifr_name, ifr.ifr_newname, strerror(errno));
goto exit;
}
/* wait 30 seconds for our target to become available */
- strlcpy(ifr.ifr_name, ifr.ifr_newname, IFNAMSIZ);
- strlcpy(ifr.ifr_newname, udevice->name, IFNAMSIZ);
+ util_strlcpy(ifr.ifr_name, ifr.ifr_newname, IFNAMSIZ);
+ util_strlcpy(ifr.ifr_newname, udevice->name, IFNAMSIZ);
loop = 30 * 20;
while (loop--) {
retval = ioctl(sk, SIOCSIFNAME, &ifr);
@@ -108,7 +109,8 @@ static int rename_netif(struct udevice *udevice)
ifr.ifr_name, ifr.ifr_newname, strerror(errno));
break;
}
- dbg(udevice->udev, "wait for netif '%s' to become free, loop=%i\n", udevice->name, (30 * 20) - loop);
+ dbg(udevice->udev, "wait for netif '%s' to become free, loop=%i\n",
+ udevice->name, (30 * 20) - loop);
usleep(1000 * 1000 / 20);
}
}
@@ -199,11 +201,11 @@ int udev_device_event(struct udev_rules *rules, struct udevice *udevice)
setenv("INTERFACE_OLD", udevice->dev->kernel, 1);
/* now change the devpath, because the kernel device name has changed */
- strlcpy(devpath, udevice->dev->devpath, sizeof(devpath));
+ util_strlcpy(devpath, udevice->dev->devpath, sizeof(devpath));
pos = strrchr(devpath, '/');
if (pos != NULL) {
pos[1] = '\0';
- strlcat(devpath, udevice->name, sizeof(devpath));
+ util_strlcat(devpath, udevice->name, sizeof(devpath));
sysfs_device_set_values(udevice->udev, udevice->dev, devpath, NULL, NULL);
setenv("DEVPATH", udevice->dev->devpath, 1);
setenv("INTERFACE", udevice->name, 1);
@@ -226,7 +228,7 @@ int udev_device_event(struct udev_rules *rules, struct udevice *udevice)
} else {
dbg(udevice->udev, "'%s' not found in database, using kernel name '%s'\n",
udevice->dev->devpath, udevice->dev->kernel);
- strlcpy(udevice->name, udevice->dev->kernel, sizeof(udevice->name));
+ util_strlcpy(udevice->name, udevice->dev->kernel, sizeof(udevice->name));
}
udev_rules_get_run(rules, udevice);
diff --git a/udev/udev_node.c b/udev/udev_node.c
index 80c4f0a5f3..0319b2f875 100644
--- a/udev/udev_node.c
+++ b/udev/udev_node.c
@@ -51,8 +51,8 @@ int udev_node_mknod(struct udevice *udevice, const char *file, dev_t devt, mode_
udev_selinux_lsetfilecon(udevice->udev, file, mode);
} else {
info(udevice->udev, "atomically replace existing file '%s'\n", file);
- strlcpy(file_tmp, file, sizeof(file_tmp));
- strlcat(file_tmp, TMP_FILE_EXT, sizeof(file_tmp));
+ util_strlcpy(file_tmp, file, sizeof(file_tmp));
+ util_strlcat(file_tmp, TMP_FILE_EXT, sizeof(file_tmp));
unlink(file_tmp);
udev_selinux_setfscreatecon(udevice->udev, file_tmp, mode);
err = mknod(file_tmp, mode, devt);
@@ -119,10 +119,10 @@ static int node_symlink(struct udevice *udevice, const char *node, const char *s
}
while (slink[i] != '\0') {
if (slink[i] == '/')
- strlcat(target, "../", sizeof(target));
+ util_strlcat(target, "../", sizeof(target));
i++;
}
- strlcat(target, &node[tail], sizeof(target));
+ util_strlcat(target, &node[tail], sizeof(target));
/* preserve link with correct target, do not replace node of other device */
if (lstat(slink, &stats) == 0) {
@@ -163,8 +163,8 @@ static int node_symlink(struct udevice *udevice, const char *node, const char *s
}
info(udevice->udev, "atomically replace '%s'\n", slink);
- strlcpy(slink_tmp, slink, sizeof(slink_tmp));
- strlcat(slink_tmp, TMP_FILE_EXT, sizeof(slink_tmp));
+ util_strlcpy(slink_tmp, slink, sizeof(slink_tmp));
+ util_strlcat(slink_tmp, TMP_FILE_EXT, sizeof(slink_tmp));
unlink(slink_tmp);
udev_selinux_setfscreatecon(udevice->udev, slink, S_IFLNK);
retval = symlink(target, slink_tmp);
@@ -195,9 +195,9 @@ static int update_link(struct udevice *udevice, const char *name)
int priority = 0;
int rc = 0;
- strlcpy(slink, udev_get_dev_path(udevice->udev), sizeof(slink));
- strlcat(slink, "/", sizeof(slink));
- strlcat(slink, name, sizeof(slink));
+ util_strlcpy(slink, udev_get_dev_path(udevice->udev), sizeof(slink));
+ util_strlcat(slink, "/", sizeof(slink));
+ util_strlcat(slink, name, sizeof(slink));
count = udev_db_get_devices_by_name(udevice->udev, name, &name_list);
info(udevice->udev, "found %i devices with name '%s'\n", count, name);
@@ -224,7 +224,7 @@ static int update_link(struct udevice *udevice, const char *name)
info(udevice->udev, "'%s' is our device node, database inconsistent, skip link update\n", udevice->name);
} else if (target[0] == '\0' || udevice->link_priority >= priority) {
priority = udevice->link_priority;
- strlcpy(target, udevice->name, sizeof(target));
+ util_strlcpy(target, udevice->name, sizeof(target));
}
continue;
}
@@ -241,7 +241,7 @@ static int update_link(struct udevice *udevice, const char *name)
udevice_db->dev->devpath, udevice_db->link_priority, priority);
if (target[0] == '\0' || udevice_db->link_priority > priority) {
priority = udevice_db->link_priority;
- strlcpy(target, udevice_db->name, sizeof(target));
+ util_strlcpy(target, udevice_db->name, sizeof(target));
}
}
}
@@ -256,9 +256,9 @@ static int update_link(struct udevice *udevice, const char *name)
}
/* create symlink to the target with the highest priority */
- strlcpy(node, udev_get_dev_path(udevice->udev), sizeof(node));
- strlcat(node, "/", sizeof(node));
- strlcat(node, target, sizeof(node));
+ util_strlcpy(node, udev_get_dev_path(udevice->udev), sizeof(node));
+ util_strlcat(node, "/", sizeof(node));
+ util_strlcat(node, target, sizeof(node));
info(udevice->udev, "'%s' with target '%s' has the highest priority %i, create it\n", name, target, priority);
if (!udevice->test_run) {
create_path(udevice->udev, slink);
@@ -276,10 +276,10 @@ void udev_node_update_symlinks(struct udevice *udevice, struct udevice *udevice_
list_for_each_entry(name_loop, &udevice->symlink_list, node) {
info(udevice->udev, "update symlink '%s' of '%s'\n", name_loop->name, udevice->dev->devpath);
update_link(udevice, name_loop->name);
- strlcat(symlinks, udev_get_dev_path(udevice->udev), sizeof(symlinks));
- strlcat(symlinks, "/", sizeof(symlinks));
- strlcat(symlinks, name_loop->name, sizeof(symlinks));
- strlcat(symlinks, " ", sizeof(symlinks));
+ util_strlcat(symlinks, udev_get_dev_path(udevice->udev), sizeof(symlinks));
+ util_strlcat(symlinks, "/", sizeof(symlinks));
+ util_strlcat(symlinks, name_loop->name, sizeof(symlinks));
+ util_strlcat(symlinks, " ", sizeof(symlinks));
}
/* export symlinks to environment */
@@ -327,9 +327,9 @@ int udev_node_add(struct udevice *udevice)
int i;
int retval = 0;
- strlcpy(filename, udev_get_dev_path(udevice->udev), sizeof(filename));
- strlcat(filename, "/", sizeof(filename));
- strlcat(filename, udevice->name, sizeof(filename));
+ util_strlcpy(filename, udev_get_dev_path(udevice->udev), sizeof(filename));
+ util_strlcat(filename, "/", sizeof(filename));
+ util_strlcat(filename, udevice->name, sizeof(filename));
create_path(udevice->udev, filename);
if (strcmp(udevice->owner, "root") == 0)
@@ -406,9 +406,9 @@ int udev_node_remove(struct udevice *udevice)
int retval = 0;
int num;
- strlcpy(filename, udev_get_dev_path(udevice->udev), sizeof(filename));
- strlcat(filename, "/", sizeof(filename));
- strlcat(filename, udevice->name, sizeof(filename));
+ util_strlcpy(filename, udev_get_dev_path(udevice->udev), sizeof(filename));
+ util_strlcat(filename, "/", sizeof(filename));
+ util_strlcat(filename, udevice->name, sizeof(filename));
if (stat(filename, &stats) != 0) {
info(udevice->udev, "device node '%s' not found\n", filename);
return 0;
diff --git a/udev/udev_rules.c b/udev/udev_rules.c
index a56ed4e176..72c859348e 100644
--- a/udev/udev_rules.c
+++ b/udev/udev_rules.c
@@ -131,7 +131,7 @@ static int run_program(struct udev *udev, const char *command, const char *subsy
int retval = 0;
/* build argv from comand */
- strlcpy(arg, command, sizeof(arg));
+ util_strlcpy(arg, command, sizeof(arg));
i = 0;
if (strchr(arg, ' ') != NULL) {
char *pos = arg;
@@ -172,8 +172,8 @@ static int run_program(struct udev *udev, const char *command, const char *subsy
/* allow programs in /lib/udev called without the path */
if (strchr(argv[0], '/') == NULL) {
- strlcpy(program, UDEV_PREFIX "/lib/udev/", sizeof(program));
- strlcat(program, argv[0], sizeof(program));
+ util_strlcpy(program, UDEV_PREFIX "/lib/udev/", sizeof(program));
+ util_strlcat(program, argv[0], sizeof(program));
argv[0] = program;
}
@@ -432,7 +432,7 @@ static int import_parent_into_env(struct udevice *udevice, const char *filter)
char name[NAME_SIZE];
char *pos;
- strlcpy(name, name_loop->name, sizeof(name));
+ util_strlcpy(name, name_loop->name, sizeof(name));
pos = strchr(name, '=');
if (pos) {
pos[0] = '\0';
@@ -472,22 +472,22 @@ static int pass_env_to_socket(struct udev *udev, const char *sockpath, const cha
saddr.sun_family = AF_LOCAL;
if (sockpath[0] == '@') {
/* abstract namespace socket requested */
- strlcpy(&saddr.sun_path[1], &sockpath[1], sizeof(saddr.sun_path)-1);
+ util_strlcpy(&saddr.sun_path[1], &sockpath[1], sizeof(saddr.sun_path)-1);
saddrlen = offsetof(struct sockaddr_un, sun_path) + 1 + strlen(&saddr.sun_path[1]);
} else if (stat(sockpath, &stats) == 0 && S_ISSOCK(stats.st_mode)) {
/* existing socket file */
- strlcpy(saddr.sun_path, sockpath, sizeof(saddr.sun_path));
+ util_strlcpy(saddr.sun_path, sockpath, sizeof(saddr.sun_path));
saddrlen = offsetof(struct sockaddr_un, sun_path) + strlen(saddr.sun_path);
} else {
/* no socket file, assume abstract namespace socket */
- strlcpy(&saddr.sun_path[1], sockpath, sizeof(saddr.sun_path)-1);
+ util_strlcpy(&saddr.sun_path[1], sockpath, sizeof(saddr.sun_path)-1);
saddrlen = offsetof(struct sockaddr_un, sun_path) + 1 + strlen(&saddr.sun_path[1]);
}
bufpos = snprintf(buf, sizeof(buf), "%s@%s", action, devpath);
bufpos++;
for (i = 0; environ[i] != NULL && bufpos < (sizeof(buf)); i++) {
- bufpos += strlcpy(&buf[bufpos], environ[i], sizeof(buf) - bufpos);
+ bufpos += util_strlcpy(&buf[bufpos], environ[i], sizeof(buf) - bufpos);
bufpos++;
}
if (bufpos > sizeof(buf))
@@ -514,7 +514,7 @@ int udev_rules_run(struct udevice *udevice)
} else {
char program[PATH_SIZE];
- strlcpy(program, name_loop->name, sizeof(program));
+ util_strlcpy(program, name_loop->name, sizeof(program));
udev_rules_apply_format(udevice, program, sizeof(program));
if (run_program(udevice->udev, program, udevice->dev->subsystem, NULL, 0, NULL) != 0)
if (!name_loop->ignore_error)
@@ -535,12 +535,12 @@ static int wait_for_file(struct udevice *udevice, const char *file, int timeout)
/* a relative path is a device attribute */
if (file[0] != '/') {
- strlcpy(devicepath, udev_get_sys_path(udevice->udev), sizeof(devicepath));
- strlcat(devicepath, udevice->dev->devpath, sizeof(devicepath));
+ util_strlcpy(devicepath, udev_get_sys_path(udevice->udev), sizeof(devicepath));
+ util_strlcat(devicepath, udevice->dev->devpath, sizeof(devicepath));
- strlcpy(filepath, devicepath, sizeof(filepath));
- strlcat(filepath, "/", sizeof(filepath));
- strlcat(filepath, file, sizeof(filepath));
+ util_strlcpy(filepath, devicepath, sizeof(filepath));
+ util_strlcat(filepath, "/", sizeof(filepath));
+ util_strlcat(filepath, file, sizeof(filepath));
file = filepath;
}
@@ -580,7 +580,7 @@ static int attr_get_by_subsys_id(struct udev *udev, const char *attrstr, char *d
goto out;
attrib = &attrib[1];
- strlcpy(subsys, &attrstr[1], sizeof(subsys));
+ util_strlcpy(subsys, &attrstr[1], sizeof(subsys));
pos = strchr(subsys, ']');
if (pos == NULL)
goto out;
@@ -614,7 +614,7 @@ static int attr_subst_subdir(char *attr, size_t len)
DIR *dir;
pos[1] = '\0';
- strlcpy(str, &pos[2], sizeof(str));
+ util_strlcpy(str, &pos[2], sizeof(str));
dir = opendir(attr);
if (dir != NULL) {
struct dirent *dent;
@@ -624,8 +624,8 @@ static int attr_subst_subdir(char *attr, size_t len)
if (dent->d_name[0] == '.')
continue;
- strlcat(attr, dent->d_name, len);
- strlcat(attr, str, len);
+ util_strlcat(attr, dent->d_name, len);
+ util_strlcat(attr, str, len);
if (stat(attr, &stats) == 0) {
found = 1;
break;
@@ -635,7 +635,7 @@ static int attr_subst_subdir(char *attr, size_t len)
closedir(dir);
}
if (!found)
- strlcat(attr, str, len);
+ util_strlcat(attr, str, len);
}
return found;
@@ -704,8 +704,8 @@ void udev_rules_apply_format(struct udevice *udevice, char *string, size_t maxsi
if (head[1] == '\0')
break;
if (head[1] == '$') {
- strlcpy(temp, head+2, sizeof(temp));
- strlcpy(head+1, temp, maxsize);
+ util_strlcpy(temp, head+2, sizeof(temp));
+ util_strlcpy(head+1, temp, maxsize);
head++;
continue;
}
@@ -725,8 +725,8 @@ void udev_rules_apply_format(struct udevice *udevice, char *string, size_t maxsi
if (head[1] == '\0')
break;
if (head[1] == '%') {
- strlcpy(temp, head+2, sizeof(temp));
- strlcpy(head+1, temp, maxsize);
+ util_strlcpy(temp, head+2, sizeof(temp));
+ util_strlcpy(head+1, temp, maxsize);
head++;
continue;
}
@@ -749,42 +749,42 @@ void udev_rules_apply_format(struct udevice *udevice, char *string, size_t maxsi
break;
found:
attr = get_format_attribute(udevice->udev, &tail);
- strlcpy(temp, tail, sizeof(temp));
+ util_strlcpy(temp, tail, sizeof(temp));
dbg(udevice->udev, "format=%i, string='%s', tail='%s'\n", type ,string, tail);
switch (type) {
case SUBST_DEVPATH:
- strlcat(string, udevice->dev->devpath, maxsize);
+ util_strlcat(string, udevice->dev->devpath, maxsize);
dbg(udevice->udev, "substitute devpath '%s'\n", udevice->dev->devpath);
break;
case SUBST_KERNEL:
- strlcat(string, udevice->dev->kernel, maxsize);
+ util_strlcat(string, udevice->dev->kernel, maxsize);
dbg(udevice->udev, "substitute kernel name '%s'\n", udevice->dev->kernel);
break;
case SUBST_KERNEL_NUMBER:
- strlcat(string, udevice->dev->kernel_number, maxsize);
+ util_strlcat(string, udevice->dev->kernel_number, maxsize);
dbg(udevice->udev, "substitute kernel number '%s'\n", udevice->dev->kernel_number);
break;
case SUBST_ID:
if (udevice->dev_parent != NULL) {
- strlcat(string, udevice->dev_parent->kernel, maxsize);
+ util_strlcat(string, udevice->dev_parent->kernel, maxsize);
dbg(udevice->udev, "substitute id '%s'\n", udevice->dev_parent->kernel);
}
break;
case SUBST_DRIVER:
if (udevice->dev_parent != NULL) {
- strlcat(string, udevice->dev_parent->driver, maxsize);
+ util_strlcat(string, udevice->dev_parent->driver, maxsize);
dbg(udevice->udev, "substitute driver '%s'\n", udevice->dev_parent->driver);
}
break;
case SUBST_MAJOR:
sprintf(temp2, "%d", major(udevice->devt));
- strlcat(string, temp2, maxsize);
+ util_strlcat(string, temp2, maxsize);
dbg(udevice->udev, "substitute major number '%s'\n", temp2);
break;
case SUBST_MINOR:
sprintf(temp2, "%d", minor(udevice->devt));
- strlcat(string, temp2, maxsize);
+ util_strlcat(string, temp2, maxsize);
dbg(udevice->udev, "substitute minor number '%s'\n", temp2);
break;
case SUBST_RESULT:
@@ -807,17 +807,17 @@ found:
err(udevice->udev, "requested part of result string not found\n");
break;
}
- strlcpy(temp2, cpos, sizeof(temp2));
+ util_strlcpy(temp2, cpos, sizeof(temp2));
/* %{2+}c copies the whole string from the second part on */
if (rest[0] != '+') {
cpos = strchr(temp2, ' ');
if (cpos)
cpos[0] = '\0';
}
- strlcat(string, temp2, maxsize);
+ util_strlcat(string, temp2, maxsize);
dbg(udevice->udev, "substitute part of result string '%s'\n", temp2);
} else {
- strlcat(string, udevice->program_result, maxsize);
+ util_strlcat(string, udevice->program_result, maxsize);
dbg(udevice->udev, "substitute result string '%s'\n", udevice->program_result);
}
break;
@@ -858,7 +858,7 @@ found:
break;
/* strip trailing whitespace, and replace unwanted characters */
- size = strlcpy(temp2, value, sizeof(temp2));
+ size = util_strlcpy(temp2, value, sizeof(temp2));
if (size >= sizeof(temp2))
size = sizeof(temp2)-1;
while (size > 0 && isspace(temp2[size-1]))
@@ -866,7 +866,7 @@ found:
count = util_replace_chars(temp2, ALLOWED_CHARS_INPUT);
if (count > 0)
info(udevice->udev, "%i character(s) replaced\n" , count);
- strlcat(string, temp2, maxsize);
+ util_strlcat(string, temp2, maxsize);
dbg(udevice->udev, "substitute sysfs value '%s'\n", temp2);
}
break;
@@ -883,7 +883,7 @@ found:
if (udev_parent != NULL) {
/* lookup the name in the udev_db with the DEVPATH of the parent */
if (udev_db_get_device(udev_parent, dev_parent->devpath) == 0) {
- strlcat(string, udev_parent->name, maxsize);
+ util_strlcat(string, udev_parent->name, maxsize);
dbg(udevice->udev, "substitute parent node name'%s'\n", udev_parent->name);
} else
dbg(udevice->udev, "parent not found in database\n");
@@ -900,15 +900,15 @@ found:
udevice->tmp_node[sizeof(udevice->tmp_node)-1] = '\0';
udev_node_mknod(udevice, udevice->tmp_node, udevice->devt, 0600, 0, 0);
}
- strlcat(string, udevice->tmp_node, maxsize);
+ util_strlcat(string, udevice->tmp_node, maxsize);
dbg(udevice->udev, "substitute temporary device node name '%s'\n", udevice->tmp_node);
break;
case SUBST_NAME:
if (udevice->name[0] == '\0') {
- strlcat(string, udevice->dev->kernel, maxsize);
+ util_strlcat(string, udevice->dev->kernel, maxsize);
dbg(udevice->udev, "substitute udevice->kernel '%s'\n", udevice->name);
} else {
- strlcat(string, udevice->name, maxsize);
+ util_strlcat(string, udevice->name, maxsize);
dbg(udevice->udev, "substitute udevice->name '%s'\n", udevice->name);
}
break;
@@ -918,19 +918,19 @@ found:
char symlinks[PATH_SIZE] = "";
list_for_each_entry(name_loop, &udevice->symlink_list, node) {
- strlcat(symlinks, name_loop->name, sizeof(symlinks));
- strlcat(symlinks, " ", sizeof(symlinks));
+ util_strlcat(symlinks, name_loop->name, sizeof(symlinks));
+ util_strlcat(symlinks, " ", sizeof(symlinks));
}
util_remove_trailing_chars(symlinks, ' ');
- strlcat(string, symlinks, maxsize);
+ util_strlcat(string, symlinks, maxsize);
}
break;
case SUBST_ROOT:
- strlcat(string, udev_get_dev_path(udevice->udev), maxsize);
+ util_strlcat(string, udev_get_dev_path(udevice->udev), maxsize);
dbg(udevice->udev, "substitute udev_root '%s'\n", udev_get_dev_path(udevice->udev));
break;
case SUBST_SYS:
- strlcat(string, udev_get_sys_path(udevice->udev), maxsize);
+ util_strlcat(string, udev_get_sys_path(udevice->udev), maxsize);
dbg(udevice->udev, "substitute sys_path '%s'\n", udev_get_sys_path(udevice->udev));
break;
case SUBST_ENV:
@@ -944,7 +944,7 @@ found:
break;
}
dbg(udevice->udev, "substitute env '%s=%s'\n", attr, pos);
- strlcat(string, pos, maxsize);
+ util_strlcat(string, pos, maxsize);
break;
default:
err(udevice->udev, "unknown substitution type=%i\n", type);
@@ -955,7 +955,7 @@ found:
head[len] = '\0';
dbg(udevice->udev, "truncate to %i chars, subtitution string becomes '%s'\n", len, head);
}
- strlcat(string, temp, maxsize);
+ util_strlcat(string, temp, maxsize);
}
}
@@ -981,7 +981,7 @@ static int match_key(struct udev *udev, const char *key_name, struct udev_rule *
return 0;
/* look for a matching string, parts are separated by '|' */
- strlcpy(value, rule->buf + key->val_off, sizeof(value));
+ util_strlcpy(value, rule->buf + key->val_off, sizeof(value));
key_value = value;
dbg(udev, "key %s value='%s'\n", key_name, key_value);
while (key_value) {
@@ -1076,24 +1076,24 @@ static int match_rule(struct udevice *udevice, struct udev_rule *rule)
struct stat statbuf;
int match;
- strlcpy(filename, key_val(rule, &rule->test), sizeof(filename));
+ util_strlcpy(filename, key_val(rule, &rule->test), sizeof(filename));
udev_rules_apply_format(udevice, filename, sizeof(filename));
if (attr_get_by_subsys_id(udevice->udev, filename, devpath, sizeof(devpath), &attr)) {
- strlcpy(filename, udev_get_sys_path(udevice->udev), sizeof(filename));
- strlcat(filename, devpath, sizeof(filename));
+ util_strlcpy(filename, udev_get_sys_path(udevice->udev), sizeof(filename));
+ util_strlcat(filename, devpath, sizeof(filename));
if (attr != NULL) {
- strlcat(filename, "/", sizeof(filename));
- strlcat(filename, attr, sizeof(filename));
+ util_strlcat(filename, "/", sizeof(filename));
+ util_strlcat(filename, attr, sizeof(filename));
}
} else if (filename[0] != '/') {
char tmp[PATH_SIZE];
- strlcpy(tmp, udev_get_sys_path(udevice->udev), sizeof(tmp));
- strlcat(tmp, udevice->dev->devpath, sizeof(tmp));
- strlcat(tmp, "/", sizeof(tmp));
- strlcat(tmp, filename, sizeof(tmp));
- strlcpy(filename, tmp, sizeof(filename));
+ util_strlcpy(tmp, udev_get_sys_path(udevice->udev), sizeof(tmp));
+ util_strlcat(tmp, udevice->dev->devpath, sizeof(tmp));
+ util_strlcat(tmp, "/", sizeof(tmp));
+ util_strlcat(tmp, filename, sizeof(tmp));
+ util_strlcpy(filename, tmp, sizeof(filename));
}
attr_subst_subdir(filename, sizeof(filename));
@@ -1117,7 +1117,7 @@ static int match_rule(struct udevice *udevice, struct udev_rule *rule)
char filename[PATH_SIZE];
int found;
- strlcpy(filename, key_val(rule, &rule->wait_for), sizeof(filename));
+ util_strlcpy(filename, key_val(rule, &rule->wait_for), sizeof(filename));
udev_rules_apply_format(udevice, filename, sizeof(filename));
found = (wait_for_file(udevice, filename, 10) == 0);
if (!found && (rule->wait_for.operation != KEY_OP_NOMATCH))
@@ -1148,7 +1148,7 @@ static int match_rule(struct udevice *udevice, struct udev_rule *rule)
value = sysfs_attr_get_value(udevice->udev, udevice->dev->devpath, key_name);
if (value == NULL)
goto nomatch;
- strlcpy(val, value, sizeof(val));
+ util_strlcpy(val, value, sizeof(val));
/* strip trailing whitespace of value, if not asked to match for it */
len = strlen(key_value);
@@ -1196,7 +1196,7 @@ static int match_rule(struct udevice *udevice, struct udev_rule *rule)
value = sysfs_attr_get_value(udevice->udev, udevice->dev->devpath, key_name);
if (value == NULL)
goto try_parent;
- strlcpy(val, value, sizeof(val));
+ util_strlcpy(val, value, sizeof(val));
/* strip trailing whitespace of value, if not asked to match for it */
len = strlen(key_value);
@@ -1229,7 +1229,7 @@ try_parent:
char program[PATH_SIZE];
char result[PATH_SIZE];
- strlcpy(program, key_val(rule, &rule->program), sizeof(program));
+ util_strlcpy(program, key_val(rule, &rule->program), sizeof(program));
udev_rules_apply_format(udevice, program, sizeof(program));
if (run_program(udevice->udev, program, udevice->dev->subsystem, result, sizeof(result), NULL) != 0) {
dbg(udevice->udev, "PROGRAM is false\n");
@@ -1248,7 +1248,7 @@ try_parent:
info(udevice->udev, "%i character(s) replaced\n" , count);
}
dbg(udevice->udev, "result is '%s'\n", result);
- strlcpy(udevice->program_result, result, sizeof(udevice->program_result));
+ util_strlcpy(udevice->program_result, result, sizeof(udevice->program_result));
dbg(udevice->udev, "PROGRAM returned successful\n");
if (rule->program.operation == KEY_OP_NOMATCH)
goto nomatch;
@@ -1265,7 +1265,7 @@ try_parent:
char import[PATH_SIZE];
int rc = -1;
- strlcpy(import, key_val(rule, &rule->import), sizeof(import));
+ util_strlcpy(import, key_val(rule, &rule->import), sizeof(import));
udev_rules_apply_format(udevice, import, sizeof(import));
dbg(udevice->udev, "check for IMPORT import='%s'\n", import);
if (rule->import_type == IMPORT_PROGRAM) {
@@ -1296,7 +1296,7 @@ try_parent:
const char *value = key_val(rule, &pair->key);
/* make sure we don't write to the same string we possibly read from */
- strlcpy(temp_value, value, sizeof(temp_value));
+ util_strlcpy(temp_value, value, sizeof(temp_value));
udev_rules_apply_format(udevice, temp_value, NAME_SIZE);
if (temp_value[0] == '\0') {
@@ -1329,23 +1329,23 @@ try_parent:
if (attr_get_by_subsys_id(udevice->udev, key_name, devpath, sizeof(devpath), &attrib)) {
if (attrib != NULL) {
- strlcpy(attr, udev_get_sys_path(udevice->udev), sizeof(attr));
- strlcat(attr, devpath, sizeof(attr));
- strlcat(attr, "/", sizeof(attr));
- strlcat(attr, attrib, sizeof(attr));
+ util_strlcpy(attr, udev_get_sys_path(udevice->udev), sizeof(attr));
+ util_strlcat(attr, devpath, sizeof(attr));
+ util_strlcat(attr, "/", sizeof(attr));
+ util_strlcat(attr, attrib, sizeof(attr));
}
}
if (attr[0] == '\0') {
- strlcpy(attr, udev_get_sys_path(udevice->udev), sizeof(attr));
- strlcat(attr, udevice->dev->devpath, sizeof(attr));
- strlcat(attr, "/", sizeof(attr));
- strlcat(attr, key_name, sizeof(attr));
+ util_strlcpy(attr, udev_get_sys_path(udevice->udev), sizeof(attr));
+ util_strlcat(attr, udevice->dev->devpath, sizeof(attr));
+ util_strlcat(attr, "/", sizeof(attr));
+ util_strlcat(attr, key_name, sizeof(attr));
}
attr_subst_subdir(attr, sizeof(attr));
- strlcpy(value, key_val(rule, &pair->key), sizeof(value));
+ util_strlcpy(value, key_val(rule, &pair->key), sizeof(value));
udev_rules_apply_format(udevice, value, sizeof(value));
info(udevice->udev, "writing '%s' to sysfs file '%s'\n", value, attr);
f = fopen(attr, "w");
@@ -1420,7 +1420,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
if (rule->mode.operation == KEY_OP_ASSIGN_FINAL)
udevice->mode_final = 1;
char buf[20];
- strlcpy(buf, key_val(rule, &rule->mode), sizeof(buf));
+ util_strlcpy(buf, key_val(rule, &rule->mode), sizeof(buf));
udev_rules_apply_format(udevice, buf, sizeof(buf));
udevice->mode = strtol(buf, NULL, 8);
dbg(udevice->udev, "applied mode=%#o to '%s'\n", udevice->mode, udevice->dev->kernel);
@@ -1428,14 +1428,14 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
if (!udevice->owner_final && rule->owner.operation != KEY_OP_UNSET) {
if (rule->owner.operation == KEY_OP_ASSIGN_FINAL)
udevice->owner_final = 1;
- strlcpy(udevice->owner, key_val(rule, &rule->owner), sizeof(udevice->owner));
+ util_strlcpy(udevice->owner, key_val(rule, &rule->owner), sizeof(udevice->owner));
udev_rules_apply_format(udevice, udevice->owner, sizeof(udevice->owner));
dbg(udevice->udev, "applied owner='%s' to '%s'\n", udevice->owner, udevice->dev->kernel);
}
if (!udevice->group_final && rule->group.operation != KEY_OP_UNSET) {
if (rule->group.operation == KEY_OP_ASSIGN_FINAL)
udevice->group_final = 1;
- strlcpy(udevice->group, key_val(rule, &rule->group), sizeof(udevice->group));
+ util_strlcpy(udevice->group, key_val(rule, &rule->group), sizeof(udevice->group));
udev_rules_apply_format(udevice, udevice->group, sizeof(udevice->group));
dbg(udevice->udev, "applied group='%s' to '%s'\n", udevice->group, udevice->dev->kernel);
}
@@ -1457,7 +1457,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
name_list_cleanup(udevice->udev, &udevice->symlink_list);
}
/* allow multiple symlinks separated by spaces */
- strlcpy(temp, key_val(rule, &rule->symlink), sizeof(temp));
+ util_strlcpy(temp, key_val(rule, &rule->symlink), sizeof(temp));
udev_rules_apply_format(udevice, temp, sizeof(temp));
if (rule->string_escape == ESCAPE_UNSET ||
rule->string_escape == ESCAPE_REPLACE) {
@@ -1492,7 +1492,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
int count;
name_set = 1;
- strlcpy(udevice->name, key_val(rule, &rule->name), sizeof(udevice->name));
+ util_strlcpy(udevice->name, key_val(rule, &rule->name), sizeof(udevice->name));
udev_rules_apply_format(udevice, udevice->name, sizeof(udevice->name));
if (rule->string_escape == ESCAPE_UNSET ||
rule->string_escape == ESCAPE_REPLACE) {
@@ -1536,7 +1536,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
if (!name_set) {
info(udevice->udev, "no node name set, will use kernel name '%s'\n", udevice->dev->kernel);
- strlcpy(udevice->name, udevice->dev->kernel, sizeof(udevice->name));
+ util_strlcpy(udevice->name, udevice->dev->kernel, sizeof(udevice->name));
}
if (udevice->tmp_node[0] != '\0') {
diff --git a/udev/udev_rules_parse.c b/udev/udev_rules_parse.c
index 685260f12c..1c5f36d491 100644
--- a/udev/udev_rules_parse.c
+++ b/udev/udev_rules_parse.c
@@ -209,7 +209,7 @@ static int add_rule_key(struct udev_rule *rule, struct key *key,
key->operation = operation;
key->val_off = rule->bufsize;
- strlcpy(rule->buf + rule->bufsize, value, val_len+1);
+ util_strlcpy(rule->buf + rule->bufsize, value, val_len+1);
rule->bufsize += val_len+1;
return 0;
@@ -229,7 +229,7 @@ static int add_rule_key_pair(struct udev_rules *rules, struct udev_rule *rule, s
/* add the key-name of the pair */
pairs->keys[pairs->count].key_name_off = rule->bufsize;
- strlcpy(rule->buf + rule->bufsize, key, key_len+1);
+ util_strlcpy(rule->buf + rule->bufsize, key, key_len+1);
rule->bufsize += key_len+1;
pairs->count++;
@@ -448,15 +448,15 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena
char *pos;
struct stat statbuf;
- strlcpy(file, value, sizeof(file));
+ util_strlcpy(file, value, sizeof(file));
pos = strchr(file, ' ');
if (pos)
pos[0] = '\0';
/* allow programs in /lib/udev called without the path */
if (strchr(file, '/') == NULL) {
- strlcpy(file, UDEV_PREFIX "/lib/udev/", sizeof(file));
- strlcat(file, value, sizeof(file));
+ util_strlcpy(file, UDEV_PREFIX "/lib/udev/", sizeof(file));
+ util_strlcat(file, value, sizeof(file));
pos = strchr(file, ' ');
if (pos)
pos[0] = '\0';
@@ -750,8 +750,8 @@ int udev_rules_init(struct udev *udev, struct udev_rules *rules, int resolve_nam
add_matching_files(udev, &name_list, SYSCONFDIR "/udev/rules.d", ".rules");
/* read dynamic/temporary rules */
- strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
- strlcat(filename, "/.udev/rules.d", sizeof(filename));
+ util_strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
+ util_strlcat(filename, "/.udev/rules.d", sizeof(filename));
if (stat(filename, &statbuf) != 0) {
create_path(udev, filename);
udev_selinux_setfscreatecon(udev, filename, S_IFDIR|0755);
diff --git a/udev/udev_sysdeps.c b/udev/udev_sysdeps.c
deleted file mode 100644
index 73065f7674..0000000000
--- a/udev/udev_sysdeps.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2005-2008 Kay Sievers <kay.sievers@vrfy.org>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-
-#include "udev_sysdeps.h"
-
-#ifndef HAVE_STRLCPY
-size_t strlcpy(char *dst, const char *src, size_t size)
-{
- size_t bytes = 0;
- char *q = dst;
- const char *p = src;
- char ch;
-
- while ((ch = *p++)) {
- if (bytes+1 < size)
- *q++ = ch;
- bytes++;
- }
-
- /* If size == 0 there is no space for a final null... */
- if (size)
- *q = '\0';
- return bytes;
-}
-
-size_t strlcat(char *dst, const char *src, size_t size)
-{
- size_t bytes = 0;
- char *q = dst;
- const char *p = src;
- char ch;
-
- while (bytes < size && *q) {
- q++;
- bytes++;
- }
- if (bytes == size)
- return (bytes + strlen(src));
-
- while ((ch = *p++)) {
- if (bytes+1 < size)
- *q++ = ch;
- bytes++;
- }
-
- *q = '\0';
- return bytes;
-}
-#endif /* HAVE_STRLCPY */
diff --git a/udev/udev_sysdeps.h b/udev/udev_sysdeps.h
index 15387dcebd..eaeab86f6b 100644
--- a/udev/udev_sysdeps.h
+++ b/udev/udev_sysdeps.h
@@ -46,11 +46,5 @@ static inline int inotify_add_watch(int fd, const char *name, uint32_t mask)
#define IN_MOVE 0
#define IN_CLOSE_WRITE 0
-#endif
-
-#ifndef HAVE_STRLCPY
-extern size_t strlcpy(char *dst, const char *src, size_t size);
-extern size_t strlcat(char *dst, const char *src, size_t size);
-#endif
-
+#endif /* HAVE_INOTIFY */
#endif
diff --git a/udev/udev_sysfs.c b/udev/udev_sysfs.c
index 6b9f9dac3a..0d4a971188 100644
--- a/udev/udev_sysfs.c
+++ b/udev/udev_sysfs.c
@@ -71,17 +71,17 @@ void sysfs_device_set_values(struct udev *udev,
{
char *pos;
- strlcpy(dev->devpath, devpath, sizeof(dev->devpath));
+ util_strlcpy(dev->devpath, devpath, sizeof(dev->devpath));
if (subsystem != NULL)
- strlcpy(dev->subsystem, subsystem, sizeof(dev->subsystem));
+ util_strlcpy(dev->subsystem, subsystem, sizeof(dev->subsystem));
if (driver != NULL)
- strlcpy(dev->driver, driver, sizeof(dev->driver));
+ util_strlcpy(dev->driver, driver, sizeof(dev->driver));
/* set kernel name */
pos = strrchr(dev->devpath, '/');
if (pos == NULL)
return;
- strlcpy(dev->kernel, &pos[1], sizeof(dev->kernel));
+ util_strlcpy(dev->kernel, &pos[1], sizeof(dev->kernel));
dbg(udev, "kernel='%s'\n", dev->kernel);
/* some devices have '!' in their name, change that to '/' */
@@ -96,7 +96,7 @@ void sysfs_device_set_values(struct udev *udev,
pos = &dev->kernel[strlen(dev->kernel)];
while (isdigit(pos[-1]))
pos--;
- strlcpy(dev->kernel_number, pos, sizeof(dev->kernel_number));
+ util_strlcpy(dev->kernel_number, pos, sizeof(dev->kernel_number));
dbg(udev, "kernel_number='%s'\n", dev->kernel_number);
}
@@ -108,8 +108,8 @@ int sysfs_resolve_link(struct udev *udev, char *devpath, size_t size)
int i;
int back;
- strlcpy(link_path, udev_get_sys_path(udev), sizeof(link_path));
- strlcat(link_path, devpath, sizeof(link_path));
+ util_strlcpy(link_path, udev_get_sys_path(udev), sizeof(link_path));
+ util_strlcat(link_path, devpath, sizeof(link_path));
len = readlink(link_path, link_target, sizeof(link_target));
if (len <= 0)
return -1;
@@ -127,8 +127,8 @@ int sysfs_resolve_link(struct udev *udev, char *devpath, size_t size)
pos[0] = '\0';
}
dbg(udev, "after moving back '%s'\n", devpath);
- strlcat(devpath, "/", size);
- strlcat(devpath, &link_target[back * 3], size);
+ util_strlcat(devpath, "/", size);
+ util_strlcat(devpath, &link_target[back * 3], size);
return 0;
}
@@ -155,7 +155,7 @@ struct sysfs_device *sysfs_device_get(struct udev *udev, const char *devpath)
return NULL;
dbg(udev, "open '%s'\n", devpath);
- strlcpy(devpath_real, devpath, sizeof(devpath_real));
+ util_strlcpy(devpath_real, devpath, sizeof(devpath_real));
util_remove_trailing_chars(devpath_real, '/');
if (devpath[0] == '\0' )
return NULL;
@@ -169,8 +169,8 @@ struct sysfs_device *sysfs_device_get(struct udev *udev, const char *devpath)
}
/* if we got a link, resolve it to the real device */
- strlcpy(path, udev_get_sys_path(udev), sizeof(path));
- strlcat(path, devpath_real, sizeof(path));
+ util_strlcpy(path, udev_get_sys_path(udev), sizeof(path));
+ util_strlcat(path, devpath_real, sizeof(path));
if (lstat(path, &statbuf) != 0) {
dbg(udev, "stat '%s' failed: %s\n", path, strerror(errno));
return NULL;
@@ -198,9 +198,9 @@ struct sysfs_device *sysfs_device_get(struct udev *udev, const char *devpath)
sysfs_device_set_values(udev, dev, devpath_real, NULL, NULL);
/* get subsystem name */
- strlcpy(link_path, udev_get_sys_path(udev), sizeof(link_path));
- strlcat(link_path, dev->devpath, sizeof(link_path));
- strlcat(link_path, "/subsystem", sizeof(link_path));
+ util_strlcpy(link_path, udev_get_sys_path(udev), sizeof(link_path));
+ util_strlcat(link_path, dev->devpath, sizeof(link_path));
+ util_strlcat(link_path, "/subsystem", sizeof(link_path));
len = readlink(link_path, link_target, sizeof(link_target));
if (len > 0) {
/* get subsystem from "subsystem" link */
@@ -208,36 +208,36 @@ struct sysfs_device *sysfs_device_get(struct udev *udev, const char *devpath)
dbg(udev, "subsystem link '%s' points to '%s'\n", link_path, link_target);
pos = strrchr(link_target, '/');
if (pos != NULL)
- strlcpy(dev->subsystem, &pos[1], sizeof(dev->subsystem));
+ util_strlcpy(dev->subsystem, &pos[1], sizeof(dev->subsystem));
} else if (strstr(dev->devpath, "/drivers/") != NULL) {
- strlcpy(dev->subsystem, "drivers", sizeof(dev->subsystem));
+ util_strlcpy(dev->subsystem, "drivers", sizeof(dev->subsystem));
} else if (strncmp(dev->devpath, "/module/", 8) == 0) {
- strlcpy(dev->subsystem, "module", sizeof(dev->subsystem));
+ util_strlcpy(dev->subsystem, "module", sizeof(dev->subsystem));
} else if (strncmp(dev->devpath, "/subsystem/", 11) == 0) {
pos = strrchr(dev->devpath, '/');
if (pos == &dev->devpath[10])
- strlcpy(dev->subsystem, "subsystem", sizeof(dev->subsystem));
+ util_strlcpy(dev->subsystem, "subsystem", sizeof(dev->subsystem));
} else if (strncmp(dev->devpath, "/class/", 7) == 0) {
pos = strrchr(dev->devpath, '/');
if (pos == &dev->devpath[6])
- strlcpy(dev->subsystem, "subsystem", sizeof(dev->subsystem));
+ util_strlcpy(dev->subsystem, "subsystem", sizeof(dev->subsystem));
} else if (strncmp(dev->devpath, "/bus/", 5) == 0) {
pos = strrchr(dev->devpath, '/');
if (pos == &dev->devpath[4])
- strlcpy(dev->subsystem, "subsystem", sizeof(dev->subsystem));
+ util_strlcpy(dev->subsystem, "subsystem", sizeof(dev->subsystem));
}
/* get driver name */
- strlcpy(link_path, udev_get_sys_path(udev), sizeof(link_path));
- strlcat(link_path, dev->devpath, sizeof(link_path));
- strlcat(link_path, "/driver", sizeof(link_path));
+ util_strlcpy(link_path, udev_get_sys_path(udev), sizeof(link_path));
+ util_strlcat(link_path, dev->devpath, sizeof(link_path));
+ util_strlcat(link_path, "/driver", sizeof(link_path));
len = readlink(link_path, link_target, sizeof(link_target));
if (len > 0) {
link_target[len] = '\0';
dbg(udev, "driver link '%s' points to '%s'\n", link_path, link_target);
pos = strrchr(link_target, '/');
if (pos != NULL)
- strlcpy(dev->driver, &pos[1], sizeof(dev->driver));
+ util_strlcpy(dev->driver, &pos[1], sizeof(dev->driver));
}
dbg(udev, "add to cache 'devpath=%s', subsystem='%s', driver='%s'\n", dev->devpath, dev->subsystem, dev->driver);
@@ -257,7 +257,7 @@ struct sysfs_device *sysfs_device_get_parent(struct udev *udev, struct sysfs_dev
if (dev->parent != NULL)
return dev->parent;
- strlcpy(parent_devpath, dev->devpath, sizeof(parent_devpath));
+ util_strlcpy(parent_devpath, dev->devpath, sizeof(parent_devpath));
dbg(udev, "'%s'\n", parent_devpath);
/* strip last element */
@@ -288,8 +288,8 @@ struct sysfs_device *sysfs_device_get_parent(struct udev *udev, struct sysfs_dev
return dev->parent;
device_link:
- strlcpy(parent_devpath, dev->devpath, sizeof(parent_devpath));
- strlcat(parent_devpath, "/device", sizeof(parent_devpath));
+ util_strlcpy(parent_devpath, dev->devpath, sizeof(parent_devpath));
+ util_strlcat(parent_devpath, "/device", sizeof(parent_devpath));
if (sysfs_resolve_link(udev, parent_devpath, sizeof(parent_devpath)) != 0)
return NULL;
@@ -324,13 +324,13 @@ char *sysfs_attr_get_value(struct udev *udev, const char *devpath, const char *a
size_t sysfs_len;
dbg(udev, "open '%s'/'%s'\n", devpath, attr_name);
- sysfs_len = strlcpy(path_full, udev_get_sys_path(udev), sizeof(path_full));
+ sysfs_len = util_strlcpy(path_full, udev_get_sys_path(udev), sizeof(path_full));
if(sysfs_len >= sizeof(path_full))
sysfs_len = sizeof(path_full) - 1;
path = &path_full[sysfs_len];
- strlcat(path_full, devpath, sizeof(path_full));
- strlcat(path_full, "/", sizeof(path_full));
- strlcat(path_full, attr_name, sizeof(path_full));
+ util_strlcat(path_full, devpath, sizeof(path_full));
+ util_strlcat(path_full, "/", sizeof(path_full));
+ util_strlcat(path_full, attr_name, sizeof(path_full));
/* look for attribute in cache */
list_for_each_entry(attr_loop, &attr_list, node) {
@@ -346,7 +346,7 @@ char *sysfs_attr_get_value(struct udev *udev, const char *devpath, const char *a
if (attr == NULL)
return NULL;
memset(attr, 0x00, sizeof(struct sysfs_attr));
- strlcpy(attr->path, path, sizeof(attr->path));
+ util_strlcpy(attr->path, path, sizeof(attr->path));
dbg(udev, "add to cache '%s'\n", path_full);
list_add(&attr->node, &attr_list);
@@ -367,7 +367,7 @@ char *sysfs_attr_get_value(struct udev *udev, const char *devpath, const char *a
pos = strrchr(link_target, '/');
if (pos != NULL) {
dbg(udev, "cache '%s' with link value '%s'\n", path_full, value);
- strlcpy(attr->value_local, &pos[1], sizeof(attr->value_local));
+ util_strlcpy(attr->value_local, &pos[1], sizeof(attr->value_local));
attr->value = attr->value_local;
}
}
@@ -399,7 +399,7 @@ char *sysfs_attr_get_value(struct udev *udev, const char *devpath, const char *a
value[size] = '\0';
util_remove_trailing_chars(value, '\n');
dbg(udev, "cache '%s' with attribute value '%s'\n", path_full, value);
- strlcpy(attr->value_local, value, sizeof(attr->value_local));
+ util_strlcpy(attr->value_local, value, sizeof(attr->value_local));
attr->value = attr->value_local;
out:
@@ -413,30 +413,30 @@ int sysfs_lookup_devpath_by_subsys_id(struct udev *udev, char *devpath_full, siz
char *path;
struct stat statbuf;
- sysfs_len = strlcpy(path_full, udev_get_sys_path(udev), sizeof(path_full));
+ sysfs_len = util_strlcpy(path_full, udev_get_sys_path(udev), sizeof(path_full));
path = &path_full[sysfs_len];
if (strcmp(subsystem, "subsystem") == 0) {
- strlcpy(path, "/subsystem/", sizeof(path_full) - sysfs_len);
- strlcat(path, id, sizeof(path_full) - sysfs_len);
+ util_strlcpy(path, "/subsystem/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, id, sizeof(path_full) - sysfs_len);
if (stat(path_full, &statbuf) == 0)
goto found;
- strlcpy(path, "/bus/", sizeof(path_full) - sysfs_len);
- strlcat(path, id, sizeof(path_full) - sysfs_len);
+ util_strlcpy(path, "/bus/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, id, sizeof(path_full) - sysfs_len);
if (stat(path_full, &statbuf) == 0)
goto found;
goto out;
- strlcpy(path, "/class/", sizeof(path_full) - sysfs_len);
- strlcat(path, id, sizeof(path_full) - sysfs_len);
+ util_strlcpy(path, "/class/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, id, sizeof(path_full) - sysfs_len);
if (stat(path_full, &statbuf) == 0)
goto found;
}
if (strcmp(subsystem, "module") == 0) {
- strlcpy(path, "/module/", sizeof(path_full) - sysfs_len);
- strlcat(path, id, sizeof(path_full) - sysfs_len);
+ util_strlcpy(path, "/module/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, id, sizeof(path_full) - sysfs_len);
if (stat(path_full, &statbuf) == 0)
goto found;
goto out;
@@ -446,46 +446,46 @@ int sysfs_lookup_devpath_by_subsys_id(struct udev *udev, char *devpath_full, siz
char subsys[NAME_SIZE];
char *driver;
- strlcpy(subsys, id, sizeof(subsys));
+ util_strlcpy(subsys, id, sizeof(subsys));
driver = strchr(subsys, ':');
if (driver != NULL) {
driver[0] = '\0';
driver = &driver[1];
- strlcpy(path, "/subsystem/", sizeof(path_full) - sysfs_len);
- strlcat(path, subsys, sizeof(path_full) - sysfs_len);
- strlcat(path, "/drivers/", sizeof(path_full) - sysfs_len);
- strlcat(path, driver, sizeof(path_full) - sysfs_len);
+ util_strlcpy(path, "/subsystem/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, subsys, sizeof(path_full) - sysfs_len);
+ util_strlcat(path, "/drivers/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, driver, sizeof(path_full) - sysfs_len);
if (stat(path_full, &statbuf) == 0)
goto found;
- strlcpy(path, "/bus/", sizeof(path_full) - sysfs_len);
- strlcat(path, subsys, sizeof(path_full) - sysfs_len);
- strlcat(path, "/drivers/", sizeof(path_full) - sysfs_len);
- strlcat(path, driver, sizeof(path_full) - sysfs_len);
+ util_strlcpy(path, "/bus/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, subsys, sizeof(path_full) - sysfs_len);
+ util_strlcat(path, "/drivers/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, driver, sizeof(path_full) - sysfs_len);
if (stat(path_full, &statbuf) == 0)
goto found;
}
goto out;
}
- strlcpy(path, "/subsystem/", sizeof(path_full) - sysfs_len);
- strlcat(path, subsystem, sizeof(path_full) - sysfs_len);
- strlcat(path, "/devices/", sizeof(path_full) - sysfs_len);
- strlcat(path, id, sizeof(path_full) - sysfs_len);
+ util_strlcpy(path, "/subsystem/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, subsystem, sizeof(path_full) - sysfs_len);
+ util_strlcat(path, "/devices/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, id, sizeof(path_full) - sysfs_len);
if (stat(path_full, &statbuf) == 0)
goto found;
- strlcpy(path, "/bus/", sizeof(path_full) - sysfs_len);
- strlcat(path, subsystem, sizeof(path_full) - sysfs_len);
- strlcat(path, "/devices/", sizeof(path_full) - sysfs_len);
- strlcat(path, id, sizeof(path_full) - sysfs_len);
+ util_strlcpy(path, "/bus/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, subsystem, sizeof(path_full) - sysfs_len);
+ util_strlcat(path, "/devices/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, id, sizeof(path_full) - sysfs_len);
if (stat(path_full, &statbuf) == 0)
goto found;
- strlcpy(path, "/class/", sizeof(path_full) - sysfs_len);
- strlcat(path, subsystem, sizeof(path_full) - sysfs_len);
- strlcat(path, "/", sizeof(path_full) - sysfs_len);
- strlcat(path, id, sizeof(path_full) - sysfs_len);
+ util_strlcpy(path, "/class/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, subsystem, sizeof(path_full) - sysfs_len);
+ util_strlcat(path, "/", sizeof(path_full) - sysfs_len);
+ util_strlcat(path, id, sizeof(path_full) - sysfs_len);
if (stat(path_full, &statbuf) == 0)
goto found;
out:
@@ -493,6 +493,6 @@ out:
found:
if (S_ISLNK(statbuf.st_mode))
sysfs_resolve_link(udev, path, sizeof(path_full) - sysfs_len);
- strlcpy(devpath_full, path, len);
+ util_strlcpy(devpath_full, path, len);
return 1;
}
diff --git a/udev/udev_utils.c b/udev/udev_utils.c
index 669e4f3419..c051b20abd 100644
--- a/udev/udev_utils.c
+++ b/udev/udev_utils.c
@@ -55,7 +55,7 @@ struct name_entry *name_list_add(struct udev *udev, struct list_head *name_list,
if (name_new == NULL)
return NULL;
memset(name_new, 0x00, sizeof(struct name_entry));
- strlcpy(name_new->name, name, sizeof(name_new->name));
+ util_strlcpy(name_new->name, name, sizeof(name_new->name));
dbg(udev, "adding '%s'\n", name_new->name);
list_add_tail(&name_new->node, &name_loop->node);
diff --git a/udev/udev_utils_file.c b/udev/udev_utils_file.c
index 19b0f22ba8..abe17eb300 100644
--- a/udev/udev_utils_file.c
+++ b/udev/udev_utils_file.c
@@ -36,7 +36,7 @@ int create_path(struct udev *udev, const char *path)
struct stat stats;
int ret;
- strlcpy(p, path, sizeof(p));
+ util_strlcpy(p, path, sizeof(p));
pos = strrchr(p, '/');
if (pos == p || pos == NULL)
return 0;
diff --git a/udev/udevadm-info.c b/udev/udevadm-info.c
index 402fa76e8d..172d5638c6 100644
--- a/udev/udevadm-info.c
+++ b/udev/udevadm-info.c
@@ -38,8 +38,8 @@ static void print_all_attributes(struct udev *udev, const char *devpath, const c
DIR *dir;
struct dirent *dent;
- strlcpy(path, udev_get_sys_path(udev), sizeof(path));
- strlcat(path, devpath, sizeof(path));
+ util_strlcpy(path, udev_get_sys_path(udev), sizeof(path));
+ util_strlcat(path, devpath, sizeof(path));
dir = opendir(path);
if (dir != NULL) {
@@ -58,9 +58,9 @@ static void print_all_attributes(struct udev *udev, const char *devpath, const c
if (strcmp(dent->d_name, "dev") == 0)
continue;
- strlcpy(filename, path, sizeof(filename));
- strlcat(filename, "/", sizeof(filename));
- strlcat(filename, dent->d_name, sizeof(filename));
+ util_strlcpy(filename, path, sizeof(filename));
+ util_strlcat(filename, "/", sizeof(filename));
+ util_strlcat(filename, dent->d_name, sizeof(filename));
if (lstat(filename, &statbuf) != 0)
continue;
if (S_ISLNK(statbuf.st_mode))
@@ -69,7 +69,7 @@ static void print_all_attributes(struct udev *udev, const char *devpath, const c
attr_value = sysfs_attr_get_value(udev, devpath, dent->d_name);
if (attr_value == NULL)
continue;
- len = strlcpy(value, attr_value, sizeof(value));
+ len = util_strlcpy(value, attr_value, sizeof(value));
if(len >= sizeof(value))
len = sizeof(value) - 1;
dbg(udev, "attr '%s'='%s'(%zi)\n", dent->d_name, value, len);
@@ -191,9 +191,9 @@ static int lookup_device_by_name(struct udev *udev, struct udevice **udevice, co
info(udev, "found db entry '%s'\n", device->name);
/* make sure, we don't get a link of a different device */
- strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
- strlcat(filename, "/", sizeof(filename));
- strlcat(filename, name, sizeof(filename));
+ util_strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
+ util_strlcat(filename, "/", sizeof(filename));
+ util_strlcat(filename, name, sizeof(filename));
if (stat(filename, &statbuf) != 0)
goto next;
if (major(udevice_loop->devt) > 0 && udevice_loop->devt != statbuf.st_rdev) {
@@ -286,18 +286,18 @@ int udevadm_info(struct udev *udev, int argc, char *argv[])
case 'n':
/* remove /dev if given */
if (strncmp(optarg, udev_get_dev_path(udev), strlen(udev_get_dev_path(udev))) == 0)
- strlcpy(name, &optarg[strlen(udev_get_dev_path(udev))+1], sizeof(name));
+ util_strlcpy(name, &optarg[strlen(udev_get_dev_path(udev))+1], sizeof(name));
else
- strlcpy(name, optarg, sizeof(name));
+ util_strlcpy(name, optarg, sizeof(name));
util_remove_trailing_chars(name, '/');
dbg(udev, "name: %s\n", name);
break;
case 'p':
/* remove /sys if given */
if (strncmp(optarg, udev_get_sys_path(udev), strlen(udev_get_sys_path(udev))) == 0)
- strlcpy(path, &optarg[strlen(udev_get_sys_path(udev))], sizeof(path));
+ util_strlcpy(path, &optarg[strlen(udev_get_sys_path(udev))], sizeof(path));
else
- strlcpy(path, optarg, sizeof(path));
+ util_strlcpy(path, optarg, sizeof(path));
util_remove_trailing_chars(path, '/');
/* possibly resolve to real devpath */
@@ -306,16 +306,16 @@ int udevadm_info(struct udev *udev, int argc, char *argv[])
char *pos;
/* also check if the parent is a link */
- strlcpy(temp, path, sizeof(temp));
+ util_strlcpy(temp, path, sizeof(temp));
pos = strrchr(temp, '/');
if (pos != 0) {
char tail[PATH_SIZE];
- strlcpy(tail, pos, sizeof(tail));
+ util_strlcpy(tail, pos, sizeof(tail));
pos[0] = '\0';
if (sysfs_resolve_link(udev, temp, sizeof(temp)) == 0) {
- strlcpy(path, temp, sizeof(path));
- strlcat(path, tail, sizeof(path));
+ util_strlcpy(path, temp, sizeof(path));
+ util_strlcat(path, tail, sizeof(path));
}
}
}
@@ -353,7 +353,7 @@ int udevadm_info(struct udev *udev, int argc, char *argv[])
break;
case 'd':
action = ACTION_DEVICE_ID_FILE;
- strlcpy(name, optarg, sizeof(name));
+ util_strlcpy(name, optarg, sizeof(name));
break;
case 'a':
action = ACTION_ATTRIBUTE_WALK;
diff --git a/udev/udevadm-settle.c b/udev/udevadm-settle.c
index c6c95a1ddc..ed67bbbdfb 100644
--- a/udev/udevadm-settle.c
+++ b/udev/udevadm-settle.c
@@ -107,8 +107,8 @@ int udevadm_settle(struct udev *udev, int argc, char *argv[])
}
}
- strlcpy(queuename, udev_get_dev_path(udev), sizeof(queuename));
- strlcat(queuename, "/.udev/queue", sizeof(queuename));
+ util_strlcpy(queuename, udev_get_dev_path(udev), sizeof(queuename));
+ util_strlcat(queuename, "/.udev/queue", sizeof(queuename));
loop = timeout * LOOP_PER_SECOND;
while (loop--) {
@@ -129,8 +129,8 @@ int udevadm_settle(struct udev *udev, int argc, char *argv[])
}
/* read current udev seqnum */
- strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
- strlcat(filename, "/.udev/uevent_seqnum", sizeof(filename));
+ util_strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
+ util_strlcat(filename, "/.udev/uevent_seqnum", sizeof(filename));
fd = open(filename, O_RDONLY);
if (fd < 0)
goto exit;
@@ -143,8 +143,8 @@ int udevadm_settle(struct udev *udev, int argc, char *argv[])
info(udev, "udev seqnum = %llu\n", seq_udev);
/* read current kernel seqnum */
- strlcpy(filename, udev_get_sys_path(udev), sizeof(filename));
- strlcat(filename, "/kernel/uevent_seqnum", sizeof(filename));
+ util_strlcpy(filename, udev_get_sys_path(udev), sizeof(filename));
+ util_strlcat(filename, "/kernel/uevent_seqnum", sizeof(filename));
fd = open(filename, O_RDONLY);
if (fd < 0)
goto exit;
diff --git a/udev/udevadm-test.c b/udev/udevadm-test.c
index 994a354960..b6fccf34e7 100644
--- a/udev/udevadm-test.c
+++ b/udev/udevadm-test.c
@@ -42,9 +42,9 @@ static int import_uevent_var(struct udev *udev, const char *devpath)
int rc = -1;
/* read uevent file */
- strlcpy(path, udev_get_sys_path(udev), sizeof(path));
- strlcat(path, devpath, sizeof(path));
- strlcat(path, "/uevent", sizeof(path));
+ util_strlcpy(path, udev_get_sys_path(udev), sizeof(path));
+ util_strlcat(path, devpath, sizeof(path));
+ util_strlcat(path, "/uevent", sizeof(path));
fd = open(path, O_RDONLY);
if (fd < 0)
goto out;
@@ -163,11 +163,11 @@ int udevadm_test(struct udev *udev, int argc, char *argv[])
}
if (subsystem != NULL)
- strlcpy(dev->subsystem, subsystem, sizeof(dev->subsystem));
+ util_strlcpy(dev->subsystem, subsystem, sizeof(dev->subsystem));
/* override built-in sysfs device */
udevice->dev = dev;
- strlcpy(udevice->action, action, sizeof(udevice->action));
+ util_strlcpy(udevice->action, action, sizeof(udevice->action));
udevice->devt = udev_device_get_devt(udevice);
/* simulate node creation with test flag */
@@ -191,7 +191,7 @@ int udevadm_test(struct udev *udev, int argc, char *argv[])
list_for_each_entry(name_loop, &udevice->run_list, node) {
char program[PATH_SIZE];
- strlcpy(program, name_loop->name, sizeof(program));
+ util_strlcpy(program, name_loop->name, sizeof(program));
udev_rules_apply_format(udevice, program, sizeof(program));
info(udev, "run: '%s'\n", program);
}
diff --git a/udev/udevadm-trigger.c b/udev/udevadm-trigger.c
index 6d01040e01..04fb9bcbcc 100644
--- a/udev/udevadm-trigger.c
+++ b/udev/udevadm-trigger.c
@@ -71,14 +71,14 @@ static int device_list_insert(struct udev *udev, const char *path)
dbg(udev, "add '%s'\n" , path);
/* we only have a device, if we have an uevent file */
- strlcpy(filename, path, sizeof(filename));
- strlcat(filename, "/uevent", sizeof(filename));
+ util_strlcpy(filename, path, sizeof(filename));
+ util_strlcat(filename, "/uevent", sizeof(filename));
if (stat(filename, &statbuf) < 0)
return -1;
if (!(statbuf.st_mode & S_IWUSR))
return -1;
- strlcpy(devpath, &path[strlen(udev_get_sys_path(udev))], sizeof(devpath));
+ util_strlcpy(devpath, &path[strlen(udev_get_sys_path(udev))], sizeof(devpath));
/* resolve possible link to real target */
if (lstat(path, &statbuf) < 0)
@@ -96,9 +96,9 @@ static void trigger_uevent(struct udev *udev, const char *devpath, const char *a
char filename[PATH_SIZE];
int fd;
- strlcpy(filename, udev_get_sys_path(udev), sizeof(filename));
- strlcat(filename, devpath, sizeof(filename));
- strlcat(filename, "/uevent", sizeof(filename));
+ util_strlcpy(filename, udev_get_sys_path(udev), sizeof(filename));
+ util_strlcat(filename, devpath, sizeof(filename));
+ util_strlcat(filename, "/uevent", sizeof(filename));
if (verbose)
printf("%s\n", devpath);
@@ -156,9 +156,9 @@ static int pass_to_socket(struct udev *udev, const char *devpath, const char *ac
bufpos++;
/* add subsystem */
- strlcpy(path, udev_get_sys_path(udev), sizeof(path));
- strlcat(path, devpath, sizeof(path));
- strlcat(path, "/subsystem", sizeof(path));
+ util_strlcpy(path, udev_get_sys_path(udev), sizeof(path));
+ util_strlcat(path, devpath, sizeof(path));
+ util_strlcat(path, "/subsystem", sizeof(path));
len = readlink(path, link_target, sizeof(link_target));
if (len > 0) {
char *pos;
@@ -174,10 +174,10 @@ static int pass_to_socket(struct udev *udev, const char *devpath, const char *ac
/* add symlinks and node name */
path[0] = '\0';
list_for_each_entry(name_loop, &udevice->symlink_list, node) {
- strlcat(path, udev_get_dev_path(udev), sizeof(path));
- strlcat(path, "/", sizeof(path));
- strlcat(path, name_loop->name, sizeof(path));
- strlcat(path, " ", sizeof(path));
+ util_strlcat(path, udev_get_dev_path(udev), sizeof(path));
+ util_strlcat(path, "/", sizeof(path));
+ util_strlcat(path, name_loop->name, sizeof(path));
+ util_strlcat(path, " ", sizeof(path));
}
util_remove_trailing_chars(path, ' ');
if (path[0] != '\0') {
@@ -185,17 +185,17 @@ static int pass_to_socket(struct udev *udev, const char *devpath, const char *ac
bufpos++;
}
if (udevice->name[0] != '\0') {
- strlcpy(path, udev_get_dev_path(udev), sizeof(path));
- strlcat(path, "/", sizeof(path));
- strlcat(path, udevice->name, sizeof(path));
+ util_strlcpy(path, udev_get_dev_path(udev), sizeof(path));
+ util_strlcat(path, "/", sizeof(path));
+ util_strlcat(path, udevice->name, sizeof(path));
bufpos += snprintf(&buf[bufpos], sizeof(buf)-1, "DEVNAME=%s", path);
bufpos++;
}
/* add keys from device "uevent" file */
- strlcpy(path, udev_get_sys_path(udev), sizeof(path));
- strlcat(path, devpath, sizeof(path));
- strlcat(path, "/uevent", sizeof(path));
+ util_strlcpy(path, udev_get_sys_path(udev), sizeof(path));
+ util_strlcat(path, devpath, sizeof(path));
+ util_strlcat(path, "/uevent", sizeof(path));
fd = open(path, O_RDONLY);
if (fd >= 0) {
char value[4096];
@@ -214,7 +214,7 @@ static int pass_to_socket(struct udev *udev, const char *devpath, const char *ac
if (next == NULL)
break;
next[0] = '\0';
- bufpos += strlcpy(&buf[bufpos], key, sizeof(buf) - bufpos-1);
+ bufpos += util_strlcpy(&buf[bufpos], key, sizeof(buf) - bufpos-1);
bufpos++;
key = &next[1];
}
@@ -223,7 +223,7 @@ static int pass_to_socket(struct udev *udev, const char *devpath, const char *ac
/* add keys from database */
list_for_each_entry(name_loop, &udevice->env_list, node) {
- bufpos += strlcpy(&buf[bufpos], name_loop->name, sizeof(buf) - bufpos-1);
+ bufpos += util_strlcpy(&buf[bufpos], name_loop->name, sizeof(buf) - bufpos-1);
bufpos++;
}
if (bufpos > sizeof(buf))
@@ -289,7 +289,7 @@ static int attr_match(const char *path, const char *attr_value)
char file[PATH_SIZE];
char *match_value;
- strlcpy(attr, attr_value, sizeof(attr));
+ util_strlcpy(attr, attr_value, sizeof(attr));
/* separate attr and match value */
match_value = strchr(attr, '=');
@@ -298,9 +298,9 @@ static int attr_match(const char *path, const char *attr_value)
match_value = &match_value[1];
}
- strlcpy(file, path, sizeof(file));
- strlcat(file, "/", sizeof(file));
- strlcat(file, attr, sizeof(file));
+ util_strlcpy(file, path, sizeof(file));
+ util_strlcat(file, "/", sizeof(file));
+ util_strlcat(file, attr, sizeof(file));
if (match_value != NULL) {
/* match file content */
@@ -369,9 +369,9 @@ static void scan_subsystem(struct udev *udev, const char *subsys, enum scan_type
else
return;
- strlcpy(base, udev_get_sys_path(udev), sizeof(base));
- strlcat(base, "/", sizeof(base));
- strlcat(base, subsys, sizeof(base));
+ util_strlcpy(base, udev_get_sys_path(udev), sizeof(base));
+ util_strlcat(base, "/", sizeof(base));
+ util_strlcat(base, subsys, sizeof(base));
dir = opendir(base);
if (dir != NULL) {
@@ -387,9 +387,9 @@ static void scan_subsystem(struct udev *udev, const char *subsys, enum scan_type
if (subsystem_filtered(dent->d_name))
continue;
- strlcpy(dirname, base, sizeof(dirname));
- strlcat(dirname, "/", sizeof(dirname));
- strlcat(dirname, dent->d_name, sizeof(dirname));
+ util_strlcpy(dirname, base, sizeof(dirname));
+ util_strlcat(dirname, "/", sizeof(dirname));
+ util_strlcat(dirname, dent->d_name, sizeof(dirname));
if (scan == SCAN_SUBSYSTEM) {
if (attr_filtered(dirname))
@@ -400,7 +400,7 @@ static void scan_subsystem(struct udev *udev, const char *subsys, enum scan_type
continue;
}
- strlcat(dirname, subdir, sizeof(dirname));
+ util_strlcat(dirname, subdir, sizeof(dirname));
/* look for devices/drivers */
dir2 = opendir(dirname);
@@ -411,9 +411,9 @@ static void scan_subsystem(struct udev *udev, const char *subsys, enum scan_type
if (dent2->d_name[0] == '.')
continue;
- strlcpy(dirname2, dirname, sizeof(dirname2));
- strlcat(dirname2, "/", sizeof(dirname2));
- strlcat(dirname2, dent2->d_name, sizeof(dirname2));
+ util_strlcpy(dirname2, dirname, sizeof(dirname2));
+ util_strlcat(dirname2, "/", sizeof(dirname2));
+ util_strlcat(dirname2, dent2->d_name, sizeof(dirname2));
if (attr_filtered(dirname2))
continue;
device_list_insert(udev, dirname2);
@@ -434,8 +434,8 @@ static void scan_block(struct udev *udev)
if (subsystem_filtered("block"))
return;
- strlcpy(base, udev_get_sys_path(udev), sizeof(base));
- strlcat(base, "/block", sizeof(base));
+ util_strlcpy(base, udev_get_sys_path(udev), sizeof(base));
+ util_strlcat(base, "/block", sizeof(base));
dir = opendir(base);
if (dir != NULL) {
@@ -447,9 +447,9 @@ static void scan_block(struct udev *udev)
if (dent->d_name[0] == '.')
continue;
- strlcpy(dirname, base, sizeof(dirname));
- strlcat(dirname, "/", sizeof(dirname));
- strlcat(dirname, dent->d_name, sizeof(dirname));
+ util_strlcpy(dirname, base, sizeof(dirname));
+ util_strlcat(dirname, "/", sizeof(dirname));
+ util_strlcat(dirname, dent->d_name, sizeof(dirname));
if (attr_filtered(dirname))
continue;
if (device_list_insert(udev, dirname) != 0)
@@ -467,9 +467,9 @@ static void scan_block(struct udev *udev)
if (!strcmp(dent2->d_name,"device"))
continue;
- strlcpy(dirname2, dirname, sizeof(dirname2));
- strlcat(dirname2, "/", sizeof(dirname2));
- strlcat(dirname2, dent2->d_name, sizeof(dirname2));
+ util_strlcpy(dirname2, dirname, sizeof(dirname2));
+ util_strlcat(dirname2, "/", sizeof(dirname2));
+ util_strlcat(dirname2, dent2->d_name, sizeof(dirname2));
if (attr_filtered(dirname2))
continue;
device_list_insert(udev, dirname2);
@@ -487,8 +487,8 @@ static void scan_class(struct udev *udev)
DIR *dir;
struct dirent *dent;
- strlcpy(base, udev_get_sys_path(udev), sizeof(base));
- strlcat(base, "/class", sizeof(base));
+ util_strlcpy(base, udev_get_sys_path(udev), sizeof(base));
+ util_strlcat(base, "/class", sizeof(base));
dir = opendir(base);
if (dir != NULL) {
@@ -503,9 +503,9 @@ static void scan_class(struct udev *udev)
if (subsystem_filtered(dent->d_name))
continue;
- strlcpy(dirname, base, sizeof(dirname));
- strlcat(dirname, "/", sizeof(dirname));
- strlcat(dirname, dent->d_name, sizeof(dirname));
+ util_strlcpy(dirname, base, sizeof(dirname));
+ util_strlcat(dirname, "/", sizeof(dirname));
+ util_strlcat(dirname, dent->d_name, sizeof(dirname));
dir2 = opendir(dirname);
if (dir2 != NULL) {
for (dent2 = readdir(dir2); dent2 != NULL; dent2 = readdir(dir2)) {
@@ -517,9 +517,9 @@ static void scan_class(struct udev *udev)
if (!strcmp(dent2->d_name, "device"))
continue;
- strlcpy(dirname2, dirname, sizeof(dirname2));
- strlcat(dirname2, "/", sizeof(dirname2));
- strlcat(dirname2, dent2->d_name, sizeof(dirname2));
+ util_strlcpy(dirname2, dirname, sizeof(dirname2));
+ util_strlcat(dirname2, "/", sizeof(dirname2));
+ util_strlcat(dirname2, dent2->d_name, sizeof(dirname2));
if (attr_filtered(dirname2))
continue;
device_list_insert(udev, dirname2);
@@ -537,8 +537,8 @@ static void scan_failed(struct udev *udev)
DIR *dir;
struct dirent *dent;
- strlcpy(base, udev_get_dev_path(udev), sizeof(base));
- strlcat(base, "/.udev/failed", sizeof(base));
+ util_strlcpy(base, udev_get_dev_path(udev), sizeof(base));
+ util_strlcat(base, "/.udev/failed", sizeof(base));
dir = opendir(base);
if (dir != NULL) {
@@ -549,10 +549,10 @@ static void scan_failed(struct udev *udev)
if (dent->d_name[0] == '.')
continue;
- start = strlcpy(device, udev_get_sys_path(udev), sizeof(device));
+ start = util_strlcpy(device, udev_get_sys_path(udev), sizeof(device));
if(start >= sizeof(device))
start = sizeof(device) - 1;
- strlcat(device, dent->d_name, sizeof(device));
+ util_strlcat(device, dent->d_name, sizeof(device));
util_path_decode(&device[start]);
device_list_insert(udev, device);
}
@@ -651,15 +651,15 @@ int udevadm_trigger(struct udev *udev, int argc, char *argv[])
saddr.sun_family = AF_LOCAL;
if (sockpath[0] == '@') {
/* abstract namespace socket requested */
- strlcpy(&saddr.sun_path[1], &sockpath[1], sizeof(saddr.sun_path)-1);
+ util_strlcpy(&saddr.sun_path[1], &sockpath[1], sizeof(saddr.sun_path)-1);
saddrlen = offsetof(struct sockaddr_un, sun_path) + 1 + strlen(&saddr.sun_path[1]);
} else if (stat(sockpath, &stats) == 0 && S_ISSOCK(stats.st_mode)) {
/* existing socket file */
- strlcpy(saddr.sun_path, sockpath, sizeof(saddr.sun_path));
+ util_strlcpy(saddr.sun_path, sockpath, sizeof(saddr.sun_path));
saddrlen = offsetof(struct sockaddr_un, sun_path) + strlen(saddr.sun_path);
} else {
/* no socket file, assume abstract namespace socket */
- strlcpy(&saddr.sun_path[1], sockpath, sizeof(saddr.sun_path)-1);
+ util_strlcpy(&saddr.sun_path[1], sockpath, sizeof(saddr.sun_path)-1);
saddrlen = offsetof(struct sockaddr_un, sun_path) + 1 + strlen(&saddr.sun_path[1]);
}
} else if (env != NULL) {
@@ -675,8 +675,8 @@ int udevadm_trigger(struct udev *udev, int argc, char *argv[])
struct stat statbuf;
/* if we have /sys/subsystem, forget all the old stuff */
- strlcpy(base, udev_get_sys_path(udev), sizeof(base));
- strlcat(base, "/subsystem", sizeof(base));
+ util_strlcpy(base, udev_get_sys_path(udev), sizeof(base));
+ util_strlcat(base, "/subsystem", sizeof(base));
if (stat(base, &statbuf) == 0) {
scan_subsystem(udev, "subsystem", SCAN_SUBSYSTEM);
exec_list(udev, action, env);
@@ -689,8 +689,8 @@ int udevadm_trigger(struct udev *udev, int argc, char *argv[])
scan_class(udev);
/* scan "block" if it isn't a "class" */
- strlcpy(base, udev_get_sys_path(udev), sizeof(base));
- strlcat(base, "/class/block", sizeof(base));
+ util_strlcpy(base, udev_get_sys_path(udev), sizeof(base));
+ util_strlcat(base, "/class/block", sizeof(base));
if (stat(base, &statbuf) != 0)
scan_block(udev);
exec_list(udev, action, env);
diff --git a/udev/udevd.c b/udev/udevd.c
index 06bfbd953e..59866afdee 100644
--- a/udev/udevd.c
+++ b/udev/udevd.c
@@ -141,7 +141,7 @@ static int udev_event_process(struct udevd_uevent_msg *msg)
udevice = udev_device_init(msg->udev);
if (udevice == NULL)
return -1;
- strlcpy(udevice->action, msg->action, sizeof(udevice->action));
+ util_strlcpy(udevice->action, msg->action, sizeof(udevice->action));
sysfs_device_set_values(udevice->udev, udevice->dev, msg->devpath, msg->subsystem, msg->driver);
udevice->devpath_old = msg->devpath_old;
udevice->devt = msg->devt;
@@ -176,10 +176,10 @@ static void export_event_state(struct udevd_uevent_msg *msg, enum event_state st
snprintf(filename, sizeof(filename), "%s/.udev/queue/%llu", udev_get_dev_path(msg->udev), msg->seqnum);
/* location of failed file */
- strlcpy(filename_failed, udev_get_dev_path(msg->udev), sizeof(filename_failed));
- strlcat(filename_failed, "/", sizeof(filename_failed));
- start = strlcat(filename_failed, ".udev/failed/", sizeof(filename_failed));
- strlcat(filename_failed, msg->devpath, sizeof(filename_failed));
+ util_strlcpy(filename_failed, udev_get_dev_path(msg->udev), sizeof(filename_failed));
+ util_strlcat(filename_failed, "/", sizeof(filename_failed));
+ start = util_strlcat(filename_failed, ".udev/failed/", sizeof(filename_failed));
+ util_strlcat(filename_failed, msg->devpath, sizeof(filename_failed));
util_path_encode(&filename_failed[start], sizeof(filename_failed) - start);
switch (state) {
@@ -196,10 +196,10 @@ static void export_event_state(struct udevd_uevent_msg *msg, enum event_state st
/* "move" event - rename failed file to current name, do not delete failed */
char filename_failed_old[PATH_SIZE];
- strlcpy(filename_failed_old, udev_get_dev_path(msg->udev), sizeof(filename_failed_old));
- strlcat(filename_failed_old, "/", sizeof(filename_failed_old));
- start = strlcat(filename_failed_old, ".udev/failed/", sizeof(filename_failed_old));
- strlcat(filename_failed_old, msg->devpath_old, sizeof(filename_failed_old));
+ util_strlcpy(filename_failed_old, udev_get_dev_path(msg->udev), sizeof(filename_failed_old));
+ util_strlcat(filename_failed_old, "/", sizeof(filename_failed_old));
+ start = util_strlcat(filename_failed_old, ".udev/failed/", sizeof(filename_failed_old));
+ util_strlcat(filename_failed_old, msg->devpath_old, sizeof(filename_failed_old));
util_path_encode(&filename_failed_old[start], sizeof(filename) - start);
if (rename(filename_failed_old, filename_failed) == 0)
@@ -287,8 +287,8 @@ static void msg_queue_insert(struct udevd_uevent_msg *msg)
export_event_state(msg, EVENT_QUEUED);
info(msg->udev, "seq %llu queued, '%s' '%s'\n", msg->seqnum, msg->action, msg->subsystem);
- strlcpy(filename, udev_get_dev_path(msg->udev), sizeof(filename));
- strlcat(filename, "/.udev/uevent_seqnum", sizeof(filename));
+ util_strlcpy(filename, udev_get_dev_path(msg->udev), sizeof(filename));
+ util_strlcat(filename, "/.udev/uevent_seqnum", sizeof(filename));
fd = open(filename, O_WRONLY|O_TRUNC|O_CREAT, 0644);
if (fd >= 0) {
char str[32];
@@ -755,8 +755,8 @@ static void export_initial_seqnum(struct udev *udev)
char seqnum[32];
ssize_t len = 0;
- strlcpy(filename, udev_get_sys_path(udev), sizeof(filename));
- strlcat(filename, "/kernel/uevent_seqnum", sizeof(filename));
+ util_strlcpy(filename, udev_get_sys_path(udev), sizeof(filename));
+ util_strlcat(filename, "/kernel/uevent_seqnum", sizeof(filename));
fd = open(filename, O_RDONLY);
if (fd >= 0) {
len = read(fd, seqnum, sizeof(seqnum)-1);
@@ -766,8 +766,8 @@ static void export_initial_seqnum(struct udev *udev)
strcpy(seqnum, "0\n");
len = 3;
}
- strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
- strlcat(filename, "/.udev/uevent_seqnum", sizeof(filename));
+ util_strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
+ util_strlcat(filename, "/.udev/uevent_seqnum", sizeof(filename));
create_path(udev, filename);
fd = open(filename, O_WRONLY|O_TRUNC|O_CREAT, 0644);
if (fd >= 0) {
@@ -986,8 +986,8 @@ int main(int argc, char *argv[])
IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
/* watch dynamic rules directory */
- strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
- strlcat(filename, "/.udev/rules.d", sizeof(filename));
+ util_strlcpy(filename, udev_get_dev_path(udev), sizeof(filename));
+ util_strlcat(filename, "/.udev/rules.d", sizeof(filename));
inotify_add_watch(inotify_fd, filename,
IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
}