From adb5f95d365c76272bf8fff05912746ad8858ba0 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Tue, 19 Jun 2012 14:18:51 -0600 Subject: [PATCH] update rsyncable patch, etc --- configure.ac | 6 -- debian/patches/rsyncable.diff | 127 +++++++++++++++++----------------- doc/gzip.texi | 8 +++ 3 files changed, 71 insertions(+), 70 deletions(-) diff --git a/configure.ac b/configure.ac index 50cb427..4705ce4 100644 --- a/configure.ac +++ b/configure.ac @@ -130,12 +130,6 @@ if test "$gl_gcc_warnings" = yes; then AC_SUBST([GNULIB_WARN_CFLAGS]) fi -gl_FUNC_GETDTABLESIZE -if test $HAVE_GETDTABLESIZE = 0; then - AC_LIBOBJ([getdtablesize]) -fi -gl_UNISTD_MODULE_INDICATOR([getdtablesize]) - # cc -E produces incorrect asm files on SVR4, so postprocess it. ASCPPPOST="sed '/^ *\\#/d; s,//.*,,; s/% /%/g; s/\\. /./g'" AC_SUBST([ASCPPPOST]) diff --git a/debian/patches/rsyncable.diff b/debian/patches/rsyncable.diff index e615d98..1bb7d4a 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,30 +280,3 @@ 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/doc/gzip.texi b/doc/gzip.texi -index 84887c3..ecd4e00 100644 ---- a/doc/gzip.texi -+++ b/doc/gzip.texi -@@ -207,6 +207,7 @@ Mandatory arguments to long options are mandatory for short options too. - -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. - -@@ -361,6 +362,14 @@ 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 --suffix @var{suf} - @itemx -S @var{suf} - Use suffix @var{suf} instead of @samp{.gz}. Any suffix can be diff --git a/doc/gzip.texi b/doc/gzip.texi index 7f3d452..ffe20b4 100644 --- a/doc/gzip.texi +++ b/doc/gzip.texi @@ -370,6 +370,14 @@ 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 +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 --suffix @var{suf} @itemx -S @var{suf} Use suffix @var{suf} instead of @samp{.gz}. Any suffix can be -- 2.30.2