Fixed failing hunks.
authorWayne Davison <wayned@samba.org>
Mon, 21 Feb 2005 11:05:29 +0000 (11:05 +0000)
committerWayne Davison <wayned@samba.org>
Mon, 21 Feb 2005 11:05:29 +0000 (11:05 +0000)
atimes.diff
backup-dir-dels.diff
fname-convert.diff
link-by-hash.diff

index cbb3d17310e77f629d0b0aa03a12e4edad6f5338..5ad068217dc3d505d5fb2258132a5db848ef6fcd 100644 (file)
@@ -15,17 +15,17 @@ command before "make":
                rprintf(FINFO, "flist->length=%.0f\n",
                        (double) fptr[i]->length);
                rprintf(FINFO, "flist->mode=%#o\n", (int) fptr[i]->mode);
---- orig/flist.c       2005-02-20 00:16:35
+--- orig/flist.c       2005-02-21 10:51:51
 +++ flist.c    2005-02-07 21:06:04
-@@ -54,6 +54,7 @@ extern int relative_paths;
+@@ -56,6 +56,7 @@ extern int relative_paths;
  extern int implied_dirs;
  extern int copy_links;
  extern int copy_unsafe_links;
 +extern int copy_atimes;
  extern int protocol_version;
  extern int sanitize_paths;
- extern int deletion_count;
-@@ -143,16 +144,18 @@ static void list_file_entry(struct file_
+ extern int max_delete;
+@@ -148,16 +149,18 @@ static void list_file_entry(struct file_
  
  #ifdef SUPPORT_LINKS
        if (preserve_links && S_ISLNK(f->mode)) {
@@ -46,7 +46,7 @@ command before "make":
                        safe_fname(f_name(f)));
        }
  }
-@@ -316,6 +319,7 @@ void send_file_entry(struct file_struct 
+@@ -321,6 +324,7 @@ void send_file_entry(struct file_struct 
  {
        unsigned short flags;
        static time_t modtime;
@@ -54,7 +54,7 @@ command before "make":
        static mode_t mode;
        static int64 dev;
        static dev_t rdev;
-@@ -331,7 +335,7 @@ void send_file_entry(struct file_struct 
+@@ -336,7 +340,7 @@ void send_file_entry(struct file_struct 
  
        if (!file) {
                write_byte(f, 0);
@@ -63,7 +63,7 @@ command before "make":
                dev = 0, rdev = makedev(0, 0);
                rdev_major = 0;
                uid = 0, gid = 0;
-@@ -380,6 +384,12 @@ void send_file_entry(struct file_struct 
+@@ -385,6 +389,12 @@ void send_file_entry(struct file_struct 
                flags |= XMIT_SAME_TIME;
        else
                modtime = file->modtime;
@@ -76,7 +76,7 @@ command before "make":
  
  #ifdef SUPPORT_HARD_LINKS
        if (file->link_u.idev) {
-@@ -435,6 +445,8 @@ void send_file_entry(struct file_struct 
+@@ -440,6 +450,8 @@ void send_file_entry(struct file_struct 
                write_int(f, modtime);
        if (!(flags & XMIT_SAME_MODE))
                write_int(f, to_wire_mode(mode));
@@ -85,7 +85,7 @@ command before "make":
        if (preserve_uid && !(flags & XMIT_SAME_UID)) {
                if (!numeric_ids)
                        add_uid(uid);
-@@ -508,6 +520,7 @@ static struct file_struct *receive_file_
+@@ -513,6 +525,7 @@ static struct file_struct *receive_file_
                                              unsigned short flags, int f)
  {
        static time_t modtime;
@@ -93,7 +93,7 @@ command before "make":
        static mode_t mode;
        static int64 dev;
        static dev_t rdev;
-@@ -526,7 +539,7 @@ static struct file_struct *receive_file_
+@@ -531,7 +544,7 @@ static struct file_struct *receive_file_
        struct file_struct *file;
  
        if (!flist) {
@@ -102,7 +102,7 @@ command before "make":
                dev = 0, rdev = makedev(0, 0);
                rdev_major = 0;
                uid = 0, gid = 0;
-@@ -582,6 +595,8 @@ static struct file_struct *receive_file_
+@@ -587,6 +600,8 @@ static struct file_struct *receive_file_
                modtime = (time_t)read_int(f);
        if (!(flags & XMIT_SAME_MODE))
                mode = from_wire_mode(read_int(f));
@@ -111,7 +111,7 @@ command before "make":
  
        if (preserve_uid && !(flags & XMIT_SAME_UID))
                uid = (uid_t)read_int(f);
-@@ -632,6 +647,7 @@ static struct file_struct *receive_file_
+@@ -637,6 +652,7 @@ static struct file_struct *receive_file_
  
        file->flags = 0;
        file->modtime = modtime;
@@ -119,7 +119,7 @@ command before "make":
        file->length = file_length;
        file->mode = mode;
        file->uid = uid;
-@@ -881,6 +897,7 @@ skip_filters:
+@@ -886,6 +902,7 @@ skip_filters:
  
        file->flags = flags;
        file->modtime = st.st_mtime;
@@ -147,8 +147,8 @@ command before "make":
                if (verbose > 1)
                        rprintf(FINFO, "%s is newer\n", safe_fname(fname));
                return;
---- orig/options.c     2005-02-21 07:28:59
-+++ options.c  2005-01-24 01:51:48
+--- orig/options.c     2005-02-21 10:51:52
++++ options.c  2005-02-21 10:53:28
 @@ -50,6 +50,7 @@ int preserve_uid = 0;
  int preserve_gid = 0;
  int preserve_times = 0;
@@ -168,22 +168,22 @@ command before "make":
 @@ -408,6 +410,7 @@ static struct poptOption long_options[] 
    {"devices",         'D', POPT_ARG_NONE,   &preserve_devices, 0, 0, 0 },
    {"times",           't', POPT_ARG_NONE,   &preserve_times, 0, 0, 0 },
-   {"omit-dir-times",  'O', POPT_ARG_NONE,   &omit_dir_times, 0, 0, 0 },
+   {"omit-dir-times",  'O', POPT_ARG_VAL,    &omit_dir_times, 2, 0, 0 },
 +  {"copy-atimes",     'A', POPT_ARG_NONE,   &copy_atimes, 0, 0, 0 },
    {"checksum",        'c', POPT_ARG_NONE,   &always_checksum, 0, 0, 0 },
    {"verbose",         'v', POPT_ARG_NONE,   0, 'v', 0, 0 },
    {"quiet",           'q', POPT_ARG_NONE,   0, 'q', 0, 0 },
-@@ -1272,6 +1275,8 @@ void server_options(char **args,int *arg
+@@ -1274,6 +1277,8 @@ void server_options(char **args,int *arg
                argstr[x++] = 'D';
        if (preserve_times)
                argstr[x++] = 't';
 +      if (copy_atimes)
 +              argstr[x++] = 'A';
-       if (omit_dir_times && am_sender)
+       if (omit_dir_times == 2 && am_sender)
                argstr[x++] = 'O';
        if (preserve_perms)
---- orig/rsync.c       2005-02-20 00:02:23
-+++ rsync.c    2005-01-24 01:59:12
+--- orig/rsync.c       2005-02-21 10:51:52
++++ rsync.c    2005-02-21 10:57:03
 @@ -27,6 +27,7 @@ extern int dry_run;
  extern int daemon_log_format_has_i;
  extern int preserve_times;
@@ -192,7 +192,7 @@ command before "make":
  extern int am_root;
  extern int am_server;
  extern int am_sender;
-@@ -173,6 +174,7 @@ int set_perms(char *fname,struct file_st
+@@ -56,6 +57,7 @@ int set_perms(char *fname,struct file_st
        int updated = 0;
        STRUCT_STAT st2;
        int change_uid, change_gid;
@@ -200,15 +200,14 @@ command before "make":
  
        if (!st) {
                if (dry_run)
-@@ -185,18 +187,28 @@ int set_perms(char *fname,struct file_st
+@@ -68,17 +70,27 @@ int set_perms(char *fname,struct file_st
                st = &st2;
        }
  
 +      if (!copy_atimes || S_ISLNK(st->st_mode) || S_ISDIR(st->st_mode))
 +              flags |= PERMS_SKIP_ATIME;
        if (!preserve_times || S_ISLNK(st->st_mode)
-        || (S_ISDIR(st->st_mode)
-         && (omit_dir_times || (make_backups && !backup_dir))))
+        || (S_ISDIR(st->st_mode) && omit_dir_times))
                flags |= PERMS_SKIP_MTIME;
 +      if (!(flags & PERMS_SKIP_ATIME)
 +          && cmp_time(st->st_atime, file->atime) != 0) {
index 0a0729a788ea62c26d767c43f6fee56eb334606c..6effce447ec70efd9c3f9d47b938ca9e1128d81f 100644 (file)
@@ -105,9 +105,48 @@ Marc St-Onge
 +      deleting = 0;
 +      return ret;
 +}
---- orig/options.c     2005-02-20 01:12:42
-+++ options.c  2005-02-20 03:09:33
-@@ -121,10 +121,14 @@ int no_detach = 0;
+--- orig/flist.c       2005-02-21 10:51:51
++++ flist.c    2005-02-21 11:00:19
+@@ -67,6 +67,9 @@ extern char *log_format;
+ extern char *backup_dir;
+ extern char *backup_suffix;
+ extern int backup_suffix_len;
++extern char *backup_dir_rm;
++extern char *backup_suffix_rm;
++extern int backup_suffix_rm_len;
+ extern char curr_dir[MAXPATHLEN];
+@@ -1773,10 +1776,14 @@ struct file_list *get_dirlist(const char
+ static int deletion_count = 0; /* used to implement --max-delete */
++/* Function now checks if file matches backup- or delete-suffix patterns. */
+ static int is_backup_file(char *fn)
+ {
+       int k = strlen(fn) - backup_suffix_len;
+-      return k > 0 && strcmp(fn+k, backup_suffix) == 0;
++      if (k > 0 && strcmp(fn+k, backup_suffix) == 0)
++              return 1;
++      k += backup_suffix_len - backup_suffix_rm_len;
++      return k > 0 && strcmp(fn+k, backup_suffix_rm) == 0;
+ }
+@@ -1850,8 +1857,8 @@ int delete_file(char *fname, int mode, i
+       if (max_delete && deletion_count >= max_delete)
+               return -1;
+-      if (make_backups && !backup_dir && !is_backup_file(fname))
+-              ok = make_backup(fname);
++      if (make_backups && !backup_dir_rm && !is_backup_file(fname))
++              ok = safe_delete(fname);
+       else
+               ok = do_rmdir(fname) == 0;
+       if (!ok && errno != ENOENT) {
+--- orig/options.c     2005-02-21 10:51:52
++++ options.c  2005-02-21 11:02:45
+@@ -126,10 +126,14 @@ int no_detach
  int write_batch = 0;
  int read_batch = 0;
  int backup_dir_len = 0;
@@ -122,7 +161,7 @@ Marc St-Onge
  char *tmpdir = NULL;
  char *partial_dir = NULL;
  char *basis_dir[MAX_BASIS_DIRS+1];
-@@ -134,7 +138,9 @@ char *log_format = NULL;
+@@ -139,7 +143,9 @@ char *log_format = NULL;
  char *password_file = NULL;
  char *rsync_path = RSYNC_PATH;
  char *backup_dir = NULL;
@@ -132,7 +171,7 @@ Marc St-Onge
  int rsync_port = 0;
  int compare_dest = 0;
  int copy_dest = 0;
-@@ -265,6 +271,8 @@ void usage(enum logcode F)
+@@ -270,6 +276,8 @@ void usage(enum logcode F)
    rprintf(F," -b, --backup                make backups (see --suffix & --backup-dir)\n");
    rprintf(F,"     --backup-dir=DIR        make backups into hierarchy based in DIR\n");
    rprintf(F,"     --suffix=SUFFIX         set backup suffix (default %s w/o --backup-dir)\n",BACKUP_SUFFIX);
@@ -141,7 +180,7 @@ Marc St-Onge
    rprintf(F," -u, --update                skip files that are newer on the receiver\n");
    rprintf(F,"     --inplace               update destination files in-place (SEE MAN PAGE)\n");
    rprintf(F," -d, --dirs                  transfer directories without recursing\n");
-@@ -360,6 +368,7 @@ static struct poptOption long_options[] 
+@@ -365,6 +373,7 @@ static struct poptOption long_options[] 
    /* longName, shortName, argInfo, argPtr, value, descrip, argDesc */
    {"version",          0,  POPT_ARG_NONE,   0, OPT_VERSION, 0, 0},
    {"suffix",           0,  POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
@@ -149,7 +188,7 @@ Marc St-Onge
    {"rsync-path",       0,  POPT_ARG_STRING, &rsync_path, 0, 0, 0 },
    {"password-file",    0,  POPT_ARG_STRING, &password_file, 0, 0, 0 },
    {"ignore-times",    'I', POPT_ARG_NONE,   &ignore_times, 0, 0, 0 },
-@@ -440,6 +449,7 @@ static struct poptOption long_options[] 
+@@ -445,6 +454,7 @@ static struct poptOption long_options[] 
    {"itemize-changes", 'i', POPT_ARG_NONE,   &itemize_changes, 0, 0, 0 },
    {"bwlimit",          0,  POPT_ARG_INT,    &bwlimit, 0, 0, 0 },
    {"backup-dir",       0,  POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
@@ -157,7 +196,7 @@ Marc St-Onge
    {"hard-links",      'H', POPT_ARG_NONE,   &preserve_hard_links, 0, 0, 0 },
    {"read-batch",       0,  POPT_ARG_STRING, &batch_name, OPT_READ_BATCH, 0, 0 },
    {"write-batch",      0,  POPT_ARG_STRING, &batch_name, OPT_WRITE_BATCH, 0, 0 },
-@@ -1006,6 +1016,8 @@ int parse_arguments(int *argc, const cha
+@@ -1013,6 +1023,8 @@ int parse_arguments(int *argc, const cha
                        partial_dir = sanitize_path(NULL, partial_dir, NULL, 0);
                if (backup_dir)
                        backup_dir = sanitize_path(NULL, backup_dir, NULL, 0);
@@ -166,7 +205,7 @@ Marc St-Onge
                if (files_from)
                        files_from = sanitize_path(NULL, files_from, NULL, 0);
        }
-@@ -1038,6 +1050,12 @@ int parse_arguments(int *argc, const cha
+@@ -1045,6 +1057,12 @@ int parse_arguments(int *argc, const cha
                        if (check_filter(elp, backup_dir, 1) < 0)
                                goto options_rejected;
                }
@@ -179,7 +218,7 @@ Marc St-Onge
        }
        if (server_filter_list.head && files_from) {
                if (!*files_from)
-@@ -1060,6 +1078,16 @@ int parse_arguments(int *argc, const cha
+@@ -1067,6 +1085,16 @@ int parse_arguments(int *argc, const cha
                        backup_suffix);
                return 0;
        }
@@ -196,7 +235,7 @@ Marc St-Onge
        if (backup_dir) {
                backup_dir_len = strlcpy(backup_dir_buf, backup_dir, sizeof backup_dir_buf);
                backup_dir_remainder = sizeof backup_dir_buf - backup_dir_len;
-@@ -1081,6 +1109,31 @@ int parse_arguments(int *argc, const cha
+@@ -1088,6 +1116,31 @@ int parse_arguments(int *argc, const cha
                        "--suffix cannot be a null string without --backup-dir\n");
                return 0;
        }
@@ -225,10 +264,10 @@ Marc St-Onge
 +                      "--backup-suffix-rm cannot be a null string without --backup-dir-rm\n");
 +              return 0;
 +      }
+       if (make_backups && !backup_dir)
+               omit_dir_times = 1;
  
-       if (log_format) {
-               if (strstr(log_format, "%i") != NULL)
-@@ -1344,6 +1397,10 @@ void server_options(char **args,int *arg
+@@ -1353,6 +1406,10 @@ void server_options(char **args,int *arg
                args[ac++] = "--backup-dir";
                args[ac++] = backup_dir;
        }
@@ -239,7 +278,7 @@ Marc St-Onge
  
        /* Only send --suffix if it specifies a non-default value. */
        if (strcmp(backup_suffix, backup_dir ? "" : BACKUP_SUFFIX) != 0) {
-@@ -1352,7 +1409,13 @@ void server_options(char **args,int *arg
+@@ -1361,7 +1418,13 @@ void server_options(char **args,int *arg
                        goto oom;
                args[ac++] = arg;
        }
@@ -254,38 +293,3 @@ Marc St-Onge
        if (am_sender) {
                if (delete_excluded)
                        args[ac++] = "--delete-excluded";
---- orig/rsync.c       2005-02-20 00:02:23
-+++ rsync.c    2005-02-20 03:08:42
-@@ -44,12 +44,19 @@ extern char *backup_dir;
- extern char *log_format;
- extern char *backup_suffix;
- extern int backup_suffix_len;
-+extern char *backup_dir_rm;
-+extern char *backup_suffix_rm;
-+extern int backup_suffix_rm_len;
-+/* Function now checks if file matches backup or delete suffix patterns */
- static int is_backup_file(char *fn)
- {
-       int k = strlen(fn) - backup_suffix_len;
--      return k > 0 && strcmp(fn+k, backup_suffix) == 0;
-+      if (k > 0 && strcmp(fn+k, backup_suffix) == 0)
-+              return 1;
-+      k += backup_suffix_len - backup_suffix_rm_len;
-+      return k > 0 && strcmp(fn+k, backup_suffix_rm) == 0;
- }
-@@ -82,8 +89,9 @@ int delete_file(char *fname, int mode, i
-       if (!S_ISDIR(mode)) {
-               int ok;
--              if (make_backups && (backup_dir || !is_backup_file(fname)))
--                      ok = make_backup(fname);
-+              int backup_file = is_backup_file(fname);
-+              if (make_backups && (backup_dir_rm || !backup_file))
-+                      ok = safe_delete(fname);
-               else
-                       ok = robust_unlink(fname) == 0;
-               if (ok) {
index c36b33b796eed55b7fc3b20027abe09cb7a4e4cf..58ed8f83705b7bb7112bc28fb81941918ea432e7 100644 (file)
@@ -87,17 +87,17 @@ Note that you'll need to run 'make proto' after applying this patch.
  
  #define RERR_SIGNAL     20      /* status returned when sent SIGUSR1, SIGINT */
  #define RERR_WAITCHILD  21      /* some error returned by waitpid() */
---- orig/flist.c       2005-02-20 00:16:35
-+++ flist.c    2005-02-19 09:31:41
-@@ -62,6 +62,7 @@ extern int orig_umask;
- extern int list_only;
+--- orig/flist.c       2005-02-21 10:51:51
++++ flist.c    2005-02-21 11:04:00
+@@ -63,6 +63,7 @@ extern int force_delete;
+ extern int orig_umask;
+ extern int make_backups;
  extern unsigned int curr_dir_len;
- extern char *log_format;
 +extern char *fname_convert_cmd;
- extern char curr_dir[MAXPATHLEN];
-@@ -341,7 +342,10 @@ void send_file_entry(struct file_struct 
+ extern char *log_format;
+ extern char *backup_dir;
+ extern char *backup_suffix;
+@@ -346,7 +347,10 @@ void send_file_entry(struct file_struct 
  
        io_write_phase = "send_file_entry";
  
@@ -109,7 +109,7 @@ Note that you'll need to run 'make proto' after applying this patch.
  
        flags = base_flags;
  
-@@ -557,6 +561,9 @@ static struct file_struct *receive_file_
+@@ -562,6 +566,9 @@ static struct file_struct *receive_file_
  
        strlcpy(lastname, thisname, MAXPATHLEN);
  
@@ -119,7 +119,7 @@ Note that you'll need to run 'make proto' after applying this patch.
        clean_fname(thisname, 0);
  
        if (sanitize_paths)
-@@ -1070,6 +1077,9 @@ struct file_list *send_file_list(int f, 
+@@ -1075,6 +1082,9 @@ struct file_list *send_file_list(int f, 
        start_write = stats.total_written;
        gettimeofday(&start_tv, NULL);
  
@@ -129,7 +129,7 @@ Note that you'll need to run 'make proto' after applying this patch.
        flist = flist_new(WITH_HLINK, "send_file_list");
  
        io_start_buffering_out();
-@@ -1252,6 +1262,9 @@ struct file_list *send_file_list(int f, 
+@@ -1257,6 +1267,9 @@ struct file_list *send_file_list(int f, 
        stats.flist_size = stats.total_written - start_write;
        stats.num_files = flist->count;
  
@@ -139,7 +139,7 @@ Note that you'll need to run 'make proto' after applying this patch.
        if (verbose > 3)
                output_flist(flist, who_am_i());
  
-@@ -1273,6 +1286,9 @@ struct file_list *recv_file_list(int f)
+@@ -1278,6 +1291,9 @@ struct file_list *recv_file_list(int f)
  
        start_read = stats.total_read;
  
@@ -149,7 +149,7 @@ Note that you'll need to run 'make proto' after applying this patch.
        flist = flist_new(WITH_HLINK, "recv_file_list");
        received_flist = flist;
  
-@@ -1326,6 +1342,9 @@ struct file_list *recv_file_list(int f)
+@@ -1331,6 +1347,9 @@ struct file_list *recv_file_list(int f)
                        io_error |= read_int(f);
        }
  
@@ -399,7 +399,7 @@ Note that you'll need to run 'make proto' after applying this patch.
  static void recv_generator(char *fname, struct file_list *flist,
                           struct file_struct *file, int ndx,
                           int f_out, int f_out_name)
---- orig/log.c 2005-02-20 00:02:23
+--- orig/log.c 2005-02-21 07:28:59
 +++ log.c      2004-07-03 20:18:02
 @@ -62,6 +62,7 @@ struct {
        { RERR_STREAMIO   , "error in rsync protocol data stream" },
@@ -420,9 +420,9 @@ Note that you'll need to run 'make proto' after applying this patch.
  
        if (dir)
                free(dir);
---- orig/options.c     2005-02-20 01:12:42
+--- orig/options.c     2005-02-21 10:51:52
 +++ options.c  2005-02-14 02:50:32
-@@ -131,6 +131,7 @@ char *basis_dir[MAX_BASIS_DIRS+1];
+@@ -136,6 +136,7 @@ char *basis_dir[MAX_BASIS_DIRS+1];
  char *config_file = NULL;
  char *shell_cmd = NULL;
  char *log_format = NULL;
@@ -430,7 +430,7 @@ Note that you'll need to run 'make proto' after applying this patch.
  char *password_file = NULL;
  char *rsync_path = RSYNC_PATH;
  char *backup_dir = NULL;
-@@ -314,6 +315,7 @@ void usage(enum logcode F)
+@@ -319,6 +320,7 @@ void usage(enum logcode F)
    rprintf(F,"     --compare-dest=DIR      also compare destination files relative to DIR\n");
    rprintf(F,"     --copy-dest=DIR         ... and include copies of unchanged files\n");
    rprintf(F,"     --link-dest=DIR         hardlink to files in DIR when unchanged\n");
@@ -438,7 +438,7 @@ Note that you'll need to run 'make proto' after applying this patch.
    rprintf(F," -z, --compress              compress file data during the transfer\n");
    rprintf(F," -C, --cvs-exclude           auto-ignore files the same way CVS does\n");
    rprintf(F," -f, --filter=RULE           add a file-filtering RULE\n");
-@@ -423,6 +425,7 @@ static struct poptOption long_options[] 
+@@ -428,6 +430,7 @@ static struct poptOption long_options[] 
    {"copy-dest",        0,  POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
    {"link-dest",        0,  POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
    {"fuzzy",           'y', POPT_ARG_NONE,   &fuzzy_basis, 0, 0, 0 },
index ba2df4abda1ae314eadad81266f609d20d56b6e0..5589bd537b8014f3a652530ace3b99d8e54af6d4 100644 (file)
@@ -365,9 +365,9 @@ the file's name.
 +}
 +
 +#endif
---- orig/options.c     2005-02-20 01:12:42
+--- orig/options.c     2005-02-21 10:51:52
 +++ options.c  2005-02-14 02:52:09
-@@ -134,6 +134,7 @@ char *log_format = NULL;
+@@ -139,6 +139,7 @@ char *log_format = NULL;
  char *password_file = NULL;
  char *rsync_path = RSYNC_PATH;
  char *backup_dir = NULL;
@@ -375,7 +375,7 @@ the file's name.
  char backup_dir_buf[MAXPATHLEN];
  int rsync_port = 0;
  int compare_dest = 0;
-@@ -314,6 +315,7 @@ void usage(enum logcode F)
+@@ -319,6 +320,7 @@ void usage(enum logcode F)
    rprintf(F,"     --compare-dest=DIR      also compare destination files relative to DIR\n");
    rprintf(F,"     --copy-dest=DIR         ... and include copies of unchanged files\n");
    rprintf(F,"     --link-dest=DIR         hardlink to files in DIR when unchanged\n");
@@ -383,7 +383,7 @@ the file's name.
    rprintf(F," -z, --compress              compress file data during the transfer\n");
    rprintf(F," -C, --cvs-exclude           auto-ignore files the same way CVS does\n");
    rprintf(F," -f, --filter=RULE           add a file-filtering RULE\n");
-@@ -353,7 +355,7 @@ void usage(enum logcode F)
+@@ -358,7 +360,7 @@ void usage(enum logcode F)
  enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
        OPT_FILTER, OPT_COMPARE_DEST, OPT_COPY_DEST, OPT_LINK_DEST,
        OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW,
@@ -392,7 +392,7 @@ the file's name.
        OPT_REFUSED_BASE = 9000};
  
  static struct poptOption long_options[] = {
-@@ -422,6 +424,7 @@ static struct poptOption long_options[] 
+@@ -427,6 +429,7 @@ static struct poptOption long_options[] 
    {"compare-dest",     0,  POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
    {"copy-dest",        0,  POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
    {"link-dest",        0,  POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
@@ -400,7 +400,7 @@ the file's name.
    {"fuzzy",           'y', POPT_ARG_NONE,   &fuzzy_basis, 0, 0, 0 },
    /* TODO: Should this take an optional int giving the compression level? */
    {"compress",        'z', POPT_ARG_NONE,   &do_compression, 0, 0, 0 },
-@@ -853,6 +856,21 @@ int parse_arguments(int *argc, const cha
+@@ -860,6 +863,21 @@ int parse_arguments(int *argc, const cha
                        basis_dir[basis_dir_cnt++] = (char *)arg;
                        break;
  
@@ -422,7 +422,7 @@ the file's name.
                default:
                        /* A large opt value means that set_refuse_options()
                         * turned this option off. */
-@@ -1431,6 +1449,11 @@ void server_options(char **args,int *arg
+@@ -1440,6 +1458,11 @@ void server_options(char **args,int *arg
                }
        }
  
@@ -519,17 +519,17 @@ the file's name.
  
                if (!log_before_transfer)
                        log_recv(file, &initial_stats, iflags);
---- orig/rsync.c       2005-02-20 00:02:23
-+++ rsync.c    2005-02-19 09:32:31
-@@ -41,6 +41,7 @@ extern int keep_dirlinks;
+--- orig/rsync.c       2005-02-21 10:51:52
++++ rsync.c    2005-02-21 11:04:36
+@@ -38,6 +38,7 @@ extern int recurse;
+ extern int keep_dirlinks;
  extern int make_backups;
  extern struct stats stats;
- extern char *backup_dir;
 +extern char *link_by_hash_dir;
- extern char *log_format;
- extern char *backup_suffix;
- extern int backup_suffix_len;
-@@ -306,7 +307,12 @@ void finish_transfer(char *fname, char *
+ /*
+@@ -188,7 +189,12 @@ void finish_transfer(char *fname, char *
                rprintf(FINFO, "renaming %s to %s\n",
                        safe_fname(fnametmp), safe_fname(fname));
        }