]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fs-util: rename conservative_rename() -> conservative_renameat()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 20 Jan 2021 08:11:59 +0000 (17:11 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 22 Jan 2021 03:55:54 +0000 (12:55 +0900)
And this introduces conservative_rename() which does not take dirfd.

src/basic/fs-util.c
src/basic/fs-util.h
src/resolve/resolved-resolv-conf.c
src/test/test-fs-util.c

index 7f44b93726b9a9aad351365a816cc7b7e1640b89..9290fd8784d11df3fb9ef144c0608e85cae43a1d 100644 (file)
@@ -1614,7 +1614,7 @@ int path_is_encrypted(const char *path) {
         return blockdev_is_encrypted(p, 10 /* safety net: maximum recursion depth */);
 }
 
-int conservative_rename(
+int conservative_renameat(
                 int olddirfd, const char *oldpath,
                 int newdirfd, const char *newpath) {
 
index 8bd8da170465a8fa73f10998f23e10bb40a1e767..f036a19eb5df7ca4b33b22a91debcef4306a86bd 100644 (file)
@@ -143,4 +143,7 @@ int open_parent(const char *path, int flags, mode_t mode);
 
 int path_is_encrypted(const char *path);
 
-int conservative_rename(int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
+int conservative_renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
+static inline int conservative_rename(const char *oldpath, const char *newpath) {
+        return conservative_renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath);
+}
index 029d5c93ed19d9da3338a95ac47600c357585b92..2f06c9046f3c32de59c474b08d64e8337283f120 100644 (file)
@@ -360,7 +360,7 @@ int manager_write_resolv_conf(Manager *m) {
                         goto fail;
                 }
 
-                r = conservative_rename(AT_FDCWD, temp_path_stub, AT_FDCWD, PRIVATE_STUB_RESOLV_CONF);
+                r = conservative_rename(temp_path_stub, PRIVATE_STUB_RESOLV_CONF);
                 if (r < 0)
                         log_error_errno(r, "Failed to move new %s into place: %m", PRIVATE_STUB_RESOLV_CONF);
 
@@ -370,7 +370,7 @@ int manager_write_resolv_conf(Manager *m) {
                         log_error_errno(r, "Failed to symlink %s: %m", PRIVATE_STUB_RESOLV_CONF);
         }
 
-        r = conservative_rename(AT_FDCWD, temp_path_uplink, AT_FDCWD, PRIVATE_UPLINK_RESOLV_CONF);
+        r = conservative_rename(temp_path_uplink, PRIVATE_UPLINK_RESOLV_CONF);
         if (r < 0)
                 log_error_errno(r, "Failed to move new %s into place: %m", PRIVATE_UPLINK_RESOLV_CONF);
 
index e0ef8257bdd1c2f8904249226fae34d1f58d21c8..f01b08b2eb0fbc9a21ba236d0a2d6f393dc5c87b 100644 (file)
@@ -847,37 +847,37 @@ static void test_conservative_rename(void) {
 
         /* Check that the hardlinked "copy" is detected */
         assert_se(link(p, q) >= 0);
-        assert_se(conservative_rename(AT_FDCWD, q, AT_FDCWD, p) == 0);
+        assert_se(conservative_renameat(AT_FDCWD, q, AT_FDCWD, p) == 0);
         assert_se(access(q, F_OK) < 0 && errno == ENOENT);
 
         /* Check that a manual copy is detected */
         assert_se(copy_file(p, q, 0, (mode_t) -1, 0, 0, COPY_REFLINK) >= 0);
-        assert_se(conservative_rename(AT_FDCWD, q, AT_FDCWD, p) == 0);
+        assert_se(conservative_renameat(AT_FDCWD, q, AT_FDCWD, p) == 0);
         assert_se(access(q, F_OK) < 0 && errno == ENOENT);
 
         /* Check that a manual new writeout is also detected */
         assert_se(write_string_file(q, "this is a test", WRITE_STRING_FILE_CREATE) >= 0);
-        assert_se(conservative_rename(AT_FDCWD, q, AT_FDCWD, p) == 0);
+        assert_se(conservative_renameat(AT_FDCWD, q, AT_FDCWD, p) == 0);
         assert_se(access(q, F_OK) < 0 && errno == ENOENT);
 
         /* Check that a minimally changed version is detected */
         assert_se(write_string_file(q, "this is a_test", WRITE_STRING_FILE_CREATE) >= 0);
-        assert_se(conservative_rename(AT_FDCWD, q, AT_FDCWD, p) > 0);
+        assert_se(conservative_renameat(AT_FDCWD, q, AT_FDCWD, p) > 0);
         assert_se(access(q, F_OK) < 0 && errno == ENOENT);
 
         /* Check that this really is new updated version */
         assert_se(write_string_file(q, "this is a_test", WRITE_STRING_FILE_CREATE) >= 0);
-        assert_se(conservative_rename(AT_FDCWD, q, AT_FDCWD, p) == 0);
+        assert_se(conservative_renameat(AT_FDCWD, q, AT_FDCWD, p) == 0);
         assert_se(access(q, F_OK) < 0 && errno == ENOENT);
 
         /* Make sure we detect extended files */
         assert_se(write_string_file(q, "this is a_testx", WRITE_STRING_FILE_CREATE) >= 0);
-        assert_se(conservative_rename(AT_FDCWD, q, AT_FDCWD, p) > 0);
+        assert_se(conservative_renameat(AT_FDCWD, q, AT_FDCWD, p) > 0);
         assert_se(access(q, F_OK) < 0 && errno == ENOENT);
 
         /* Make sure we detect truncated files */
         assert_se(write_string_file(q, "this is a_test", WRITE_STRING_FILE_CREATE) >= 0);
-        assert_se(conservative_rename(AT_FDCWD, q, AT_FDCWD, p) > 0);
+        assert_se(conservative_renameat(AT_FDCWD, q, AT_FDCWD, p) > 0);
         assert_se(access(q, F_OK) < 0 && errno == ENOENT);
 }