Switching to GPL 3.
[rsync/rsync.git] / cleanup.c
index df8c95b..76f44e2 100644 (file)
--- a/cleanup.c
+++ b/cleanup.c
@@ -4,12 +4,11 @@
  * Copyright (C) 1996-2000 Andrew Tridgell
  * Copyright (C) 1996 Paul Mackerras
  * Copyright (C) 2002 Martin Pool
- * Copyright (C) 2003, 2004, 2005, 2006 Wayne Davison
+ * Copyright (C) 2003-2007 Wayne Davison
  *
  * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -17,8 +16,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ * with this program; if not, visit the http://fsf.org website.
  */
 
 #include "rsync.h"
@@ -107,8 +105,7 @@ NORETURN void _exit_cleanup(int code, const char *file, int line)
        /* Some of our actions might cause a recursive call back here, so we
         * keep track of where we are in the cleanup and never repeat a step. */
        switch (cleanup_step) {
-       case 0:
-               cleanup_step++;
+#include "case_N.h" /* case 0: cleanup_step++; */
 
                exit_code = unmodified_code = code;
 
@@ -119,8 +116,7 @@ NORETURN void _exit_cleanup(int code, const char *file, int line)
                }
 
                /* FALLTHROUGH */
-       case 1:
-               cleanup_step++;
+#include "case_N.h"
 
                if (cleanup_child_pid != -1) {
                        int status;
@@ -133,8 +129,7 @@ NORETURN void _exit_cleanup(int code, const char *file, int line)
                }
 
                /* FALLTHROUGH */
-       case 2:
-               cleanup_step++;
+#include "case_N.h"
 
                if (cleanup_got_literal && cleanup_fname && cleanup_new_fname
                 && keep_partial && handle_partial_dir(cleanup_new_fname, PDIR_CREATE)) {
@@ -146,19 +141,17 @@ NORETURN void _exit_cleanup(int code, const char *file, int line)
                                flush_write_file(cleanup_fd_w);
                                close(cleanup_fd_w);
                        }
-                       finish_transfer(cleanup_new_fname, fname, NULL,
+                       finish_transfer(cleanup_new_fname, fname, NULL, NULL,
                                        cleanup_file, 0, !partial_dir);
                }
 
                /* FALLTHROUGH */
-       case 3:
-               cleanup_step++;
+#include "case_N.h"
 
                io_flush(FULL_FLUSH);
 
                /* FALLTHROUGH */
-       case 4:
-               cleanup_step++;
+#include "case_N.h"
 
                if (cleanup_fname)
                        do_unlink(cleanup_fname);
@@ -183,8 +176,7 @@ NORETURN void _exit_cleanup(int code, const char *file, int line)
                        log_exit(code, file, line);
 
                /* FALLTHROUGH */
-       case 5:
-               cleanup_step++;
+#include "case_N.h"
 
                if (verbose > 2) {
                        rprintf(FINFO,
@@ -194,9 +186,10 @@ NORETURN void _exit_cleanup(int code, const char *file, int line)
                }
 
                /* FALLTHROUGH */
-       case 6:
-               cleanup_step++;
+#include "case_N.h"
 
+               if (am_server && code)
+                       msleep(100);
                close_all();
 
                /* FALLTHROUGH */