From 7850e4e406dce1f7a819297eeb151d1ca18e7cd9 Mon Sep 17 00:00:00 2001 From: Mark Adler Date: Fri, 9 Sep 2011 23:17:33 -0700 Subject: zlib 1.0.7 --- minigzip.c | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) (limited to 'minigzip.c') diff --git a/minigzip.c b/minigzip.c index fcee6a2..ee52ab6 100644 --- a/minigzip.c +++ b/minigzip.c @@ -1,5 +1,5 @@ /* minigzip.c -- simulate gzip using the zlib compression library - * Copyright (C) 1995-1996 Jean-loup Gailly. + * Copyright (C) 1995-1998 Jean-loup Gailly. * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -13,7 +13,7 @@ * or in pipe mode. */ -/* $Id: minigzip.c,v 1.10 1996/07/24 13:41:04 me Exp $ */ +/* @(#) $Id$ */ #include #include "zlib.h" @@ -47,18 +47,19 @@ #ifndef GZ_SUFFIX # define GZ_SUFFIX ".gz" #endif -#define SUFFIX_LEN sizeof(GZ_SUFFIX) +#define SUFFIX_LEN (sizeof(GZ_SUFFIX)-1) extern int unlink OF((const char *)); #define BUFLEN 4096 #define MAX_NAME_LEN 1024 -#define local static -/* For MSDOS and other systems with limitation on stack size. For Unix, - #define local - works also. - */ +#ifdef MAXSEG_64K +# define local static + /* Needed for systems with limitation on stack size. */ +#else +# define local +#endif char *prog; @@ -201,7 +202,11 @@ void file_uncompress(file) /* =========================================================================== - * Usage: minigzip [-d] [files...] + * Usage: minigzip [-d] [-f] [-h] [-1 to -9] [files...] + * -d : decompress + * -f : compress with Z_FILTERED + * -h : compress with Z_HUFFMAN_ONLY + * -1 to -9 : compression level */ int main(argc, argv) @@ -210,15 +215,26 @@ int main(argc, argv) { int uncompr = 0; gzFile file; + char outmode[20]; + + strcpy(outmode, "wb6 "); prog = argv[0]; argc--, argv++; - if (argc > 0) { - uncompr = (strcmp(*argv, "-d") == 0); - if (uncompr) { - argc--, argv++; - } + while (argc > 0) { + if (strcmp(*argv, "-d") == 0) + uncompr = 1; + else if (strcmp(*argv, "-f") == 0) + outmode[3] = 'f'; + else if (strcmp(*argv, "-h") == 0) + outmode[3] = 'h'; + else if ((*argv)[0] == '-' && (*argv)[1] >= '1' && (*argv)[1] <= '9' && + (*argv)[2] == 0) + outmode[2] = (*argv)[1]; + else + break; + argc--, argv++; } if (argc == 0) { SET_BINARY_MODE(stdin); @@ -228,7 +244,7 @@ int main(argc, argv) if (file == NULL) error("can't gzdopen stdin"); gz_uncompress(file, stdout); } else { - file = gzdopen(fileno(stdout), "wb"); /* "wb9" for max compr. */ + file = gzdopen(fileno(stdout), outmode); if (file == NULL) error("can't gzdopen stdout"); gz_compress(stdin, file); } -- cgit v1.2.3-55-g6feb