From: Wayne Davison Date: Fri, 11 Feb 2005 23:25:23 +0000 (+0000) Subject: Fixed hunk fuzz. X-Git-Url: https://mattmccutchen.net/rsync/rsync-patches.git/commitdiff_plain/27a7053cbe08bdce668f7fe62e53b06fbb6d4cb9?ds=sidebyside Fixed hunk fuzz. --- diff --git a/ODBC-dblog.diff b/ODBC-dblog.diff index 22515d8..43f07a6 100644 --- a/ODBC-dblog.diff +++ b/ODBC-dblog.diff @@ -99,7 +99,7 @@ This patch adds the following options: OBJS2=options.o flist.o io.o compat.o hlink.o token.o uidlist.o socket.o \ fileio.o batch.o clientname.o OBJS3=progress.o pipe.o ---- orig/cleanup.c 2005-01-28 23:01:07 +--- orig/cleanup.c 2005-02-07 20:41:56 +++ cleanup.c 2004-07-03 20:22:18 @@ -142,8 +142,12 @@ void _exit_cleanup(int code, const char code = RERR_VANISHED; @@ -115,10 +115,10 @@ This patch adds the following options: if (verbose > 2) { rprintf(FINFO,"_exit_cleanup(code=%d, file=%s, line=%d): about to call exit(%d)\n", ---- orig/clientserver.c 2005-02-01 10:39:22 +--- orig/clientserver.c 2005-02-07 20:41:56 +++ clientserver.c 2004-07-03 20:22:18 @@ -344,6 +344,9 @@ static int rsync_module(int f_in, int f_ - XFLG_WORD_SPLIT | XFLG_ANCHORED2ABS | XFLG_DEF_EXCLUDE); + XFLG_ANCHORED2ABS | XFLG_OLD_PREFIXES); log_init(); +#if HAVE_LIBODBC @@ -127,7 +127,7 @@ This patch adds the following options: if (use_chroot) { /* -@@ -463,6 +466,9 @@ static int rsync_module(int f_in, int f_ +@@ -466,6 +469,9 @@ static int rsync_module(int f_in, int f_ rprintf(FLOG, "rsync %s %s from %s@%s (%s)\n", am_sender ? "on" : "to", request, auth_user, host, addr); @@ -686,7 +686,7 @@ This patch adds the following options: FN_LOCAL_BOOL(lp_ignore_errors, ignore_errors) FN_LOCAL_BOOL(lp_ignore_nonreadable, ignore_nonreadable) FN_LOCAL_STRING(lp_uid, uid) ---- orig/log.c 2005-02-01 10:39:22 +--- orig/log.c 2005-02-07 20:41:56 +++ log.c 2004-07-03 20:22:18 @@ -75,7 +75,7 @@ struct { /* @@ -697,9 +697,9 @@ This patch adds the following options: { int i; for (i = 0; rerr_names[i].name; i++) { ---- orig/main.c 2005-01-30 10:07:21 +--- orig/main.c 2005-02-07 20:41:56 +++ main.c 2004-07-03 20:22:18 -@@ -137,6 +137,9 @@ static void report(int f) +@@ -134,6 +134,9 @@ static void report(int f) if (am_daemon) { log_exit(0, __FILE__, __LINE__); @@ -709,9 +709,9 @@ This patch adds the following options: if (f == -1 || !am_sender) return; } ---- orig/receiver.c 2005-02-03 02:04:20 +--- orig/receiver.c 2005-02-11 10:53:14 +++ receiver.c 2004-07-20 21:47:47 -@@ -504,6 +504,9 @@ int recv_files(int f_in, struct file_lis +@@ -505,6 +505,9 @@ int recv_files(int f_in, struct file_lis fname, fd2, file->length); log_recv(file, &initial_stats); @@ -721,7 +721,7 @@ This patch adds the following options: if (fd1 != -1) close(fd1); ---- orig/sender.c 2005-02-03 02:04:20 +--- orig/sender.c 2005-02-11 22:24:19 +++ sender.c 2004-07-15 02:37:48 @@ -236,6 +236,9 @@ void send_files(struct file_list *flist, diff --git a/acls.diff b/acls.diff index 8d28b9a..3b2d22c 100644 --- a/acls.diff +++ b/acls.diff @@ -1166,9 +1166,9 @@ ACLs to a non-ACL-supporting disk should complain. +} + +#endif /* SUPPORT_ACLS */ ---- orig/backup.c 2005-01-25 12:14:14 +--- orig/backup.c 2005-02-07 20:41:56 +++ backup.c 2004-10-06 00:13:09 -@@ -119,6 +119,7 @@ static int make_bak_dir(char *fullpath) +@@ -121,6 +121,7 @@ static int make_bak_dir(char *fullpath) } else { do_lchown(fullpath, st.st_uid, st.st_gid); do_chmod(fullpath, st.st_mode); @@ -1176,7 +1176,7 @@ ACLs to a non-ACL-supporting disk should complain. } } *p = '/'; -@@ -171,6 +172,8 @@ static int keep_backup(char *fname) +@@ -173,6 +174,8 @@ static int keep_backup(char *fname) if (!(buf = get_backup_name(fname))) return 0; @@ -1185,14 +1185,14 @@ ACLs to a non-ACL-supporting disk should complain. /* Check to see if this is a device file, or link */ if (IS_DEVICE(file->mode)) { if (am_root && preserve_devices) { -@@ -244,6 +247,7 @@ static int keep_backup(char *fname) +@@ -246,6 +249,7 @@ static int keep_backup(char *fname) } } set_perms(buf, file, NULL, 0); + CLEANUP_KEEP_BACKUP_ACL(); free(file); - if (verbose > 1) + if (verbose > 1) { --- orig/configure.in 2005-01-28 23:01:08 +++ configure.in 2004-08-19 19:53:27 @@ -467,6 +467,11 @@ if test x"$ac_cv_func_strcasecmp" = x"no @@ -1285,9 +1285,9 @@ 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-02-03 02:04:20 +--- orig/flist.c 2005-02-09 02:37:15 +++ flist.c 2004-07-03 20:11:58 -@@ -983,6 +983,8 @@ void send_file_name(int f, struct file_l +@@ -982,6 +982,8 @@ void send_file_name(int f, struct file_l if (!file) return; @@ -1296,7 +1296,7 @@ ACLs to a non-ACL-supporting disk should complain. maybe_emit_filelist_progress(flist); -@@ -991,6 +993,10 @@ void send_file_name(int f, struct file_l +@@ -990,6 +992,10 @@ void send_file_name(int f, struct file_l if (file->basename[0]) { flist->files[flist->count++] = file; send_file_entry(file, f, base_flags); @@ -1325,9 +1325,9 @@ ACLs to a non-ACL-supporting disk should complain. if (f != -1) { /* Now send the uid/gid list. This was introduced in * protocol version 15 */ ---- orig/generator.c 2005-02-03 02:04:20 +--- orig/generator.c 2005-02-11 20:25:07 +++ generator.c 2005-01-30 10:09:44 -@@ -313,6 +313,10 @@ static void recv_generator(char *fname, +@@ -315,6 +315,10 @@ static void recv_generator(char *fname, if (set_perms(fname, file, statret ? NULL : &st, 0) && verbose && f_out != -1) rprintf(FINFO, "%s/\n", safe_fname(fname)); @@ -4597,7 +4597,7 @@ ACLs to a non-ACL-supporting disk should complain. next; } ---- orig/options.c 2005-02-01 10:39:22 +--- orig/options.c 2005-02-11 18:21:45 +++ options.c 2004-08-19 17:38:57 @@ -44,6 +44,7 @@ int keep_dirlinks = 0; int copy_links = 0; @@ -4607,7 +4607,7 @@ ACLs to a non-ACL-supporting disk should complain. int preserve_perms = 0; int preserve_devices = 0; int preserve_uid = 0; -@@ -164,6 +165,7 @@ static void print_rsync_version(enum log +@@ -166,6 +167,7 @@ static void print_rsync_version(enum log char const *got_socketpair = "no "; char const *have_inplace = "no "; char const *hardlinks = "no "; @@ -4615,7 +4615,7 @@ ACLs to a non-ACL-supporting disk should complain. char const *links = "no "; char const *ipv6 = "no "; STRUCT_STAT *dumstat; -@@ -180,6 +182,10 @@ static void print_rsync_version(enum log +@@ -182,6 +184,10 @@ static void print_rsync_version(enum log hardlinks = ""; #endif @@ -4626,7 +4626,7 @@ ACLs to a non-ACL-supporting disk should complain. #if SUPPORT_LINKS links = ""; #endif -@@ -194,9 +200,9 @@ static void print_rsync_version(enum log +@@ -196,9 +202,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, " @@ -4638,7 +4638,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 -@@ -266,6 +272,7 @@ void usage(enum logcode F) +@@ -268,6 +274,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"); @@ -4646,7 +4646,7 @@ 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"); -@@ -384,6 +391,7 @@ static struct poptOption long_options[] +@@ -387,6 +394,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 }, @@ -4654,7 +4654,7 @@ ACLs to a non-ACL-supporting disk should complain. {"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 }, -@@ -802,6 +810,24 @@ int parse_arguments(int *argc, const cha +@@ -831,6 +839,24 @@ int parse_arguments(int *argc, const cha basis_dir[basis_dir_cnt++] = (char *)arg; break; @@ -4678,8 +4678,8 @@ ACLs to a non-ACL-supporting disk should complain. + default: /* A large opt value means that set_refuse_options() - * turned this option off (opt-BASE is its index). */ -@@ -1144,6 +1170,8 @@ void server_options(char **args,int *arg + * turned this option off. */ +@@ -1203,6 +1229,8 @@ void server_options(char **args,int *arg if (preserve_hard_links) argstr[x++] = 'H'; @@ -4688,9 +4688,9 @@ ACLs to a non-ACL-supporting disk should complain. if (preserve_uid) argstr[x++] = 'o'; if (preserve_gid) ---- orig/rsync.c 2005-02-01 10:39:22 +--- orig/rsync.c 2005-02-07 20:41:57 +++ rsync.c 2004-07-03 20:11:58 -@@ -235,6 +235,14 @@ int set_perms(char *fname,struct file_st +@@ -238,6 +238,14 @@ int set_perms(char *fname,struct file_st } #endif @@ -4704,10 +4704,10 @@ ACLs to a non-ACL-supporting disk should complain. + if (verbose > 1 && flags & PERMS_REPORT) { if (updated) - rprintf(FINFO,"%s\n",fname); ---- orig/rsync.h 2005-02-03 02:04:20 + rprintf(FINFO, "%s\n", safe_fname(fname)); +--- orig/rsync.h 2005-02-07 20:41:57 +++ rsync.h 2004-07-03 20:11:58 -@@ -605,6 +605,40 @@ struct stats { +@@ -607,6 +607,40 @@ struct stats { #include "lib/permstring.h" #include "lib/addrinfo.h" @@ -4748,7 +4748,7 @@ 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-02-01 10:39:23 +--- orig/rsync.yo 2005-02-11 23:14:49 +++ rsync.yo 2004-07-03 20:11:58 @@ -317,6 +317,7 @@ to the detailed description below for a -H, --hard-links preserve hard links @@ -4758,7 +4758,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) -@@ -612,6 +613,11 @@ source file's permissions and the umask +@@ -613,6 +614,11 @@ source file's permissions and the umask other files (including updated files) retain their existing permissions (which is the same behavior as other file-copy utilities, such as cp). diff --git a/backup-dir-dels.diff b/backup-dir-dels.diff index 45099ee..29936dc 100644 --- a/backup-dir-dels.diff +++ b/backup-dir-dels.diff @@ -13,7 +13,7 @@ suffix. Marc St-Onge ---- orig/backup.c 2005-01-25 12:14:14 +--- orig/backup.c 2005-02-07 20:41:56 +++ backup.c 2004-09-22 02:36:06 @@ -22,11 +22,17 @@ @@ -71,7 +71,7 @@ Marc St-Onge if (!fnamebak) return 0; -@@ -81,7 +106,8 @@ path +@@ -83,7 +108,8 @@ path static int make_bak_dir(char *fullpath) { STRUCT_STAT st; @@ -81,7 +81,7 @@ Marc St-Onge char *end = rel + strlen(rel); char *p = end; -@@ -168,7 +194,8 @@ static int keep_backup(char *fname) +@@ -170,7 +196,8 @@ static int keep_backup(char *fname) if (!(file = make_file(fname, NULL, NO_FILTERS))) return 1; /* the file could have disappeared */ @@ -91,7 +91,7 @@ Marc St-Onge return 0; /* Check to see if this is a device file, or link */ -@@ -259,3 +286,13 @@ int make_backup(char *fname) +@@ -263,3 +290,13 @@ int make_backup(char *fname) return keep_backup(fname); return make_simple_backup(fname); } @@ -105,9 +105,9 @@ Marc St-Onge + deleting = 0; + return ret; +} ---- orig/flist.c 2005-02-03 02:04:20 +--- orig/flist.c 2005-02-09 02:37:15 +++ flist.c 2005-01-30 10:11:42 -@@ -47,6 +47,8 @@ extern char curr_dir[MAXPATHLEN]; +@@ -46,6 +46,8 @@ extern char curr_dir[MAXPATHLEN]; extern unsigned int curr_dir_len; extern char *backup_dir; extern char *backup_suffix; @@ -116,7 +116,7 @@ Marc St-Onge extern int filesfrom_fd; extern int one_file_system; -@@ -61,6 +63,7 @@ extern int relative_paths; +@@ -60,6 +62,7 @@ extern int relative_paths; extern int implied_dirs; extern int make_backups; extern int backup_suffix_len; @@ -124,7 +124,7 @@ Marc St-Onge extern int copy_links; extern int copy_unsafe_links; extern int protocol_version; -@@ -1647,10 +1650,14 @@ char *f_name(struct file_struct *f) +@@ -1664,10 +1667,14 @@ char *f_name(struct file_struct *f) } @@ -140,9 +140,9 @@ Marc St-Onge } -@@ -1739,11 +1746,12 @@ void delete_missing(struct file_list *fu - || (delete_during && S_ISDIR(mode) - && !S_ISDIR(full_list->files[j]->mode))) { +@@ -1755,11 +1762,12 @@ void delete_missing(struct file_list *fu + if ((j = flist_find(full_list, dir_list->files[i])) < 0 + || (S_ISDIR(mode) && !S_ISDIR(full_list->files[j]->mode))) { char *f = f_name(dir_list->files[i]); - if (make_backups && (backup_dir || !is_backup_file(f)) + int backup_file = is_backup_file(f); @@ -155,10 +155,10 @@ Marc St-Onge + rprintf(FINFO, "safe-deleting %s\n", safe_fname(f)); } - } else if (S_ISDIR(mode)) { ---- orig/options.c 2005-02-01 10:39:22 + } else if (S_ISDIR(mode)) +--- orig/options.c 2005-02-11 18:21:45 +++ options.c 2005-01-28 19:17:35 -@@ -119,10 +119,14 @@ int no_detach = 0; +@@ -118,10 +118,14 @@ int no_detach = 0; int write_batch = 0; int read_batch = 0; int backup_dir_len = 0; @@ -173,7 +173,7 @@ Marc St-Onge char *tmpdir = NULL; char *partial_dir = NULL; char *basis_dir[MAX_BASIS_DIRS+1]; -@@ -132,7 +136,9 @@ char *log_format = NULL; +@@ -131,7 +135,9 @@ char *log_format = NULL; char *password_file = NULL; char *rsync_path = RSYNC_PATH; char *backup_dir = NULL; @@ -183,7 +183,7 @@ Marc St-Onge int rsync_port = 0; int compare_dest = 0; int copy_dest = 0; -@@ -256,6 +262,8 @@ void usage(enum logcode F) +@@ -258,6 +264,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); @@ -192,7 +192,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"); -@@ -348,6 +356,7 @@ static struct poptOption long_options[] +@@ -350,6 +358,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 }, @@ -200,7 +200,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 }, -@@ -424,6 +433,7 @@ static struct poptOption long_options[] +@@ -427,6 +436,7 @@ static struct poptOption long_options[] {"log-format", 0, POPT_ARG_STRING, &log_format, 0, 0, 0 }, {"bwlimit", 0, POPT_ARG_INT, &bwlimit, 0, 0, 0 }, {"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 }, @@ -208,7 +208,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 }, -@@ -938,6 +948,8 @@ int parse_arguments(int *argc, const cha +@@ -968,6 +978,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 +217,7 @@ Marc St-Onge if (files_from) files_from = sanitize_path(NULL, files_from, NULL, 0); } -@@ -964,6 +976,12 @@ int parse_arguments(int *argc, const cha +@@ -1000,6 +1012,12 @@ int parse_arguments(int *argc, const cha if (check_filter(elp, backup_dir, 1) < 0) goto options_rejected; } @@ -229,8 +229,8 @@ Marc St-Onge + } } if (server_filter_list.head && files_from) { - clean_fname(files_from, 1); -@@ -984,6 +1002,16 @@ int parse_arguments(int *argc, const cha + if (!*files_from) +@@ -1022,6 +1040,16 @@ int parse_arguments(int *argc, const cha backup_suffix); return 0; } @@ -247,7 +247,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; -@@ -1003,6 +1031,31 @@ int parse_arguments(int *argc, const cha +@@ -1043,6 +1071,31 @@ int parse_arguments(int *argc, const cha "--suffix cannot be a null string without --backup-dir\n"); return 0; } @@ -277,9 +277,9 @@ Marc St-Onge + return 0; + } - if (do_progress && !verbose) - verbose = 1; -@@ -1220,6 +1273,10 @@ void server_options(char **args,int *arg + if (do_progress && !verbose) { + if (refused_verbose) { +@@ -1279,6 +1332,10 @@ void server_options(char **args,int *arg args[ac++] = "--backup-dir"; args[ac++] = backup_dir; } @@ -290,7 +290,7 @@ Marc St-Onge /* Only send --suffix if it specifies a non-default value. */ if (strcmp(backup_suffix, backup_dir ? "" : BACKUP_SUFFIX) != 0) { -@@ -1228,7 +1285,13 @@ void server_options(char **args,int *arg +@@ -1287,7 +1344,13 @@ void server_options(char **args,int *arg goto oom; args[ac++] = arg; } diff --git a/ignore-case.diff b/ignore-case.diff index 37c7102..bdcea37 100644 --- a/ignore-case.diff +++ b/ignore-case.diff @@ -35,9 +35,9 @@ in a case-insensitive manner. case '?': /* Match anything but '/'. */ if (*text == '/') ---- orig/options.c 2005-02-01 10:39:22 +--- orig/options.c 2005-02-11 18:21:45 +++ options.c 2004-10-14 17:22:51 -@@ -97,6 +97,7 @@ int max_delete = 0; +@@ -96,6 +96,7 @@ int max_delete = 0; OFF_T max_size = 0; int ignore_errors = 0; int modify_window = 0; @@ -45,7 +45,7 @@ in a case-insensitive manner. int blocking_io = -1; int checksum_seed = 0; int inplace = 0; -@@ -314,6 +315,7 @@ void usage(enum logcode F) +@@ -316,6 +317,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 file lists are delimited by nulls\n"); @@ -53,7 +53,7 @@ in a case-insensitive manner. rprintf(F," --version print version number\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"); -@@ -368,6 +370,7 @@ static struct poptOption long_options[] +@@ -371,6 +373,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 }, @@ -61,7 +61,7 @@ in a case-insensitive manner. {"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 }, -@@ -1259,6 +1262,9 @@ void server_options(char **args,int *arg +@@ -1318,6 +1321,9 @@ void server_options(char **args,int *arg args[ac++] = arg; } @@ -69,8 +69,8 @@ in a case-insensitive manner. + args[ac++] = "--ignore-case"; + if (partial_dir && am_sender) { - args[ac++] = "--partial-dir"; - args[ac++] = partial_dir; + if (partial_dir != partialdir_for_delayupdate) { + args[ac++] = "--partial-dir"; --- orig/t_stub.c 2005-01-25 12:14:14 +++ t_stub.c 2004-08-13 17:19:56 @@ -28,6 +28,7 @@ @@ -81,7 +81,7 @@ in a case-insensitive manner. char *partial_dir; struct filter_list_struct server_filter_list; ---- orig/util.c 2005-01-28 19:08:20 +--- orig/util.c 2005-02-11 10:53:15 +++ 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; -@@ -1011,11 +1012,23 @@ int u_strcmp(const char *cs1, const char +@@ -1022,11 +1023,23 @@ int u_strcmp(const char *cs1, const char { const uchar *s1 = (const uchar *)cs1; const uchar *s2 = (const uchar *)cs2; diff --git a/link-by-hash.diff b/link-by-hash.diff index ee6c89c..94cae34 100644 --- a/link-by-hash.diff +++ b/link-by-hash.diff @@ -365,7 +365,7 @@ the file's name. +} + +#endif ---- orig/options.c 2005-02-07 20:41:56 +--- orig/options.c 2005-02-11 18:21:45 +++ options.c 2005-01-28 19:32:26 @@ -131,6 +131,7 @@ char *log_format = NULL; char *password_file = NULL; @@ -375,7 +375,7 @@ the file's name. char backup_dir_buf[MAXPATHLEN]; int rsync_port = 0; int compare_dest = 0; -@@ -302,6 +303,7 @@ void usage(enum logcode F) +@@ -305,6 +306,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\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"); -@@ -340,7 +342,7 @@ void usage(enum logcode F) +@@ -343,7 +345,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[] = { -@@ -407,6 +409,7 @@ static struct poptOption long_options[] +@@ -411,6 +413,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. /* 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 }, -@@ -799,6 +802,21 @@ int parse_arguments(int *argc, const cha +@@ -831,6 +834,21 @@ int parse_arguments(int *argc, const cha basis_dir[basis_dir_cnt++] = (char *)arg; break; @@ -421,8 +421,8 @@ the file's name. + default: /* A large opt value means that set_refuse_options() - * turned this option off (opt-BASE is its index). */ -@@ -1304,6 +1322,11 @@ void server_options(char **args,int *arg + * turned this option off. */ +@@ -1366,6 +1384,11 @@ void server_options(char **args,int *arg } } @@ -434,7 +434,7 @@ the file's name. if (files_from && (!am_sender || remote_filesfrom_file)) { if (remote_filesfrom_file) { args[ac++] = "--files-from"; ---- orig/receiver.c 2005-02-07 20:41:56 +--- orig/receiver.c 2005-02-11 10:53:14 +++ receiver.c 2005-01-15 21:29:13 @@ -35,6 +35,7 @@ extern int preserve_hard_links; extern int preserve_perms; @@ -560,7 +560,7 @@ the file's name. #include "byteorder.h" #include "lib/mdfour.h" ---- orig/rsync.yo 2005-02-06 07:24:23 +--- orig/rsync.yo 2005-02-11 23:14:49 +++ rsync.yo 2005-01-28 19:32:45 @@ -354,6 +354,7 @@ to the detailed description below for a --compare-dest=DIR also compare received files relative to DIR diff --git a/openssl-support.diff b/openssl-support.diff index aa04ccc..16ee103 100644 --- a/openssl-support.diff +++ b/openssl-support.diff @@ -48,7 +48,7 @@ can't say if I've left any cleanup/compatibility errors in the code. TLS_OBJ = tls.o syscall.o lib/compat.o lib/snprintf.o lib/permstring.o ---- orig/cleanup.c 2005-01-28 23:01:07 +--- orig/cleanup.c 2005-02-07 20:41:56 +++ cleanup.c 2005-01-10 10:43:22 @@ -22,6 +22,9 @@ #include "rsync.h" @@ -71,8 +71,8 @@ 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, file, line); ---- orig/clientserver.c 2005-02-01 10:39:22 + code, safe_fname(file), line); +--- orig/clientserver.c 2005-02-07 20:41:56 +++ clientserver.c 2004-10-08 20:44:59 @@ -45,6 +45,9 @@ extern int select_timeout; extern int orig_umask; @@ -160,7 +160,7 @@ can't say if I've left any cleanup/compatibility errors in the code. return RERR_STARTCLIENT; } else { rprintf(FINFO,"%s\n", line); -@@ -523,6 +571,7 @@ static void send_listing(int fd) +@@ -526,6 +574,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 */ -@@ -572,6 +621,9 @@ int start_daemon(int f_in, int f_out) +@@ -575,6 +624,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; -@@ -581,6 +633,20 @@ int start_daemon(int f_in, int f_out) +@@ -584,6 +636,20 @@ int start_daemon(int f_in, int f_out) return -1; } @@ -223,9 +223,9 @@ 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/main.c 2005-01-30 10:07:21 +--- orig/main.c 2005-02-07 20:41:56 +++ main.c 2004-10-08 20:15:28 -@@ -56,6 +56,9 @@ extern int write_batch; +@@ -52,6 +52,9 @@ extern int write_batch; extern int batch_fd; extern int batch_gen_fd; extern int filesfrom_fd; @@ -235,7 +235,7 @@ can't say if I've left any cleanup/compatibility errors in the code. extern pid_t cleanup_child_pid; extern char *files_from; extern char *remote_filesfrom_file; -@@ -835,33 +838,48 @@ static int start_client(int argc, char * +@@ -821,33 +824,48 @@ static int start_client(int argc, char * if ((rc = copy_argv(argv))) return rc; @@ -308,7 +308,7 @@ can't say if I've left any cleanup/compatibility errors in the code. p = find_colon(argv[0]); if (p) { /* source is remote */ if (remote_filesfrom_file -@@ -893,12 +911,26 @@ static int start_client(int argc, char * +@@ -879,12 +897,26 @@ static int start_client(int argc, char * argv++; } else { /* source is local */ am_sender = 1; @@ -338,9 +338,9 @@ can't say if I've left any cleanup/compatibility errors in the code. p = strchr(host,'/'); if (p) { *p = '\0'; ---- orig/options.c 2005-02-01 10:39:22 +--- orig/options.c 2005-02-11 18:21:45 +++ options.c 2004-11-27 18:31:46 -@@ -144,6 +144,14 @@ int quiet = 0; +@@ -143,6 +143,14 @@ int quiet = 0; int always_checksum = 0; int list_only = 0; @@ -355,7 +355,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; -@@ -166,6 +174,7 @@ static void print_rsync_version(enum log +@@ -168,6 +176,7 @@ static void print_rsync_version(enum log char const *hardlinks = "no "; char const *links = "no "; char const *ipv6 = "no "; @@ -363,7 +363,7 @@ can't say if I've left any cleanup/compatibility errors in the code. STRUCT_STAT *dumstat; #if HAVE_SOCKETPAIR -@@ -188,6 +197,10 @@ static void print_rsync_version(enum log +@@ -190,6 +199,10 @@ static void print_rsync_version(enum log ipv6 = ""; #endif @@ -374,7 +374,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, -@@ -201,10 +214,10 @@ static void print_rsync_version(enum log +@@ -203,10 +216,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. */ @@ -387,7 +387,7 @@ can't say if I've left any cleanup/compatibility errors in the code. #ifdef MAINTAINER_MODE rprintf(f, " panic action: \"%s\"\n", get_panic_action()); -@@ -331,6 +344,13 @@ void usage(enum logcode F) +@@ -333,6 +346,13 @@ void usage(enum logcode F) rprintf(F," -4, --ipv4 prefer IPv4\n"); rprintf(F," -6, --ipv6 prefer IPv6\n"); #endif @@ -401,7 +401,7 @@ can't say if I've left any cleanup/compatibility errors in the code. rprintf(F," -h, --help show this help screen\n"); rprintf(F,"\nUse \"rsync --daemon --help\" to see the daemon-mode command-line options.\n"); -@@ -341,7 +361,7 @@ void usage(enum logcode F) +@@ -343,7 +363,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, @@ -410,7 +410,7 @@ can't say if I've left any cleanup/compatibility errors in the code. OPT_REFUSED_BASE = 9000}; static struct poptOption long_options[] = { -@@ -436,6 +456,13 @@ static struct poptOption long_options[] +@@ -439,6 +459,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 @@ -424,7 +424,7 @@ can't say if I've left any cleanup/compatibility errors in the code. /* All these options switch us into daemon-mode option-parsing. */ {"address", 0, POPT_ARG_STRING, 0, OPT_DAEMON, 0, 0 }, {"config", 0, POPT_ARG_STRING, 0, OPT_DAEMON, 0, 0 }, -@@ -802,6 +829,12 @@ int parse_arguments(int *argc, const cha +@@ -831,6 +858,12 @@ int parse_arguments(int *argc, const cha basis_dir[basis_dir_cnt++] = (char *)arg; break; @@ -436,10 +436,10 @@ 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 (opt-BASE is its index). */ -@@ -1018,6 +1051,17 @@ int parse_arguments(int *argc, const cha + * turned this option off. */ +@@ -1063,6 +1096,17 @@ int parse_arguments(int *argc, const cha if (delay_updates && !partial_dir) - partial_dir = ".~tmp~"; + partial_dir = partialdir_for_delayupdate; +#if HAVE_OPENSSL + if (use_ssl) { @@ -455,7 +455,7 @@ can't say if I've left any cleanup/compatibility errors in the code. if (inplace) { #if HAVE_FTRUNCATE if (partial_dir) { ---- orig/rsync.h 2005-02-03 02:04:20 +--- orig/rsync.h 2005-02-07 20:41:57 +++ rsync.h 2004-10-08 21:01:33 @@ -32,6 +32,7 @@ @@ -465,7 +465,7 @@ can't say if I've left any cleanup/compatibility errors in the code. #define BACKUP_SUFFIX "~" -@@ -386,6 +387,11 @@ enum msgcode { +@@ -382,6 +383,11 @@ enum msgcode { # define SIZEOF_INT64 SIZEOF_OFF_T #endif diff --git a/remove-sent-files.diff b/remove-sent-files.diff index 0f00ed6..9da8fc3 100644 --- a/remove-sent-files.diff +++ b/remove-sent-files.diff @@ -38,7 +38,7 @@ command before "make": case MSG_INFO: case MSG_ERROR: if (remaining >= sizeof line) { ---- orig/main.c 2005-02-04 22:28:09 +--- orig/main.c 2005-02-07 20:41:56 +++ main.c 2005-02-05 01:24:16 @@ -32,12 +32,14 @@ extern int am_daemon; extern int verbose; @@ -87,7 +87,7 @@ command before "make": if (argc == 0) list_only |= 1; ---- orig/options.c 2005-02-04 22:28:09 +--- orig/options.c 2005-02-11 18:21:45 +++ options.c 2005-01-23 07:30:51 @@ -59,6 +59,7 @@ int delete_during = 0; int delete_before = 0; @@ -105,7 +105,7 @@ command before "make": int max_delete = 0; OFF_T max_size = 0; int ignore_errors = 0; -@@ -286,6 +288,7 @@ void usage(enum logcode F) +@@ -289,6 +291,7 @@ void usage(enum logcode F) rprintf(F," --delete-during receiver deletes during transfer, not before\n"); rprintf(F," --delete-after receiver deletes after transfer, not before\n"); rprintf(F," --delete-excluded also delete excluded files on the receiving side\n"); @@ -113,7 +113,7 @@ command before "make": 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"); -@@ -360,6 +363,7 @@ static struct poptOption long_options[] +@@ -364,6 +367,7 @@ static struct poptOption long_options[] {"delete-during", 0, POPT_ARG_NONE, &delete_during, 0, 0, 0 }, {"delete-after", 0, POPT_ARG_NONE, &delete_after, 0, 0, 0 }, {"delete-excluded", 0, POPT_ARG_NONE, &delete_excluded, 0, 0, 0 }, @@ -121,9 +121,9 @@ command before "make": {"force", 0, POPT_ARG_NONE, &force_delete, 0, 0, 0 }, {"numeric-ids", 0, POPT_ARG_NONE, &numeric_ids, 0, 0, 0 }, {"filter", 'f', POPT_ARG_STRING, 0, OPT_FILTER, 0, 0 }, -@@ -922,6 +926,9 @@ int parse_arguments(int *argc, const cha - else if (delete_mode || delete_excluded) - delete_mode = delete_before = 1; +@@ -955,6 +959,9 @@ int parse_arguments(int *argc, const cha + return 0; + } + if (delete_sent_files) + need_messages_from_generator = 1; @@ -131,7 +131,7 @@ command before "make": *argv = poptGetArgs(pc); *argc = count_args(*argv); -@@ -1318,6 +1325,9 @@ void server_options(char **args,int *arg +@@ -1382,6 +1389,9 @@ void server_options(char **args,int *arg if (!implied_dirs && !am_sender) args[ac++] = "--no-implied-dirs"; @@ -141,7 +141,7 @@ command before "make": *argc = ac; return; ---- orig/receiver.c 2005-02-03 02:04:20 +--- orig/receiver.c 2005-02-11 10:53:14 +++ receiver.c 2004-08-13 08:38:51 @@ -41,6 +41,7 @@ extern int basis_dir_cnt; extern int make_backups; @@ -151,7 +151,7 @@ command before "make": extern int module_id; extern int ignore_errors; extern int orig_umask; -@@ -275,7 +276,7 @@ int recv_files(int f_in, struct file_lis +@@ -276,7 +277,7 @@ int recv_files(int f_in, struct file_lis char *fname, fbuf[MAXPATHLEN]; char template[MAXPATHLEN]; char fnametmp[MAXPATHLEN]; @@ -160,7 +160,7 @@ command before "make": char fnamecmpbuf[MAXPATHLEN]; uchar *delayed_bits = NULL; struct file_struct *file; -@@ -532,7 +533,12 @@ int recv_files(int f_in, struct file_lis +@@ -533,7 +534,12 @@ int recv_files(int f_in, struct file_lis cleanup_disable(); @@ -174,7 +174,7 @@ command before "make": int msgtype = csum_length == SUM_LENGTH || read_batch ? FERROR : FINFO; if (msgtype == FERROR || verbose) { -@@ -556,9 +562,8 @@ int recv_files(int f_in, struct file_lis +@@ -557,9 +563,8 @@ int recv_files(int f_in, struct file_lis keptstr, redostr); } if (csum_length != SUM_LENGTH) { @@ -186,7 +186,7 @@ command before "make": } } } ---- orig/rsync.h 2005-02-04 22:28:09 +--- orig/rsync.h 2005-02-07 20:41:57 +++ rsync.h 2005-02-03 02:04:59 @@ -61,6 +61,7 @@ #define FLAG_HLINK_EOL (1<<1) /* generator only */ @@ -204,7 +204,7 @@ command before "make": MSG_DONE=5, /* current phase is done */ MSG_REDO=4, /* reprocess indicated flist index */ MSG_ERROR=FERROR, MSG_INFO=FINFO, MSG_LOG=FLOG, /* remote logging */ ---- orig/rsync.yo 2005-02-05 01:23:49 +--- orig/rsync.yo 2005-02-11 23:14:49 +++ rsync.yo 2005-02-03 02:05:29 @@ -338,6 +338,7 @@ to the detailed description below for a --delete-during receiver deletes during xfer, not before @@ -214,7 +214,7 @@ command before "make": --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 -@@ -727,6 +728,11 @@ receiving side that are not on the sendi +@@ -728,6 +729,11 @@ receiving side that are not on the sendi delete any files on the receiving side that are excluded (see bf(--exclude)). See bf(--delete) (which is implied) for more details on file-deletion. @@ -226,7 +226,7 @@ command before "make": dit(bf(--ignore-errors)) Tells bf(--delete) to go ahead and delete files even when there are I/O errors. ---- orig/sender.c 2005-02-03 02:04:20 +--- orig/sender.c 2005-02-11 22:24:19 +++ sender.c 2004-07-26 16:49:19 @@ -26,6 +26,7 @@ extern int io_error; extern int dry_run; diff --git a/time-limit.diff b/time-limit.diff index 9ddfb65..6f45390 100644 --- a/time-limit.diff +++ b/time-limit.diff @@ -41,9 +41,9 @@ Do we need configure support for mktime()? if (!am_server && !am_daemon) { rprintf(FERROR, "io timeout after %d seconds -- exiting\n", (int)(t-last_io)); ---- orig/options.c 2005-02-01 10:39:22 +--- orig/options.c 2005-02-11 18:21:45 +++ options.c 2005-01-28 19:35:23 -@@ -102,6 +102,7 @@ int checksum_seed = 0; +@@ -101,6 +101,7 @@ int checksum_seed = 0; int inplace = 0; int delay_updates = 0; long block_size = 0; /* "long" because popt can't set an int32. */ @@ -51,7 +51,7 @@ Do we need configure support for mktime()? /** Network address family. **/ -@@ -325,6 +326,8 @@ void usage(enum logcode F) +@@ -327,6 +328,8 @@ void usage(enum logcode F) rprintf(F," --password-file=FILE read password from FILE\n"); rprintf(F," --list-only list the files instead of copying them\n"); rprintf(F," --bwlimit=KBPS limit I/O bandwidth; KBytes per second\n"); @@ -60,7 +60,7 @@ Do we need configure support for mktime()? rprintf(F," --write-batch=FILE write a batched update to FILE\n"); rprintf(F," --read-batch=FILE read a batched update from FILE\n"); #if INET6 -@@ -342,6 +345,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OP +@@ -344,6 +347,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OP OPT_FILTER, OPT_COMPARE_DEST, OPT_COPY_DEST, OPT_LINK_DEST, OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW, OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_TIMEOUT, OPT_MAX_SIZE, @@ -68,7 +68,7 @@ Do we need configure support for mktime()? OPT_REFUSED_BASE = 9000}; static struct poptOption long_options[] = { -@@ -423,6 +427,8 @@ static struct poptOption long_options[] +@@ -426,6 +430,8 @@ static struct poptOption long_options[] {"port", 0, POPT_ARG_INT, &rsync_port, 0, 0, 0 }, {"log-format", 0, POPT_ARG_STRING, &log_format, 0, 0, 0 }, {"bwlimit", 0, POPT_ARG_INT, &bwlimit, 0, 0, 0 }, @@ -77,7 +77,7 @@ Do we need configure support for mktime()? {"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 }, -@@ -802,6 +808,36 @@ int parse_arguments(int *argc, const cha +@@ -831,6 +837,36 @@ int parse_arguments(int *argc, const cha basis_dir[basis_dir_cnt++] = (char *)arg; break; @@ -113,8 +113,8 @@ Do we need configure support for mktime()? + default: /* A large opt value means that set_refuse_options() - * turned this option off (opt-BASE is its index). */ -@@ -1216,6 +1252,15 @@ void server_options(char **args,int *arg + * turned this option off. */ +@@ -1275,6 +1311,15 @@ void server_options(char **args,int *arg args[ac++] = arg; } @@ -130,7 +130,7 @@ Do we need configure support for mktime()? if (backup_dir) { args[ac++] = "--backup-dir"; args[ac++] = backup_dir; ---- orig/rsync.yo 2005-02-01 10:39:23 +--- orig/rsync.yo 2005-02-11 23:14:49 +++ rsync.yo 2005-02-01 10:46:35 @@ -376,6 +376,8 @@ to the detailed description below for a --password-file=FILE read password from FILE @@ -141,7 +141,7 @@ Do we need configure support for mktime()? --write-batch=FILE write a batched update to FILE --read-batch=FILE read a batched update from FILE --checksum-seed=NUM set block/file checksum seed (advanced) -@@ -1108,6 +1110,19 @@ transfer was too fast, it will wait befo +@@ -1133,6 +1135,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,7 +161,7 @@ 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. ---- orig/util.c 2005-01-28 19:08:20 +--- orig/util.c 2005-02-11 10:53:15 +++ util.c 2004-07-03 20:23:22 @@ -126,6 +126,132 @@ void overflow(char *str) exit_cleanup(RERR_MALLOC);