| https://src.fedoraproject.org/rpms/coreutils/raw/f672fec4364e71c6e5a30d4026d6bdb7cf332eed/f/gnulib-simple-backup-fix.patch |
| https://bugs.gnu.org/55029 |
| |
| commit 7347caeb9d902d3fca2c11f69a55a3e578d93bfe |
| Author: Paul Eggert <eggert@cs.ucla.edu> |
| Date: Wed Apr 20 19:34:57 2022 -0700 |
| |
| backupfile: fix bug when renaming simple backups |
| |
| * lib/backupfile.c (backupfile_internal): Fix bug when RENAME |
| and when doing simple backups. Problem reported by Steve Ward in: |
| https://bugs.gnu.org/55029 |
| |
| --- a/lib/backupfile.c |
| +++ b/lib/backupfile.c |
| @@ -332,7 +332,7 @@ backupfile_internal (int dir_fd, char const *file, |
| return s; |
| |
| DIR *dirp = NULL; |
| - int sdir = AT_FDCWD; |
| + int sdir = dir_fd; |
| idx_t base_max = 0; |
| while (true) |
| { |
| @@ -371,10 +371,9 @@ backupfile_internal (int dir_fd, char const *file, |
| if (! rename) |
| break; |
| |
| - int olddirfd = sdir < 0 ? dir_fd : sdir; |
| - idx_t offset = sdir < 0 ? 0 : base_offset; |
| + idx_t offset = backup_type == simple_backups ? 0 : base_offset; |
| unsigned flags = backup_type == simple_backups ? 0 : RENAME_NOREPLACE; |
| - if (renameatu (olddirfd, file + offset, sdir, s + offset, flags) == 0) |
| + if (renameatu (sdir, file + offset, sdir, s + offset, flags) == 0) |
| break; |
| int e = errno; |
| if (! (e == EEXIST && extended)) |
| |