X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=archival%2Fgzip.c;h=486f78f887db1e6ae2cb8eaf1f7614ec6d237b93;hb=5d8843e451c01d8abfe6b5be772637310e9e581e;hp=41ed3a2c7c0fabbb6731a66966d969c51c88aaae;hpb=c57ec37959390ff2e43faa5e4dd5281b2923ced3;p=oweals%2Fbusybox.git diff --git a/archival/gzip.c b/archival/gzip.c index 41ed3a2c7..486f78f88 100644 --- a/archival/gzip.c +++ b/archival/gzip.c @@ -16,11 +16,7 @@ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ -/* These defines are very important for BusyBox. Without these, - * huge chunks of ram are pre-allocated making the BusyBox bss - * size Freaking Huge(tm), which is a bad thing.*/ #define SMALL_MEM -#define DYN_ALLOC #include #include @@ -87,17 +83,11 @@ typedef unsigned long ulg; # endif #endif -#ifdef DYN_ALLOC # define DECLARE(type, array, size) static type * array # define ALLOC(type, array, size) { \ - array = (type*)xcalloc((size_t)(((size)+1L)/2), 2*sizeof(type)); \ + array = (type*)xzalloc((size_t)(((size)+1L)/2) * 2*sizeof(type)); \ } # define FREE(array) {free(array), array=NULL;} -#else -# define DECLARE(type, array, size) static type array[size] -# define ALLOC(type, array, size) -# define FREE(array) -#endif #define tab_suffix window #define tab_prefix prev /* hash link (see deflate.c) */ @@ -154,15 +144,6 @@ typedef int file_t; /* Do not use stdio */ #define put_byte(c) {outbuf[outcnt++]=(uch)(c); if (outcnt==OUTBUFSIZ)\ flush_outbuf();} - -/* Output a 32 bit value to the bit stream, lsb first */ -#if 0 -#define put_long(n) { \ - put_short((n) & 0xffff); \ - put_short(((ulg)(n)) >> 16); \ -} -#endif - #define seekable() 0 /* force sequential output */ #define translate_eol 0 /* no option -a yet */ @@ -334,7 +315,7 @@ static void write_buf(int fd, void *buf, unsigned cnt) unsigned n; while ((n = write(fd, buf, cnt)) != cnt) { - if (n == (unsigned) (-1)) bb_error_msg_and_die("can't write"); + if (n == (unsigned) (-1)) bb_error_msg_and_die(bb_msg_write_error); cnt -= n; buf = (void *) ((char *) buf + n); } @@ -494,7 +475,7 @@ static void send_bits(int value, int length) */ static unsigned bi_reverse(unsigned code, int len) { - register unsigned res = 0; + unsigned res = 0; do { res |= code & 1; @@ -792,7 +773,7 @@ static void check_match(IPos start, IPos match, int length); */ static void lm_init(ush * flags) { - register unsigned j; + unsigned j; /* Initialize the hash table. */ memset(head, 0, HASH_SIZE * sizeof(*head)); @@ -842,9 +823,9 @@ static void lm_init(ush * flags) static int longest_match(IPos cur_match) { unsigned chain_length = max_chain_length; /* max hash chain length */ - register uch *scan = window + strstart; /* current string */ - register uch *match; /* matched string */ - register int len; /* length of current match */ + uch *scan = window + strstart; /* current string */ + uch *match; /* matched string */ + int len; /* length of current match */ int best_len = prev_length; /* best match length so far */ IPos limit = strstart > (IPos) MAX_DIST ? strstart - (IPos) MAX_DIST : NIL; @@ -858,9 +839,9 @@ static int longest_match(IPos cur_match) #if HASH_BITS < 8 || MAX_MATCH != 258 # error Code too clever #endif - register uch *strend = window + strstart + MAX_MATCH; - register uch scan_end1 = scan[best_len - 1]; - register uch scan_end = scan[best_len]; + uch *strend = window + strstart + MAX_MATCH; + uch scan_end1 = scan[best_len - 1]; + uch scan_end = scan[best_len]; /* Do not waste too much time if we already have a good match: */ if (prev_length >= good_match) { @@ -947,7 +928,7 @@ static void check_match(IPos start, IPos match, int length) */ static void fill_window(void) { - register unsigned n, m; + unsigned n, m; unsigned more = (unsigned) (window_size - (ulg) lookahead - (ulg) strstart); /* Amount of free space at the end of the window. */ @@ -1015,7 +996,7 @@ static ulg deflate(void) IPos prev_match; /* previous match */ int flush; /* set if current block must be flushed */ int match_available = 0; /* set if previous match exists */ - register unsigned match_length = MIN_MATCH - 1; /* length of best match */ + unsigned match_length = MIN_MATCH - 1; /* length of best match */ /* Process the input block. */ while (lookahead != 0) { @@ -1228,8 +1209,8 @@ int gzip_main(int argc, char **argv) inFileNum = STDIN_FILENO; outFileNum = STDOUT_FILENO; } else { - inFileNum = open(argv[i], O_RDONLY); - if (inFileNum < 0 || fstat(inFileNum, &statBuf) < 0) + inFileNum = bb_xopen3(argv[i], O_RDONLY, 0); + if (fstat(inFileNum, &statBuf) < 0) bb_perror_msg_and_die("%s", argv[i]); time_stamp = statBuf.st_ctime; ifile_size = statBuf.st_size;