From 563e684689db9c810e22646c879afb5157c396c5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 19 May 2023 14:47:37 +0200 Subject: [PATCH] =?UTF-8?q?stat-util:=20rename=20files=5Fsame()=20?= =?UTF-8?q?=E2=86=92=20inode=5Fsame()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Let's be more accurate about what this function does: it checks whether the underlying reported inode is the same. Internally, this already uses a better named stat_inode_same() call, hence let's similarly name the wrapping function following the same logic. Similar for files_same_at() and path_equal_or_same_files(). No code changes, just some renaming. --- src/basic/namespace-util.c | 2 +- src/basic/path-util.c | 4 ++-- src/basic/path-util.h | 2 +- src/basic/process-util.c | 2 +- src/basic/socket-util.c | 2 +- src/basic/stat-util.c | 2 +- src/basic/stat-util.h | 6 +++--- src/basic/virt.c | 2 +- src/core/socket.c | 6 +++--- src/mount/mount-tool.c | 2 +- src/shared/install.c | 2 +- src/shared/rm-rf.c | 2 +- src/shared/switch-root.c | 2 +- src/test/test-path-util.c | 40 +++++++++++++++++++------------------- src/test/test-specifier.c | 2 +- src/test/test-stat-util.c | 10 +++++----- 16 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/basic/namespace-util.c b/src/basic/namespace-util.c index f511a91720a..27c760c3ef0 100644 --- a/src/basic/namespace-util.c +++ b/src/basic/namespace-util.c @@ -109,7 +109,7 @@ int namespace_enter(int pidns_fd, int mntns_fd, int netns_fd, int userns_fd, int /* Can't setns to your own userns, since then you could escalate from non-root to root in * your own namespace, so check if namespaces are equal before attempting to enter. */ - r = files_same(FORMAT_PROC_FD_PATH(userns_fd), "/proc/self/ns/user", 0); + r = inode_same(FORMAT_PROC_FD_PATH(userns_fd), "/proc/self/ns/user", 0); if (r < 0) return r; if (r) diff --git a/src/basic/path-util.c b/src/basic/path-util.c index a6810655656..e1cc26f618b 100644 --- a/src/basic/path-util.c +++ b/src/basic/path-util.c @@ -485,8 +485,8 @@ int path_compare(const char *a, const char *b) { } } -bool path_equal_or_files_same(const char *a, const char *b, int flags) { - return path_equal(a, b) || files_same(a, b, flags) > 0; +bool path_equal_or_inode_same(const char *a, const char *b, int flags) { + return path_equal(a, b) || inode_same(a, b, flags) > 0; } int path_compare_filename(const char *a, const char *b) { diff --git a/src/basic/path-util.h b/src/basic/path-util.h index 7843599816e..66879d1932a 100644 --- a/src/basic/path-util.h +++ b/src/basic/path-util.h @@ -77,7 +77,7 @@ static inline bool path_equal_filename(const char *a, const char *b) { return path_compare_filename(a, b) == 0; } -bool path_equal_or_files_same(const char *a, const char *b, int flags); +bool path_equal_or_inode_same(const char *a, const char *b, int flags); char* path_extend_internal(char **x, ...); #define path_extend(x, ...) path_extend_internal(x, __VA_ARGS__, POINTER_MAX) diff --git a/src/basic/process-util.c b/src/basic/process-util.c index 7de7d80cd4a..0f642fdf1bb 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -946,7 +946,7 @@ int pid_from_same_root_fs(pid_t pid) { root = procfs_file_alloca(pid, "root"); - return files_same(root, "/proc/1/root", 0); + return inode_same(root, "/proc/1/root", 0); } bool is_main_thread(void) { diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index 5b76948c064..9040ff7c534 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -223,7 +223,7 @@ bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) { return false; if (a->sockaddr.un.sun_path[0]) { - if (!path_equal_or_files_same(a->sockaddr.un.sun_path, b->sockaddr.un.sun_path, 0)) + if (!path_equal_or_inode_same(a->sockaddr.un.sun_path, b->sockaddr.un.sun_path, 0)) return false; } else { if (a->size != b->size) diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c index 20152fbe2b4..843cc025dc8 100644 --- a/src/basic/stat-util.c +++ b/src/basic/stat-util.c @@ -183,7 +183,7 @@ int path_is_read_only_fs(const char *path) { return fd_is_read_only_fs(fd); } -int files_same_at(int fda, const char *filea, int fdb, const char *fileb, int flags) { +int inode_same_at(int fda, const char *filea, int fdb, const char *fileb, int flags) { struct stat a, b; assert(fda >= 0 || fda == AT_FDCWD); diff --git a/src/basic/stat-util.h b/src/basic/stat-util.h index 25f915f558b..3ae8b3eeb1b 100644 --- a/src/basic/stat-util.h +++ b/src/basic/stat-util.h @@ -37,10 +37,10 @@ static inline int null_or_empty_path(const char *fn) { int path_is_read_only_fs(const char *path); -int files_same_at(int fda, const char *filea, int fdb, const char *fileb, int flags); +int inode_same_at(int fda, const char *filea, int fdb, const char *fileb, int flags); -static inline int files_same(const char *filea, const char *fileb, int flags) { - return files_same_at(AT_FDCWD, filea, AT_FDCWD, fileb, flags); +static inline int inode_same(const char *filea, const char *fileb, int flags) { + return inode_same_at(AT_FDCWD, filea, AT_FDCWD, fileb, flags); } /* The .f_type field of struct statfs is really weird defined on diff --git a/src/basic/virt.c b/src/basic/virt.c index aadc923bb54..79fa43e0d82 100644 --- a/src/basic/virt.c +++ b/src/basic/virt.c @@ -891,7 +891,7 @@ int running_in_chroot(void) { if (getpid_cached() == 1) return false; /* We're PID 1, we can't be in a chroot. */ - r = files_same("/proc/1/root", "/", 0); + r = inode_same("/proc/1/root", "/", 0); if (r == -ENOENT) { r = proc_mounted(); if (r == 0) { diff --git a/src/core/socket.c b/src/core/socket.c index 0fd1ad144b0..2ed6611c9f1 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -2671,7 +2671,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value, LIST_FOREACH(port, p, s->ports) if (p->fd < 0 && p->type == SOCKET_FIFO && - path_equal_or_files_same(p->path, value, 0)) { + path_equal_or_inode_same(p->path, value, 0)) { p->fd = fdset_remove(fds, fd); found = true; break; @@ -2699,7 +2699,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value, LIST_FOREACH(port, p, s->ports) if (p->fd < 0 && p->type == SOCKET_SPECIAL && - path_equal_or_files_same(p->path, value, 0)) { + path_equal_or_inode_same(p->path, value, 0)) { p->fd = fdset_remove(fds, fd); found = true; break; @@ -2821,7 +2821,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value, LIST_FOREACH(port, p, s->ports) if (p->fd < 0 && p->type == SOCKET_USB_FUNCTION && - path_equal_or_files_same(p->path, value, 0)) { + path_equal_or_inode_same(p->path, value, 0)) { p->fd = fdset_remove(fds, fd); found = true; break; diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c index 5f5d84bb971..dd07e16c725 100644 --- a/src/mount/mount-tool.c +++ b/src/mount/mount-tool.c @@ -814,7 +814,7 @@ static int find_loop_device(const char *backing_file, sd_device **ret) { continue; } - if (files_same(s, backing_file, 0) <= 0) + if (inode_same(s, backing_file, 0) <= 0) continue; *ret = sd_device_ref(dev); diff --git a/src/shared/install.c b/src/shared/install.c index 7903de17b1a..a34e7bfe5ba 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -493,7 +493,7 @@ static int chroot_unit_symlinks_equivalent( if (!a || !b) return log_oom(); - r = path_equal_or_files_same(a, b, 0); + r = path_equal_or_inode_same(a, b, 0); if (r != 0) return r; diff --git a/src/shared/rm-rf.c b/src/shared/rm-rf.c index e99c321418d..8e459f9d693 100644 --- a/src/shared/rm-rf.c +++ b/src/shared/rm-rf.c @@ -438,7 +438,7 @@ int rm_rf(const char *path, RemoveFlags flags) { /* We refuse to clean the root file system with this call. This is extra paranoia to never cause a * really seriously broken system. */ - if (path_equal_or_files_same(path, "/", AT_SYMLINK_NOFOLLOW)) + if (path_equal_or_inode_same(path, "/", AT_SYMLINK_NOFOLLOW)) return log_error_errno(SYNTHETIC_ERRNO(EPERM), "Attempted to remove entire root file system (\"%s\"), and we can't allow that.", path); diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c index 118eaac78ef..c7b562143dd 100644 --- a/src/shared/switch-root.c +++ b/src/shared/switch-root.c @@ -45,7 +45,7 @@ int switch_root(const char *new_root, if (new_root_fd < 0) return log_error_errno(errno, "Failed to open target directory '%s': %m", new_root); - r = files_same_at(old_root_fd, "", new_root_fd, "", AT_EMPTY_PATH); + r = inode_same_at(old_root_fd, "", new_root_fd, "", AT_EMPTY_PATH); if (r < 0) return log_error_errno(r, "Failed to determine if old and new root directory are the same: %m"); if (r > 0) { diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c index e40ffea4d53..6b685a816f0 100644 --- a/src/test/test-path-util.c +++ b/src/test/test-path-util.c @@ -207,33 +207,33 @@ TEST(path_equal_root) { /* Make sure that files_same works as expected. */ - assert_se(files_same("/", "/", 0) > 0); - assert_se(files_same("/", "/", AT_SYMLINK_NOFOLLOW) > 0); - assert_se(files_same("/", "//", 0) > 0); - assert_se(files_same("/", "//", AT_SYMLINK_NOFOLLOW) > 0); + assert_se(inode_same("/", "/", 0) > 0); + assert_se(inode_same("/", "/", AT_SYMLINK_NOFOLLOW) > 0); + assert_se(inode_same("/", "//", 0) > 0); + assert_se(inode_same("/", "//", AT_SYMLINK_NOFOLLOW) > 0); - assert_se(files_same("/", "/./", 0) > 0); - assert_se(files_same("/", "/./", AT_SYMLINK_NOFOLLOW) > 0); - assert_se(files_same("/", "/../", 0) > 0); - assert_se(files_same("/", "/../", AT_SYMLINK_NOFOLLOW) > 0); + assert_se(inode_same("/", "/./", 0) > 0); + assert_se(inode_same("/", "/./", AT_SYMLINK_NOFOLLOW) > 0); + assert_se(inode_same("/", "/../", 0) > 0); + assert_se(inode_same("/", "/../", AT_SYMLINK_NOFOLLOW) > 0); - assert_se(files_same("/", "/.../", 0) == -ENOENT); - assert_se(files_same("/", "/.../", AT_SYMLINK_NOFOLLOW) == -ENOENT); + assert_se(inode_same("/", "/.../", 0) == -ENOENT); + assert_se(inode_same("/", "/.../", AT_SYMLINK_NOFOLLOW) == -ENOENT); /* The same for path_equal_or_files_same. */ - assert_se(path_equal_or_files_same("/", "/", 0)); - assert_se(path_equal_or_files_same("/", "/", AT_SYMLINK_NOFOLLOW)); - assert_se(path_equal_or_files_same("/", "//", 0)); - assert_se(path_equal_or_files_same("/", "//", AT_SYMLINK_NOFOLLOW)); + assert_se(path_equal_or_inode_same("/", "/", 0)); + assert_se(path_equal_or_inode_same("/", "/", AT_SYMLINK_NOFOLLOW)); + assert_se(path_equal_or_inode_same("/", "//", 0)); + assert_se(path_equal_or_inode_same("/", "//", AT_SYMLINK_NOFOLLOW)); - assert_se(path_equal_or_files_same("/", "/./", 0)); - assert_se(path_equal_or_files_same("/", "/./", AT_SYMLINK_NOFOLLOW)); - assert_se(path_equal_or_files_same("/", "/../", 0)); - assert_se(path_equal_or_files_same("/", "/../", AT_SYMLINK_NOFOLLOW)); + assert_se(path_equal_or_inode_same("/", "/./", 0)); + assert_se(path_equal_or_inode_same("/", "/./", AT_SYMLINK_NOFOLLOW)); + assert_se(path_equal_or_inode_same("/", "/../", 0)); + assert_se(path_equal_or_inode_same("/", "/../", AT_SYMLINK_NOFOLLOW)); - assert_se(!path_equal_or_files_same("/", "/.../", 0)); - assert_se(!path_equal_or_files_same("/", "/.../", AT_SYMLINK_NOFOLLOW)); + assert_se(!path_equal_or_inode_same("/", "/.../", 0)); + assert_se(!path_equal_or_inode_same("/", "/.../", AT_SYMLINK_NOFOLLOW)); } TEST(find_executable_full) { diff --git a/src/test/test-specifier.c b/src/test/test-specifier.c index 1e465998438..d6a8b79aa4a 100644 --- a/src/test/test-specifier.c +++ b/src/test/test-specifier.c @@ -106,7 +106,7 @@ TEST(specifier_real_path) { puts(strnull(w)); /* /dev/initctl should normally be a symlink to /run/initctl */ - if (files_same("/dev/initctl", "/run/initctl", 0) > 0) + if (inode_same("/dev/initctl", "/run/initctl", 0) > 0) assert_se(streq(w, "p=/dev/initctl y=/run/initctl Y=/run w=/dev/tty W=/dev")); } diff --git a/src/test/test-stat-util.c b/src/test/test-stat-util.c index f79b05a4d1b..5aca207fa42 100644 --- a/src/test/test-stat-util.c +++ b/src/test/test-stat-util.c @@ -42,7 +42,7 @@ TEST(null_or_empty_path_with_root) { assert_se(null_or_empty_path_with_root("/foobar/barbar/dev/null", "/foobar/barbar/") == 1); } -TEST(files_same) { +TEST(inode_same) { _cleanup_close_ int fd = -EBADF; _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-files_same.XXXXXX"; _cleanup_(unlink_tempfilep) char name_alias[] = "/tmp/test-files_same.alias"; @@ -51,10 +51,10 @@ TEST(files_same) { assert_se(fd >= 0); assert_se(symlink(name, name_alias) >= 0); - assert_se(files_same(name, name, 0)); - assert_se(files_same(name, name, AT_SYMLINK_NOFOLLOW)); - assert_se(files_same(name, name_alias, 0)); - assert_se(!files_same(name, name_alias, AT_SYMLINK_NOFOLLOW)); + assert_se(inode_same(name, name, 0)); + assert_se(inode_same(name, name, AT_SYMLINK_NOFOLLOW)); + assert_se(inode_same(name, name_alias, 0)); + assert_se(!inode_same(name, name_alias, AT_SYMLINK_NOFOLLOW)); } TEST(is_symlink) {