This commit is contained in:
commit
d54774ae10
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
3
gzip-1.3.9.tar.gz
Normal file
3
gzip-1.3.9.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a6fdbe5ce21f5e4ce219375c29e842da517e61a56900a678cf258b4fdd603e72
|
||||
size 420737
|
282
gzip-rsyncable.diff
Normal file
282
gzip-rsyncable.diff
Normal file
@ -0,0 +1,282 @@
|
||||
NOTE: this patch is for _gzip_!
|
||||
|
||||
This is pending for actual inclusion in gzip. It is currently being
|
||||
tried out in the default gzip for Debian Sarge, and may go into the
|
||||
upstream gzip at somepoint in the not-too-distant future.
|
||||
|
||||
================================================================================
|
||||
--- gzip-1.3.6/deflate.c
|
||||
+++ gzip-1.3.6/deflate.c
|
||||
@@ -135,6 +135,14 @@
|
||||
#endif
|
||||
/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */
|
||||
|
||||
+#ifndef RSYNC_WIN
|
||||
+# define RSYNC_WIN 4096
|
||||
+#endif
|
||||
+/* Size of rsync window, must be < MAX_DIST */
|
||||
+
|
||||
+#define RSYNC_SUM_MATCH(sum) ((sum) % RSYNC_WIN == 0)
|
||||
+/* Whether window sum matches magic value */
|
||||
+
|
||||
/* ===========================================================================
|
||||
* Local data used by the "longest match" routines.
|
||||
*/
|
||||
@@ -216,6 +224,8 @@
|
||||
unsigned near good_match;
|
||||
/* Use a faster search when the previous match is longer than this */
|
||||
|
||||
+local ulg rsync_sum; /* rolling sum of rsync window */
|
||||
+local ulg rsync_chunk_end; /* next rsync sequence point */
|
||||
|
||||
/* 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
|
||||
@@ -314,6 +324,10 @@
|
||||
#endif
|
||||
/* prev will be initialized on the fly */
|
||||
|
||||
+ /* rsync params */
|
||||
+ rsync_chunk_end = 0xFFFFFFFFUL;
|
||||
+ rsync_sum = 0;
|
||||
+
|
||||
/* Set the default configuration parameters:
|
||||
*/
|
||||
max_lazy_match = configuration_table[pack_level].max_lazy;
|
||||
@@ -550,6 +564,8 @@
|
||||
memcpy((char*)window, (char*)window+WSIZE, (unsigned)WSIZE);
|
||||
match_start -= WSIZE;
|
||||
strstart -= WSIZE; /* we now have strstart >= MAX_DIST: */
|
||||
+ if (rsync_chunk_end != 0xFFFFFFFFUL)
|
||||
+ rsync_chunk_end -= WSIZE;
|
||||
|
||||
block_start -= (long) WSIZE;
|
||||
|
||||
@@ -577,13 +593,46 @@
|
||||
}
|
||||
}
|
||||
|
||||
+local void rsync_roll(start, num)
|
||||
+ unsigned start;
|
||||
+ unsigned num;
|
||||
+{
|
||||
+ unsigned i;
|
||||
+
|
||||
+ if (start < RSYNC_WIN) {
|
||||
+ /* before window fills. */
|
||||
+ for (i = start; i < RSYNC_WIN; i++) {
|
||||
+ if (i == start + num) return;
|
||||
+ rsync_sum += (ulg)window[i];
|
||||
+ }
|
||||
+ num -= (RSYNC_WIN - start);
|
||||
+ start = RSYNC_WIN;
|
||||
+ }
|
||||
+
|
||||
+ /* buffer after window full */
|
||||
+ for (i = start; i < start+num; i++) {
|
||||
+ /* New character in */
|
||||
+ rsync_sum += (ulg)window[i];
|
||||
+ /* Old character out */
|
||||
+ rsync_sum -= (ulg)window[i - RSYNC_WIN];
|
||||
+ if (rsync_chunk_end == 0xFFFFFFFFUL && RSYNC_SUM_MATCH(rsync_sum))
|
||||
+ rsync_chunk_end = i;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/* ===========================================================================
|
||||
+ * Set rsync_chunk_end if window sum matches magic value.
|
||||
+ */
|
||||
+#define RSYNC_ROLL(s, n) \
|
||||
+ do { if (rsync) rsync_roll((s), (n)); } while(0)
|
||||
+
|
||||
/* ===========================================================================
|
||||
* Flush the current block, with given end-of-file flag.
|
||||
* IN assertion: strstart is set to the end of the current match.
|
||||
*/
|
||||
#define FLUSH_BLOCK(eof) \
|
||||
flush_block(block_start >= 0L ? (char*)&window[(unsigned)block_start] : \
|
||||
- (char*)NULL, (long)strstart - block_start, (eof))
|
||||
+ (char*)NULL, (long)strstart - block_start, flush-1, (eof))
|
||||
|
||||
/* ===========================================================================
|
||||
* Processes a new input file and return its compressed length. This
|
||||
@@ -594,7 +643,7 @@
|
||||
local off_t deflate_fast()
|
||||
{
|
||||
IPos hash_head; /* head of the hash chain */
|
||||
- int flush; /* set if current block must be flushed */
|
||||
+ int flush; /* set if current block must be flushed, 2=>and padded */
|
||||
unsigned match_length = 0; /* length of best match */
|
||||
|
||||
prev_length = MIN_MATCH-1;
|
||||
@@ -623,6 +672,7 @@
|
||||
|
||||
lookahead -= match_length;
|
||||
|
||||
+ RSYNC_ROLL(strstart, match_length);
|
||||
/* Insert new strings in the hash table only if the match length
|
||||
* is not too large. This saves time but degrades compression.
|
||||
*/
|
||||
@@ -651,9 +701,14 @@
|
||||
/* No match, output a literal byte */
|
||||
Tracevv((stderr,"%c",window[strstart]));
|
||||
flush = ct_tally (0, window[strstart]);
|
||||
+ RSYNC_ROLL(strstart, 1);
|
||||
lookahead--;
|
||||
strstart++;
|
||||
}
|
||||
+ if (rsync && strstart > rsync_chunk_end) {
|
||||
+ rsync_chunk_end = 0xFFFFFFFFUL;
|
||||
+ flush = 2;
|
||||
+ }
|
||||
if (flush) FLUSH_BLOCK(0), block_start = strstart;
|
||||
|
||||
/* Make sure that we always have enough lookahead, except
|
||||
@@ -726,6 +781,7 @@
|
||||
*/
|
||||
lookahead -= prev_length-1;
|
||||
prev_length -= 2;
|
||||
+ RSYNC_ROLL(strstart, prev_length+1);
|
||||
do {
|
||||
strstart++;
|
||||
INSERT_STRING(strstart, hash_head);
|
||||
@@ -738,24 +794,39 @@
|
||||
match_available = 0;
|
||||
match_length = MIN_MATCH-1;
|
||||
strstart++;
|
||||
- if (flush) FLUSH_BLOCK(0), block_start = strstart;
|
||||
|
||||
+ if (rsync && strstart > rsync_chunk_end) {
|
||||
+ rsync_chunk_end = 0xFFFFFFFFUL;
|
||||
+ flush = 2;
|
||||
+ }
|
||||
+ if (flush) FLUSH_BLOCK(0), block_start = strstart;
|
||||
} else if (match_available) {
|
||||
/* If there was no match at the previous position, output a
|
||||
* single literal. If there was a match but the current match
|
||||
* is longer, truncate the previous match to a single literal.
|
||||
*/
|
||||
Tracevv((stderr,"%c",window[strstart-1]));
|
||||
- if (ct_tally (0, window[strstart-1])) {
|
||||
- FLUSH_BLOCK(0), block_start = strstart;
|
||||
- }
|
||||
+ flush = ct_tally (0, window[strstart-1]);
|
||||
+ if (rsync && strstart > rsync_chunk_end) {
|
||||
+ rsync_chunk_end = 0xFFFFFFFFUL;
|
||||
+ flush = 2;
|
||||
+ }
|
||||
+ if (flush) FLUSH_BLOCK(0), block_start = strstart;
|
||||
+ RSYNC_ROLL(strstart, 1);
|
||||
strstart++;
|
||||
lookahead--;
|
||||
} else {
|
||||
/* There is no previous match to compare with, wait for
|
||||
* the next step to decide.
|
||||
*/
|
||||
+ if (rsync && strstart > rsync_chunk_end) {
|
||||
+ /* Reset huffman tree */
|
||||
+ rsync_chunk_end = 0xFFFFFFFFUL;
|
||||
+ flush = 2;
|
||||
+ FLUSH_BLOCK(0), block_start = strstart;
|
||||
+ }
|
||||
match_available = 1;
|
||||
+ RSYNC_ROLL(strstart, 1);
|
||||
strstart++;
|
||||
lookahead--;
|
||||
}
|
||||
--- gzip-1.3.6/doc/gzip.texi
|
||||
+++ gzip-1.3.6/doc/gzip.texi
|
||||
@@ -328,6 +328,14 @@
|
||||
into the directory and compress all the files it finds there (or
|
||||
decompress them in the case of @code{gunzip}).
|
||||
|
||||
+@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 @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 @samp{@var{suf}} instead of @samp{.gz}. Any suffix can be
|
||||
--- gzip-1.3.6/gzip.c
|
||||
+++ gzip-1.3.6/gzip.c
|
||||
@@ -218,6 +218,7 @@
|
||||
unsigned insize; /* valid bytes in inbuf */
|
||||
unsigned inptr; /* index of next byte to be processed in inbuf */
|
||||
unsigned outcnt; /* bytes in output buffer */
|
||||
+int rsync = 0; /* make ryncable chunks */
|
||||
|
||||
struct option longopts[] =
|
||||
{
|
||||
@@ -247,6 +248,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 }
|
||||
};
|
||||
|
||||
--- gzip-1.3.6/gzip.h
|
||||
+++ gzip-1.3.6/gzip.h
|
||||
@@ -155,6 +155,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 */
|
||||
+extern int rsync; /* deflate into rsyncable chunks */
|
||||
|
||||
extern off_t bytes_in; /* number of input bytes */
|
||||
extern off_t bytes_out; /* number of output bytes */
|
||||
@@ -303,7 +304,7 @@
|
||||
/* in trees.c */
|
||||
void ct_init OF((ush *attr, int *method));
|
||||
int ct_tally OF((int dist, int lc));
|
||||
-off_t flush_block OF((char *buf, ulg stored_len, int eof));
|
||||
+off_t flush_block OF((char *buf, ulg stored_len, int pad, int eof));
|
||||
|
||||
/* in bits.c */
|
||||
void bi_init OF((file_t zipfile));
|
||||
--- gzip-1.3.6/trees.c
|
||||
+++ gzip-1.3.6/trees.c
|
||||
@@ -59,12 +59,13 @@
|
||||
* void ct_tally (int dist, int lc);
|
||||
* Save the match info and tally the frequency counts.
|
||||
*
|
||||
- * off_t flush_block (char *buf, ulg stored_len, int eof)
|
||||
+ * off_t flush_block (char *buf, ulg stored_len, int pad, int eof)
|
||||
* Determine the best encoding for the current block: dynamic trees,
|
||||
* static trees or store, and output the encoded block to the zip
|
||||
- * file. Returns the total compressed length for the file so far.
|
||||
- *
|
||||
- */
|
||||
+ * file. If pad is set, pads the block to the next
|
||||
+ * byte. Returns the total compressed length for the file so
|
||||
+ * far.
|
||||
+ * */
|
||||
|
||||
#include <config.h>
|
||||
#include <ctype.h>
|
||||
@@ -860,9 +861,10 @@
|
||||
* trees or store, and output the encoded block to the zip file. This function
|
||||
* returns the total compressed length for the file so far.
|
||||
*/
|
||||
-off_t flush_block(buf, stored_len, eof)
|
||||
+off_t flush_block(buf, stored_len, pad, eof)
|
||||
char *buf; /* input block, or NULL if too old */
|
||||
ulg stored_len; /* length of input block */
|
||||
+ int pad; /* pad output to byte boundary */
|
||||
int eof; /* true if this is the last block for a file */
|
||||
{
|
||||
ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
|
||||
@@ -955,6 +957,10 @@
|
||||
Assert (input_len == bytes_in, "bad input size");
|
||||
bi_windup();
|
||||
compressed_len += 7; /* align on byte boundary */
|
||||
+ } else if (pad && (compressed_len % 8) != 0) {
|
||||
+ send_bits((STORED_BLOCK<<1)+eof, 3); /* send block type */
|
||||
+ compressed_len = (compressed_len + 3 + 7) & ~7L;
|
||||
+ copy_block(buf, 0, 1); /* with header */
|
||||
}
|
||||
|
||||
return compressed_len >> 3;
|
273
gzip.changes
Normal file
273
gzip.changes
Normal file
@ -0,0 +1,273 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Dec 15 11:48:41 CET 2006 - schwab@suse.de
|
||||
|
||||
- Update to gzip 1.3.9.
|
||||
* No major changes; only porting fixes.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 12 10:10:38 CET 2006 - schwab@suse.de
|
||||
|
||||
- Update to gzip 1.3.8.
|
||||
* Fix some gzip problems:
|
||||
- A security fix from Debian 1.3.5-5 was inadvertently omitted.
|
||||
- The assembler is now invoked with --noexecstack if supported,
|
||||
so that gzip can better resist stack-smashing attacks.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 7 11:19:36 CET 2006 - schwab@suse.de
|
||||
|
||||
- Update to gzip 1.3.7.
|
||||
* Fix some gzip problems:
|
||||
- Refuse to compress setuid or setgid files, or files with the sticky bit.
|
||||
- Fix more race conditions in setting file permissions and owner,
|
||||
removing output files, following symbolic links, and dealing with
|
||||
special files.
|
||||
- Remove most of the code working around ENAMETOOLONG deficiencies.
|
||||
Systems with those deficiencies are long-dead, and the workarounds
|
||||
had race conditions on modern hosts.
|
||||
- Catch CPU time and file size limit signals, too.
|
||||
- Check for read errors when closing files.
|
||||
- Fix a core dump caused by a stray abort mistakenly introduced in 1.3.6.
|
||||
* Fix some gzexe problems:
|
||||
- Improve resistance to denial-of-service attacks.
|
||||
- Fix some quoting and escaping bugs.
|
||||
- Do not assume /tmp is sticky (though it should be!).
|
||||
- Do not assume the working directory can be written.
|
||||
- Rely on PATH in the generated executable, as the man page says.
|
||||
- Don't assume IFS is sane.
|
||||
- Exit with signal's status, if signaled.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Dec 4 13:08:18 CET 2006 - schwab@suse.de
|
||||
|
||||
- Update to gzip 1.3.6.
|
||||
* Fix some race conditions in setting file time stamps, permissions, and owner.
|
||||
* Fix some race conditions in signal handling.
|
||||
* When gzip exits due to a signal, it exits with the signal's status, not 1.
|
||||
* gzip now restores file time stamps to the resolution supported by the
|
||||
time-setting primitives of the operating system, typically 1 microsecond.
|
||||
Formerly it restored them only to the nearest second.
|
||||
* gzip -r no longer attempts to reset the last-access times of directories
|
||||
it reads, as this messes up when other processes are reading the directories.
|
||||
* The options --version and --help now work on all gzip-installed executables,
|
||||
and now use a format similar to other GNU programs.
|
||||
* The manual is now distributed under the terms of the GNU Free
|
||||
Documentation License without invariant sections or cover texts.
|
||||
* Port to current versions of Autoconf, Automake, and Gnulib.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Sep 13 11:11:47 CEST 2006 - schwab@suse.de
|
||||
|
||||
- Verify hash tables when unpacking [#202365].
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 13 17:53:27 CET 2006 - schwab@suse.de
|
||||
|
||||
- Add rsyncable patch [#155442].
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 25 21:30:22 CET 2006 - mls@suse.de
|
||||
|
||||
- converted neededforbuild to BuildRequires
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Nov 11 11:56:29 CET 2005 - pth@suse.de
|
||||
|
||||
- Don't obsolete compress.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Oct 31 18:15:55 CET 2005 - dmueller@suse.de
|
||||
|
||||
- build with non-executable stack
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 26 14:56:47 CEST 2005 - schwab@suse.de
|
||||
|
||||
- Ignore directory part on saved file name [#79292].
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 19 14:59:23 CEST 2005 - kukuk@suse.de
|
||||
|
||||
- Remove uncompress symlink [#78331]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 24 13:33:56 CET 2005 - werner@suse.de
|
||||
|
||||
- Add support for bzip2 and simply pager options to zmore
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 3 13:59:40 CEST 2004 - schwab@suse.de
|
||||
|
||||
- Fix quoting issues in zgrep [#39329].
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Feb 27 17:44:02 CET 2004 - schwab@suse.de
|
||||
|
||||
- Add %defattr.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 2 10:12:06 CET 2003 - pthomas@suse.de
|
||||
|
||||
- Remove the patch for tail syntax as it's wrong and unnecessary.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Sep 18 15:18:43 CEST 2003 - mmj@suse.de
|
||||
|
||||
- Fix tail syntax in gzexe [#31229]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 28 16:00:22 CEST 2003 - kukuk@suse.de
|
||||
|
||||
- Make sure we have no hardlinks from /bin to /usr/bin [Bug #29522]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jun 17 13:47:17 CEST 2003 - pthomas@suse.de
|
||||
|
||||
- Update to 1.3.5
|
||||
- gzip now removes any output symlink before writing output file.
|
||||
- zgrep etc. scripts now port to POSIX 1003.1-2001 hosts.
|
||||
- zforce no longer assumes 14-byte file name length limit.
|
||||
- zless is now implemented using less and LESSOPEN, not zmore and PAGER.
|
||||
- assembly-language speedups reenabled; were mistakenly disabled in 1.3.
|
||||
- Less output is lost when decompressing a truncated file.
|
||||
- zgrep now supports --, -H, -h, -L, -l, -C, -d, -m and their long
|
||||
equivalents.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 4 18:20:32 CEST 2003 - jh@suse.de
|
||||
|
||||
- Enable profile feedback
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 24 12:20:23 CEST 2003 - ro@suse.de
|
||||
|
||||
- fix install_info --delete call and move from preun to postun
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 15 17:31:41 CEST 2003 - coolo@suse.de
|
||||
|
||||
- use BuildRoot
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Feb 8 10:58:53 CET 2003 - kukuk@suse.de
|
||||
|
||||
- Readded prereq for install-info, else we cannot install info
|
||||
pages
|
||||
- Add dir entry to info page
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Feb 8 01:43:07 CET 2003 - ro@suse.de
|
||||
|
||||
- removed prereq for texinfo to avoid prereq-cycle
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Feb 7 02:24:31 CET 2003 - ro@suse.de
|
||||
|
||||
- added install_info macros
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 29 15:13:10 CET 2003 - kukuk@suse.de
|
||||
|
||||
- Remove mimencode requires, it is optional
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 17 15:25:56 CET 2002 - werner@suse.de
|
||||
|
||||
- The `:' line of zgrep will be removed by configure
|
||||
- zgrep requzires mimencode from metamail
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 17 17:34:28 CEST 2002 - ro@suse.de
|
||||
|
||||
- removed bogus self-provides
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 14 18:26:33 CET 2002 - kukuk@suse.de
|
||||
|
||||
- Add uncompress compat link
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 6 11:15:08 CET 2002 - coolo@suse.de
|
||||
|
||||
- use %suse_update_config
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 24 11:35:18 CET 2002 - okir@suse.de
|
||||
|
||||
- fixed tempfile race in zdiff (current code used bash noclobber
|
||||
which is inherently racey)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 6 16:28:07 CEST 2001 - werner@suse.de
|
||||
|
||||
- Make zgrep knowing about bzip2
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 3 18:42:46 CEST 2001 - uli@suse.de
|
||||
|
||||
- fixed for gcc >2.96
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 27 03:07:13 CEST 2001 - bk@suse.de
|
||||
|
||||
- use i686 insn scheduling on i386 and strip binaries(performance)
|
||||
- make tmpfiles in gzexe secure and improve znew tempdir creation
|
||||
- remove unnessary expr use and fix gzip output checking in zforce
|
||||
- add simple tests if gzip/gunzip work
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 27 18:17:05 CET 2000 - aj@suse.de
|
||||
|
||||
- Update to gzip 1.3.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 23 16:41:25 CEST 2000 - werner@suse.de
|
||||
|
||||
- Security changes for the znew script
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 1 18:50:20 CEST 2000 - kukuk@suse.de
|
||||
|
||||
- LSB-FHS requires /bin/gunzip and /bin/zcat to /bin/gzip
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 18 10:42:52 CEST 2000 - kukuk@suse.de
|
||||
|
||||
- Add /bin/zcat (required by FHS 2.1)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Feb 25 12:29:21 CET 2000 - schwab@suse.de
|
||||
|
||||
- cleanup spec file, get rid of Makefile.Linux
|
||||
- define _GNU_SOURCE for basename declaration
|
||||
- /usr/man -> /usr/share/man
|
||||
- add gzip.info to file list
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 13 17:23:57 CEST 1999 - bs@suse.de
|
||||
|
||||
- ran old prepare_spec on spec file to switch to new prepare_spec.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Mar 6 18:47:20 MET 1998 - florian@suse.de
|
||||
|
||||
- fixed security bug posted on Dez 27 to bugtraq
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 8 17:24:05 MET 1998 - bs@suse.de
|
||||
|
||||
- fixed "double" /bin/gzip & /usr/bin/gzip
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Thu Apr 24 10:15:54 CEST 1997 - bs@suse.de
|
||||
|
||||
|
||||
- added symlink /bin/gunzip
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Sun Apr 13 23:04:29 MEST 1997 - florian@suse.de
|
||||
|
||||
|
||||
- add bug-fixes from gnu.utils.bugs
|
||||
|
||||
|
254
gzip.spec
Normal file
254
gzip.spec
Normal file
@ -0,0 +1,254 @@
|
||||
#
|
||||
# spec file for package gzip (Version 1.3.9)
|
||||
#
|
||||
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# This file and all modifications and additions to the pristine
|
||||
# package are under the same license as the package itself.
|
||||
#
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
# norootforbuild
|
||||
|
||||
Name: gzip
|
||||
%define do_profiling 0
|
||||
URL: http://www.gzip.org/
|
||||
License: GNU General Public License (GPL)
|
||||
Group: Productivity/Archiving/Compression
|
||||
Autoreqprov: on
|
||||
PreReq: %{install_info_prereq}
|
||||
Version: 1.3.9
|
||||
Release: 1
|
||||
Summary: GNU Zip Compression Utilities
|
||||
Source: %{name}-%{version}.tar.gz
|
||||
Patch: zgrep.diff
|
||||
Patch1: tempfile.diff
|
||||
Patch2: zmore.diff
|
||||
Patch3: non-exec-stack.diff
|
||||
Patch4: http://rsync.samba.org/ftp/unpacked/rsync/patches/gzip-rsyncable.diff
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%description
|
||||
Gzip reduces the size of the named files using Lempel-Ziv coding LZ77.
|
||||
Whenever possible, each file is replaced by one with the extension .gz,
|
||||
while keeping the same ownership modes and access and modification
|
||||
times.
|
||||
|
||||
|
||||
|
||||
Authors:
|
||||
--------
|
||||
Jean-loup Gailly <gzip@prep.ai.mit.edu>
|
||||
|
||||
%prep
|
||||
%{suse_update_config -f}
|
||||
%setup -q
|
||||
%patch
|
||||
%patch1
|
||||
%patch2
|
||||
%patch3
|
||||
%patch4 -p1
|
||||
|
||||
%build
|
||||
CFLAGS="$RPM_OPT_FLAGS -fomit-frame-pointer \
|
||||
%ifarch %{ix86}
|
||||
-mcpu=pentiumpro \
|
||||
%endif
|
||||
-W -Wall -Wno-unused-parameter -Wstrict-prototypes -Wpointer-arith"
|
||||
./configure CFLAGS="$CFLAGS" \
|
||||
--prefix=%{_prefix} --infodir=%{_infodir} --mandir=%{_mandir}
|
||||
%if %{do_profiling}
|
||||
make CFLAGS="$CFLAGS -fprofile-arcs"
|
||||
for i in 1 2 3 4 5 6 7 8 9
|
||||
do
|
||||
for f in build-aux/texinfo.tex /bin/bash; do
|
||||
basef=${f##*/}
|
||||
time ./gzip -$i < $f > $basef.gz
|
||||
./gzip --test $basef.gz
|
||||
./gzip -d < $basef.gz > $basef.test$i
|
||||
cmp $f $basef.test$i
|
||||
done
|
||||
done
|
||||
make clean
|
||||
make CFLAGS="$CFLAGS -fbranch-probabilities"
|
||||
%else
|
||||
make
|
||||
%endif
|
||||
for i in 1 2 3 4 5 6 7 8 9
|
||||
do
|
||||
for f in build-aux/texinfo.tex /bin/bash; do
|
||||
basef=${f##*/}
|
||||
time ./gzip -$i < $f > $basef.gz
|
||||
./gzip --test $basef.gz
|
||||
./gzip -d < $basef.gz > $basef.test$i
|
||||
cmp $f $basef.test$i
|
||||
done
|
||||
done
|
||||
|
||||
%install
|
||||
make DESTDIR=$RPM_BUILD_ROOT install
|
||||
mkdir -p $RPM_BUILD_ROOT/bin
|
||||
mv $RPM_BUILD_ROOT/usr/bin/gzip $RPM_BUILD_ROOT/bin/
|
||||
ln -f $RPM_BUILD_ROOT/bin/gzip $RPM_BUILD_ROOT/bin/zcat
|
||||
ln -f $RPM_BUILD_ROOT/bin/gzip $RPM_BUILD_ROOT/bin/gunzip
|
||||
ln -sf /bin/gzip $RPM_BUILD_ROOT/usr/bin/gzip
|
||||
ln -sf /bin/gunzip $RPM_BUILD_ROOT/usr/bin/gunzip
|
||||
ln -sf /bin/zcat $RPM_BUILD_ROOT/usr/bin/zcat
|
||||
ln -sf zmore $RPM_BUILD_ROOT/usr/bin/zless
|
||||
ln -sf zmore.1 $RPM_BUILD_ROOT%{_mandir}/man1/zless.1
|
||||
|
||||
%files
|
||||
%defattr(-, root, root)
|
||||
/bin/*
|
||||
/usr/bin/*
|
||||
%doc %{_infodir}/*.gz
|
||||
%doc %{_mandir}/man*/*.gz
|
||||
|
||||
%post
|
||||
%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
|
||||
|
||||
%postun
|
||||
%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
|
||||
|
||||
%changelog -n gzip
|
||||
* Fri Dec 15 2006 - schwab@suse.de
|
||||
- Update to gzip 1.3.9.
|
||||
* No major changes; only porting fixes.
|
||||
* Tue Dec 12 2006 - schwab@suse.de
|
||||
- Update to gzip 1.3.8.
|
||||
* Fix some gzip problems:
|
||||
- A security fix from Debian 1.3.5-5 was inadvertently omitted.
|
||||
- The assembler is now invoked with --noexecstack if supported,
|
||||
so that gzip can better resist stack-smashing attacks.
|
||||
* Thu Dec 07 2006 - schwab@suse.de
|
||||
- Update to gzip 1.3.7.
|
||||
* Fix some gzip problems:
|
||||
- Refuse to compress setuid or setgid files, or files with the sticky bit.
|
||||
- Fix more race conditions in setting file permissions and owner,
|
||||
removing output files, following symbolic links, and dealing with
|
||||
special files.
|
||||
- Remove most of the code working around ENAMETOOLONG deficiencies.
|
||||
Systems with those deficiencies are long-dead, and the workarounds
|
||||
had race conditions on modern hosts.
|
||||
- Catch CPU time and file size limit signals, too.
|
||||
- Check for read errors when closing files.
|
||||
- Fix a core dump caused by a stray abort mistakenly introduced in 1.3.6.
|
||||
* Fix some gzexe problems:
|
||||
- Improve resistance to denial-of-service attacks.
|
||||
- Fix some quoting and escaping bugs.
|
||||
- Do not assume /tmp is sticky (though it should be!).
|
||||
- Do not assume the working directory can be written.
|
||||
- Rely on PATH in the generated executable, as the man page says.
|
||||
- Don't assume IFS is sane.
|
||||
- Exit with signal's status, if signaled.
|
||||
* Mon Dec 04 2006 - schwab@suse.de
|
||||
- Update to gzip 1.3.6.
|
||||
* Fix some race conditions in setting file time stamps, permissions, and owner.
|
||||
* Fix some race conditions in signal handling.
|
||||
* When gzip exits due to a signal, it exits with the signal's status, not 1.
|
||||
* gzip now restores file time stamps to the resolution supported by the
|
||||
time-setting primitives of the operating system, typically 1 microsecond.
|
||||
Formerly it restored them only to the nearest second.
|
||||
* gzip -r no longer attempts to reset the last-access times of directories
|
||||
it reads, as this messes up when other processes are reading the directories.
|
||||
* The options --version and --help now work on all gzip-installed executables,
|
||||
and now use a format similar to other GNU programs.
|
||||
* The manual is now distributed under the terms of the GNU Free
|
||||
Documentation License without invariant sections or cover texts.
|
||||
* Port to current versions of Autoconf, Automake, and Gnulib.
|
||||
* Wed Sep 13 2006 - schwab@suse.de
|
||||
- Verify hash tables when unpacking [#202365].
|
||||
* Mon Mar 13 2006 - schwab@suse.de
|
||||
- Add rsyncable patch [#155442].
|
||||
* Wed Jan 25 2006 - mls@suse.de
|
||||
- converted neededforbuild to BuildRequires
|
||||
* Fri Nov 11 2005 - pth@suse.de
|
||||
- Don't obsolete compress.
|
||||
* Mon Oct 31 2005 - dmueller@suse.de
|
||||
- build with non-executable stack
|
||||
* Tue Jul 26 2005 - schwab@suse.de
|
||||
- Ignore directory part on saved file name [#79292].
|
||||
* Tue Apr 19 2005 - kukuk@suse.de
|
||||
- Remove uncompress symlink [#78331]
|
||||
* Thu Mar 24 2005 - werner@suse.de
|
||||
- Add support for bzip2 and simply pager options to zmore
|
||||
* Mon May 03 2004 - schwab@suse.de
|
||||
- Fix quoting issues in zgrep [#39329].
|
||||
* Fri Feb 27 2004 - schwab@suse.de
|
||||
- Add %%defattr.
|
||||
* Tue Dec 02 2003 - pthomas@suse.de
|
||||
- Remove the patch for tail syntax as it's wrong and unnecessary.
|
||||
* Thu Sep 18 2003 - mmj@suse.de
|
||||
- Fix tail syntax in gzexe [#31229]
|
||||
* Thu Aug 28 2003 - kukuk@suse.de
|
||||
- Make sure we have no hardlinks from /bin to /usr/bin [Bug #29522]
|
||||
* Tue Jun 17 2003 - pthomas@suse.de
|
||||
- Update to 1.3.5
|
||||
- gzip now removes any output symlink before writing output file.
|
||||
- zgrep etc. scripts now port to POSIX 1003.1-2001 hosts.
|
||||
- zforce no longer assumes 14-byte file name length limit.
|
||||
- zless is now implemented using less and LESSOPEN, not zmore and PAGER.
|
||||
- assembly-language speedups reenabled; were mistakenly disabled in 1.3.
|
||||
- Less output is lost when decompressing a truncated file.
|
||||
- zgrep now supports --, -H, -h, -L, -l, -C, -d, -m and their long
|
||||
equivalents.
|
||||
* Wed Jun 04 2003 - jh@suse.de
|
||||
- Enable profile feedback
|
||||
* Thu Apr 24 2003 - ro@suse.de
|
||||
- fix install_info --delete call and move from preun to postun
|
||||
* Tue Apr 15 2003 - coolo@suse.de
|
||||
- use BuildRoot
|
||||
* Sat Feb 08 2003 - kukuk@suse.de
|
||||
- Readded prereq for install-info, else we cannot install info
|
||||
pages
|
||||
- Add dir entry to info page
|
||||
* Sat Feb 08 2003 - ro@suse.de
|
||||
- removed prereq for texinfo to avoid prereq-cycle
|
||||
* Fri Feb 07 2003 - ro@suse.de
|
||||
- added install_info macros
|
||||
* Wed Jan 29 2003 - kukuk@suse.de
|
||||
- Remove mimencode requires, it is optional
|
||||
* Tue Dec 17 2002 - werner@suse.de
|
||||
- The `:' line of zgrep will be removed by configure
|
||||
- zgrep requzires mimencode from metamail
|
||||
* Tue Sep 17 2002 - ro@suse.de
|
||||
- removed bogus self-provides
|
||||
* Thu Mar 14 2002 - kukuk@suse.de
|
||||
- Add uncompress compat link
|
||||
* Wed Feb 06 2002 - coolo@suse.de
|
||||
- use %%suse_update_config
|
||||
* Thu Jan 24 2002 - okir@suse.de
|
||||
- fixed tempfile race in zdiff (current code used bash noclobber
|
||||
which is inherently racey)
|
||||
* Wed Jun 06 2001 - werner@suse.de
|
||||
- Make zgrep knowing about bzip2
|
||||
* Tue Apr 03 2001 - uli@suse.de
|
||||
- fixed for gcc >2.96
|
||||
* Tue Mar 27 2001 - bk@suse.de
|
||||
- use i686 insn scheduling on i386 and strip binaries(performance)
|
||||
- make tmpfiles in gzexe secure and improve znew tempdir creation
|
||||
- remove unnessary expr use and fix gzip output checking in zforce
|
||||
- add simple tests if gzip/gunzip work
|
||||
* Mon Nov 27 2000 - aj@suse.de
|
||||
- Update to gzip 1.3.
|
||||
* Wed Aug 23 2000 - werner@suse.de
|
||||
- Security changes for the znew script
|
||||
* Mon May 01 2000 - kukuk@suse.de
|
||||
- LSB-FHS requires /bin/gunzip and /bin/zcat to /bin/gzip
|
||||
* Tue Apr 18 2000 - kukuk@suse.de
|
||||
- Add /bin/zcat (required by FHS 2.1)
|
||||
* Fri Feb 25 2000 - schwab@suse.de
|
||||
- cleanup spec file, get rid of Makefile.Linux
|
||||
- define _GNU_SOURCE for basename declaration
|
||||
- /usr/man -> /usr/share/man
|
||||
- add gzip.info to file list
|
||||
* Mon Sep 13 1999 - bs@suse.de
|
||||
- ran old prepare_spec on spec file to switch to new prepare_spec.
|
||||
* Fri Mar 06 1998 - florian@suse.de
|
||||
- fixed security bug posted on Dez 27 to bugtraq
|
||||
* Thu Jan 08 1998 - bs@suse.de
|
||||
- fixed "double" /bin/gzip & /usr/bin/gzip
|
||||
* Thu Apr 24 1997 - bs@suse.de
|
||||
- added symlink /bin/gunzip
|
||||
* Sun Apr 13 1997 - florian@suse.de
|
||||
- add bug-fixes from gnu.utils.bugs
|
7
non-exec-stack.diff
Normal file
7
non-exec-stack.diff
Normal file
@ -0,0 +1,7 @@
|
||||
--- lib/match.c
|
||||
+++ lib/match.c
|
||||
@@ -770,3 +770,4 @@
|
||||
# endif /* __ia64__ */
|
||||
#endif /* mc68000 || mc68020 */
|
||||
#endif /* i386 || _I386 */
|
||||
+ .section .note.GNU-stack,"",@progbits
|
44
tempfile.diff
Normal file
44
tempfile.diff
Normal file
@ -0,0 +1,44 @@
|
||||
--- zdiff.in
|
||||
+++ zdiff.in
|
||||
@@ -59,12 +59,12 @@
|
||||
case "$2" in
|
||||
*[-.]gz* | *[-.][zZ] | *.t[ga]z)
|
||||
F=`echo "$2" | sed 's|.*/||;s|[-.][zZtga]*||'`
|
||||
- set -C
|
||||
- trap 'rm -f /tmp/"$F".$$; exit 2' HUP INT PIPE TERM 0
|
||||
- gzip -cdfq -- "$2" > /tmp/"$F".$$ || exit
|
||||
- gzip -cdfq -- "$1" | $comp $OPTIONS - /tmp/"$F".$$
|
||||
+ TF=`/bin/mktemp -t "$F".XXXXXXXX` || exit 1
|
||||
+ trap 'rm -f "$TF"; exit 2' HUP INT PIPE TERM 0
|
||||
+ gzip -cdfq -- "$2" > "$TF" || exit
|
||||
+ gzip -cdfq -- "$1" | $comp $OPTIONS - "$TF"
|
||||
STAT="$?"
|
||||
- /bin/rm -f /tmp/"$F".$$ || STAT=2
|
||||
+ /bin/rm -f "$TF" || STAT=2
|
||||
trap - HUP INT PIPE TERM 0
|
||||
exit $STAT;;
|
||||
|
||||
--- znew.in
|
||||
+++ znew.in
|
||||
@@ -56,8 +56,9 @@
|
||||
# block is the disk block size (best guess, need not be exact)
|
||||
|
||||
warn="(does not preserve modes and timestamp)"
|
||||
-tmp=/tmp/zfoo.$$
|
||||
-set -C
|
||||
+dtmp=`mktemp -d -t znew.XXXXXXXX` || exit
|
||||
+trap 'rm -rf $dtmp' HUP INT PIPE TERM 0
|
||||
+tmp=$dtmp/znew
|
||||
echo hi > $tmp || exit
|
||||
if test -z "`(${CPMOD-cpmod} $tmp $tmp) 2>&1`"; then
|
||||
cpmod=${CPMOD-cpmod}
|
||||
@@ -73,7 +74,8 @@
|
||||
# check if GZIP env. variable uses -S or --suffix
|
||||
gzip -q $tmp
|
||||
ext=`echo $tmp* | sed "s|$tmp||"`
|
||||
-rm -f $tmp*
|
||||
+rm -f $dtmp
|
||||
+trap - HUP INT PIPE TERM 0
|
||||
if test -z "$ext"; then
|
||||
echo znew: error determining gzip extension
|
||||
exit 1
|
42
zgrep.diff
Normal file
42
zgrep.diff
Normal file
@ -0,0 +1,42 @@
|
||||
--- zgrep.in
|
||||
+++ zgrep.in
|
||||
@@ -102,13 +102,36 @@
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
- gzip -cdfq | $grep $opt "$pat"
|
||||
- exit $?
|
||||
+ if type -p dd > /dev/null 2>&1 &&
|
||||
+ type -p mimencode > /dev/null 2>&1 &&
|
||||
+ type -p file > /dev/null 2>&1
|
||||
+ then
|
||||
+ uncompress=gzip
|
||||
+ x=`dd bs=20 count=1 2> /dev/null | mimencode -b`
|
||||
+ case `echo -n $x | mimencode -u -b | file -b -` in
|
||||
+ bzip2*)
|
||||
+ uncompress=bzip2
|
||||
+ ;;
|
||||
+ esac
|
||||
+ (echo -n $x | mimencode -u -b; cat -) | $uncompress -cdfq | $grep $opt "$pat"
|
||||
+ exit $?
|
||||
+ else
|
||||
+ gzip -cdfq | $grep $opt "$pat"
|
||||
+ exit $?
|
||||
+ fi
|
||||
fi
|
||||
|
||||
res=0
|
||||
for i do
|
||||
- gzip -cdfq -- "$i" |
|
||||
+ case $i in
|
||||
+ *.bz2)
|
||||
+ uncompress=bzip2
|
||||
+ ;;
|
||||
+ *)
|
||||
+ uncompress=gzip
|
||||
+ ;;
|
||||
+ esac
|
||||
+ $uncompress -cdfq "$i" |
|
||||
if test $files_with_matches -eq 1; then
|
||||
$grep $opt "$pat" > /dev/null && printf '%s\n' "$i"
|
||||
elif test $files_without_matches -eq 1; then
|
46
zmore.diff
Normal file
46
zmore.diff
Normal file
@ -0,0 +1,46 @@
|
||||
--- zmore.in
|
||||
+++ zmore.in
|
||||
@@ -52,11 +52,33 @@
|
||||
trap 'stty $ncb echo 2>/dev/null; exit' 0 2 3 5 10 13 15
|
||||
fi
|
||||
|
||||
+opt=
|
||||
+pager ()
|
||||
+{
|
||||
+ eval ${PAGER-more} \$opt
|
||||
+ cat > /dev/null
|
||||
+}
|
||||
+
|
||||
+while :; do
|
||||
+ case $1 in
|
||||
+ --)
|
||||
+ shift
|
||||
+ break
|
||||
+ ;;
|
||||
+ [-+]*)
|
||||
+ opt="$opt $1"
|
||||
+ shift
|
||||
+ ;;
|
||||
+ *)
|
||||
+ break
|
||||
+ ;;
|
||||
+ esac
|
||||
+done
|
||||
if test $# = 0; then
|
||||
if test -t 0; then
|
||||
echo "$usage"
|
||||
else
|
||||
- gzip -cdfq | eval ${PAGER-more}
|
||||
+ gzip -cdfq | pager
|
||||
fi
|
||||
else
|
||||
FIRST=1
|
||||
@@ -80,7 +102,7 @@
|
||||
fi
|
||||
if test "$ANS" != 's'; then
|
||||
echo "------> $FILE <------"
|
||||
- gzip -cdfq -- "$FILE" | eval ${PAGER-more}
|
||||
+ gzip -cdfq -- "$FILE" | pager
|
||||
fi
|
||||
if test -t 1; then
|
||||
FIRST=0
|
Loading…
Reference in New Issue
Block a user