From 489b0a72c48105c2db422ca7e745625400ceedb3 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sat, 27 Aug 2005 21:30:33 +0000 Subject: [PATCH] Fixed failing hunks. --- acls.diff | 56 ++++++++++++++++--------------- atimes.diff | 56 ++++++++++++++++--------------- backup-dir-dels.diff | 48 ++++++++++++--------------- chmod-option.diff | 32 +++++++++--------- date-only.diff | 24 +++++++------- fname-convert.diff | 28 ++++++++-------- fsync.diff | 32 +++++++++--------- ignore-case.diff | 26 +++++++-------- links-depth.diff | 28 ++++++++-------- md5.diff | 20 ++++++------ min-size.diff | 40 +++++++++++------------ openssl-support.diff | 44 ++++++++++++------------- owner-group-mod.diff | 57 ++++++++++++++++---------------- source-filter_dest-filter.diff | 40 +++++++++++------------ time-limit.diff | 28 ++++++++-------- xattrs.diff | 60 ++++++++++++++++++---------------- 16 files changed, 310 insertions(+), 309 deletions(-) diff --git a/acls.diff b/acls.diff index d5ef5e4..cc45f6f 100644 --- a/acls.diff +++ b/acls.diff @@ -1284,7 +1284,7 @@ ACLs to a non-ACL-supporting disk should complain. AC_CONFIG_FILES([Makefile lib/dummy zlib/dummy popt/dummy shconfig]) AC_OUTPUT ---- orig/flist.c 2005-07-27 23:31:12 +--- orig/flist.c 2005-08-17 06:45:07 +++ flist.c 2005-07-29 02:49:06 @@ -974,6 +974,8 @@ static struct file_struct *send_file_nam file = make_file(fname, flist, f == -2 ? SERVER_FILTERS : ALL_FILTERS); @@ -1306,7 +1306,7 @@ ACLs to a non-ACL-supporting disk should complain. } return file; } -@@ -1318,6 +1324,8 @@ struct file_list *recv_file_list(int f) +@@ -1327,6 +1333,8 @@ struct file_list *recv_file_list(int f) flags |= read_byte(f) << 8; file = receive_file_entry(flist, flags, f); @@ -1315,7 +1315,7 @@ ACLs to a non-ACL-supporting disk should complain. if (S_ISREG(file->mode)) stats.total_size += file->length; -@@ -1340,6 +1348,8 @@ struct file_list *recv_file_list(int f) +@@ -1349,6 +1357,8 @@ struct file_list *recv_file_list(int f) clean_flist(flist, relative_paths, 1); @@ -1324,7 +1324,7 @@ ACLs to a non-ACL-supporting disk should complain. if (f >= 0) { /* Now send the uid/gid list. This was introduced in * protocol version 15 */ ---- orig/generator.c 2005-07-28 01:46:25 +--- orig/generator.c 2005-08-17 06:45:07 +++ generator.c 2005-05-12 23:34:00 @@ -725,6 +725,10 @@ static void recv_generator(char *fname, if (set_perms(fname, file, statret ? NULL : &st, 0) @@ -4624,9 +4624,9 @@ ACLs to a non-ACL-supporting disk should complain. next; } ---- orig/options.c 2005-07-28 01:46:25 -+++ options.c 2005-05-12 23:34:38 -@@ -44,6 +44,7 @@ int keep_dirlinks = 0; +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:15:29 +@@ -43,6 +43,7 @@ int keep_dirlinks = 0; int copy_links = 0; int preserve_links = 0; int preserve_hard_links = 0; @@ -4634,7 +4634,7 @@ ACLs to a non-ACL-supporting disk should complain. int preserve_perms = 0; int preserve_devices = 0; int preserve_uid = 0; -@@ -182,6 +183,7 @@ static void print_rsync_version(enum log +@@ -181,6 +182,7 @@ static void print_rsync_version(enum log char const *got_socketpair = "no "; char const *have_inplace = "no "; char const *hardlinks = "no "; @@ -4642,7 +4642,7 @@ ACLs to a non-ACL-supporting disk should complain. char const *links = "no "; char const *ipv6 = "no "; STRUCT_STAT *dumstat; -@@ -198,6 +200,10 @@ static void print_rsync_version(enum log +@@ -197,6 +199,10 @@ static void print_rsync_version(enum log hardlinks = ""; #endif @@ -4653,7 +4653,7 @@ ACLs to a non-ACL-supporting disk should complain. #ifdef SUPPORT_LINKS links = ""; #endif -@@ -212,9 +218,9 @@ static void print_rsync_version(enum log +@@ -211,9 +217,9 @@ static void print_rsync_version(enum log "Copyright (C) 1996-2005 by Andrew Tridgell and others\n"); rprintf(f, "\n"); rprintf(f, "Capabilities: %d-bit files, %ssocketpairs, " @@ -4665,7 +4665,7 @@ ACLs to a non-ACL-supporting disk should complain. /* Note that this field may not have type ino_t. It depends * on the complicated interaction between largefile feature -@@ -285,6 +291,7 @@ void usage(enum logcode F) +@@ -284,6 +290,7 @@ void usage(enum logcode F) rprintf(F," -H, --hard-links preserve hard links\n"); rprintf(F," -K, --keep-dirlinks treat symlinked dir on receiver as dir\n"); rprintf(F," -p, --perms preserve permissions\n"); @@ -4673,15 +4673,17 @@ ACLs to a non-ACL-supporting disk should complain. rprintf(F," -o, --owner preserve owner (root only)\n"); rprintf(F," -g, --group preserve group\n"); rprintf(F," -D, --devices preserve devices (root only)\n"); -@@ -412,6 +419,7 @@ static struct poptOption long_options[] - {"no-whole-file", 0, POPT_ARG_VAL, &whole_file, 0, 0, 0 }, - {"copy-unsafe-links",0, POPT_ARG_NONE, ©_unsafe_links, 0, 0, 0 }, - {"perms", 'p', POPT_ARG_NONE, &preserve_perms, 0, 0, 0 }, -+ {"acls", 'A', POPT_ARG_NONE, 0, 'A', 0, 0 }, - {"owner", 'o', POPT_ARG_NONE, &preserve_uid, 0, 0, 0 }, - {"group", 'g', POPT_ARG_NONE, &preserve_gid, 0, 0, 0 }, - {"devices", 'D', POPT_ARG_NONE, &preserve_devices, 0, 0, 0 }, -@@ -882,6 +890,24 @@ int parse_arguments(int *argc, const cha +@@ -385,6 +392,9 @@ static struct poptOption long_options[] + {"perms", 'p', POPT_ARG_VAL, &preserve_perms, 1, 0, 0 }, + {"no-perms", 0, POPT_ARG_VAL, &preserve_perms, 0, 0, 0 }, + {"no-p", 0, POPT_ARG_VAL, &preserve_perms, 0, 0, 0 }, ++ {"acls", 'A', POPT_ARG_NONE, 0, 'A', 0, 0 }, ++ {"no-acls", 0, POPT_ARG_VAL, &preserve_acls, 0, 0, 0 }, ++ {"no-A", 0, POPT_ARG_VAL, &preserve_acls, 0, 0, 0 }, + {"times", 't', POPT_ARG_VAL, &preserve_times, 1, 0, 0 }, + {"no-times", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 }, + {"no-t", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 }, +@@ -916,6 +926,24 @@ int parse_arguments(int *argc, const cha basis_dir[basis_dir_cnt++] = (char *)arg; break; @@ -4689,6 +4691,7 @@ ACLs to a non-ACL-supporting disk should complain. +#ifdef SUPPORT_ACLS + preserve_acls = 1; + preserve_perms = 1; ++ break; +#else + /* FIXME: this should probably be ignored with a + * warning and then countermeasures taken to @@ -4700,13 +4703,12 @@ ACLs to a non-ACL-supporting disk should complain. + am_server ? "server" : "client"); + return 0; +#endif /* SUPPORT_ACLS */ -+ break; + + default: /* A large opt value means that set_refuse_options() * turned this option off. */ -@@ -1305,6 +1331,8 @@ void server_options(char **args,int *arg +@@ -1329,6 +1357,8 @@ void server_options(char **args,int *arg if (preserve_hard_links) argstr[x++] = 'H'; @@ -4732,9 +4734,9 @@ ACLs to a non-ACL-supporting disk should complain. if (verbose > 1 && flags & PERMS_REPORT) { enum logcode code = daemon_log_format_has_i || dry_run ? FCLIENT : FINFO; ---- orig/rsync.h 2005-05-03 17:11:01 +--- orig/rsync.h 2005-08-17 06:45:08 +++ rsync.h 2005-07-29 02:25:55 -@@ -638,6 +638,44 @@ struct stats { +@@ -646,6 +646,44 @@ struct stats { #include "lib/permstring.h" #include "lib/addrinfo.h" @@ -4779,9 +4781,9 @@ ACLs to a non-ACL-supporting disk should complain. #include "proto.h" /* We have replacement versions of these if they're missing. */ ---- orig/rsync.yo 2005-07-29 02:47:20 +--- orig/rsync.yo 2005-08-27 21:05:12 +++ rsync.yo 2004-07-03 20:11:58 -@@ -316,6 +316,7 @@ to the detailed description below for a +@@ -318,6 +318,7 @@ to the detailed description below for a -H, --hard-links preserve hard links -K, --keep-dirlinks treat symlinked dir on receiver as dir -p, --perms preserve permissions @@ -4789,7 +4791,7 @@ ACLs to a non-ACL-supporting disk should complain. -o, --owner preserve owner (root only) -g, --group preserve group -D, --devices preserve devices (root only) -@@ -636,6 +637,11 @@ based on the source file's permissions, +@@ -665,6 +666,11 @@ based on the source file's permissions, umask setting (which is the same behavior as other file-copy utilities, such as cp). diff --git a/atimes.diff b/atimes.diff index 9aea9ac..caa01c1 100644 --- a/atimes.diff +++ b/atimes.diff @@ -15,7 +15,7 @@ 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-07-27 23:31:12 +--- orig/flist.c 2005-08-17 06:45:07 +++ flist.c 2005-07-28 00:16:34 @@ -50,6 +50,7 @@ extern int preserve_perms; extern int preserve_devices; @@ -127,7 +127,7 @@ command before "make": file->length = st.st_size; file->mode = st.st_mode; file->uid = st.st_uid; ---- orig/generator.c 2005-07-27 23:31:12 +--- orig/generator.c 2005-08-17 06:45:07 +++ generator.c 2005-07-28 00:14:43 @@ -44,6 +44,7 @@ extern int preserve_uid; extern int preserve_gid; @@ -137,7 +137,7 @@ command before "make": extern int delete_before; extern int delete_during; extern int delete_after; -@@ -323,9 +324,21 @@ void itemize(struct file_struct *file, i +@@ -324,9 +325,21 @@ void itemize(struct file_struct *file, i : S_ISDIR(file->mode) ? !omit_dir_times : !S_ISLNK(file->mode); @@ -160,7 +160,7 @@ command before "make": iflags |= ITEM_REPORT_TIME; if (preserve_perms && (file->mode & CHMOD_BITS) != (st->st_mode & CHMOD_BITS)) -@@ -377,7 +390,7 @@ static int unchanged_file(char *fn, stru +@@ -378,7 +391,7 @@ static int unchanged_file(char *fn, stru if (ignore_times) return 0; @@ -169,7 +169,7 @@ command before "make": } -@@ -530,7 +543,7 @@ static int find_fuzzy(struct file_struct +@@ -538,7 +551,7 @@ static int find_fuzzy(struct file_struct name = fp->basename; if (fp->length == file->length @@ -178,7 +178,7 @@ command before "make": if (verbose > 4) { rprintf(FINFO, "fuzzy size/modtime match for %s\n", -@@ -851,7 +864,7 @@ static void recv_generator(char *fname, +@@ -881,7 +894,7 @@ static void recv_generator(char *fname, } if (update_only && statret == 0 @@ -217,8 +217,8 @@ command before "make": if (iflags & (ITEM_IS_NEW|ITEM_MISSING_DATA)) { char ch = iflags & ITEM_IS_NEW ? '+' : '?'; ---- orig/options.c 2005-07-27 23:31:12 -+++ options.c 2005-07-28 01:00:24 +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:16:51 @@ -49,6 +49,7 @@ int preserve_uid = 0; int preserve_gid = 0; int preserve_times = 0; @@ -227,7 +227,7 @@ command before "make": int update_only = 0; int cvs_exclude = 0; int dry_run = 0; -@@ -285,8 +286,9 @@ void usage(enum logcode F) +@@ -287,8 +288,9 @@ void usage(enum logcode F) rprintf(F," -o, --owner preserve owner (root only)\n"); rprintf(F," -g, --group preserve group\n"); rprintf(F," -D, --devices preserve devices (root only)\n"); @@ -239,15 +239,17 @@ command before "make": rprintf(F," -S, --sparse handle sparse files efficiently\n"); rprintf(F," -n, --dry-run show what would have been transferred\n"); rprintf(F," -W, --whole-file copy files whole (without rsync algorithm)\n"); -@@ -413,6 +415,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 }, +@@ -388,6 +390,9 @@ static struct poptOption long_options[] + {"times", 't', POPT_ARG_VAL, &preserve_times, 1, 0, 0 }, + {"no-times", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 }, + {"no-t", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 }, ++ {"atimes", 'A', POPT_ARG_VAL, &preserve_atimes, 1, 0, 0 }, ++ {"no-atimes", 0, POPT_ARG_VAL, &preserve_atimes, 0, 0, 0 }, ++ {"no-A", 0, POPT_ARG_VAL, &preserve_atimes, 0, 0, 0 }, {"omit-dir-times", 'O', POPT_ARG_VAL, &omit_dir_times, 2, 0, 0 }, -+ {"atimes", 'A', POPT_ARG_NONE, &preserve_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 }, -@@ -1292,6 +1295,8 @@ void server_options(char **args,int *arg + {"modify-window", 0, POPT_ARG_INT, &modify_window, OPT_MODIFY_WINDOW, 0, 0 }, + {"owner", 'o', POPT_ARG_VAL, &preserve_uid, 1, 0, 0 }, +@@ -1337,6 +1342,8 @@ void server_options(char **args,int *arg argstr[x++] = 'D'; if (preserve_times) argstr[x++] = 't'; @@ -308,7 +310,7 @@ command before "make": } change_uid = am_root && preserve_uid && st->st_uid != file->uid; ---- orig/rsync.h 2005-05-03 17:11:01 +--- orig/rsync.h 2005-08-17 06:45:08 +++ rsync.h 2005-07-28 00:04:51 @@ -54,6 +54,7 @@ #define XMIT_HAS_IDEV_DATA (1<<9) @@ -334,7 +336,7 @@ command before "make": #define ITEM_REPORT_CHECKSUM (1<<1) #define ITEM_REPORT_SIZE (1<<2) #define ITEM_REPORT_TIME (1<<3) -@@ -509,6 +512,7 @@ struct file_struct { +@@ -517,6 +520,7 @@ struct file_struct { struct hlink *links; } link_u; time_t modtime; @@ -342,9 +344,9 @@ command before "make": uid_t uid; gid_t gid; mode_t mode; ---- orig/rsync.yo 2005-07-07 23:11:09 +--- orig/rsync.yo 2005-08-27 21:05:12 +++ rsync.yo 2005-07-28 01:04:09 -@@ -309,8 +309,9 @@ to the detailed description below for a +@@ -321,8 +321,9 @@ to the detailed description below for a -o, --owner preserve owner (root only) -g, --group preserve group -D, --devices preserve devices (root only) @@ -355,7 +357,7 @@ command before "make": -S, --sparse handle sparse files efficiently -n, --dry-run show what would have been transferred -W, --whole-file copy files whole (without rsync algorithm) -@@ -648,6 +649,12 @@ it is preserving modification times (see +@@ -695,6 +696,12 @@ it is preserving modification times (see the directories on the receiving side, it is a good idea to use bf(-O). This option is inferred if you use bf(--backup) without bf(--backup-dir). @@ -368,7 +370,7 @@ command before "make": dit(bf(-n, --dry-run)) This tells rsync to not do any file transfers, instead it will just report the actions it would have taken. -@@ -1055,7 +1062,7 @@ changes that are being made to each file +@@ -1103,7 +1110,7 @@ changes that are being made to each file This is exactly the same as specifying bf(--log-format='%i %n%L'). The "%i" escape has a cryptic output that is 9 letters long. The general @@ -377,7 +379,7 @@ command before "make": kind of update being done, bf(X) is replaced by the file-type, and the other letters represent attributes that may be output if they are being modified. -@@ -1094,17 +1101,22 @@ quote(itemize( +@@ -1142,17 +1149,22 @@ quote(itemize( by the file transfer. it() A bf(t) means the modification time is different and is being updated to the sender's value (requires bf(--times)). An alternate value of bf(T) @@ -736,7 +738,7 @@ command before "make": return 0; } ---- orig/util.c 2005-07-27 23:31:12 +--- orig/util.c 2005-08-17 06:45:08 +++ util.c 2005-07-27 23:37:27 @@ -128,7 +128,7 @@ void overflow_exit(char *str) @@ -787,7 +789,7 @@ command before "make": t[1] = modtime; return utime(fname,t); #else -@@ -1167,8 +1171,8 @@ int msleep(int t) +@@ -1166,8 +1170,8 @@ int msleep(int t) /** @@ -798,7 +800,7 @@ command before "make": * --modify-window). * * @retval 0 if the times should be treated as the same -@@ -1177,7 +1181,7 @@ int msleep(int t) +@@ -1176,7 +1180,7 @@ int msleep(int t) * * @retval -1 if the 2nd is later **/ diff --git a/backup-dir-dels.diff b/backup-dir-dels.diff index 844bf69..3706628 100644 --- a/backup-dir-dels.diff +++ b/backup-dir-dels.diff @@ -13,7 +13,7 @@ suffix. Marc St-Onge ---- orig/backup.c 2005-02-22 01:57:58 +--- orig/backup.c 2005-06-10 21:33:27 +++ backup.c 2005-02-22 02:11:15 @@ -22,11 +22,17 @@ @@ -92,7 +92,7 @@ Marc St-Onge return 0; /* Check to see if this is a device file, or link */ -@@ -277,3 +304,13 @@ int make_backup(char *fname) +@@ -278,3 +305,13 @@ int make_backup(char *fname) return keep_backup(fname); return make_simple_backup(fname); } @@ -106,9 +106,9 @@ Marc St-Onge + deleting = 0; + return ret; +} ---- orig/generator.c 2005-05-22 20:53:34 +--- orig/generator.c 2005-08-17 06:45:07 +++ generator.c 2005-03-11 11:22:38 -@@ -86,16 +86,23 @@ extern dev_t filesystem_dev; +@@ -87,16 +87,23 @@ extern dev_t filesystem_dev; extern char *backup_dir; extern char *backup_suffix; extern int backup_suffix_len; @@ -133,7 +133,7 @@ Marc St-Onge } -@@ -112,8 +119,8 @@ static int delete_item(char *fname, int +@@ -113,8 +120,8 @@ static int delete_item(char *fname, int if (!S_ISDIR(mode)) { if (max_delete && ++deletion_count > max_delete) return 0; @@ -144,7 +144,7 @@ Marc St-Onge else ok = robust_unlink(fname) == 0; if (ok) { -@@ -136,9 +143,9 @@ static int delete_item(char *fname, int +@@ -137,9 +144,9 @@ static int delete_item(char *fname, int || (dry_run && zap_dir)) { ok = 0; errno = ENOTEMPTY; @@ -156,8 +156,8 @@ Marc St-Onge else ok = do_rmdir(fname) == 0; if (ok) { ---- orig/options.c 2005-05-19 08:52:42 -+++ options.c 2005-03-01 01:25:39 +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:17:50 @@ -128,10 +128,14 @@ int no_detach int write_batch = 0; int read_batch = 0; @@ -183,7 +183,7 @@ Marc St-Onge int rsync_port = 0; int compare_dest = 0; int copy_dest = 0; -@@ -272,6 +278,8 @@ void usage(enum logcode F) +@@ -273,6 +279,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); @@ -191,24 +191,18 @@ Marc St-Onge + rprintf(F," --suffix-dels=SUFFIX set removed-files suffix (defaults to --suffix)\n"); 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"); -@@ -370,6 +378,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 }, -+ {"suffix-dels", 0, POPT_ARG_STRING, &backup_suffix_dels, 0, 0, 0 }, - {"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 }, -@@ -451,6 +460,7 @@ static struct poptOption long_options[] - {"itemize-changes", 'i', POPT_ARG_NONE, &itemize_changes, 0, 0, 0 }, + rprintf(F," --append append data onto shorter files\n"); +@@ -460,7 +468,9 @@ static struct poptOption long_options[] {"bwlimit", 0, POPT_ARG_INT, &bwlimit, 0, 0, 0 }, + {"backup", 'b', POPT_ARG_NONE, &make_backups, 0, 0, 0 }, {"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 }, + {"backup-dir-dels", 0, POPT_ARG_STRING, &backup_dir_dels, 0, 0, 0 }, - {"hard-links", 'H', POPT_ARG_NONE, &preserve_hard_links, 0, 0, 0 }, + {"suffix", 0, POPT_ARG_STRING, &backup_suffix, 0, 0, 0 }, ++ {"suffix-dels", 0, POPT_ARG_STRING, &backup_suffix_dels, 0, 0, 0 }, + {"list-only", 0, POPT_ARG_VAL, &list_only, 2, 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 }, -@@ -1021,6 +1031,8 @@ int parse_arguments(int *argc, const cha +@@ -1053,6 +1063,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); @@ -217,7 +211,7 @@ Marc St-Onge } if (server_filter_list.head && !am_sender) { struct filter_list_struct *elp = &server_filter_list; -@@ -1055,6 +1067,14 @@ int parse_arguments(int *argc, const cha +@@ -1087,6 +1099,14 @@ int parse_arguments(int *argc, const cha return 0; } } @@ -232,7 +226,7 @@ Marc St-Onge } if (!backup_suffix) -@@ -1066,6 +1086,16 @@ int parse_arguments(int *argc, const cha +@@ -1098,6 +1118,16 @@ int parse_arguments(int *argc, const cha backup_suffix); return 0; } @@ -249,7 +243,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; -@@ -1087,6 +1117,31 @@ int parse_arguments(int *argc, const cha +@@ -1119,6 +1149,31 @@ int parse_arguments(int *argc, const cha "--suffix cannot be a null string without --backup-dir\n"); return 0; } @@ -281,7 +275,7 @@ Marc St-Onge if (make_backups && !backup_dir) omit_dir_times = 1; -@@ -1369,6 +1424,10 @@ void server_options(char **args,int *arg +@@ -1416,6 +1471,10 @@ void server_options(char **args,int *arg args[ac++] = "--backup-dir"; args[ac++] = backup_dir; } @@ -292,7 +286,7 @@ Marc St-Onge /* Only send --suffix if it specifies a non-default value. */ if (strcmp(backup_suffix, backup_dir ? "" : BACKUP_SUFFIX) != 0) { -@@ -1377,7 +1436,13 @@ void server_options(char **args,int *arg +@@ -1424,7 +1483,13 @@ void server_options(char **args,int *arg goto oom; args[ac++] = arg; } diff --git a/chmod-option.diff b/chmod-option.diff index efceaf0..4add86d 100644 --- a/chmod-option.diff +++ b/chmod-option.diff @@ -213,7 +213,7 @@ command before "make": + } + return 0; +} ---- orig/flist.c 2005-07-07 20:35:47 +--- orig/flist.c 2005-08-17 06:45:07 +++ flist.c 2004-09-18 01:51:11 @@ -62,6 +62,8 @@ extern struct file_list *the_file_list; @@ -236,8 +236,8 @@ command before "make": file->uid = st.st_uid; file->gid = st.st_gid; ---- orig/options.c 2005-05-19 08:52:42 -+++ options.c 2005-03-01 01:26:56 +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:18:52 @@ -141,6 +141,7 @@ char *log_format = NULL; char *password_file = NULL; char *rsync_path = RSYNC_PATH; @@ -255,7 +255,7 @@ command before "make": static int daemon_opt; /* sets am_daemon after option error-reporting */ static int F_option_cnt = 0; static int modify_window_set; -@@ -287,6 +290,7 @@ void usage(enum logcode F) +@@ -289,6 +292,7 @@ void usage(enum logcode F) rprintf(F," -D, --devices preserve devices (root only)\n"); rprintf(F," -t, --times preserve times\n"); rprintf(F," -O, --omit-dir-times omit directories when preserving times\n"); @@ -263,15 +263,15 @@ command before "make": rprintf(F," -S, --sparse handle sparse files efficiently\n"); rprintf(F," -n, --dry-run show what would have been transferred\n"); rprintf(F," -W, --whole-file copy files whole (without rsync algorithm)\n"); -@@ -410,6 +414,7 @@ static struct poptOption long_options[] - {"perms", 'p', POPT_ARG_NONE, &preserve_perms, 0, 0, 0 }, - {"owner", 'o', POPT_ARG_NONE, &preserve_uid, 0, 0, 0 }, - {"group", 'g', POPT_ARG_NONE, &preserve_gid, 0, 0, 0 }, +@@ -411,6 +415,7 @@ static struct poptOption long_options[] + {"no-relative", 0, POPT_ARG_VAL, &relative_paths, 0, 0, 0 }, + {"no-R", 0, POPT_ARG_VAL, &relative_paths, 0, 0, 0 }, + {"no-implied-dirs", 0, POPT_ARG_VAL, &implied_dirs, 0, 0, 0 }, + {"chmod", 0, POPT_ARG_STRING, &chmod_mode, 0, 0, 0 }, - {"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_VAL, &omit_dir_times, 2, 0, 0 }, -@@ -1090,6 +1095,13 @@ int parse_arguments(int *argc, const cha + {"ignore-times", 'I', POPT_ARG_NONE, &ignore_times, 0, 0, 0 }, + {"size-only", 0, POPT_ARG_NONE, &size_only, 0, 0, 0 }, + {"one-file-system", 'x', POPT_ARG_NONE, &one_file_system, 0, 0, 0 }, +@@ -1122,6 +1127,13 @@ int parse_arguments(int *argc, const cha if (make_backups && !backup_dir) omit_dir_times = 1; @@ -285,7 +285,7 @@ command before "make": if (log_format) { if (log_format_has(log_format, 'i')) log_format_has_i = 1; -@@ -1458,6 +1470,11 @@ void server_options(char **args,int *arg +@@ -1507,6 +1519,11 @@ void server_options(char **args,int *arg } } @@ -297,9 +297,9 @@ command before "make": if (files_from && (!am_sender || filesfrom_host)) { if (filesfrom_host) { args[ac++] = "--files-from"; ---- orig/rsync.yo 2005-07-07 23:11:09 +--- orig/rsync.yo 2005-08-27 21:05:12 +++ rsync.yo 2005-01-24 01:48:43 -@@ -311,6 +311,7 @@ to the detailed description below for a +@@ -323,6 +323,7 @@ to the detailed description below for a -D, --devices preserve devices (root only) -t, --times preserve times -O, --omit-dir-times omit directories when preserving times @@ -307,7 +307,7 @@ command before "make": -S, --sparse handle sparse files efficiently -n, --dry-run show what would have been transferred -W, --whole-file copy files whole (without rsync algorithm) -@@ -648,6 +649,14 @@ it is preserving modification times (see +@@ -695,6 +696,14 @@ it is preserving modification times (see the directories on the receiving side, it is a good idea to use bf(-O). This option is inferred if you use bf(--backup) without bf(--backup-dir). diff --git a/date-only.diff b/date-only.diff index 35421ef..032b754 100644 --- a/date-only.diff +++ b/date-only.diff @@ -15,9 +15,9 @@ Jeremy Bornstein [Patched update to have context and apply to latest CVS source.] ---- orig/generator.c 2005-05-22 20:53:34 +--- orig/generator.c 2005-08-17 06:45:07 +++ generator.c 2004-11-11 22:15:27 -@@ -57,6 +57,7 @@ extern int inplace; +@@ -58,6 +58,7 @@ extern int append_mode; extern int make_backups; extern int csum_length; extern int ignore_times; @@ -25,7 +25,7 @@ Jeremy Bornstein extern int size_only; extern OFF_T max_size; extern int io_error; -@@ -357,6 +358,8 @@ void itemize(struct file_struct *file, i +@@ -360,6 +361,8 @@ void itemize(struct file_struct *file, i /* Perform our quick-check heuristic for determining if a file is unchanged. */ static int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st) { @@ -34,8 +34,8 @@ Jeremy Bornstein if (st->st_size != file->length) return 0; ---- orig/options.c 2005-05-19 08:52:42 -+++ options.c 2005-01-28 19:14:15 +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:19:31 @@ -90,6 +90,7 @@ int keep_partial = 0; int safe_symlinks = 0; int copy_unsafe_links = 0; @@ -44,7 +44,7 @@ Jeremy Bornstein int daemon_bwlimit = 0; int bwlimit = 0; int fuzzy_basis = 0; -@@ -315,6 +316,7 @@ void usage(enum logcode F) +@@ -316,6 +317,7 @@ void usage(enum logcode F) rprintf(F," --timeout=TIME set I/O timeout in seconds\n"); rprintf(F," -I, --ignore-times don't skip files that match in size and mod-time\n"); rprintf(F," --size-only skip files that match in size\n"); @@ -52,15 +52,15 @@ Jeremy Bornstein rprintf(F," --modify-window=NUM compare mod-times with reduced accuracy\n"); rprintf(F," -T, --temp-dir=DIR create temporary files in directory DIR\n"); rprintf(F," -y, --fuzzy find similar file for basis if no dest file\n"); -@@ -374,6 +376,7 @@ static struct poptOption long_options[] - {"password-file", 0, POPT_ARG_STRING, &password_file, 0, 0, 0 }, +@@ -413,6 +415,7 @@ static struct poptOption long_options[] + {"no-implied-dirs", 0, POPT_ARG_VAL, &implied_dirs, 0, 0, 0 }, {"ignore-times", 'I', POPT_ARG_NONE, &ignore_times, 0, 0, 0 }, {"size-only", 0, POPT_ARG_NONE, &size_only, 0, 0, 0 }, + {"date-only", 0, POPT_ARG_NONE, &date_only, 0, 0, 0 }, - {"modify-window", 0, POPT_ARG_INT, &modify_window, OPT_MODIFY_WINDOW, 0, 0 }, {"one-file-system", 'x', POPT_ARG_NONE, &one_file_system, 0, 0, 0 }, + {"update", 'u', POPT_ARG_NONE, &update_only, 0, 0, 0 }, {"existing", 0, POPT_ARG_NONE, &only_existing, 0, 0, 0 }, -@@ -1398,6 +1401,9 @@ void server_options(char **args,int *arg +@@ -1445,6 +1448,9 @@ void server_options(char **args,int *arg if (size_only) args[ac++] = "--size-only"; @@ -70,7 +70,7 @@ Jeremy Bornstein if (modify_window_set) { if (asprintf(&arg, "--modify-window=%d", modify_window) < 0) goto oom; ---- orig/rsync.yo 2005-05-22 20:53:34 +--- orig/rsync.yo 2005-08-27 21:05:12 +++ rsync.yo 2005-02-11 22:49:10 @@ -350,6 +350,7 @@ to the detailed description below for a --timeout=TIME set I/O timeout in seconds @@ -80,7 +80,7 @@ Jeremy Bornstein --modify-window=NUM compare mod-times with reduced accuracy -T, --temp-dir=DIR create temporary files in directory DIR -y, --fuzzy find similar file for basis if no dest file -@@ -449,6 +450,12 @@ regardless of timestamp. This is useful +@@ -448,6 +449,12 @@ regardless of timestamp. This is useful after using another mirroring system which may not preserve timestamps exactly. diff --git a/fname-convert.diff b/fname-convert.diff index 55bc3b5..4ff573f 100644 --- a/fname-convert.diff +++ b/fname-convert.diff @@ -87,7 +87,7 @@ 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-07-27 23:31:12 +--- orig/flist.c 2005-08-17 06:45:07 +++ flist.c 2005-03-05 00:29:08 @@ -57,6 +57,7 @@ extern int copy_unsafe_links; extern int protocol_version; @@ -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(); -@@ -1279,6 +1289,9 @@ struct file_list *send_file_list(int f, +@@ -1288,6 +1298,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); -@@ -1300,6 +1313,9 @@ struct file_list *recv_file_list(int f) +@@ -1309,6 +1322,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"); flist->count = 0; -@@ -1352,6 +1368,9 @@ struct file_list *recv_file_list(int f) +@@ -1361,6 +1377,9 @@ struct file_list *recv_file_list(int f) io_error |= read_int(f); } @@ -382,7 +382,7 @@ Note that you'll need to run 'make proto' after applying this patch. + if (verbose > 2) + rprintf(FINFO, "Converted filename: %s -> %s\n", src, dest); +} ---- orig/generator.c 2005-07-28 01:46:25 +--- orig/generator.c 2005-08-17 06:45:07 +++ generator.c 2005-03-05 00:29:37 @@ -593,7 +593,13 @@ static int phase = 0; * start sending checksums. @@ -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-07-28 01:46:25 -+++ options.c 2005-02-14 02:50:32 -@@ -139,6 +139,7 @@ char *basis_dir[MAX_BASIS_DIRS+1]; +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:20:59 +@@ -138,6 +138,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; -@@ -324,6 +325,7 @@ void usage(enum logcode F) +@@ -322,6 +323,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,14 +438,14 @@ 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"); -@@ -437,6 +439,7 @@ static struct poptOption long_options[] +@@ -447,6 +449,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 }, + {"fname-convert", 0, POPT_ARG_STRING, &fname_convert_cmd, 0, 0, 0 }, - /* TODO: Should this take an optional int giving the compression level? */ {"compress", 'z', POPT_ARG_NONE, &do_compression, 0, 0, 0 }, - {"stats", 0, POPT_ARG_NONE, &do_stats, 0, 0, 0 }, + {0, 'P', POPT_ARG_NONE, 0, 'P', 0, 0 }, + {"progress", 0, POPT_ARG_VAL, &do_progress, 1, 0, 0 }, --- orig/pipe.c 2005-04-09 18:00:29 +++ pipe.c 2004-07-03 20:18:02 @@ -23,7 +23,6 @@ @@ -514,9 +514,9 @@ Note that you'll need to run 'make proto' after applying this patch. + + return result; +} ---- orig/util.c 2005-07-27 23:31:12 +--- orig/util.c 2005-08-17 06:45:08 +++ util.c 2004-07-03 20:18:02 -@@ -1349,3 +1349,55 @@ uint32 fuzzy_distance(const char *s1, in +@@ -1348,3 +1348,55 @@ uint32 fuzzy_distance(const char *s1, in return a[len2-1]; } diff --git a/fsync.diff b/fsync.diff index f14a026..f6674ab 100644 --- a/fsync.diff +++ b/fsync.diff @@ -1,17 +1,17 @@ This patch from Sami Farin lets you specify --fsync if you want fsync() to be called on every file we write. ---- orig/options.c 2005-07-28 01:46:25 -+++ options.c 2005-07-28 01:47:53 -@@ -42,6 +42,7 @@ int append_mode = 0; - int archive_mode = 0; +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:21:34 +@@ -41,6 +41,7 @@ int whole_file = -1; + int append_mode = 0; int keep_dirlinks = 0; int copy_links = 0; +int do_fsync = 0; int preserve_links = 0; int preserve_hard_links = 0; int preserve_perms = 0; -@@ -314,6 +315,7 @@ void usage(enum logcode F) +@@ -312,6 +313,7 @@ void usage(enum logcode F) rprintf(F," --partial keep partially transferred files\n"); rprintf(F," --partial-dir=DIR put a partially transferred file into DIR\n"); rprintf(F," --delay-updates put all updated files into place at transfer's end\n"); @@ -19,15 +19,15 @@ to be called on every file we write. rprintf(F," --numeric-ids don't map uid/gid values by user/group name\n"); rprintf(F," --timeout=TIME set I/O timeout in seconds\n"); rprintf(F," -I, --ignore-times don't skip files that match in size and mod-time\n"); -@@ -398,6 +400,7 @@ static struct poptOption long_options[] - {"safe-links", 0, POPT_ARG_NONE, &safe_symlinks, 0, 0, 0 }, - {"help", 'h', POPT_ARG_NONE, 0, 'h', 0, 0 }, - {"backup", 'b', POPT_ARG_NONE, &make_backups, 0, 0, 0 }, +@@ -467,6 +469,7 @@ static struct poptOption long_options[] + {"only-write-batch", 0, POPT_ARG_STRING, &batch_name, OPT_ONLY_WRITE_BATCH, 0, 0 }, + {"files-from", 0, POPT_ARG_STRING, &files_from, 0, 0, 0 }, + {"from0", '0', POPT_ARG_NONE, &eol_nulls, 0, 0, 0}, + {"fsync", 0, POPT_ARG_NONE, &do_fsync, 0, 0, 0 }, - {"dry-run", 'n', POPT_ARG_NONE, &dry_run, 0, 0, 0 }, - {"sparse", 'S', POPT_ARG_NONE, &sparse_files, 0, 0, 0 }, - {"cvs-exclude", 'C', POPT_ARG_NONE, &cvs_exclude, 0, 0, 0 }, -@@ -1471,6 +1474,9 @@ void server_options(char **args,int *arg + {"numeric-ids", 0, POPT_ARG_NONE, &numeric_ids, 0, 0, 0 }, + {"timeout", 0, POPT_ARG_INT, &io_timeout, 0, 0, 0 }, + {"rsh", 'e', POPT_ARG_STRING, &shell_cmd, 0, 0, 0 }, +@@ -1495,6 +1498,9 @@ void server_options(char **args,int *arg args[ac++] = tmpdir; } @@ -37,7 +37,7 @@ to be called on every file we write. if (basis_dir[0] && am_sender) { /* the server only needs this option if it is not the sender, * and it may be an older version that doesn't know this ---- orig/receiver.c 2005-07-28 01:46:25 +--- orig/receiver.c 2005-08-17 06:45:08 +++ receiver.c 2005-02-20 00:17:37 @@ -38,6 +38,7 @@ extern int keep_dirlinks; extern int preserve_hard_links; @@ -47,7 +47,7 @@ to be called on every file we write. extern int basis_dir_cnt; extern int make_backups; extern int cleanup_got_literal; -@@ -314,6 +315,12 @@ static int receive_data(int f_in, char * +@@ -318,6 +319,12 @@ static int receive_data(int f_in, char * exit_cleanup(RERR_FILEIO); } @@ -70,7 +70,7 @@ to be called on every file we write. char *partial_dir; struct filter_list_struct server_filter_list; ---- orig/util.c 2005-07-27 23:31:12 +--- orig/util.c 2005-08-17 06:45:08 +++ util.c 2004-07-03 20:18:13 @@ -33,6 +33,7 @@ extern int module_id; extern int modify_window; diff --git a/ignore-case.diff b/ignore-case.diff index 5a0b6cb..732c2ee 100644 --- a/ignore-case.diff +++ b/ignore-case.diff @@ -35,8 +35,8 @@ in a case-insensitive manner. case '?': /* Match anything but '/'. */ if (*text == '/') ---- orig/options.c 2005-05-19 08:52:42 -+++ options.c 2005-05-03 16:47:52 +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:22:04 @@ -101,6 +101,7 @@ int max_delete = 0; OFF_T max_size = 0; int ignore_errors = 0; @@ -45,7 +45,7 @@ in a case-insensitive manner. int blocking_io = -1; int checksum_seed = 0; int inplace = 0; -@@ -332,6 +333,7 @@ void usage(enum logcode F) +@@ -333,6 +334,7 @@ void usage(enum logcode F) rprintf(F," --include-from=FILE read include patterns from FILE\n"); rprintf(F," --files-from=FILE read list of source-file names from FILE\n"); rprintf(F," -0, --from0 all *-from/filter files are delimited by 0s\n"); @@ -53,15 +53,15 @@ in a case-insensitive manner. rprintf(F," --address=ADDRESS bind address for outgoing socket to daemon\n"); rprintf(F," --port=PORT specify double-colon alternate port number\n"); rprintf(F," --blocking-io use blocking I/O for the remote shell\n"); -@@ -392,6 +394,7 @@ static struct poptOption long_options[] - {"include", 0, POPT_ARG_STRING, 0, OPT_INCLUDE, 0, 0 }, - {"exclude-from", 0, POPT_ARG_STRING, 0, OPT_EXCLUDE_FROM, 0, 0 }, - {"include-from", 0, POPT_ARG_STRING, 0, OPT_INCLUDE_FROM, 0, 0 }, +@@ -417,6 +419,7 @@ static struct poptOption long_options[] + {"update", 'u', POPT_ARG_NONE, &update_only, 0, 0, 0 }, + {"existing", 0, POPT_ARG_NONE, &only_existing, 0, 0, 0 }, + {"ignore-existing", 0, POPT_ARG_NONE, &opt_ignore_existing, 0, 0, 0 }, + {"ignore-case", 0, POPT_ARG_NONE, &ignore_case, 0, 0, 0 }, - {"safe-links", 0, POPT_ARG_NONE, &safe_symlinks, 0, 0, 0 }, - {"help", 'h', POPT_ARG_NONE, 0, 'h', 0, 0 }, - {"backup", 'b', POPT_ARG_NONE, &make_backups, 0, 0, 0 }, -@@ -1410,6 +1413,9 @@ void server_options(char **args,int *arg + {"max-size", 0, POPT_ARG_STRING, &max_size_arg, OPT_MAX_SIZE, 0, 0 }, + {"sparse", 'S', POPT_ARG_NONE, &sparse_files, 0, 0, 0 }, + {"inplace", 0, POPT_ARG_NONE, &inplace, 0, 0, 0 }, +@@ -1457,6 +1460,9 @@ void server_options(char **args,int *arg args[ac++] = arg; } @@ -81,7 +81,7 @@ in a case-insensitive manner. char *partial_dir; struct filter_list_struct server_filter_list; ---- orig/util.c 2005-05-03 16:47:33 +--- orig/util.c 2005-08-17 06:45:08 +++ util.c 2004-08-13 16:40:34 @@ -31,6 +31,7 @@ extern int verbose; extern int dry_run; @@ -91,7 +91,7 @@ in a case-insensitive manner. extern char *partial_dir; extern struct filter_list_struct server_filter_list; -@@ -1029,11 +1030,23 @@ int u_strcmp(const char *cs1, const char +@@ -1039,11 +1040,23 @@ int u_strcmp(const char *cs1, const char { const uchar *s1 = (const uchar *)cs1; const uchar *s2 = (const uchar *)cs2; diff --git a/links-depth.diff b/links-depth.diff index 90bc544..bf4d031 100644 --- a/links-depth.diff +++ b/links-depth.diff @@ -6,7 +6,7 @@ with the latest codebase, but even in its original form it didn't handle relative symlinks properly, and that has not yet been fixed in this modified version. ---- orig/flist.c 2005-05-28 08:24:57 +--- orig/flist.c 2005-08-17 06:45:07 +++ flist.c 2004-07-16 16:58:04 @@ -45,6 +45,7 @@ extern int filesfrom_fd; extern int one_file_system; @@ -62,9 +62,9 @@ in this modified version. #else linkname_len = 0; #endif ---- orig/options.c 2005-05-19 08:52:42 -+++ options.c 2005-01-28 19:33:24 -@@ -42,6 +42,7 @@ int archive_mode = 0; +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:22:39 +@@ -42,6 +42,7 @@ int append_mode = 0; int keep_dirlinks = 0; int copy_links = 0; int preserve_links = 0; @@ -72,8 +72,8 @@ in this modified version. int preserve_hard_links = 0; int preserve_perms = 0; int preserve_devices = 0; -@@ -276,6 +277,7 @@ void usage(enum logcode F) - rprintf(F," --inplace update destination files in-place (SEE MAN PAGE)\n"); +@@ -278,6 +279,7 @@ void usage(enum logcode F) + rprintf(F," --append append data onto shorter files\n"); rprintf(F," -d, --dirs transfer directories without recursing\n"); rprintf(F," -l, --links copy symlinks as symlinks\n"); + rprintf(F," --links-depth=NUM follow symlinks up to NUM depth\n"); @@ -81,17 +81,17 @@ in this modified version. rprintf(F," --copy-unsafe-links only \"unsafe\" symlinks are transformed\n"); rprintf(F," --safe-links ignore symlinks that point outside the source tree\n"); @@ -402,6 +404,7 @@ static struct poptOption long_options[] - {"inplace", 0, POPT_ARG_NONE, &inplace, 0, 0, 0 }, - {"dirs", 'd', POPT_ARG_VAL, &xfer_dirs, 2, 0, 0 }, - {"links", 'l', POPT_ARG_NONE, &preserve_links, 0, 0, 0 }, + {"links", 'l', POPT_ARG_VAL, &preserve_links, 1, 0, 0 }, + {"no-links", 0, POPT_ARG_VAL, &preserve_links, 0, 0, 0 }, + {"no-l", 0, POPT_ARG_VAL, &preserve_links, 0, 0, 0 }, + {"links-depth", 0, POPT_ARG_INT, &follow_links_depth , 0, 0, 0 }, {"copy-links", 'L', POPT_ARG_NONE, ©_links, 0, 0, 0 }, - {"keep-dirlinks", 'K', POPT_ARG_NONE, &keep_dirlinks, 0, 0, 0 }, - {"whole-file", 'W', POPT_ARG_VAL, &whole_file, 1, 0, 0 }, ---- orig/rsync.yo 2005-05-22 20:53:34 + {"copy-unsafe-links",0, POPT_ARG_NONE, ©_unsafe_links, 0, 0, 0 }, + {"safe-links", 0, POPT_ARG_NONE, &safe_symlinks, 0, 0, 0 }, +--- orig/rsync.yo 2005-08-27 21:05:12 +++ rsync.yo 2005-01-28 19:33:40 -@@ -311,6 +311,7 @@ to the detailed description below for a - --inplace update destination files in-place +@@ -312,6 +312,7 @@ to the detailed description below for a + --append append data onto shorter files -d, --dirs transfer directories without recursing -l, --links copy symlinks as symlinks + --links-depth=NUM follow symlinks up to NUM depth diff --git a/md5.diff b/md5.diff index f9c5cd3..8bbc974 100644 --- a/md5.diff +++ b/md5.diff @@ -551,8 +551,8 @@ +void md5_finish(md5_context *ctx, uchar digest[16]); + +#endif /* md5.h */ ---- orig/options.c 2005-05-19 08:52:42 -+++ options.c 2005-06-14 02:21:26 +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:23:04 @@ -107,6 +107,7 @@ int inplace = 0; int delay_updates = 0; long block_size = 0; /* "long" because popt can't set an int32. */ @@ -569,15 +569,15 @@ #ifdef INET6 rprintf(F," -4, --ipv4 prefer IPv4\n"); rprintf(F," -6, --ipv6 prefer IPv6\n"); -@@ -460,6 +462,7 @@ static struct poptOption long_options[] - {"no-implied-dirs", 0, POPT_ARG_VAL, &implied_dirs, 0, 0, 0 }, - {"protocol", 0, POPT_ARG_INT, &protocol_version, 0, 0, 0 }, - {"checksum-seed", 0, POPT_ARG_INT, &checksum_seed, 0, 0, 0 }, +@@ -441,6 +443,7 @@ static struct poptOption long_options[] + {"whole-file", 'W', POPT_ARG_VAL, &whole_file, 1, 0, 0 }, + {"no-whole-file", 0, POPT_ARG_VAL, &whole_file, 0, 0, 0 }, + {"no-W", 0, POPT_ARG_VAL, &whole_file, 0, 0, 0 }, + {"md5", 0, POPT_ARG_NONE, &use_md5, 0, 0, 0 }, - #ifdef INET6 - {"ipv4", '4', POPT_ARG_VAL, &default_af_hint, AF_INET, 0, 0 }, - {"ipv6", '6', POPT_ARG_VAL, &default_af_hint, AF_INET6, 0, 0 }, -@@ -1365,6 +1368,9 @@ void server_options(char **args,int *arg + {"checksum", 'c', POPT_ARG_NONE, &always_checksum, 0, 0, 0 }, + {"block-size", 'B', POPT_ARG_LONG, &block_size, 0, 0, 0 }, + {"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 }, +@@ -1412,6 +1415,9 @@ void server_options(char **args,int *arg args[ac++] = arg; } diff --git a/min-size.diff b/min-size.diff index 95b522c..5493855 100644 --- a/min-size.diff +++ b/min-size.diff @@ -1,4 +1,4 @@ ---- orig/generator.c 2005-07-28 01:46:25 +--- orig/generator.c 2005-08-17 06:45:07 +++ generator.c 2005-04-28 16:19:24 @@ -59,6 +59,7 @@ extern int make_backups; extern int csum_length; @@ -8,7 +8,7 @@ extern OFF_T max_size; extern int io_error; extern int allowed_lull; -@@ -842,6 +843,15 @@ static void recv_generator(char *fname, +@@ -864,6 +865,15 @@ static void recv_generator(char *fname, return; } @@ -24,7 +24,7 @@ if (max_size && file->length > max_size) { if (verbose > 1) { if (the_file_list->count == 1) -@@ -1247,7 +1257,7 @@ void generate_files(int f_out, struct fi +@@ -1269,7 +1279,7 @@ void generate_files(int f_out, struct fi phase++; csum_length = SUM_LENGTH; @@ -33,9 +33,9 @@ update_only = always_checksum = size_only = 0; ignore_times = 1; if (append_mode) /* resend w/o append mode */ ---- orig/options.c 2005-07-28 01:46:25 -+++ options.c 2005-07-28 01:48:23 -@@ -99,6 +99,7 @@ int only_existing = 0; +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:23:36 +@@ -98,6 +98,7 @@ int only_existing = 0; int opt_ignore_existing = 0; int need_messages_from_generator = 0; int max_delete = 0; @@ -43,7 +43,7 @@ OFF_T max_size = 0; int ignore_errors = 0; int modify_window = 0; -@@ -168,7 +169,7 @@ static int itemize_changes = 0; +@@ -167,7 +168,7 @@ static int itemize_changes = 0; static int refused_delete, refused_archive_part; static int refused_partial, refused_progress, refused_delete_before; static int refused_inplace; @@ -52,7 +52,7 @@ static char partialdir_for_delayupdate[] = ".~tmp~"; /** Local address to bind. As a character string because it's -@@ -310,6 +311,7 @@ void usage(enum logcode F) +@@ -308,6 +309,7 @@ void usage(enum logcode F) rprintf(F," --ignore-errors delete even if there are I/O errors\n"); rprintf(F," --force force deletion of directories even if not empty\n"); rprintf(F," --max-delete=NUM don't delete more than NUM files\n"); @@ -60,7 +60,7 @@ rprintf(F," --max-size=SIZE don't transfer any file larger than SIZE\n"); rprintf(F," --partial keep partially transferred files\n"); rprintf(F," --partial-dir=DIR put a partially transferred file into DIR\n"); -@@ -365,7 +367,7 @@ void usage(enum logcode F) +@@ -362,7 +364,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, @@ -69,15 +69,15 @@ OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_ONLY_WRITE_BATCH, OPT_MAX_SIZE, OPT_REFUSED_BASE = 9000}; -@@ -430,6 +432,7 @@ static struct poptOption long_options[] - {"rsh", 'e', POPT_ARG_STRING, &shell_cmd, 0, 0, 0 }, - {"block-size", 'B', POPT_ARG_LONG, &block_size, 0, 0, 0 }, - {"max-delete", 0, POPT_ARG_INT, &max_delete, 0, 0, 0 }, +@@ -417,6 +419,7 @@ static struct poptOption long_options[] + {"update", 'u', POPT_ARG_NONE, &update_only, 0, 0, 0 }, + {"existing", 0, POPT_ARG_NONE, &only_existing, 0, 0, 0 }, + {"ignore-existing", 0, POPT_ARG_NONE, &opt_ignore_existing, 0, 0, 0 }, + {"min-size", 0, POPT_ARG_STRING, &min_size_arg, OPT_MIN_SIZE, 0, 0 }, {"max-size", 0, POPT_ARG_STRING, &max_size_arg, OPT_MAX_SIZE, 0, 0 }, - {"timeout", 0, POPT_ARG_INT, &io_timeout, 0, 0, 0 }, - {"temp-dir", 'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 }, -@@ -840,6 +843,15 @@ int parse_arguments(int *argc, const cha + {"sparse", 'S', POPT_ARG_NONE, &sparse_files, 0, 0, 0 }, + {"inplace", 0, POPT_ARG_NONE, &inplace, 0, 0, 0 }, +@@ -874,6 +877,15 @@ int parse_arguments(int *argc, const cha read_batch = 1; break; @@ -93,7 +93,7 @@ case OPT_MAX_SIZE: if ((max_size = parse_size_arg(max_size_arg)) <= 0) { snprintf(err_buf, sizeof err_buf, -@@ -1371,6 +1383,11 @@ void server_options(char **args,int *arg +@@ -1395,6 +1407,11 @@ void server_options(char **args,int *arg args[ac++] = arg; } @@ -105,9 +105,9 @@ if (max_size && am_sender) { args[ac++] = "--max-size"; args[ac++] = max_size_arg; ---- orig/rsync.yo 2005-07-28 01:46:25 +--- orig/rsync.yo 2005-08-27 21:05:12 +++ rsync.yo 2005-05-06 19:12:35 -@@ -332,6 +332,7 @@ to the detailed description below for a +@@ -342,6 +342,7 @@ to the detailed description below for a --ignore-errors delete even if there are I/O errors --force force deletion of dirs even if not empty --max-delete=NUM don't delete more than NUM files @@ -115,7 +115,7 @@ --max-size=SIZE don't transfer any file larger than SIZE --partial keep partially transferred files --partial-dir=DIR put a partially transferred file into DIR -@@ -756,10 +757,16 @@ dit(bf(--max-delete=NUM)) This tells rsy +@@ -794,10 +795,16 @@ dit(bf(--max-delete=NUM)) This tells rsy files or directories (NUM must be non-zero). This is useful when mirroring very large trees to prevent disasters. diff --git a/openssl-support.diff b/openssl-support.diff index 2fc4f95..d6ee76d 100644 --- a/openssl-support.diff +++ b/openssl-support.diff @@ -37,9 +37,9 @@ All warnings apply; I don't do C programming all that often, so I can't say if I've left any cleanup/compatibility errors in the code. ---- orig/Makefile.in 2004-11-02 16:47:15 +--- orig/Makefile.in 2005-07-07 23:11:07 +++ Makefile.in 2004-10-08 20:17:06 -@@ -39,7 +39,7 @@ OBJS3=progress.o pipe.o +@@ -38,7 +38,7 @@ OBJS3=progress.o pipe.o DAEMON_OBJ = params.o loadparm.o clientserver.o access.o connection.o authenticate.o popt_OBJS=popt/findme.o popt/popt.o popt/poptconfig.o \ popt/popthelp.o popt/poptparse.o @@ -72,7 +72,7 @@ can't say if I've left any cleanup/compatibility errors in the code. if (verbose > 3) { rprintf(FINFO,"_exit_cleanup(code=%d, file=%s, line=%d): entered\n", code, safe_fname(file), line); ---- orig/clientserver.c 2005-05-19 08:52:42 +--- orig/clientserver.c 2005-08-17 06:45:07 +++ clientserver.c 2005-04-09 17:39:57 @@ -44,6 +44,9 @@ extern int io_timeout; extern int orig_umask; @@ -160,7 +160,7 @@ can't say if I've left any cleanup/compatibility errors in the code. return -1; } -@@ -541,6 +589,7 @@ static void send_listing(int fd) +@@ -597,6 +645,7 @@ static void send_listing(int fd) io_printf(fd,"@RSYNCD: EXIT\n"); } @@ -168,7 +168,7 @@ can't say if I've left any cleanup/compatibility errors in the code. /* this is called when a connection is established to a client and we want to start talking. The setup of the system is done from here */ -@@ -590,6 +639,9 @@ int start_daemon(int f_in, int f_out) +@@ -646,6 +695,9 @@ int start_daemon(int f_in, int f_out) if (protocol_version > remote_protocol) protocol_version = remote_protocol; @@ -178,7 +178,7 @@ can't say if I've left any cleanup/compatibility errors in the code. line[0] = 0; if (!read_line(f_in, line, sizeof line - 1)) return -1; -@@ -599,6 +651,20 @@ int start_daemon(int f_in, int f_out) +@@ -655,6 +707,20 @@ int start_daemon(int f_in, int f_out) return -1; } @@ -199,9 +199,9 @@ can't say if I've left any cleanup/compatibility errors in the code. if (*line == '#') { /* it's some sort of command that I don't understand */ io_printf(f_out, "@ERROR: Unknown command '%s'\n", line); ---- orig/configure.in 2005-05-28 08:24:57 +--- orig/configure.in 2005-07-29 02:47:19 +++ configure.in 2004-07-03 20:22:28 -@@ -284,6 +284,21 @@ yes +@@ -293,6 +293,21 @@ yes AC_SEARCH_LIBS(getaddrinfo, inet6) fi @@ -223,8 +223,8 @@ can't say if I've left any cleanup/compatibility errors in the code. AC_MSG_CHECKING([whether to call shutdown on all sockets]) case $host_os in *cygwin* ) AC_MSG_RESULT(yes) ---- orig/options.c 2005-05-19 08:52:42 -+++ options.c 2005-05-19 08:58:46 +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:24:31 @@ -157,6 +157,14 @@ int log_format_has_o_or_i = 0; int always_checksum = 0; int list_only = 0; @@ -240,7 +240,7 @@ can't say if I've left any cleanup/compatibility errors in the code. #define MAX_BATCH_NAME_LEN 256 /* Must be less than MAXPATHLEN-13 */ char *batch_name = NULL; -@@ -182,6 +190,7 @@ static void print_rsync_version(enum log +@@ -183,6 +191,7 @@ static void print_rsync_version(enum log char const *hardlinks = "no "; char const *links = "no "; char const *ipv6 = "no "; @@ -248,7 +248,7 @@ can't say if I've left any cleanup/compatibility errors in the code. STRUCT_STAT *dumstat; #ifdef HAVE_SOCKETPAIR -@@ -204,6 +213,10 @@ static void print_rsync_version(enum log +@@ -205,6 +214,10 @@ static void print_rsync_version(enum log ipv6 = ""; #endif @@ -259,7 +259,7 @@ can't say if I've left any cleanup/compatibility errors in the code. rprintf(f, "%s version %s protocol version %d\n", RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION); rprintf(f, -@@ -217,10 +230,10 @@ static void print_rsync_version(enum log +@@ -218,10 +231,10 @@ static void print_rsync_version(enum log /* Note that this field may not have type ino_t. It depends * on the complicated interaction between largefile feature * macros. */ @@ -295,10 +295,10 @@ can't say if I've left any cleanup/compatibility errors in the code. OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_ONLY_WRITE_BATCH, OPT_MAX_SIZE, OPT_REFUSED_BASE = 9000}; -@@ -464,6 +484,13 @@ static struct poptOption long_options[] - {"ipv4", '4', POPT_ARG_VAL, &default_af_hint, AF_INET, 0, 0 }, - {"ipv6", '6', POPT_ARG_VAL, &default_af_hint, AF_INET6, 0, 0 }, - #endif +@@ -485,6 +505,13 @@ static struct poptOption long_options[] + {"checksum-seed", 0, POPT_ARG_INT, &checksum_seed, 0, 0, 0 }, + {"server", 0, POPT_ARG_NONE, &am_server, 0, 0, 0 }, + {"sender", 0, POPT_ARG_NONE, 0, OPT_SENDER, 0, 0 }, +#if HAVE_OPENSSL + {"ssl", 0, POPT_ARG_NONE, 0, OPT_USE_SSL, 0, 0}, + {"ssl-cert", 0, POPT_ARG_STRING, &ssl_cert_path, OPT_USE_SSL, 0, 0}, @@ -306,10 +306,10 @@ can't say if I've left any cleanup/compatibility errors in the code. + {"ssl-key-passwd", 0, POPT_ARG_STRING, &ssl_key_passwd, OPT_USE_SSL, 0, 0}, + {"ssl-ca-certs", 0, POPT_ARG_STRING, &ssl_ca_path, OPT_USE_SSL, 0, 0}, +#endif - /* All these options switch us into daemon-mode option-parsing. */ + /* All the following options switch us into daemon-mode option-parsing. */ {"config", 0, POPT_ARG_STRING, 0, OPT_DAEMON, 0, 0 }, {"daemon", 0, POPT_ARG_NONE, 0, OPT_DAEMON, 0, 0 }, -@@ -876,6 +903,12 @@ int parse_arguments(int *argc, const cha +@@ -916,6 +943,12 @@ int parse_arguments(int *argc, const cha basis_dir[basis_dir_cnt++] = (char *)arg; break; @@ -322,7 +322,7 @@ can't say if I've left any cleanup/compatibility errors in the code. default: /* A large opt value means that set_refuse_options() * turned this option off. */ -@@ -1129,6 +1162,17 @@ int parse_arguments(int *argc, const cha +@@ -1174,6 +1207,17 @@ int parse_arguments(int *argc, const cha if (delay_updates && !partial_dir) partial_dir = partialdir_for_delayupdate; @@ -340,7 +340,7 @@ can't say if I've left any cleanup/compatibility errors in the code. if (inplace) { #ifdef HAVE_FTRUNCATE if (partial_dir) { -@@ -1498,11 +1542,28 @@ char *check_for_hostspec(char *s, char * +@@ -1547,11 +1591,28 @@ char *check_for_hostspec(char *s, char * { char *p; int not_host; @@ -371,7 +371,7 @@ can't say if I've left any cleanup/compatibility errors in the code. if ((p = strchr(s, '/')) != NULL) { hostlen = p - s; path = p + 1; ---- orig/rsync.h 2005-05-03 17:11:01 +--- orig/rsync.h 2005-08-17 06:45:08 +++ rsync.h 2004-10-08 21:01:33 @@ -32,6 +32,7 @@ diff --git a/owner-group-mod.diff b/owner-group-mod.diff index c2f7d74..af3b4fb 100644 --- a/owner-group-mod.diff +++ b/owner-group-mod.diff @@ -34,20 +34,32 @@ groups, even if they weren't returned by getgroups(). E.g.: + preserve_gid = 2; + } } ---- orig/options.c 2005-05-19 08:52:42 -+++ options.c 2004-09-09 01:59:08 -@@ -408,8 +408,8 @@ static struct poptOption long_options[] - {"no-whole-file", 0, POPT_ARG_VAL, &whole_file, 0, 0, 0 }, - {"copy-unsafe-links",0, POPT_ARG_NONE, ©_unsafe_links, 0, 0, 0 }, - {"perms", 'p', POPT_ARG_NONE, &preserve_perms, 0, 0, 0 }, -- {"owner", 'o', POPT_ARG_NONE, &preserve_uid, 0, 0, 0 }, -- {"group", 'g', POPT_ARG_NONE, &preserve_gid, 0, 0, 0 }, -+ {"owner", 'o', POPT_ARG_NONE, 0, 'o', 0, 0 }, -+ {"group", 'g', POPT_ARG_NONE, 0, 'g', 0, 0 }, - {"devices", 'D', POPT_ARG_NONE, &preserve_devices, 0, 0, 0 }, - {"times", 't', POPT_ARG_NONE, &preserve_times, 0, 0, 0 }, +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:26:04 +@@ -390,10 +390,10 @@ static struct poptOption long_options[] + {"no-t", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 }, {"omit-dir-times", 'O', POPT_ARG_VAL, &omit_dir_times, 2, 0, 0 }, -@@ -781,6 +781,14 @@ int parse_arguments(int *argc, const cha + {"modify-window", 0, POPT_ARG_INT, &modify_window, OPT_MODIFY_WINDOW, 0, 0 }, +- {"owner", 'o', POPT_ARG_VAL, &preserve_uid, 1, 0, 0 }, ++ {"owner", 'o', POPT_ARG_NONE, 0, 'o', 0, 0 }, + {"no-owner", 0, POPT_ARG_VAL, &preserve_uid, 0, 0, 0 }, + {"no-o", 0, POPT_ARG_VAL, &preserve_uid, 0, 0, 0 }, +- {"group", 'g', POPT_ARG_VAL, &preserve_gid, 1, 0, 0 }, ++ {"group", 'g', POPT_ARG_NONE, 0, 'g', 0, 0 }, + {"no-group", 0, POPT_ARG_VAL, &preserve_gid, 0, 0, 0 }, + {"no-g", 0, POPT_ARG_VAL, &preserve_gid, 0, 0, 0 }, + {"devices", 'D', POPT_ARG_VAL, &preserve_devices, 1, 0, 0 }, +@@ -812,7 +812,8 @@ int parse_arguments(int *argc, const cha + #endif + preserve_perms = 1; + preserve_times = 1; +- preserve_gid = 1; ++ preserve_uid |= 1; ++ preserve_gid |= 1; + preserve_uid = 1; + preserve_devices = 1; + break; +@@ -821,6 +822,14 @@ int parse_arguments(int *argc, const cha usage(FINFO); exit_cleanup(0); @@ -62,18 +74,7 @@ groups, even if they weren't returned by getgroups(). E.g.: case 'v': verbose++; break; -@@ -963,8 +971,8 @@ int parse_arguments(int *argc, const cha - #endif - preserve_perms = 1; - preserve_times = 1; -- preserve_gid = 1; -- preserve_uid = 1; -+ preserve_uid |= 1; -+ preserve_gid |= 1; - preserve_devices = 1; - } - -@@ -1282,10 +1290,16 @@ void server_options(char **args,int *arg +@@ -1329,10 +1338,16 @@ void server_options(char **args,int *arg if (preserve_hard_links) argstr[x++] = 'H'; @@ -92,7 +93,7 @@ groups, even if they weren't returned by getgroups(). E.g.: if (preserve_devices) argstr[x++] = 'D'; if (preserve_times) ---- orig/rsync.c 2005-03-16 02:19:30 +--- orig/rsync.c 2005-07-27 23:31:12 +++ rsync.c 2005-02-01 10:46:04 @@ -27,7 +27,6 @@ extern int dry_run; extern int daemon_log_format_has_i; @@ -102,8 +103,8 @@ groups, even if they weren't returned by getgroups(). E.g.: extern int am_server; extern int am_sender; extern int am_generator; -@@ -81,7 +80,7 @@ int set_perms(char *fname,struct file_st - updated = 1; +@@ -82,7 +81,7 @@ int set_perms(char *fname,struct file_st + updated = 1; } - change_uid = am_root && preserve_uid && st->st_uid != file->uid; diff --git a/source-filter_dest-filter.diff b/source-filter_dest-filter.diff index 36b426b..e48f884 100644 --- a/source-filter_dest-filter.diff +++ b/source-filter_dest-filter.diff @@ -44,9 +44,9 @@ You should run "make proto" before running "make". return 0; /* if always checksum is set then we use the checksum instead ---- orig/options.c 2005-07-28 01:46:25 -+++ options.c 2005-08-17 07:47:00 -@@ -91,6 +91,7 @@ int keep_partial = 0; +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:27:17 +@@ -90,6 +90,7 @@ int keep_partial = 0; int safe_symlinks = 0; int copy_unsafe_links = 0; int size_only = 0; @@ -54,7 +54,7 @@ You should run "make proto" before running "make". int daemon_bwlimit = 0; int bwlimit = 0; int fuzzy_basis = 0; -@@ -139,6 +140,8 @@ char *basis_dir[MAX_BASIS_DIRS+1]; +@@ -138,6 +139,8 @@ char *basis_dir[MAX_BASIS_DIRS+1]; char *config_file = NULL; char *shell_cmd = NULL; char *log_format = NULL; @@ -63,7 +63,7 @@ You should run "make proto" before running "make". char *password_file = NULL; char *rsync_path = RSYNC_PATH; char *backup_dir = NULL; -@@ -318,6 +321,7 @@ void usage(enum logcode F) +@@ -316,6 +319,7 @@ void usage(enum logcode F) rprintf(F," --timeout=TIME set I/O timeout in seconds\n"); rprintf(F," -I, --ignore-times don't skip files that match in size and mod-time\n"); rprintf(F," --size-only skip files that match in size\n"); @@ -71,7 +71,7 @@ You should run "make proto" before running "make". rprintf(F," --modify-window=NUM compare mod-times with reduced accuracy\n"); rprintf(F," -T, --temp-dir=DIR create temporary files in directory DIR\n"); rprintf(F," -y, --fuzzy find similar file for basis if no dest file\n"); -@@ -350,6 +354,8 @@ void usage(enum logcode F) +@@ -347,6 +351,8 @@ void usage(enum logcode F) rprintf(F," --write-batch=FILE write a batched update to FILE\n"); rprintf(F," --only-write-batch=FILE like --write-batch but w/o updating destination\n"); rprintf(F," --read-batch=FILE read a batched update from FILE\n"); @@ -80,24 +80,24 @@ You should run "make proto" before running "make". rprintf(F," --protocol=NUM force an older protocol version to be used\n"); #ifdef INET6 rprintf(F," -4, --ipv4 prefer IPv4\n"); -@@ -377,6 +383,7 @@ static struct poptOption long_options[] - {"password-file", 0, POPT_ARG_STRING, &password_file, 0, 0, 0 }, +@@ -413,6 +419,7 @@ static struct poptOption long_options[] + {"no-implied-dirs", 0, POPT_ARG_VAL, &implied_dirs, 0, 0, 0 }, {"ignore-times", 'I', POPT_ARG_NONE, &ignore_times, 0, 0, 0 }, {"size-only", 0, POPT_ARG_NONE, &size_only, 0, 0, 0 }, + {"times-only", 0, POPT_ARG_NONE, ×_only , 0, 0, 0 }, - {"modify-window", 0, POPT_ARG_INT, &modify_window, OPT_MODIFY_WINDOW, 0, 0 }, {"one-file-system", 'x', POPT_ARG_NONE, &one_file_system, 0, 0, 0 }, + {"update", 'u', POPT_ARG_NONE, &update_only, 0, 0, 0 }, {"existing", 0, POPT_ARG_NONE, &only_existing, 0, 0, 0 }, -@@ -462,6 +469,8 @@ static struct poptOption long_options[] - {"files-from", 0, POPT_ARG_STRING, &files_from, 0, 0, 0 }, - {"from0", '0', POPT_ARG_NONE, &eol_nulls, 0, 0, 0}, - {"no-implied-dirs", 0, POPT_ARG_VAL, &implied_dirs, 0, 0, 0 }, +@@ -481,6 +488,8 @@ static struct poptOption long_options[] + {"password-file", 0, POPT_ARG_STRING, &password_file, 0, 0, 0 }, + {"blocking-io", 0, POPT_ARG_VAL, &blocking_io, 1, 0, 0 }, + {"no-blocking-io", 0, POPT_ARG_VAL, &blocking_io, 0, 0, 0 }, + {"source-filter", 0, POPT_ARG_STRING, &source_filter, 0, 0, 0 }, + {"dest-filter", 0, POPT_ARG_STRING, &dest_filter, 0, 0, 0 }, {"protocol", 0, POPT_ARG_INT, &protocol_version, 0, 0, 0 }, {"checksum-seed", 0, POPT_ARG_INT, &checksum_seed, 0, 0, 0 }, - #ifdef INET6 -@@ -1195,6 +1204,16 @@ int parse_arguments(int *argc, const cha + {"server", 0, POPT_ARG_NONE, &am_server, 0, 0, 0 }, +@@ -1219,6 +1228,16 @@ int parse_arguments(int *argc, const cha } } @@ -114,7 +114,7 @@ You should run "make proto" before running "make". if (files_from) { char *h, *p; int q; -@@ -1418,6 +1437,25 @@ void server_options(char **args,int *arg +@@ -1442,6 +1461,25 @@ void server_options(char **args,int *arg args[ac++] = "--only-write-batch=X"; } @@ -302,9 +302,9 @@ You should run "make proto" before running "make". #define MAX_BASIS_DIRS 20 #define MAX_SERVER_ARGS (MAX_BASIS_DIRS*2 + 100) ---- orig/rsync.yo 2005-08-17 06:45:08 +--- orig/rsync.yo 2005-08-27 21:05:12 +++ rsync.yo 2005-08-17 07:08:21 -@@ -351,6 +351,7 @@ to the detailed description below for a +@@ -350,6 +350,7 @@ to the detailed description below for a --timeout=TIME set I/O timeout in seconds -I, --ignore-times don't skip files that match size and time --size-only skip files that match in size @@ -312,7 +312,7 @@ You should run "make proto" before running "make". --modify-window=NUM compare mod-times with reduced accuracy -T, --temp-dir=DIR create temporary files in directory DIR -y, --fuzzy find similar file for basis if no dest file -@@ -383,6 +384,8 @@ to the detailed description below for a +@@ -381,6 +382,8 @@ to the detailed description below for a --write-batch=FILE write a batched update to FILE --only-write-batch=FILE like --write-batch but w/o updating dest --read-batch=FILE read a batched update from FILE @@ -321,7 +321,7 @@ You should run "make proto" before running "make". --protocol=NUM force an older protocol version to be used --checksum-seed=NUM set block/file checksum seed (advanced) -4, --ipv4 prefer IPv4 -@@ -1332,6 +1335,33 @@ file previously generated by bf(--write- +@@ -1346,6 +1349,33 @@ file previously generated by bf(--write- If em(FILE) is "-" the batch data will be read from standard input. See the "BATCH MODE" section for details. diff --git a/time-limit.diff b/time-limit.diff index ff07273..cb110c9 100644 --- a/time-limit.diff +++ b/time-limit.diff @@ -3,7 +3,7 @@ to be simpler and more efficient by Wayne Davison. Do we need configure support for mktime()? ---- orig/io.c 2005-05-19 08:52:42 +--- orig/io.c 2005-08-17 06:45:07 +++ io.c 2005-05-19 09:01:27 @@ -57,6 +57,7 @@ extern int remove_sent_files; extern int preserve_hard_links; @@ -41,8 +41,8 @@ Do we need configure support for mktime()? if (t - last_io_in >= io_timeout) { if (!am_server && !am_daemon) { rprintf(FERROR, "io timeout after %d seconds -- exiting\n", ---- orig/options.c 2005-05-19 08:52:42 -+++ options.c 2005-05-19 09:01:55 +--- orig/options.c 2005-08-27 21:11:26 ++++ options.c 2005-08-27 21:27:57 @@ -106,6 +106,7 @@ int checksum_seed = 0; int inplace = 0; int delay_updates = 0; @@ -68,16 +68,16 @@ Do we need configure support for mktime()? OPT_REFUSED_BASE = 9000}; static struct poptOption long_options[] = { -@@ -450,6 +454,8 @@ static struct poptOption long_options[] +@@ -458,6 +462,8 @@ static struct poptOption long_options[] {"log-format", 0, POPT_ARG_STRING, &log_format, 0, 0, 0 }, {"itemize-changes", 'i', POPT_ARG_NONE, &itemize_changes, 0, 0, 0 }, {"bwlimit", 0, POPT_ARG_INT, &bwlimit, 0, 0, 0 }, + {"stop-at", 0, POPT_ARG_STRING, 0, OPT_STOP_AT, 0, 0 }, + {"time-limit", 0, POPT_ARG_STRING, 0, OPT_TIME_LIMIT, 0, 0 }, + {"backup", 'b', POPT_ARG_NONE, &make_backups, 0, 0, 0 }, {"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 }, - {"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 }, -@@ -876,6 +882,36 @@ int parse_arguments(int *argc, const cha + {"suffix", 0, POPT_ARG_STRING, &backup_suffix, 0, 0, 0 }, +@@ -916,6 +922,36 @@ int parse_arguments(int *argc, const cha basis_dir[basis_dir_cnt++] = (char *)arg; break; @@ -114,7 +114,7 @@ Do we need configure support for mktime()? default: /* A large opt value means that set_refuse_options() * turned this option off. */ -@@ -1365,6 +1401,15 @@ void server_options(char **args,int *arg +@@ -1412,6 +1448,15 @@ void server_options(char **args,int *arg args[ac++] = arg; } @@ -130,9 +130,9 @@ Do we need configure support for mktime()? if (backup_dir) { args[ac++] = "--backup-dir"; args[ac++] = backup_dir; ---- orig/rsync.yo 2005-05-22 20:53:34 +--- orig/rsync.yo 2005-08-27 21:05:12 +++ rsync.yo 2005-02-01 10:46:35 -@@ -379,6 +379,8 @@ to the detailed description below for a +@@ -378,6 +378,8 @@ to the detailed description below for a --password-file=FILE read password from FILE --list-only list the files instead of copying them --bwlimit=KBPS limit I/O bandwidth; KBytes per second @@ -141,7 +141,7 @@ Do we need configure support for mktime()? --write-batch=FILE write a batched update to FILE --only-write-batch=FILE like --write-batch but w/o updating dest --read-batch=FILE read a batched update from FILE -@@ -1283,6 +1285,19 @@ transfer was too fast, it will wait befo +@@ -1320,6 +1322,19 @@ transfer was too fast, it will wait befo result is an average transfer rate equaling the specified limit. A value of zero specifies no limit. @@ -161,9 +161,9 @@ Do we need configure support for mktime()? dit(bf(--write-batch=FILE)) Record a file that can later be applied to another identical destination with bf(--read-batch). See the "BATCH MODE" section for details, and also the bf(--only-write-batch) option. ---- orig/util.c 2005-05-03 16:47:33 +--- orig/util.c 2005-08-17 06:45:08 +++ util.c 2004-07-03 20:23:22 -@@ -126,6 +126,132 @@ void overflow(char *str) +@@ -126,6 +126,132 @@ void overflow_exit(char *str) exit_cleanup(RERR_MALLOC); } @@ -295,4 +295,4 @@ Do we need configure support for mktime()? +} - int set_modtime(char *fname, time_t modtime) + int set_modtime(char *fname, time_t modtime, mode_t mode) diff --git a/xattrs.diff b/xattrs.diff index 1841956..4b05252 100644 --- a/xattrs.diff +++ b/xattrs.diff @@ -54,7 +54,7 @@ After applying this patch, run these commands for a successful build: if (verbose > 1) { --- orig/configure.in 2004-08-19 19:53:27 +++ configure.in 2005-05-12 22:57:53 -@@ -821,6 +821,30 @@ samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_ +@@ -822,6 +822,30 @@ samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_ AC_MSG_RESULT(no) ) @@ -85,11 +85,11 @@ After applying this patch, run these commands for a successful build: AC_CONFIG_FILES([Makefile lib/dummy zlib/dummy popt/dummy shconfig]) AC_OUTPUT ---- orig/flist.c 2005-03-16 02:24:11 +--- orig/flist.c 2005-07-29 02:49:06 +++ flist.c 2005-05-12 22:55:41 @@ -976,6 +976,8 @@ static struct file_struct *send_file_nam return NULL; - if (!MAKE_ACL(file, fname)) + if (MAKE_ACL(file, fname) < 0) return NULL; + if (!MAKE_XATTR(file, fname)) + return NULL; @@ -108,7 +108,7 @@ After applying this patch, run these commands for a successful build: } return file; } -@@ -1325,6 +1329,7 @@ struct file_list *recv_file_list(int f) +@@ -1334,6 +1338,7 @@ struct file_list *recv_file_list(int f) file = receive_file_entry(flist, flags, f); RECEIVE_ACL(file, f); @@ -116,7 +116,7 @@ After applying this patch, run these commands for a successful build: if (S_ISREG(file->mode)) stats.total_size += file->length; -@@ -1349,6 +1354,7 @@ struct file_list *recv_file_list(int f) +@@ -1358,6 +1363,7 @@ struct file_list *recv_file_list(int f) clean_flist(flist, relative_paths, 1); SORT_FILE_ACL_INDEX_LISTS(); @@ -126,7 +126,7 @@ After applying this patch, run these commands for a successful build: /* Now send the uid/gid list. This was introduced in --- orig/generator.c 2005-05-12 23:34:00 +++ generator.c 2005-05-12 23:21:08 -@@ -720,6 +720,10 @@ static void recv_generator(char *fname, +@@ -729,6 +729,10 @@ static void recv_generator(char *fname, if (f_out == -1) SET_ACL(fname, file); #endif @@ -193,8 +193,8 @@ After applying this patch, run these commands for a successful build: +#else + +#endif /* No xattrs */ ---- orig/options.c 2005-05-12 23:34:38 -+++ options.c 2005-05-12 23:21:25 +--- orig/options.c 2005-08-27 21:15:29 ++++ options.c 2005-08-27 21:29:40 @@ -44,6 +44,7 @@ int copy_links = 0; int preserve_links = 0; int preserve_hard_links = 0; @@ -203,7 +203,7 @@ After applying this patch, run these commands for a successful build: int preserve_perms = 0; int preserve_devices = 0; int preserve_uid = 0; -@@ -182,6 +183,7 @@ static void print_rsync_version(enum log +@@ -183,6 +184,7 @@ static void print_rsync_version(enum log char const *have_inplace = "no "; char const *hardlinks = "no "; char const *acls = "no "; @@ -211,7 +211,7 @@ After applying this patch, run these commands for a successful build: char const *links = "no "; char const *ipv6 = "no "; STRUCT_STAT *dumstat; -@@ -201,7 +203,9 @@ static void print_rsync_version(enum log +@@ -202,7 +204,9 @@ static void print_rsync_version(enum log #ifdef SUPPORT_ACLS acls = ""; #endif @@ -222,7 +222,7 @@ After applying this patch, run these commands for a successful build: #ifdef SUPPORT_LINKS links = ""; #endif -@@ -216,9 +220,9 @@ static void print_rsync_version(enum log +@@ -217,9 +221,9 @@ static void print_rsync_version(enum log "Copyright (C) 1996-2005 by Andrew Tridgell and others\n"); rprintf(f, "\n"); rprintf(f, "Capabilities: %d-bit files, %ssocketpairs, " @@ -234,7 +234,7 @@ After applying this patch, run these commands for a successful build: /* Note that this field may not have type ino_t. It depends * on the complicated interaction between largefile feature -@@ -289,6 +293,7 @@ void usage(enum logcode F) +@@ -291,6 +295,7 @@ void usage(enum logcode F) rprintf(F," -K, --keep-dirlinks treat symlinked dir on receiver as dir\n"); rprintf(F," -p, --perms preserve permissions\n"); rprintf(F," -A, --acls preserve ACLs (implies --perms)\n"); @@ -242,33 +242,35 @@ After applying this patch, run these commands for a successful build: rprintf(F," -o, --owner preserve owner (root only)\n"); rprintf(F," -g, --group preserve group\n"); rprintf(F," -D, --devices preserve devices (root only)\n"); -@@ -416,6 +421,7 @@ static struct poptOption long_options[] - {"copy-unsafe-links",0, POPT_ARG_NONE, ©_unsafe_links, 0, 0, 0 }, - {"perms", 'p', POPT_ARG_NONE, &preserve_perms, 0, 0, 0 }, - {"acls", 'A', POPT_ARG_NONE, 0, 'A', 0, 0 }, -+ {"xattrs", 'X', POPT_ARG_NONE, 0, 'X', 0, 0 }, - {"owner", 'o', POPT_ARG_NONE, &preserve_uid, 0, 0, 0 }, - {"group", 'g', POPT_ARG_NONE, &preserve_gid, 0, 0, 0 }, - {"devices", 'D', POPT_ARG_NONE, &preserve_devices, 0, 0, 0 }, -@@ -901,6 +907,17 @@ int parse_arguments(int *argc, const cha +@@ -395,6 +400,9 @@ static struct poptOption long_options[] + {"acls", 'A', POPT_ARG_NONE, 0, 'A', 0, 0 }, + {"no-acls", 0, POPT_ARG_VAL, &preserve_acls, 0, 0, 0 }, + {"no-A", 0, POPT_ARG_VAL, &preserve_acls, 0, 0, 0 }, ++ {"xattrs", 'X', POPT_ARG_NONE, 0, 'X', 0, 0 }, ++ {"no-xattrs", 0, POPT_ARG_VAL, &preserve_xattrs, 0, 0, 0 }, ++ {"no-X", 0, POPT_ARG_VAL, &preserve_xattrs, 0, 0, 0 }, + {"times", 't', POPT_ARG_VAL, &preserve_times, 1, 0, 0 }, + {"no-times", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 }, + {"no-t", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 }, +@@ -943,6 +951,17 @@ int parse_arguments(int *argc, const cha + return 0; #endif /* SUPPORT_ACLS */ - break; + case 'X': +#ifdef SUPPORT_XATTRS + preserve_xattrs = 1; + preserve_perms = 1; ++ break; +#else + snprintf(err_buf,sizeof(err_buf), + "extended attributes are not supported on this %s\n", + am_server ? "server" : "client"); + return 0; +#endif /* SUPPORT_XATTRS */ -+ break; default: /* A large opt value means that set_refuse_options() -@@ -1310,6 +1327,8 @@ void server_options(char **args,int *arg +@@ -1359,6 +1378,8 @@ void server_options(char **args,int *arg argstr[x++] = 'H'; if (preserve_acls) argstr[x++] = 'A'; @@ -279,7 +281,7 @@ After applying this patch, run these commands for a successful build: if (preserve_gid) --- orig/rsync.c 2004-07-03 20:11:58 +++ rsync.c 2005-03-03 01:31:22 -@@ -144,6 +144,14 @@ int set_perms(char *fname,struct file_st +@@ -146,6 +146,14 @@ int set_perms(char *fname,struct file_st if (SET_ACL(fname, file) == 0) updated = 1; } @@ -294,9 +296,9 @@ After applying this patch, run these commands for a successful build: if (verbose > 1 && flags & PERMS_REPORT) { enum logcode code = daemon_log_format_has_i || dry_run ---- orig/rsync.h 2005-05-12 23:32:56 +--- orig/rsync.h 2005-07-29 02:25:55 +++ rsync.h 2005-05-12 23:19:46 -@@ -676,6 +676,38 @@ struct stats { +@@ -684,6 +684,38 @@ struct stats { #endif /* SUPPORT_ACLS */ #include "smb_acls.h" @@ -337,7 +339,7 @@ After applying this patch, run these commands for a successful build: /* We have replacement versions of these if they're missing. */ --- orig/rsync.yo 2004-07-03 20:11:58 +++ rsync.yo 2005-03-03 01:33:53 -@@ -307,6 +307,7 @@ to the detailed description below for a +@@ -319,6 +319,7 @@ to the detailed description below for a -K, --keep-dirlinks treat symlinked dir on receiver as dir -p, --perms preserve permissions -A, --acls preserve ACLs (implies -p) [local option] @@ -345,7 +347,7 @@ After applying this patch, run these commands for a successful build: -o, --owner preserve owner (root only) -g, --group preserve group -D, --devices preserve devices (root only) -@@ -624,6 +625,11 @@ ACLs to be the same as the local ACLs. +@@ -671,6 +672,11 @@ ACLs to be the same as the local ACLs. remote machine's rsync supports this option also. This is a non-standard option. -- 2.34.1