diff options
-rw-r--r-- | src/libudev/libudev-device.c | 43 | ||||
-rw-r--r-- | src/libudev/libudev-private.h | 2 | ||||
-rw-r--r-- | src/udev/udev-event.c | 4 |
3 files changed, 23 insertions, 26 deletions
diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c index a7647b9d9c..242a0d89b6 100644 --- a/src/libudev/libudev-device.c +++ b/src/libudev/libudev-device.c @@ -565,30 +565,27 @@ _public_ const char *udev_device_get_property_value(struct udev_device *udev_dev return udev_list_entry_get_value(list_entry); } -int udev_device_read_db(struct udev_device *udev_device, const char *dbfile) +int udev_device_read_db(struct udev_device *udev_device) { char filename[UTIL_PATH_SIZE]; char line[UTIL_LINE_SIZE]; + const char *id; FILE *f; - /* providing a database file will always force-load it */ - if (dbfile == NULL) { - const char *id; + if (udev_device->db_loaded) + return 0; - if (udev_device->db_loaded) - return 0; - udev_device->db_loaded = true; + udev_device->db_loaded = true; - id = udev_device_get_id_filename(udev_device); - if (id == NULL) - return -1; - strscpyl(filename, sizeof(filename), "/run/udev/data/", id, NULL); - dbfile = filename; - } + id = udev_device_get_id_filename(udev_device); + if (id == NULL) + return -1; - f = fopen(dbfile, "re"); + strscpyl(filename, sizeof(filename), "/run/udev/data/", id, NULL); + + f = fopen(filename, "re"); if (f == NULL) - return log_debug_errno(errno, "no db file to read %s: %m", dbfile); + return log_debug_errno(errno, "no db file to read %s: %m", filename); /* devices with a database entry are initialized */ udev_device->is_initialized = true; @@ -1306,7 +1303,7 @@ _public_ struct udev_list_entry *udev_device_get_devlinks_list_entry(struct udev if (udev_device == NULL) return NULL; if (!udev_device->info_loaded) - udev_device_read_db(udev_device, NULL); + udev_device_read_db(udev_device); return udev_list_get_entry(&udev_device->devlinks_list); } @@ -1334,7 +1331,7 @@ _public_ struct udev_list_entry *udev_device_get_properties_list_entry(struct ud return NULL; if (!udev_device->info_loaded) { udev_device_read_uevent_file(udev_device); - udev_device_read_db(udev_device, NULL); + udev_device_read_db(udev_device); } if (!udev_device->devlinks_uptodate) { char symlinks[UTIL_PATH_SIZE]; @@ -1407,7 +1404,7 @@ _public_ unsigned long long int udev_device_get_usec_since_initialized(struct ud if (udev_device == NULL) return 0; if (!udev_device->info_loaded) - udev_device_read_db(udev_device, NULL); + udev_device_read_db(udev_device); if (udev_device->usec_initialized == 0) return 0; now_ts = now(CLOCK_MONOTONIC); @@ -1736,7 +1733,7 @@ const char *udev_device_get_id_filename(struct udev_device *udev_device) _public_ int udev_device_get_is_initialized(struct udev_device *udev_device) { if (!udev_device->info_loaded) - udev_device_read_db(udev_device, NULL); + udev_device_read_db(udev_device); return udev_device->is_initialized; } @@ -1796,7 +1793,7 @@ _public_ struct udev_list_entry *udev_device_get_tags_list_entry(struct udev_dev if (udev_device == NULL) return NULL; if (!udev_device->info_loaded) - udev_device_read_db(udev_device, NULL); + udev_device_read_db(udev_device); return udev_list_get_entry(&udev_device->tags_list); } @@ -1816,7 +1813,7 @@ _public_ int udev_device_has_tag(struct udev_device *udev_device, const char *ta if (udev_device == NULL) return false; if (!udev_device->info_loaded) - udev_device_read_db(udev_device, NULL); + udev_device_read_db(udev_device); list_entry = udev_device_get_tags_list_entry(udev_device); if (udev_list_entry_get_by_name(list_entry, tag) != NULL) return true; @@ -1905,7 +1902,7 @@ int udev_device_set_action(struct udev_device *udev_device, const char *action) int udev_device_get_devlink_priority(struct udev_device *udev_device) { if (!udev_device->info_loaded) - udev_device_read_db(udev_device, NULL); + udev_device_read_db(udev_device); return udev_device->devlink_priority; } @@ -1918,7 +1915,7 @@ int udev_device_set_devlink_priority(struct udev_device *udev_device, int prio) int udev_device_get_watch_handle(struct udev_device *udev_device) { if (!udev_device->info_loaded) - udev_device_read_db(udev_device, NULL); + udev_device_read_db(udev_device); return udev_device->watch_handle; } diff --git a/src/libudev/libudev-private.h b/src/libudev/libudev-private.h index f6b641a326..9153e67cc4 100644 --- a/src/libudev/libudev-private.h +++ b/src/libudev/libudev-private.h @@ -48,7 +48,7 @@ void udev_device_cleanup_devlinks_list(struct udev_device *udev_device); int udev_device_add_property(struct udev_device *udev_device, const char *key, const char *value); char **udev_device_get_properties_envp(struct udev_device *udev_device); ssize_t udev_device_get_properties_monitor_buf(struct udev_device *udev_device, const char **buf); -int udev_device_read_db(struct udev_device *udev_device, const char *dbfile); +int udev_device_read_db(struct udev_device *udev_device); int udev_device_read_uevent_file(struct udev_device *udev_device); int udev_device_set_action(struct udev_device *udev_device, const char *action); const char *udev_device_get_devpath_old(struct udev_device *udev_device); diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index e5a5175df9..7d0d98ca05 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -793,7 +793,7 @@ void udev_event_execute_rules(struct udev_event *event, return; if (streq(udev_device_get_action(dev), "remove")) { - udev_device_read_db(dev, NULL); + udev_device_read_db(dev); udev_device_delete_db(dev); udev_device_tag_index(dev, NULL, false); @@ -810,7 +810,7 @@ void udev_event_execute_rules(struct udev_event *event, } else { event->dev_db = udev_device_shallow_clone(dev); if (event->dev_db != NULL) { - udev_device_read_db(event->dev_db, NULL); + udev_device_read_db(event->dev_db); udev_device_set_info_loaded(event->dev_db); /* disable watch during event processing */ |