SHA256
3
0
forked from pool/gzip
OBS User unknown 2006-12-15 17:09:13 +00:00 committed by Git OBS Bridge
commit d54774ae10
11 changed files with 975 additions and 0 deletions

23
.gitattributes vendored Normal file
View 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
View File

@ -0,0 +1 @@
.osc

3
gzip-1.3.9.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a6fdbe5ce21f5e4ce219375c29e842da517e61a56900a678cf258b4fdd603e72
size 420737

282
gzip-rsyncable.diff Normal file
View 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
View 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
View 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
View 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

0
ready Normal file
View File

44
tempfile.diff Normal file
View 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
View 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
View 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