jw schultz writes: > 1. Yes, you may contribute a patch. I favor the idea of > being able to supply a checksum seed. > > 2. Lets get the option name down to a more reasonable > length. --checksum-seed should be sufficient.
I submitted a patch against 2.5.6pre1 last January for --checksum-seed=NUM: http://lists.samba.org/archive/rsync/2003-January/004845.html but in that thread Dave Dykstra correctly pointed out there wasn't much point in letting the user specify a particular value. Therefore, I switched to just a flag that forces the fixed value of 32761 (same as batch mode). I picked the option named --fixed-csumseed, which is long but hopefully informative. Here's a patch against CVS using --fixed-csumseed. I also added it to the usage and documentation, but it's not clear this option needs to be exposed to the user. Craig diff -bur rsync/options.c rsync-fixedcsum/options.c --- rsync/options.c Tue Feb 10 20:30:41 2004 +++ rsync-fixedcsum/options.c Mon Feb 16 12:32:23 2004 @@ -89,6 +89,7 @@ int modify_window = 0; int blocking_io = -1; int checksum_seed = 0; +int fixed_csumseed = 0; unsigned int block_size = 0; @@ -288,6 +289,7 @@ rprintf(F," --bwlimit=KBPS limit I/O bandwidth, KBytes per second\n"); rprintf(F," --write-batch=PREFIX write batch fileset starting with PREFIX\n"); rprintf(F," --read-batch=PREFIX read batch fileset starting with PREFIX\n"); + rprintf(F," --fixed-csumseed use fixed MD4 block/file checksum seed\n"); rprintf(F," -h, --help show this help screen\n"); #ifdef INET6 rprintf(F," -4 prefer IPv4\n"); @@ -303,7 +305,7 @@ enum {OPT_VERSION = 1000, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM, OPT_DELETE_AFTER, OPT_DELETE_EXCLUDED, OPT_LINK_DEST, OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW, - OPT_READ_BATCH, OPT_WRITE_BATCH}; + OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_FIXED_CSUMSEED}; static struct poptOption long_options[] = { /* longName, shortName, argInfo, argPtr, value, descrip, argDesc */ @@ -379,6 +381,7 @@ {"hard-links", 'H', POPT_ARG_NONE, &preserve_hard_links, 0, 0, 0 }, {"read-batch", 0, POPT_ARG_STRING, &batch_prefix, OPT_READ_BATCH, 0, 0 }, {"write-batch", 0, POPT_ARG_STRING, &batch_prefix, OPT_WRITE_BATCH, 0, 0 }, + {"fixed-csumseed", 0, POPT_ARG_NONE, 0, OPT_FIXED_CSUMSEED, 0, 0 }, {"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 }, @@ -564,6 +567,11 @@ checksum_seed = FIXED_CHECKSUM_SEED; break; + case OPT_FIXED_CSUMSEED: + fixed_csumseed = 1; + checksum_seed = FIXED_CHECKSUM_SEED; + break; + case OPT_LINK_DEST: #if HAVE_LINK compare_dest = (char *)poptGetOptArg(pc); @@ -931,6 +939,10 @@ args[ac++] = "--files-from=-"; args[ac++] = "--from0"; } + } + + if (fixed_csumseed) { + args[ac++] = "--fixed-csumseed"; } *argc = ac; diff -bur rsync/rsync.yo rsync-fixedcsum/rsync.yo --- rsync/rsync.yo Mon Feb 2 10:23:09 2004 +++ rsync-fixedcsum/rsync.yo Mon Feb 16 12:36:08 2004 @@ -348,6 +348,7 @@ --bwlimit=KBPS limit I/O bandwidth, KBytes per second --write-batch=PREFIX write batch fileset starting with PREFIX --read-batch=PREFIX read batch fileset starting with PREFIX + --fixed-csumseed use fixed MD4 block/file checksum seed -h, --help show this help screen @@ -879,6 +880,15 @@ dit(bf(--read-batch=PREFIX)) Apply a previously generated change batch, using the fileset whose filenames start with PREFIX. See the "BATCH MODE" section for details. + +dit(bf(--fixed-csumseed)) Set the MD4 checksum seed to the fixed +value 32761. This 4 byte checksum seed is included in each block and +file MD4 checksum calculation. By default the checksum seed is generated +by the server and defaults to the current time(), or 32761 if +bf(--write-batch) or bf(--read-batch) are specified. This default +causes the MD4 block and file checksums to be different each time rsync +is run. For applications that cache the block or file checksums the +checksum seed needs to be fixed each time rsync runs using this option. enddit() -- To unsubscribe or change options: http://lists.samba.org/mailman/listinfo/rsync Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html