From: | LI Xin <delphij@xxxxxxxxxxx> |
Date: | Thu, 06 Sep 2007 11:11:12 +0800 |
Hi, This patch adds some features/improvements from FreeBSD: - Add a '-k' option which does not remove input file, like bzip2(1) do. - Use better representation of 'S:' by expanding ':' to '.suffix' - Simulate GNU gzip(1) behavior where full filename is being output in verbose mode when doing recursive[1]. If someone have commit access liked the patch, you can also find the patched checked out version on leaf's /home/delphij/build/gzip. Note, that I have intentionally left .Dd in gzip.1 intact, because I do not know the exact date or wheather it would hit the tree. When committing the code please consider bumping the date. Cheers, -- Xin LI <delphij@delphij.net> http://www.delphij.net/ FreeBSD - The Power to Serve!
Index: gzip.1 =================================================================== RCS file: /archive/DragonFly-CVS/src/usr.bin/gzip/gzip.1,v retrieving revision 1.1 diff -u -r1.1 gzip.1 --- gzip.1 26 Oct 2004 11:19:31 -0000 1.1 +++ gzip.1 6 Sep 2007 03:01:59 -0000 @@ -35,7 +35,7 @@ .Nd compression/decompression tool using Lempel-Ziv coding (LZ77) .Sh SYNOPSIS .Nm -.Op Fl cdfhlNnqrtVv +.Op Fl cdfhklNnqrtVv .Op Fl S Ar suffix .Ar file .Oo @@ -43,7 +43,7 @@ .Oc .Oc .Nm gunzip -.Op Fl cfhNqrtVv +.Op Fl cfhkNqrtVv .Op Fl S Ar suffix .Ar file .Oo @@ -130,6 +130,9 @@ option, allowing non-compressed data to pass through unchanged. .It Fl h , -help This option prints a usage summary and exits. +.It Fl k , -keep +Keep (don't delete) input files during compression +or decompression. .It Fl l , -list This option displays information about the file's compressed and uncompressed size, ratio, uncompressed name. Index: gzip.c =================================================================== RCS file: /archive/DragonFly-CVS/src/usr.bin/gzip/gzip.c,v retrieving revision 1.6 diff -u -r1.6 gzip.c --- gzip.c 25 Oct 2006 08:27:27 -0000 1.6 +++ gzip.c 6 Sep 2007 02:59:15 -0000 @@ -148,6 +148,7 @@ #ifndef SMALL static int fflag; /* force mode */ +static int kflag; /* don't delete input files */ static int nflag; /* don't save name/timestamp */ static int Nflag; /* don't restore name/timestamp */ static int qflag; /* quiet mode */ @@ -224,6 +225,7 @@ { "uncompress", no_argument, 0, 'd' }, { "force", no_argument, 0, 'f' }, { "help", no_argument, 0, 'h' }, + { "keep", no_argument, 0, 'k' }, { "list", no_argument, 0, 'l' }, { "no-name", no_argument, 0, 'n' }, { "name", no_argument, 0, 'N' }, @@ -277,7 +279,7 @@ #ifdef SMALL #define OPT_LIST "cdhHltV123456789" #else -#define OPT_LIST "cdfhHlnNqrS:tvV123456789" +#define OPT_LIST "cdfhHklnNqrS:tvV123456789" #endif while ((ch = getopt_long(argc, argv, OPT_LIST, longopts, NULL)) != -1) { @@ -304,6 +306,9 @@ case 'f': fflag = 1; break; + case 'k': + kflag = 1; + break; case 'n': nflag = 1; Nflag = 0; @@ -1075,6 +1080,9 @@ { struct stat nsb; + if (kflag) + return; + if (stat(file, &nsb) != 0) /* Must be gone alrady */ return; @@ -1678,7 +1686,7 @@ path_argv[0] = dir; path_argv[1] = 0; - fts = fts_open(path_argv, FTS_PHYSICAL, NULL); + fts = fts_open(path_argv, FTS_PHYSICAL | FTS_NOCHDIR, NULL); if (fts == NULL) { warn("couldn't fts_open %s", dir); return; @@ -1696,7 +1704,7 @@ maybe_warn("%s", entry->fts_path); continue; case FTS_F: - handle_file(entry->fts_name, entry->fts_statp); + handle_file(entry->fts_path, entry->fts_statp); } } (void)fts_close(fts); @@ -1846,14 +1854,17 @@ fprintf(stderr, "%s\n", gzip_version); fprintf(stderr, - "usage: %s [-" OPT_LIST "] [<file> [<file> ...]]\n" -#ifndef SMALL +#ifdef SMALL + "usage: %s [-" OPT_LIST "] [<file> [<file> ...]]\n", +#else + "usage: %s [-123456789acdfhklLNnqrtVv] [-S .suffix] [<file> [<file> ...]]\n" " -c --stdout write to stdout, keep original files\n" " --to-stdout\n" " -d --decompress uncompress files\n" " --uncompress\n" " -f --force force overwriting & compress links\n" " -h --help display this help\n" + " -k --keep don't delete input files during operation\n" " -n --no-name don't save original file name or time stamp\n" " -N --name save or restore original file name and time stamp\n" " -q --quiet output no warnings\n" @@ -1866,8 +1877,6 @@ " -1 --fast fastest (worst) compression\n" " -2 .. -8 set compression level\n" " -9 --best best (slowest) compression\n", -#else - , #endif getprogname()); exit(0);
Attachment:
signature.asc
Description: OpenPGP digital signature