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