X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=debian%2Fpatches%2Frsyncable.diff;h=c2eb37999632afc1266131dea019a7c97ee5030b;hb=285735ab97cbb5bfe116ee18cf3a9c1e89da0919;hp=96780f3bb42381d44426cefac5afdb49880de3bb;hpb=97f825c37400d5684e096fe57c244e1eb20b509f;p=debian%2Fgzip diff --git a/debian/patches/rsyncable.diff b/debian/patches/rsyncable.diff index 96780f3..c2eb379 100644 --- a/debian/patches/rsyncable.diff +++ b/debian/patches/rsyncable.diff @@ -1,7 +1,6 @@ -diff --git a/deflate.c b/deflate.c -index 0950391..1b3ac52 100644 ---- a/deflate.c -+++ b/deflate.c +diff -u -r gzip-1.5/deflate.c /home/bdale/debian/gzip/deflate.c +--- gzip-1.5/deflate.c 2012-04-24 10:25:28.000000000 -0600 ++++ /home/bdale/debian/gzip/deflate.c 2012-06-19 14:01:41.885498670 -0600 @@ -131,6 +131,14 @@ #endif /* Matches of length 3 are discarded if their distance exceeds TOO_FAR */ @@ -17,8 +16,8 @@ index 0950391..1b3ac52 100644 /* =========================================================================== * Local data used by the "longest match" routines. */ -@@ -212,6 +220,8 @@ local int compr_level; - unsigned near good_match; +@@ -212,6 +220,8 @@ + unsigned good_match; /* Use a faster search when the previous match is longer than this */ +local ulg rsync_sum; /* rolling sum of rsync window */ @@ -26,7 +25,7 @@ index 0950391..1b3ac52 100644 /* Values for max_lazy_match, good_match and max_chain_length, depending on * the desired pack level (0..9). The values given below have been tuned to -@@ -307,6 +317,10 @@ void lm_init (pack_level, flags) +@@ -314,6 +324,10 @@ #endif /* prev will be initialized on the fly */ @@ -37,7 +36,7 @@ index 0950391..1b3ac52 100644 /* Set the default configuration parameters: */ max_lazy_match = configuration_table[pack_level].max_lazy; -@@ -324,6 +338,7 @@ void lm_init (pack_level, flags) +@@ -331,6 +345,7 @@ strstart = 0; block_start = 0L; @@ -45,7 +44,7 @@ index 0950391..1b3ac52 100644 #ifdef ASMV match_init(); /* initialize the asm code */ #endif -@@ -543,6 +558,8 @@ local void fill_window() +@@ -550,6 +565,8 @@ memcpy((char*)window, (char*)window+WSIZE, (unsigned)WSIZE); match_start -= WSIZE; strstart -= WSIZE; /* we now have strstart >= MAX_DIST: */ @@ -54,7 +53,7 @@ index 0950391..1b3ac52 100644 block_start -= (long) WSIZE; -@@ -570,6 +587,39 @@ local void fill_window() +@@ -579,6 +596,39 @@ } } @@ -94,21 +93,23 @@ index 0950391..1b3ac52 100644 /* =========================================================================== * Flush the current block, with given end-of-file flag. * IN assertion: strstart is set to the end of the current match. -@@ -617,6 +667,7 @@ local off_t deflate_fast() +@@ -626,7 +676,8 @@ lookahead -= match_length; +- /* Insert new strings in the hash table only if the match length + RSYNC_ROLL(strstart, match_length); - /* Insert new strings in the hash table only if the match length ++ /* Insert new strings in the hash table only if the match length * is not too large. This saves time but degrades compression. */ -@@ -645,9 +696,18 @@ local off_t deflate_fast() + if (match_length <= max_insert_length) { +@@ -654,9 +705,18 @@ /* No match, output a literal byte */ Tracevv((stderr,"%c",window[strstart])); flush = ct_tally (0, window[strstart]); + RSYNC_ROLL(strstart, 1); lookahead--; - strstart++; + strstart++; } + if (rsync && strstart > rsync_chunk_end) { + ush attr = 0; /* ascii/binary flag */ @@ -121,7 +122,7 @@ index 0950391..1b3ac52 100644 if (flush) FLUSH_BLOCK(0), block_start = strstart; /* Make sure that we always have enough lookahead, except -@@ -721,6 +781,7 @@ off_t deflate() +@@ -730,6 +790,7 @@ */ lookahead -= prev_length-1; prev_length -= 2; @@ -129,7 +130,7 @@ index 0950391..1b3ac52 100644 do { strstart++; INSERT_STRING(strstart, hash_head); -@@ -733,24 +794,51 @@ off_t deflate() +@@ -742,24 +803,51 @@ match_available = 0; match_length = MIN_MATCH-1; strstart++; @@ -185,14 +186,37 @@ index 0950391..1b3ac52 100644 strstart++; lookahead--; } -diff --git a/doc/gzip.texi b/doc/gzip.texi -index a6009d2..84887c3 100644 ---- a/doc/gzip.texi -+++ b/doc/gzip.texi -@@ -353,6 +353,14 @@ specified on the command line are directories, @command{gzip} will descend +diff -u -r gzip-1.5/doc/gzip.texi /home/bdale/debian/gzip/doc/gzip.texi +--- gzip-1.5/doc/gzip.texi 2012-01-01 01:53:58.000000000 -0700 ++++ /home/bdale/debian/gzip/doc/gzip.texi 2012-06-19 14:09:36.041559612 -0600 +@@ -207,6 +207,7 @@ + -V, --version display version number + -1, --fast compress faster + -9, --best compress better ++ --rsyncable Make rsync-friendly archive + + With no FILE, or when FILE is -, read standard input. + +@@ -353,6 +354,30 @@ into the directory and compress all the files it finds there (or decompress them in the case of @command{gunzip}). ++@item --rsyncable ++While compressing, synchronize the output occasionally based on the ++input. This can reduce the compression slightly in some cases, but ++means that the @code{rsync} program can take advantage of similarities ++in the uncompressed input when syncronizing two files compressed with ++this flag. @code{gunzip} cannot tell the difference between a ++compressed file created with this option, and one created without it. ++ ++@item --rsyncable ++While compressing, synchronize the output occasionally based on ++the input. This increases size by less than 1 percent most ++cases, but means that the @command{rsync} program can much more efficiently ++synchronize files compressed with this flag. @command{gunzip} ++cannot tell the difference between a compressed file created ++with this option, and one created without it. ++ +@item --rsyncable +While compressing, synchronize the output occasionally based on the +input. This can reduce the compression slightly in some cases, but @@ -204,11 +228,9 @@ index a6009d2..84887c3 100644 @item --suffix @var{suf} @itemx -S @var{suf} Use suffix @var{suf} instead of @samp{.gz}. Any suffix can be -diff --git a/gzip.c b/gzip.c -index 9e2a890..b867350 100644 ---- a/gzip.c -+++ b/gzip.c -@@ -218,6 +218,7 @@ int ofd; /* output file descriptor */ +--- gzip-1.5/gzip.c 2012-04-24 10:25:28.000000000 -0600 ++++ /home/bdale/debian/gzip/gzip.c 2012-06-19 14:00:43.283873180 -0600 +@@ -213,6 +213,7 @@ unsigned insize; /* valid bytes in inbuf */ unsigned inptr; /* index of next byte to be processed in inbuf */ unsigned outcnt; /* bytes in output buffer */ @@ -216,15 +238,16 @@ index 9e2a890..b867350 100644 static int handled_sig[] = { -@@ -271,6 +272,7 @@ struct option longopts[] = +@@ -270,7 +271,7 @@ {"best", 0, 0, '9'}, /* compress better */ {"lzw", 0, 0, 'Z'}, /* make output compatible with old compress */ {"bits", 1, 0, 'b'}, /* max number of bits per code (implies -Z) */ +- + {"rsyncable", 0, 0, 'R'}, /* make rsync-friendly archive */ { 0, 0, 0, 0 } }; -@@ -352,6 +354,7 @@ local void help() +@@ -353,6 +354,7 @@ " -Z, --lzw produce output compatible with old compress", " -b, --bits=BITS max number of bits per code (implies -Z)", #endif @@ -232,21 +255,24 @@ index 9e2a890..b867350 100644 "", "With no FILE, or when FILE is -, read standard input.", "", -@@ -479,6 +482,9 @@ int main (int argc, char **argv) - recursive = 1; +@@ -481,8 +483,11 @@ + #else + recursive = 1; #endif - break; +- break; +- case 'S': ++ break; + case 'R': + rsync = 1; break; + - case 'S': ++ case 'S': #ifdef NO_MULTIPLE_DOTS if (*optarg == '.') optarg++; -diff --git a/gzip.h b/gzip.h -index 0c3dd68..5270c56 100644 ---- a/gzip.h -+++ b/gzip.h -@@ -146,6 +146,7 @@ EXTERN(uch, window); /* Sliding window and suffix table (unlzw) */ + #endif +diff -u -r gzip-1.5/gzip.h /home/bdale/debian/gzip/gzip.h +--- gzip-1.5/gzip.h 2012-01-01 01:53:58.000000000 -0700 ++++ /home/bdale/debian/gzip/gzip.h 2012-06-19 13:57:36.833883093 -0600 +@@ -140,6 +140,7 @@ extern unsigned insize; /* valid bytes in inbuf */ extern unsigned inptr; /* index of next byte to be processed in inbuf */ extern unsigned outcnt; /* bytes in output buffer */ @@ -254,3 +280,32 @@ index 0c3dd68..5270c56 100644 extern off_t bytes_in; /* number of input bytes */ extern off_t bytes_out; /* number of output bytes */ +diff --git a/gzip.1 b/gzip.1 +index 71e097c..faee860 100644 +--- a/gzip.1 ++++ b/gzip.1 +@@ -5,6 +5,7 @@ gzip, gunzip, zcat \- compress or expand files + .ll +8 + .B gzip + .RB [ " \-acdfhklLnNrtvV19 " ] ++.RB [ --rsyncable ] + .RB [ \-S\ suffix ] + [ + .I "name \&..." +@@ -287,6 +288,16 @@ will descend into the directory and compress all the files it finds there + .I gunzip + ). + .TP ++.B --rsyncable ++While compressing, synchronize the output occasionally based on the input. ++This increases size by less than 1 percent most cases, but means that the ++.BR rsync (1) ++program can take advantage of similarities in the uncompressed input ++when syncronizing two files compressed with this flag. ++.I gunzip ++cannot tell the difference between a compressed file created with this option, ++and one created without it. ++.TP + .B \-S .suf --suffix .suf + When compressing, use suffix .suf instead of .gz. + Any non-empty suffix can be given, but suffixes