summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--udev/lib/libudev-device.c28
-rw-r--r--udev/udev-event.c13
-rw-r--r--udev/udev-rules.c13
-rw-r--r--udev/udev.h22
4 files changed, 38 insertions, 38 deletions
diff --git a/udev/lib/libudev-device.c b/udev/lib/libudev-device.c
index f56db7ff15..8812f1fc84 100644
--- a/udev/lib/libudev-device.c
+++ b/udev/lib/libudev-device.c
@@ -34,36 +34,36 @@
#define ENVP_SIZE 128
struct udev_device {
- int refcount;
struct udev *udev;
struct udev_device *parent_device;
- int parent_set;
char *syspath;
const char *devpath;
char *sysname;
const char *sysnum;
char *devnode;
char *subsystem;
- int subsystem_set;
- struct udev_list_node devlinks_list;
- int devlinks_uptodate;
- struct udev_list_node properties_list;
char **envp;
- int envp_uptodate;
char *driver;
- int driver_set;
- dev_t devnum;
char *action;
- int event_timeout;
char *devpath_old;
char *physdevpath;
- int timeout;
+ struct udev_list_node devlinks_list;
+ struct udev_list_node properties_list;
+ struct udev_list_node sysattr_list;
unsigned long long int seqnum;
+ int event_timeout;
+ int timeout;
int num_fake_partitions;
int devlink_priority;
- int ignore_remove;
- struct udev_list_node sysattr_list;
- int info_loaded;
+ int refcount;
+ dev_t devnum;
+ unsigned int parent_set:1;
+ unsigned int subsystem_set:1;
+ unsigned int devlinks_uptodate:1;
+ unsigned int envp_uptodate:1;
+ unsigned int driver_set:1;
+ unsigned int info_loaded:1;
+ unsigned int ignore_remove:1;
};
static size_t devpath_to_db_path(struct udev *udev, const char *devpath, char *filename, size_t len)
diff --git a/udev/udev-event.c b/udev/udev-event.c
index 36d36ac643..fcb9993709 100644
--- a/udev/udev-event.c
+++ b/udev/udev-event.c
@@ -52,6 +52,7 @@ void udev_event_unref(struct udev_event *event)
udev_list_cleanup_entries(event->udev, &event->run_list);
free(event->tmp_node);
free(event->program_result);
+ free(event->name);
dbg(event->udev, "free event %p\n", event);
free(event);
}
@@ -558,15 +559,17 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules)
goto exit;
}
- if (event->name_ignore) {
+ if (event->name != NULL && event->name[0] == '\0') {
info(event->udev, "device node creation supressed\n");
goto exit;
}
- if (event->name[0] == '\0') {
+ if (event->name == NULL) {
info(event->udev, "no node name set, will use kernel name '%s'\n",
udev_device_get_sysname(event->dev));
- util_strlcpy(event->name, udev_device_get_sysname(event->dev), sizeof(event->name));
+ event->name = strdup(udev_device_get_sysname(event->dev));
+ if (event->name == NULL)
+ goto exit;
}
/* set device node name */
@@ -604,10 +607,8 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules)
info(event->udev, "device event will be ignored\n");
goto exit;
}
- if (event->name[0] == '\0') {
- info(event->udev, "device renaming supressed\n");
+ if (event->name == NULL)
goto exit;
- }
/* look if we want to change the name of the netif */
if (strcmp(event->name, udev_device_get_sysname(dev)) != 0) {
diff --git a/udev/udev-rules.c b/udev/udev-rules.c
index 675a7f0625..19ee06d379 100644
--- a/udev/udev-rules.c
+++ b/udev/udev-rules.c
@@ -1952,6 +1952,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
case TK_A_NAME:
{
const char *name = &rules->buf[cur->key.value_off];
+ char name_str[UTIL_PATH_SIZE];
int count;
if (event->name_final)
@@ -1959,17 +1960,17 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
if (cur->key.op == KEY_OP_ASSIGN_FINAL)
event->name_final = 1;
if (name[0] == '\0') {
- event->name[0] = '\0';
- event->name_ignore = 1;
+ free(event->name);
+ event->name = NULL;
break;
}
- event->name_ignore = 0;
- util_strlcpy(event->name, name, sizeof(event->name));
- udev_event_apply_format(event, event->name, sizeof(event->name));
+ util_strlcpy(name_str, name, sizeof(name_str));
+ udev_event_apply_format(event, name_str, sizeof(name_str));
if (esc == ESCAPE_UNSET || esc == ESCAPE_REPLACE) {
- count = util_replace_chars(event->name, ALLOWED_CHARS_FILE);
+ count = util_replace_chars(name_str, ALLOWED_CHARS_FILE);
if (count > 0)
info(event->udev, "%i character(s) replaced\n", count);
+ event->name = strdup(name_str);
}
break;
}
diff --git a/udev/udev.h b/udev/udev.h
index 927ff36e01..faa1bf6851 100644
--- a/udev/udev.h
+++ b/udev/udev.h
@@ -57,30 +57,28 @@ static inline void logging_close(void)
}
struct udev_event {
+ struct udev_list_node node;
struct udev *udev;
struct udev_device *dev;
struct udev_device *dev_parent;
- int devlink_final;
- char name[UTIL_PATH_SIZE];
- int name_final;
- int name_ignore;
+ char *name;
char *tmp_node;
char *program_result;
mode_t mode;
- int mode_final;
uid_t uid;
- int owner_final;
gid_t gid;
- int group_final;
struct udev_list_node run_list;
- int run_final;
- int ignore_device;
- int test;
-
- struct udev_list_node node;
pid_t pid;
int exitstatus;
time_t queue_time;
+ unsigned int group_final:1;
+ unsigned int owner_final:1;
+ unsigned int mode_final:1;
+ unsigned int name_final:1;
+ unsigned int devlink_final:1;
+ unsigned int run_final:1;
+ unsigned int ignore_device:1;
+ unsigned int test:1;
};
/* udev-rules.c */