OSDN Git Service

* src/lhadd.c (build_backup_file): On MinGW, cannot rename when
authorarai <arai@6a8cc165-1e22-0410-a132-eb4e3f353aba>
Sat, 25 May 2002 18:16:48 +0000 (18:16 +0000)
committerarai <arai@6a8cc165-1e22-0410-a132-eb4e3f353aba>
Sat, 25 May 2002 18:16:48 +0000 (18:16 +0000)
a new file already exists.

git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/lha/lha/trunk@112 6a8cc165-1e22-0410-a132-eb4e3f353aba

src/lhadd.c

index f28d0f8..a8a1503 100644 (file)
@@ -298,8 +298,15 @@ build_backup_file()
 #ifdef SIGHUP
                signal(SIGHUP, SIG_IGN);
 #endif
-               if (rename(archive_name, backup_archive_name) < 0)
+               if (rename(archive_name, backup_archive_name) < 0) {
+#if __MINGW32__
+            /* On MinGW, cannot rename when
+               newfile (backup_archive_name) already exists */
+            if (unlink(backup_archive_name) < 0 ||
+                rename(archive_name, backup_archive_name) < 0)
+#endif
                        fatal_error(archive_name);
+        }
                recover_archive_when_interrupt = TRUE;
                signal(SIGINT, interrupt);
 #ifdef SIGHUP