X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fcompare.c;h=1ee9bcb19d9f7e3d33ccc783f5b64cfba0cd6955;hb=4bde4f39d08f000f7e63a832b08a2525c1262f84;hp=204c5dc16dd38f204bea980e84bc4045e78387c5;hpb=fc5e44c99c98d764463f21a12c2c3ef1f0ba8ac7;p=chaz%2Ftar diff --git a/src/compare.c b/src/compare.c index 204c5dc..1ee9bcb 100644 --- a/src/compare.c +++ b/src/compare.c @@ -222,9 +222,9 @@ diff_file (void) ? O_NOATIME : 0); - diff_handle = open (file_name, - (O_RDONLY | O_BINARY | O_CLOEXEC | O_NOCTTY - | O_NONBLOCK | atime_flag)); + diff_handle = openat (chdir_fd, file_name, + (O_RDONLY | O_BINARY | O_CLOEXEC | O_NOCTTY + | O_NONBLOCK | atime_flag)); if (diff_handle < 0) { @@ -244,7 +244,7 @@ diff_file (void) if (atime_preserve_option == replace_atime_preserve) { struct timespec atime = get_stat_atime (&stat_data); - if (set_file_atime (diff_handle, AT_FDCWD, file_name, + if (set_file_atime (diff_handle, chdir_fd, file_name, atime, 0) != 0) utime_error (file_name); @@ -279,7 +279,8 @@ diff_symlink (void) size_t len = strlen (current_stat_info.link_name); char *linkbuf = alloca (len + 1); - int status = readlink (current_stat_info.file_name, linkbuf, len + 1); + int status = readlinkat (chdir_fd, current_stat_info.file_name, + linkbuf, len + 1); if (status < 0) { @@ -428,9 +429,9 @@ diff_multivol (void) } - fd = open (current_stat_info.file_name, - (O_RDONLY | O_BINARY | O_CLOEXEC | O_NOCTTY | O_NONBLOCK - | atime_flag)); + fd = openat (chdir_fd, current_stat_info.file_name, + (O_RDONLY | O_BINARY | O_CLOEXEC | O_NOCTTY | O_NONBLOCK + | atime_flag)); if (fd < 0) {