changing gzip's symlink handling to be consistent with bzip2,
xz and GNU gzip
Alexander Best
arundel at freebsd.org
Mon Nov 15 18:24:09 UTC 2010
hi there,
any thoughts on this patch? it changes the semantics of gzip so that it is
consistent with the semantics of bzip2, xz and for more important GNU gzip.
cheers.
alex
--
a13x
-------------- next part --------------
diff --git a/usr.bin/gzip/gzip.1 b/usr.bin/gzip/gzip.1
index 848a4b3..8eab82c 100644
--- a/usr.bin/gzip/gzip.1
+++ b/usr.bin/gzip/gzip.1
@@ -25,7 +25,7 @@
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
-.Dd April 27, 2010
+.Dd November 15, 2010
.Dt GZIP 1
.Os
.Sh NAME
@@ -127,9 +127,9 @@ stream, leaving files intact.
This option selects decompression rather than compression.
.It Fl f , -force
This option turns on force mode.
-This allows files with multiple links, overwriting of pre-existing
-files, reading from or writing to a terminal, and when combined
-with the
+This allows files with multiple links, symbolic links to regular files,
+overwriting of pre-existing files, reading from or writing to a terminal,
+and when combined with the
.Fl c
option, allowing non-compressed data to pass through unchanged.
.It Fl h , -help
diff --git a/usr.bin/gzip/gzip.c b/usr.bin/gzip/gzip.c
index d86e84b..15fcf95 100644
--- a/usr.bin/gzip/gzip.c
+++ b/usr.bin/gzip/gzip.c
@@ -1781,7 +1781,7 @@ handle_pathname(char *path)
}
retry:
- if (stat(path, &sb) != 0) {
+ if (fflag && stat(path, &sb) != 0 || fflag == 0 && lstat(path, &sb) != 0) {
/* lets try <path>.gz if we're decompressing */
if (dflag && s == NULL && errno == ENOENT) {
len = strlen(path);
More information about the freebsd-hackers
mailing list