From: Lennart Poettering Date: Wed, 9 Aug 2017 17:03:39 +0000 (+0200) Subject: tree-wide: use path_startswith() rather than startswith() where ever that's appropriate X-Git-Tag: v235~234^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27458ed62945be0f022ff69348a913793337108d;p=thirdparty%2Fsystemd.git tree-wide: use path_startswith() rather than startswith() where ever that's appropriate When checking path prefixes we really should use the right APIs, just in case people add multiple slashes to their paths... --- diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index c570c2e3568..d665a181bc9 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -55,6 +55,7 @@ #include "terminal-util.h" #include "time-util.h" #include "util.h" +#include "path-util.h" static volatile unsigned cached_columns = 0; static volatile unsigned cached_lines = 0; @@ -556,6 +557,7 @@ int terminal_vhangup(const char *name) { int vt_disallocate(const char *name) { _cleanup_close_ int fd = -1; + const char *e, *n; unsigned u; int r; @@ -563,7 +565,8 @@ int vt_disallocate(const char *name) { * (i.e. because it is the active one), at least clear it * entirely (including the scrollback buffer) */ - if (!startswith(name, "/dev/")) + e = path_startswith(name, "/dev/"); + if (!e) return -EINVAL; if (!tty_is_vc(name)) { @@ -582,10 +585,11 @@ int vt_disallocate(const char *name) { return 0; } - if (!startswith(name, "/dev/tty")) + n = startswith(e, "tty"); + if (!n) return -EINVAL; - r = safe_atou(name+8, &u); + r = safe_atou(n, &u); if (r < 0) return r; diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 82d86a0ad40..94a4f9ae29c 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -949,7 +949,7 @@ static void cgroup_context_apply(Unit *u, CGroupMask mask, ManagerState state) { acc[k++] = 0; - if (startswith(a->path, "/dev/")) + if (path_startswith(a->path, "/dev/")) whitelist_device(path, a->path, acc); else if ((val = startswith(a->path, "block-"))) whitelist_major(path, val, 'b', acc); diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c index 4e6d1effaa8..c1026e3f5b4 100644 --- a/src/core/dbus-cgroup.c +++ b/src/core/dbus-cgroup.c @@ -1018,8 +1018,8 @@ int bus_cgroup_set_property( while ((r = sd_bus_message_read(message, "(ss)", &path, &rwm)) > 0) { - if ((!startswith(path, "/dev/") && - !startswith(path, "/run/systemd/inaccessible/") && + if ((!path_startswith(path, "/dev/") && + !path_startswith(path, "/run/systemd/inaccessible/") && !startswith(path, "block-") && !startswith(path, "char-")) || strpbrk(path, WHITESPACE)) diff --git a/src/login/logind-utmp.c b/src/login/logind-utmp.c index 311751c2db2..00c4cbcf4f1 100644 --- a/src/login/logind-utmp.c +++ b/src/login/logind-utmp.c @@ -31,6 +31,7 @@ #include "bus-util.h" #include "format-util.h" #include "logind.h" +#include "path-util.h" #include "special.h" #include "strv.h" #include "unit-name.h" @@ -60,15 +61,19 @@ _const_ static usec_t when_wall(usec_t n, usec_t elapse) { } bool logind_wall_tty_filter(const char *tty, void *userdata) { - Manager *m = userdata; + const char *p; assert(m); - if (!startswith(tty, "/dev/") || !m->scheduled_shutdown_tty) + if (!m->scheduled_shutdown_tty) + return true; + + p = path_startswith(tty, "/dev/"); + if (!p) return true; - return !streq(tty + 5, m->scheduled_shutdown_tty); + return !streq(p, m->scheduled_shutdown_tty); } static int warn_wall(Manager *m, usec_t n) { diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index b3587e249dc..41a6dcbd1b0 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -223,7 +223,7 @@ static int parse_argv(int argc, char *argv[]) { * sysctl name available. */ sysctl_normalize(optarg); - if (startswith(optarg, "/proc/sys")) + if (path_startswith(optarg, "/proc/sys")) p = strdup(optarg); else p = strappend("/proc/sys/", optarg); diff --git a/src/udev/udevadm-test-builtin.c b/src/udev/udevadm-test-builtin.c index 0b180d03eb3..b5662be5c29 100644 --- a/src/udev/udevadm-test-builtin.c +++ b/src/udev/udevadm-test-builtin.c @@ -21,6 +21,7 @@ #include #include +#include "path-util.h" #include "string-util.h" #include "udev.h" @@ -80,7 +81,7 @@ static int adm_builtin(struct udev *udev, int argc, char *argv[]) { } /* add /sys if needed */ - if (!startswith(syspath, "/sys")) + if (!path_startswith(syspath, "/sys")) strscpyl(filename, sizeof(filename), "/sys", syspath, NULL); else strscpy(filename, sizeof(filename), syspath); diff --git a/src/udev/udevadm-util.c b/src/udev/udevadm-util.c index 3539c1d6ab1..beda7c36bb8 100644 --- a/src/udev/udevadm-util.c +++ b/src/udev/udevadm-util.c @@ -15,6 +15,7 @@ * along with this program. If not, see . */ +#include "path-util.h" #include "string-util.h" #include "udevadm-util.h" @@ -28,7 +29,7 @@ struct udev_device *find_device(struct udev *udev, if (prefix && !startswith(id, prefix)) id = strjoina(prefix, id); - if (startswith(id, "/dev/")) { + if (path_startswith(id, "/dev/")) { struct stat statbuf; char type; @@ -43,7 +44,7 @@ struct udev_device *find_device(struct udev *udev, return NULL; return udev_device_new_from_devnum(udev, type, statbuf.st_rdev); - } else if (startswith(id, "/sys/")) + } else if (path_startswith(id, "/sys/")) return udev_device_new_from_syspath(udev, id); else return NULL;