]> git.ipfire.org Git - thirdparty/rsync.git/commitdiff
Set the modtime to 0 on a partial file.
authorWayne Davison <wayned@samba.org>
Sat, 5 May 2012 15:01:09 +0000 (08:01 -0700)
committerWayne Davison <wayned@samba.org>
Sat, 5 May 2012 15:01:09 +0000 (08:01 -0700)
Fixes debian bug 624826.

cleanup.c

index cf5f2122b3745d8abb42ec3239826bca5712fb31..147c3a7c071d57d1b6900d25dc19d5365db51be1 100644 (file)
--- a/cleanup.c
+++ b/cleanup.c
@@ -158,6 +158,7 @@ NORETURN void _exit_cleanup(int code, const char *file, int line)
 
                if (cleanup_got_literal && cleanup_fname && cleanup_new_fname
                 && keep_partial && handle_partial_dir(cleanup_new_fname, PDIR_CREATE)) {
+                       int tweak_modtime = 0;
                        const char *fname = cleanup_fname;
                        cleanup_fname = NULL;
                        if (cleanup_fd_r != -1)
@@ -166,8 +167,15 @@ NORETURN void _exit_cleanup(int code, const char *file, int line)
                                flush_write_file(cleanup_fd_w);
                                close(cleanup_fd_w);
                        }
+                       if (!partial_dir) {
+                           /* We don't want to leave a partial file with a modern time or it
+                            * could be skipped via --update.  Setting the time to something
+                            * really old also helps it to stand out as unfinished in an ls. */
+                           tweak_modtime = 1;
+                           cleanup_file->modtime = 0;
+                       }
                        finish_transfer(cleanup_new_fname, fname, NULL, NULL,
-                                       cleanup_file, 0, !partial_dir);
+                                       cleanup_file, tweak_modtime, !partial_dir);
                }
 
                /* FALLTHROUGH */