diff options
-rw-r--r-- | swap.c | 3 | ||||
-rw-r--r-- | unit.c | 2 | ||||
-rw-r--r-- | util.c | 10 | ||||
-rw-r--r-- | util.h | 2 |
4 files changed, 16 insertions, 1 deletions
@@ -70,6 +70,9 @@ int swap_add_one_mount_link(Swap *s, Mount *m) { m->meta.load_state != UNIT_LOADED) return 0; + if (is_device_path(s->what)) + return 0; + if (!path_startswith(s->what, m->where)) return 0; @@ -1864,7 +1864,7 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) { /* Adds in links to the device node that this unit is based on */ - if (!path_startswith(what, "/dev/") && !path_startswith(what, "/sys/")) + if (!is_device_path(what)) return 0; if (!(e = unit_name_build_escape(what+1, NULL, ".device"))) @@ -1927,6 +1927,16 @@ bool is_clean_exit(int code, int status) { return false; } +bool is_device_path(const char *path) { + + /* Returns true on paths that refer to a device, either in + * sysfs or in /dev */ + + return + path_startswith(path, "/dev/") || + path_startswith(path, "/sys/"); +} + static const char *const ioprio_class_table[] = { [IOPRIO_CLASS_NONE] = "none", [IOPRIO_CLASS_RT] = "realtime", @@ -231,6 +231,8 @@ ssize_t loop_read(int fd, void *buf, size_t nbytes); int path_is_mount_point(const char *path); +bool is_device_path(const char *path); + extern char * __progname; const char *ioprio_class_to_string(int i); |