Run through indent, fix comments
This commit is contained in:
		| @@ -69,7 +69,7 @@ static char *license_msg[] = { | |||||||
| #include "libbb.h" | #include "libbb.h" | ||||||
|  |  | ||||||
| #ifdef CONFIG_FEATURE_UNCOMPRESS | #ifdef CONFIG_FEATURE_UNCOMPRESS | ||||||
| int uncompress ( FILE *in, FILE *out ); | int uncompress(FILE * in, FILE * out); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| static FILE *in_file, *out_file; | static FILE *in_file, *out_file; | ||||||
| @@ -115,7 +115,7 @@ static const unsigned short mask_bits[] = { | |||||||
| 	0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff | 	0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff | ||||||
| }; | }; | ||||||
|  |  | ||||||
| //static int error_number = 0; | /* static int error_number = 0; */ | ||||||
| /* ======================================================================== | /* ======================================================================== | ||||||
|  * Signal and error handler. |  * Signal and error handler. | ||||||
|  */ |  */ | ||||||
| @@ -145,9 +145,11 @@ static void make_crc_table(void) | |||||||
| 		   * zero was stolen from Haruhiko Okumura's ar002 | 		   * zero was stolen from Haruhiko Okumura's ar002 | ||||||
| 		 */ | 		 */ | ||||||
| 		for (k = 8; k; k--) { | 		for (k = 8; k; k--) { | ||||||
| 			table_entry = table_entry & 1 ? (table_entry >> 1) ^ poly : table_entry >> 1; | 			table_entry = | ||||||
|  | 				table_entry & 1 ? (table_entry >> 1) ^ poly : table_entry >> | ||||||
|  | 				1; | ||||||
| 		} | 		} | ||||||
| 		crc_table[i]=table_entry; | 		crc_table[i] = table_entry; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -179,7 +181,7 @@ static void flush_window(void) | |||||||
|  * each table.  |  * each table.  | ||||||
|  * t: table to free |  * t: table to free | ||||||
|  */ |  */ | ||||||
| static int huft_free(huft_t *t) | static int huft_free(huft_t * t) | ||||||
| { | { | ||||||
| 	huft_t *p, *q; | 	huft_t *p, *q; | ||||||
|  |  | ||||||
| @@ -209,8 +211,9 @@ typedef unsigned char extra_bits_t; | |||||||
|  * t:	result: starting table |  * t:	result: starting table | ||||||
|  * m:	maximum lookup bits, returns actual |  * m:	maximum lookup bits, returns actual | ||||||
|  */ |  */ | ||||||
| static int huft_build(unsigned int *b, const unsigned int n, const unsigned int s,  | static int huft_build(unsigned int *b, const unsigned int n, | ||||||
| 	const unsigned short *d, const extra_bits_t *e, huft_t **t, int *m) | 					  const unsigned int s, const unsigned short *d, | ||||||
|  | 					  const extra_bits_t * e, huft_t ** t, int *m) | ||||||
| { | { | ||||||
| 	unsigned a;			/* counter for codes of length k */ | 	unsigned a;			/* counter for codes of length k */ | ||||||
| 	unsigned c[BMAX + 1];	/* bit length count table */ | 	unsigned c[BMAX + 1];	/* bit length count table */ | ||||||
| @@ -233,7 +236,7 @@ static int huft_build(unsigned int *b, const unsigned int n, const unsigned int | |||||||
| 	unsigned z;			/* number of entries in current table */ | 	unsigned z;			/* number of entries in current table */ | ||||||
|  |  | ||||||
| 	/* Generate counts for each bit length */ | 	/* Generate counts for each bit length */ | ||||||
| 	memset ((void *)(c), 0, sizeof(c)); | 	memset((void *) (c), 0, sizeof(c)); | ||||||
| 	p = b; | 	p = b; | ||||||
| 	i = n; | 	i = n; | ||||||
| 	do { | 	do { | ||||||
| @@ -378,7 +381,7 @@ static int huft_build(unsigned int *b, const unsigned int n, const unsigned int | |||||||
|  * tl, td: literal/length and distance decoder tables |  * tl, td: literal/length and distance decoder tables | ||||||
|  * bl, bd: number of bits decoded by tl[] and td[] |  * bl, bd: number of bits decoded by tl[] and td[] | ||||||
|  */ |  */ | ||||||
| static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | static int inflate_codes(huft_t * tl, huft_t * td, int bl, int bd) | ||||||
| { | { | ||||||
| 	register unsigned long e;	/* table entry flag/number of extra bits */ | 	register unsigned long e;	/* table entry flag/number of extra bits */ | ||||||
| 	unsigned long n, d;	/* length and index for copy */ | 	unsigned long n, d;	/* length and index for copy */ | ||||||
| @@ -398,7 +401,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 	md = mask_bits[bd]; | 	md = mask_bits[bd]; | ||||||
| 	for (;;) {			/* do until end of block */ | 	for (;;) {			/* do until end of block */ | ||||||
| 		while (k < (unsigned) bl) { | 		while (k < (unsigned) bl) { | ||||||
| 			b |= ((unsigned long)fgetc(in_file)) << k; | 			b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 			k += 8; | 			k += 8; | ||||||
| 		} | 		} | ||||||
| 		if ((e = (t = tl + ((unsigned) b & ml))->e) > 16) | 		if ((e = (t = tl + ((unsigned) b & ml))->e) > 16) | ||||||
| @@ -410,17 +413,17 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 				k -= t->b; | 				k -= t->b; | ||||||
| 				e -= 16; | 				e -= 16; | ||||||
| 				while (k < e) { | 				while (k < e) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 					b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 					k += 8; | 					k += 8; | ||||||
| 				} | 				} | ||||||
| 		} while ((e = (t = t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | 			} while ((e = | ||||||
|  | 					  (t = t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | ||||||
| 		b >>= t->b; | 		b >>= t->b; | ||||||
| 		k -= t->b; | 		k -= t->b; | ||||||
| 		if (e == 16) {	/* then it's a literal */ | 		if (e == 16) {	/* then it's a literal */ | ||||||
| 			window[w++] = (unsigned char) t->v.n; | 			window[w++] = (unsigned char) t->v.n; | ||||||
| 			if (w == WSIZE) { | 			if (w == WSIZE) { | ||||||
| 				outcnt=(w), | 				outcnt = (w), flush_window(); | ||||||
| 				flush_window(); |  | ||||||
| 				w = 0; | 				w = 0; | ||||||
| 			} | 			} | ||||||
| 		} else {		/* it's an EOB or a length */ | 		} else {		/* it's an EOB or a length */ | ||||||
| @@ -432,7 +435,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
|  |  | ||||||
| 			/* get length of block to copy */ | 			/* get length of block to copy */ | ||||||
| 			while (k < e) { | 			while (k < e) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 				b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 				k += 8; | 				k += 8; | ||||||
| 			} | 			} | ||||||
| 			n = t->v.n + ((unsigned) b & mask_bits[e]); | 			n = t->v.n + ((unsigned) b & mask_bits[e]); | ||||||
| @@ -441,7 +444,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
|  |  | ||||||
| 			/* decode distance of block to copy */ | 			/* decode distance of block to copy */ | ||||||
| 			while (k < (unsigned) bd) { | 			while (k < (unsigned) bd) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 				b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 				k += 8; | 				k += 8; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| @@ -453,14 +456,16 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 					k -= t->b; | 					k -= t->b; | ||||||
| 					e -= 16; | 					e -= 16; | ||||||
| 					while (k < e) { | 					while (k < e) { | ||||||
| 						b |= ((unsigned long)fgetc(in_file)) << k; | 						b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 						k += 8; | 						k += 8; | ||||||
| 					} | 					} | ||||||
| 				} while ((e = (t = t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | 				} while ((e = | ||||||
|  | 						  (t = | ||||||
|  | 						   t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | ||||||
| 			b >>= t->b; | 			b >>= t->b; | ||||||
| 			k -= t->b; | 			k -= t->b; | ||||||
| 			while (k < e) { | 			while (k < e) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 				b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 				k += 8; | 				k += 8; | ||||||
| 			} | 			} | ||||||
| 			d = w - t->v.n - ((unsigned) b & mask_bits[e]); | 			d = w - t->v.n - ((unsigned) b & mask_bits[e]); | ||||||
| @@ -469,7 +474,9 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
|  |  | ||||||
| 			/* do the copy */ | 			/* do the copy */ | ||||||
| 			do { | 			do { | ||||||
| 				n -= (e = (e = WSIZE - ((d &= WSIZE - 1) > w ? d : w)) > n ? n : e); | 				n -= (e = | ||||||
|  | 					  (e = | ||||||
|  | 					   WSIZE - ((d &= WSIZE - 1) > w ? d : w)) > n ? n : e); | ||||||
| #if !defined(NOMEMCPY) && !defined(DEBUG) | #if !defined(NOMEMCPY) && !defined(DEBUG) | ||||||
| 				if (w - d >= e) {	/* (this test assumes unsigned comparison) */ | 				if (w - d >= e) {	/* (this test assumes unsigned comparison) */ | ||||||
| 					memcpy(window + w, window + d, e); | 					memcpy(window + w, window + d, e); | ||||||
| @@ -481,8 +488,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 						window[w++] = window[d++]; | 						window[w++] = window[d++]; | ||||||
| 					} while (--e); | 					} while (--e); | ||||||
| 				if (w == WSIZE) { | 				if (w == WSIZE) { | ||||||
| 					outcnt=(w), | 					outcnt = (w), flush_window(); | ||||||
| 					flush_window(); |  | ||||||
| 					w = 0; | 					w = 0; | ||||||
| 				} | 				} | ||||||
| 			} while (n); | 			} while (n); | ||||||
| @@ -502,6 +508,7 @@ static const unsigned short cplens[] = {     /* Copy lengths for literal codes 2 | |||||||
| 	3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, | 	3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, | ||||||
| 	35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 | 	35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* note: see note #13 above about the 258 in this list. */ | /* note: see note #13 above about the 258 in this list. */ | ||||||
| static const extra_bits_t cplext[] = {	/* Extra bits for literal codes 257..285 */ | static const extra_bits_t cplext[] = {	/* Extra bits for literal codes 257..285 */ | ||||||
| 	0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, | 	0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, | ||||||
| @@ -517,6 +524,7 @@ static const extra_bits_t cpdext[] = {  /* Extra bits for distance codes */ | |||||||
| 	7, 7, 8, 8, 9, 9, 10, 10, 11, 11, | 	7, 7, 8, 8, 9, 9, 10, 10, 11, 11, | ||||||
| 	12, 12, 13, 13 | 	12, 12, 13, 13 | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* Tables for deflate from PKZIP's appnote.txt. */ | /* Tables for deflate from PKZIP's appnote.txt. */ | ||||||
| static const extra_bits_t border[] = {	/* Order of the bit length code lengths */ | static const extra_bits_t border[] = {	/* Order of the bit length code lengths */ | ||||||
| 	16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 | 	16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 | ||||||
| @@ -540,7 +548,7 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 	/* read in last block bit */ | 	/* read in last block bit */ | ||||||
| 	while (k < 1) { | 	while (k < 1) { | ||||||
| 		b |= ((unsigned long)fgetc(in_file)) << k; | 		b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 		k += 8; | 		k += 8; | ||||||
| 	} | 	} | ||||||
| 	*e = (int) b & 1; | 	*e = (int) b & 1; | ||||||
| @@ -549,7 +557,7 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 	/* read in block type */ | 	/* read in block type */ | ||||||
| 	while (k < 2) { | 	while (k < 2) { | ||||||
| 		b |= ((unsigned long)fgetc(in_file)) << k; | 		b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 		k += 8; | 		k += 8; | ||||||
| 	} | 	} | ||||||
| 	t = (unsigned) b & 3; | 	t = (unsigned) b & 3; | ||||||
| @@ -581,14 +589,14 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 		/* get the length and its complement */ | 		/* get the length and its complement */ | ||||||
| 		while (k_stored < 16) { | 		while (k_stored < 16) { | ||||||
| 				b_stored |= ((unsigned long)fgetc(in_file)) << k_stored; | 			b_stored |= ((unsigned long) fgetc(in_file)) << k_stored; | ||||||
| 			k_stored += 8; | 			k_stored += 8; | ||||||
| 		} | 		} | ||||||
| 		n = ((unsigned) b_stored & 0xffff); | 		n = ((unsigned) b_stored & 0xffff); | ||||||
| 		b_stored >>= 16; | 		b_stored >>= 16; | ||||||
| 		k_stored -= 16; | 		k_stored -= 16; | ||||||
| 		while (k_stored < 16) { | 		while (k_stored < 16) { | ||||||
| 				b_stored |= ((unsigned long)fgetc(in_file)) << k_stored; | 			b_stored |= ((unsigned long) fgetc(in_file)) << k_stored; | ||||||
| 			k_stored += 8; | 			k_stored += 8; | ||||||
| 		} | 		} | ||||||
| 		if (n != (unsigned) ((~b_stored) & 0xffff)) { | 		if (n != (unsigned) ((~b_stored) & 0xffff)) { | ||||||
| @@ -600,13 +608,12 @@ static int inflate_block(int *e) | |||||||
| 		/* read and output the compressed data */ | 		/* read and output the compressed data */ | ||||||
| 		while (n--) { | 		while (n--) { | ||||||
| 			while (k_stored < 8) { | 			while (k_stored < 8) { | ||||||
| 					b_stored |= ((unsigned long)fgetc(in_file)) << k_stored; | 				b_stored |= ((unsigned long) fgetc(in_file)) << k_stored; | ||||||
| 				k_stored += 8; | 				k_stored += 8; | ||||||
| 			} | 			} | ||||||
| 			window[w++] = (unsigned char) b_stored; | 			window[w++] = (unsigned char) b_stored; | ||||||
| 				if (w == (unsigned long)WSIZE) { | 			if (w == (unsigned long) WSIZE) { | ||||||
| 					outcnt=(w), | 				outcnt = (w), flush_window(); | ||||||
| 					flush_window(); |  | ||||||
| 				w = 0; | 				w = 0; | ||||||
| 			} | 			} | ||||||
| 			b_stored >>= 8; | 			b_stored >>= 8; | ||||||
| @@ -697,21 +704,21 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 		/* read in table lengths */ | 		/* read in table lengths */ | ||||||
| 		while (k_dynamic < 5) { | 		while (k_dynamic < 5) { | ||||||
| 				b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 			b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 			k_dynamic += 8; | 			k_dynamic += 8; | ||||||
| 		} | 		} | ||||||
| 		nl = 257 + ((unsigned) b_dynamic & 0x1f);	/* number of literal/length codes */ | 		nl = 257 + ((unsigned) b_dynamic & 0x1f);	/* number of literal/length codes */ | ||||||
| 		b_dynamic >>= 5; | 		b_dynamic >>= 5; | ||||||
| 		k_dynamic -= 5; | 		k_dynamic -= 5; | ||||||
| 		while (k_dynamic < 5) { | 		while (k_dynamic < 5) { | ||||||
| 				b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 			b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 			k_dynamic += 8; | 			k_dynamic += 8; | ||||||
| 		} | 		} | ||||||
| 		nd = 1 + ((unsigned) b_dynamic & 0x1f);	/* number of distance codes */ | 		nd = 1 + ((unsigned) b_dynamic & 0x1f);	/* number of distance codes */ | ||||||
| 		b_dynamic >>= 5; | 		b_dynamic >>= 5; | ||||||
| 		k_dynamic -= 5; | 		k_dynamic -= 5; | ||||||
| 		while (k_dynamic < 4) { | 		while (k_dynamic < 4) { | ||||||
| 				b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 			b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 			k_dynamic += 8; | 			k_dynamic += 8; | ||||||
| 		} | 		} | ||||||
| 		nb = 4 + ((unsigned) b_dynamic & 0xf);	/* number of bit length codes */ | 		nb = 4 + ((unsigned) b_dynamic & 0xf);	/* number of bit length codes */ | ||||||
| @@ -724,7 +731,7 @@ static int inflate_block(int *e) | |||||||
| 		/* read in bit-length-code lengths */ | 		/* read in bit-length-code lengths */ | ||||||
| 		for (j = 0; j < nb; j++) { | 		for (j = 0; j < nb; j++) { | ||||||
| 			while (k_dynamic < 3) { | 			while (k_dynamic < 3) { | ||||||
| 					b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 				b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 				k_dynamic += 8; | 				k_dynamic += 8; | ||||||
| 			} | 			} | ||||||
| 			ll[border[j]] = (unsigned) b_dynamic & 7; | 			ll[border[j]] = (unsigned) b_dynamic & 7; | ||||||
| @@ -750,7 +757,7 @@ static int inflate_block(int *e) | |||||||
| 		i = l = 0; | 		i = l = 0; | ||||||
| 		while ((unsigned) i < n) { | 		while ((unsigned) i < n) { | ||||||
| 			while (k_dynamic < (unsigned) bl) { | 			while (k_dynamic < (unsigned) bl) { | ||||||
| 					b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 				b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 				k_dynamic += 8; | 				k_dynamic += 8; | ||||||
| 			} | 			} | ||||||
| 			j = (td = tl + ((unsigned) b_dynamic & m))->b; | 			j = (td = tl + ((unsigned) b_dynamic & m))->b; | ||||||
| @@ -759,10 +766,10 @@ static int inflate_block(int *e) | |||||||
| 			j = td->v.n; | 			j = td->v.n; | ||||||
| 			if (j < 16) {	/* length of code in bits (0..15) */ | 			if (j < 16) {	/* length of code in bits (0..15) */ | ||||||
| 				ll[i++] = l = j;	/* save last length in l */ | 				ll[i++] = l = j;	/* save last length in l */ | ||||||
| 				} | 			} else if (j == 16) {	/* repeat last length 3 to 6 times */ | ||||||
| 				else if (j == 16) {		/* repeat last length 3 to 6 times */ |  | ||||||
| 				while (k_dynamic < 2) { | 				while (k_dynamic < 2) { | ||||||
| 						b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 					b_dynamic |= | ||||||
|  | 						((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 					k_dynamic += 8; | 					k_dynamic += 8; | ||||||
| 				} | 				} | ||||||
| 				j = 3 + ((unsigned) b_dynamic & 3); | 				j = 3 + ((unsigned) b_dynamic & 3); | ||||||
| @@ -776,7 +783,8 @@ static int inflate_block(int *e) | |||||||
| 				} | 				} | ||||||
| 			} else if (j == 17) {	/* 3 to 10 zero length codes */ | 			} else if (j == 17) {	/* 3 to 10 zero length codes */ | ||||||
| 				while (k_dynamic < 3) { | 				while (k_dynamic < 3) { | ||||||
| 						b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 					b_dynamic |= | ||||||
|  | 						((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 					k_dynamic += 8; | 					k_dynamic += 8; | ||||||
| 				} | 				} | ||||||
| 				j = 3 + ((unsigned) b_dynamic & 7); | 				j = 3 + ((unsigned) b_dynamic & 7); | ||||||
| @@ -791,7 +799,8 @@ static int inflate_block(int *e) | |||||||
| 				l = 0; | 				l = 0; | ||||||
| 			} else {	/* j == 18: 11 to 138 zero length codes */ | 			} else {	/* j == 18: 11 to 138 zero length codes */ | ||||||
| 				while (k_dynamic < 7) { | 				while (k_dynamic < 7) { | ||||||
| 						b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 					b_dynamic |= | ||||||
|  | 						((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 					k_dynamic += 8; | 					k_dynamic += 8; | ||||||
| 				} | 				} | ||||||
| 				j = 11 + ((unsigned) b_dynamic & 0x7f); | 				j = 11 + ((unsigned) b_dynamic & 0x7f); | ||||||
| @@ -853,7 +862,7 @@ static int inflate_block(int *e) | |||||||
|  * |  * | ||||||
|  * GLOBAL VARIABLES: outcnt, bk, bb, hufts, inptr |  * GLOBAL VARIABLES: outcnt, bk, bb, hufts, inptr | ||||||
|  */ |  */ | ||||||
| extern int inflate(FILE *in, FILE *out) | extern int inflate(FILE * in, FILE * out) | ||||||
| { | { | ||||||
| 	int e;				/* last block flag */ | 	int e;				/* last block flag */ | ||||||
| 	int r;				/* result code */ | 	int r;				/* result code */ | ||||||
| @@ -868,7 +877,7 @@ extern int inflate(FILE *in, FILE *out) | |||||||
| 	out_file = out; | 	out_file = out; | ||||||
|  |  | ||||||
| 	/* Allocate all global buffers (for DYN_ALLOC option) */ | 	/* Allocate all global buffers (for DYN_ALLOC option) */ | ||||||
| 	window = xmalloc((size_t)(((2L*WSIZE)+1L)*sizeof(unsigned char))); | 	window = xmalloc((size_t) (((2L * WSIZE) + 1L) * sizeof(unsigned char))); | ||||||
| 	bytes_out = 0L; | 	bytes_out = 0L; | ||||||
|  |  | ||||||
| 	/* Create the crc table */ | 	/* Create the crc table */ | ||||||
| @@ -910,40 +919,35 @@ extern int inflate(FILE *in, FILE *out) | |||||||
|  *   The magic header has already been checked. The output buffer is cleared. |  *   The magic header has already been checked. The output buffer is cleared. | ||||||
|  * in, out: input and output file descriptors |  * in, out: input and output file descriptors | ||||||
|  */ |  */ | ||||||
| extern int unzip(FILE *l_in_file, FILE *l_out_file) | extern int unzip(FILE * l_in_file, FILE * l_out_file) | ||||||
| { | { | ||||||
| 	unsigned char buf[8];	/* extended local header */ | 	unsigned char buf[8];	/* extended local header */ | ||||||
| 	unsigned char flags;	/* compression flags */ | 	unsigned char flags;	/* compression flags */ | ||||||
| 	typedef void (*sig_type) (int); | 	typedef void (*sig_type) (int); | ||||||
| 	unsigned short i; | 	unsigned short i; | ||||||
| 	unsigned char magic [2]; | 	unsigned char magic[2]; | ||||||
|  |  | ||||||
| 	if (signal(SIGINT, SIG_IGN) != SIG_IGN) { | 	if (signal(SIGINT, SIG_IGN) != SIG_IGN) { | ||||||
| 		(void) signal(SIGINT, (sig_type) abort_gzip); | 		(void) signal(SIGINT, (sig_type) abort_gzip); | ||||||
| 	} | 	} | ||||||
| #ifdef SIGTERM |  | ||||||
| //	if (signal(SIGTERM, SIG_IGN) != SIG_IGN) { |  | ||||||
| //		(void) signal(SIGTERM, (sig_type) abort_gzip); |  | ||||||
| //	} |  | ||||||
| #endif |  | ||||||
| #ifdef SIGHUP | #ifdef SIGHUP | ||||||
| 	if (signal(SIGHUP, SIG_IGN) != SIG_IGN) { | 	if (signal(SIGHUP, SIG_IGN) != SIG_IGN) { | ||||||
| 		(void) signal(SIGHUP, (sig_type) abort_gzip); | 		(void) signal(SIGHUP, (sig_type) abort_gzip); | ||||||
| 	} | 	} | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 	magic [0] = fgetc(l_in_file); | 	magic[0] = fgetc(l_in_file); | ||||||
| 	magic [1] = fgetc(l_in_file); | 	magic[1] = fgetc(l_in_file); | ||||||
|  |  | ||||||
| #ifdef CONFIG_FEATURE_UNCOMPRESS | #ifdef CONFIG_FEATURE_UNCOMPRESS | ||||||
| 	/* Magic header for compress files, 1F 9d = \037\235 */ | 	/* Magic header for compress files, 1F 9d = \037\235 */ | ||||||
| 	if (( magic [0] == 0x1F ) && ( magic [1] == 0x9d)) { | 	if ((magic[0] == 0x1F) && (magic[1] == 0x9d)) { | ||||||
| 		return uncompress ( l_in_file, l_out_file ); | 		return uncompress(l_in_file, l_out_file); | ||||||
| 	} | 	} | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 	/* Magic header for gzip files, 1F 8B = \037\213 */ | 	/* Magic header for gzip files, 1F 8B = \037\213 */ | ||||||
| 	if (( magic [0] != 0x1F ) || ( magic [1] != 0x8b)) { | 	if ((magic[0] != 0x1F) || (magic[1] != 0x8b)) { | ||||||
| 		error_msg("Invalid gzip magic"); | 		error_msg("Invalid gzip magic"); | ||||||
| 		return EXIT_FAILURE; | 		return EXIT_FAILURE; | ||||||
| 	} | 	} | ||||||
| @@ -951,7 +955,7 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
| 	/* Check the compression method */ | 	/* Check the compression method */ | ||||||
| 	if (fgetc(l_in_file) != 8) { | 	if (fgetc(l_in_file) != 8) { | ||||||
| 		error_msg("Unknown compression method"); | 		error_msg("Unknown compression method"); | ||||||
| 		return(-1); | 		return (-1); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	flags = (unsigned char) fgetc(l_in_file); | 	flags = (unsigned char) fgetc(l_in_file); | ||||||
| @@ -963,7 +967,8 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
|  |  | ||||||
| 	if (flags & 0x04) { | 	if (flags & 0x04) { | ||||||
| 		/* bit 2 set: extra field present */ | 		/* bit 2 set: extra field present */ | ||||||
| 		const unsigned short extra = fgetc(l_in_file) + (fgetc(l_in_file) << 8); | 		const unsigned short extra = | ||||||
|  | 			fgetc(l_in_file) + (fgetc(l_in_file) << 8); | ||||||
|  |  | ||||||
| 		for (i = 0; i < extra; i++) { | 		for (i = 0; i < extra; i++) { | ||||||
| 			fgetc(l_in_file); | 			fgetc(l_in_file); | ||||||
| @@ -994,11 +999,14 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
| 	fread(buf, 1, 8, l_in_file); | 	fread(buf, 1, 8, l_in_file); | ||||||
|  |  | ||||||
| 	/* Validate decompression - crc */ | 	/* Validate decompression - crc */ | ||||||
| 	if ((unsigned int)((buf[0] | (buf[1] << 8)) |((buf[2] | (buf[3] << 8)) << 16)) != (crc ^ 0xffffffffL)) { | 	if ((unsigned int) ((buf[0] | (buf[1] << 8)) | | ||||||
|  | 						((buf[2] | (buf[3] << 8)) << 16)) != | ||||||
|  | 		(crc ^ 0xffffffffL)) { | ||||||
| 		error_msg("invalid compressed data--crc error"); | 		error_msg("invalid compressed data--crc error"); | ||||||
| 	} | 	} | ||||||
| 	/* Validate decompression - size */ | 	/* Validate decompression - size */ | ||||||
| 	if (((buf[4] | (buf[5] << 8)) |((buf[6] | (buf[7] << 8)) << 16)) != (unsigned long) bytes_out) { | 	if (((buf[4] | (buf[5] << 8)) | ((buf[6] | (buf[7] << 8)) << 16)) != | ||||||
|  | 		(unsigned long) bytes_out) { | ||||||
| 		error_msg("invalid compressed data--length error"); | 		error_msg("invalid compressed data--length error"); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -1011,7 +1019,8 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
| extern void gz_close(int gunzip_pid) | extern void gz_close(int gunzip_pid) | ||||||
| { | { | ||||||
| 	if (kill(gunzip_pid, SIGTERM) == -1) { | 	if (kill(gunzip_pid, SIGTERM) == -1) { | ||||||
| 		error_msg_and_die("***  Couldnt kill old gunzip process *** aborting"); | 		error_msg_and_die | ||||||
|  | 			("***  Couldnt kill old gunzip process *** aborting"); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (waitpid(gunzip_pid, NULL, 0) == -1) { | 	if (waitpid(gunzip_pid, NULL, 0) == -1) { | ||||||
|   | |||||||
| @@ -69,7 +69,7 @@ static char *license_msg[] = { | |||||||
| #include "libbb.h" | #include "libbb.h" | ||||||
|  |  | ||||||
| #ifdef CONFIG_FEATURE_UNCOMPRESS | #ifdef CONFIG_FEATURE_UNCOMPRESS | ||||||
| int uncompress ( FILE *in, FILE *out ); | int uncompress(FILE * in, FILE * out); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| static FILE *in_file, *out_file; | static FILE *in_file, *out_file; | ||||||
| @@ -115,7 +115,7 @@ static const unsigned short mask_bits[] = { | |||||||
| 	0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff | 	0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff | ||||||
| }; | }; | ||||||
|  |  | ||||||
| //static int error_number = 0; | /* static int error_number = 0; */ | ||||||
| /* ======================================================================== | /* ======================================================================== | ||||||
|  * Signal and error handler. |  * Signal and error handler. | ||||||
|  */ |  */ | ||||||
| @@ -145,9 +145,11 @@ static void make_crc_table(void) | |||||||
| 		   * zero was stolen from Haruhiko Okumura's ar002 | 		   * zero was stolen from Haruhiko Okumura's ar002 | ||||||
| 		 */ | 		 */ | ||||||
| 		for (k = 8; k; k--) { | 		for (k = 8; k; k--) { | ||||||
| 			table_entry = table_entry & 1 ? (table_entry >> 1) ^ poly : table_entry >> 1; | 			table_entry = | ||||||
|  | 				table_entry & 1 ? (table_entry >> 1) ^ poly : table_entry >> | ||||||
|  | 				1; | ||||||
| 		} | 		} | ||||||
| 		crc_table[i]=table_entry; | 		crc_table[i] = table_entry; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -179,7 +181,7 @@ static void flush_window(void) | |||||||
|  * each table.  |  * each table.  | ||||||
|  * t: table to free |  * t: table to free | ||||||
|  */ |  */ | ||||||
| static int huft_free(huft_t *t) | static int huft_free(huft_t * t) | ||||||
| { | { | ||||||
| 	huft_t *p, *q; | 	huft_t *p, *q; | ||||||
|  |  | ||||||
| @@ -209,8 +211,9 @@ typedef unsigned char extra_bits_t; | |||||||
|  * t:	result: starting table |  * t:	result: starting table | ||||||
|  * m:	maximum lookup bits, returns actual |  * m:	maximum lookup bits, returns actual | ||||||
|  */ |  */ | ||||||
| static int huft_build(unsigned int *b, const unsigned int n, const unsigned int s,  | static int huft_build(unsigned int *b, const unsigned int n, | ||||||
| 	const unsigned short *d, const extra_bits_t *e, huft_t **t, int *m) | 					  const unsigned int s, const unsigned short *d, | ||||||
|  | 					  const extra_bits_t * e, huft_t ** t, int *m) | ||||||
| { | { | ||||||
| 	unsigned a;			/* counter for codes of length k */ | 	unsigned a;			/* counter for codes of length k */ | ||||||
| 	unsigned c[BMAX + 1];	/* bit length count table */ | 	unsigned c[BMAX + 1];	/* bit length count table */ | ||||||
| @@ -233,7 +236,7 @@ static int huft_build(unsigned int *b, const unsigned int n, const unsigned int | |||||||
| 	unsigned z;			/* number of entries in current table */ | 	unsigned z;			/* number of entries in current table */ | ||||||
|  |  | ||||||
| 	/* Generate counts for each bit length */ | 	/* Generate counts for each bit length */ | ||||||
| 	memset ((void *)(c), 0, sizeof(c)); | 	memset((void *) (c), 0, sizeof(c)); | ||||||
| 	p = b; | 	p = b; | ||||||
| 	i = n; | 	i = n; | ||||||
| 	do { | 	do { | ||||||
| @@ -378,7 +381,7 @@ static int huft_build(unsigned int *b, const unsigned int n, const unsigned int | |||||||
|  * tl, td: literal/length and distance decoder tables |  * tl, td: literal/length and distance decoder tables | ||||||
|  * bl, bd: number of bits decoded by tl[] and td[] |  * bl, bd: number of bits decoded by tl[] and td[] | ||||||
|  */ |  */ | ||||||
| static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | static int inflate_codes(huft_t * tl, huft_t * td, int bl, int bd) | ||||||
| { | { | ||||||
| 	register unsigned long e;	/* table entry flag/number of extra bits */ | 	register unsigned long e;	/* table entry flag/number of extra bits */ | ||||||
| 	unsigned long n, d;	/* length and index for copy */ | 	unsigned long n, d;	/* length and index for copy */ | ||||||
| @@ -398,7 +401,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 	md = mask_bits[bd]; | 	md = mask_bits[bd]; | ||||||
| 	for (;;) {			/* do until end of block */ | 	for (;;) {			/* do until end of block */ | ||||||
| 		while (k < (unsigned) bl) { | 		while (k < (unsigned) bl) { | ||||||
| 			b |= ((unsigned long)fgetc(in_file)) << k; | 			b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 			k += 8; | 			k += 8; | ||||||
| 		} | 		} | ||||||
| 		if ((e = (t = tl + ((unsigned) b & ml))->e) > 16) | 		if ((e = (t = tl + ((unsigned) b & ml))->e) > 16) | ||||||
| @@ -410,17 +413,17 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 				k -= t->b; | 				k -= t->b; | ||||||
| 				e -= 16; | 				e -= 16; | ||||||
| 				while (k < e) { | 				while (k < e) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 					b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 					k += 8; | 					k += 8; | ||||||
| 				} | 				} | ||||||
| 		} while ((e = (t = t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | 			} while ((e = | ||||||
|  | 					  (t = t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | ||||||
| 		b >>= t->b; | 		b >>= t->b; | ||||||
| 		k -= t->b; | 		k -= t->b; | ||||||
| 		if (e == 16) {	/* then it's a literal */ | 		if (e == 16) {	/* then it's a literal */ | ||||||
| 			window[w++] = (unsigned char) t->v.n; | 			window[w++] = (unsigned char) t->v.n; | ||||||
| 			if (w == WSIZE) { | 			if (w == WSIZE) { | ||||||
| 				outcnt=(w), | 				outcnt = (w), flush_window(); | ||||||
| 				flush_window(); |  | ||||||
| 				w = 0; | 				w = 0; | ||||||
| 			} | 			} | ||||||
| 		} else {		/* it's an EOB or a length */ | 		} else {		/* it's an EOB or a length */ | ||||||
| @@ -432,7 +435,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
|  |  | ||||||
| 			/* get length of block to copy */ | 			/* get length of block to copy */ | ||||||
| 			while (k < e) { | 			while (k < e) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 				b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 				k += 8; | 				k += 8; | ||||||
| 			} | 			} | ||||||
| 			n = t->v.n + ((unsigned) b & mask_bits[e]); | 			n = t->v.n + ((unsigned) b & mask_bits[e]); | ||||||
| @@ -441,7 +444,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
|  |  | ||||||
| 			/* decode distance of block to copy */ | 			/* decode distance of block to copy */ | ||||||
| 			while (k < (unsigned) bd) { | 			while (k < (unsigned) bd) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 				b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 				k += 8; | 				k += 8; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| @@ -453,14 +456,16 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 					k -= t->b; | 					k -= t->b; | ||||||
| 					e -= 16; | 					e -= 16; | ||||||
| 					while (k < e) { | 					while (k < e) { | ||||||
| 						b |= ((unsigned long)fgetc(in_file)) << k; | 						b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 						k += 8; | 						k += 8; | ||||||
| 					} | 					} | ||||||
| 				} while ((e = (t = t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | 				} while ((e = | ||||||
|  | 						  (t = | ||||||
|  | 						   t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | ||||||
| 			b >>= t->b; | 			b >>= t->b; | ||||||
| 			k -= t->b; | 			k -= t->b; | ||||||
| 			while (k < e) { | 			while (k < e) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 				b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 				k += 8; | 				k += 8; | ||||||
| 			} | 			} | ||||||
| 			d = w - t->v.n - ((unsigned) b & mask_bits[e]); | 			d = w - t->v.n - ((unsigned) b & mask_bits[e]); | ||||||
| @@ -469,7 +474,9 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
|  |  | ||||||
| 			/* do the copy */ | 			/* do the copy */ | ||||||
| 			do { | 			do { | ||||||
| 				n -= (e = (e = WSIZE - ((d &= WSIZE - 1) > w ? d : w)) > n ? n : e); | 				n -= (e = | ||||||
|  | 					  (e = | ||||||
|  | 					   WSIZE - ((d &= WSIZE - 1) > w ? d : w)) > n ? n : e); | ||||||
| #if !defined(NOMEMCPY) && !defined(DEBUG) | #if !defined(NOMEMCPY) && !defined(DEBUG) | ||||||
| 				if (w - d >= e) {	/* (this test assumes unsigned comparison) */ | 				if (w - d >= e) {	/* (this test assumes unsigned comparison) */ | ||||||
| 					memcpy(window + w, window + d, e); | 					memcpy(window + w, window + d, e); | ||||||
| @@ -481,8 +488,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 						window[w++] = window[d++]; | 						window[w++] = window[d++]; | ||||||
| 					} while (--e); | 					} while (--e); | ||||||
| 				if (w == WSIZE) { | 				if (w == WSIZE) { | ||||||
| 					outcnt=(w), | 					outcnt = (w), flush_window(); | ||||||
| 					flush_window(); |  | ||||||
| 					w = 0; | 					w = 0; | ||||||
| 				} | 				} | ||||||
| 			} while (n); | 			} while (n); | ||||||
| @@ -502,6 +508,7 @@ static const unsigned short cplens[] = {     /* Copy lengths for literal codes 2 | |||||||
| 	3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, | 	3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, | ||||||
| 	35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 | 	35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* note: see note #13 above about the 258 in this list. */ | /* note: see note #13 above about the 258 in this list. */ | ||||||
| static const extra_bits_t cplext[] = {	/* Extra bits for literal codes 257..285 */ | static const extra_bits_t cplext[] = {	/* Extra bits for literal codes 257..285 */ | ||||||
| 	0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, | 	0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, | ||||||
| @@ -517,6 +524,7 @@ static const extra_bits_t cpdext[] = {  /* Extra bits for distance codes */ | |||||||
| 	7, 7, 8, 8, 9, 9, 10, 10, 11, 11, | 	7, 7, 8, 8, 9, 9, 10, 10, 11, 11, | ||||||
| 	12, 12, 13, 13 | 	12, 12, 13, 13 | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* Tables for deflate from PKZIP's appnote.txt. */ | /* Tables for deflate from PKZIP's appnote.txt. */ | ||||||
| static const extra_bits_t border[] = {	/* Order of the bit length code lengths */ | static const extra_bits_t border[] = {	/* Order of the bit length code lengths */ | ||||||
| 	16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 | 	16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 | ||||||
| @@ -540,7 +548,7 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 	/* read in last block bit */ | 	/* read in last block bit */ | ||||||
| 	while (k < 1) { | 	while (k < 1) { | ||||||
| 		b |= ((unsigned long)fgetc(in_file)) << k; | 		b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 		k += 8; | 		k += 8; | ||||||
| 	} | 	} | ||||||
| 	*e = (int) b & 1; | 	*e = (int) b & 1; | ||||||
| @@ -549,7 +557,7 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 	/* read in block type */ | 	/* read in block type */ | ||||||
| 	while (k < 2) { | 	while (k < 2) { | ||||||
| 		b |= ((unsigned long)fgetc(in_file)) << k; | 		b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 		k += 8; | 		k += 8; | ||||||
| 	} | 	} | ||||||
| 	t = (unsigned) b & 3; | 	t = (unsigned) b & 3; | ||||||
| @@ -581,14 +589,14 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 		/* get the length and its complement */ | 		/* get the length and its complement */ | ||||||
| 		while (k_stored < 16) { | 		while (k_stored < 16) { | ||||||
| 				b_stored |= ((unsigned long)fgetc(in_file)) << k_stored; | 			b_stored |= ((unsigned long) fgetc(in_file)) << k_stored; | ||||||
| 			k_stored += 8; | 			k_stored += 8; | ||||||
| 		} | 		} | ||||||
| 		n = ((unsigned) b_stored & 0xffff); | 		n = ((unsigned) b_stored & 0xffff); | ||||||
| 		b_stored >>= 16; | 		b_stored >>= 16; | ||||||
| 		k_stored -= 16; | 		k_stored -= 16; | ||||||
| 		while (k_stored < 16) { | 		while (k_stored < 16) { | ||||||
| 				b_stored |= ((unsigned long)fgetc(in_file)) << k_stored; | 			b_stored |= ((unsigned long) fgetc(in_file)) << k_stored; | ||||||
| 			k_stored += 8; | 			k_stored += 8; | ||||||
| 		} | 		} | ||||||
| 		if (n != (unsigned) ((~b_stored) & 0xffff)) { | 		if (n != (unsigned) ((~b_stored) & 0xffff)) { | ||||||
| @@ -600,13 +608,12 @@ static int inflate_block(int *e) | |||||||
| 		/* read and output the compressed data */ | 		/* read and output the compressed data */ | ||||||
| 		while (n--) { | 		while (n--) { | ||||||
| 			while (k_stored < 8) { | 			while (k_stored < 8) { | ||||||
| 					b_stored |= ((unsigned long)fgetc(in_file)) << k_stored; | 				b_stored |= ((unsigned long) fgetc(in_file)) << k_stored; | ||||||
| 				k_stored += 8; | 				k_stored += 8; | ||||||
| 			} | 			} | ||||||
| 			window[w++] = (unsigned char) b_stored; | 			window[w++] = (unsigned char) b_stored; | ||||||
| 				if (w == (unsigned long)WSIZE) { | 			if (w == (unsigned long) WSIZE) { | ||||||
| 					outcnt=(w), | 				outcnt = (w), flush_window(); | ||||||
| 					flush_window(); |  | ||||||
| 				w = 0; | 				w = 0; | ||||||
| 			} | 			} | ||||||
| 			b_stored >>= 8; | 			b_stored >>= 8; | ||||||
| @@ -697,21 +704,21 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 		/* read in table lengths */ | 		/* read in table lengths */ | ||||||
| 		while (k_dynamic < 5) { | 		while (k_dynamic < 5) { | ||||||
| 				b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 			b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 			k_dynamic += 8; | 			k_dynamic += 8; | ||||||
| 		} | 		} | ||||||
| 		nl = 257 + ((unsigned) b_dynamic & 0x1f);	/* number of literal/length codes */ | 		nl = 257 + ((unsigned) b_dynamic & 0x1f);	/* number of literal/length codes */ | ||||||
| 		b_dynamic >>= 5; | 		b_dynamic >>= 5; | ||||||
| 		k_dynamic -= 5; | 		k_dynamic -= 5; | ||||||
| 		while (k_dynamic < 5) { | 		while (k_dynamic < 5) { | ||||||
| 				b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 			b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 			k_dynamic += 8; | 			k_dynamic += 8; | ||||||
| 		} | 		} | ||||||
| 		nd = 1 + ((unsigned) b_dynamic & 0x1f);	/* number of distance codes */ | 		nd = 1 + ((unsigned) b_dynamic & 0x1f);	/* number of distance codes */ | ||||||
| 		b_dynamic >>= 5; | 		b_dynamic >>= 5; | ||||||
| 		k_dynamic -= 5; | 		k_dynamic -= 5; | ||||||
| 		while (k_dynamic < 4) { | 		while (k_dynamic < 4) { | ||||||
| 				b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 			b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 			k_dynamic += 8; | 			k_dynamic += 8; | ||||||
| 		} | 		} | ||||||
| 		nb = 4 + ((unsigned) b_dynamic & 0xf);	/* number of bit length codes */ | 		nb = 4 + ((unsigned) b_dynamic & 0xf);	/* number of bit length codes */ | ||||||
| @@ -724,7 +731,7 @@ static int inflate_block(int *e) | |||||||
| 		/* read in bit-length-code lengths */ | 		/* read in bit-length-code lengths */ | ||||||
| 		for (j = 0; j < nb; j++) { | 		for (j = 0; j < nb; j++) { | ||||||
| 			while (k_dynamic < 3) { | 			while (k_dynamic < 3) { | ||||||
| 					b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 				b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 				k_dynamic += 8; | 				k_dynamic += 8; | ||||||
| 			} | 			} | ||||||
| 			ll[border[j]] = (unsigned) b_dynamic & 7; | 			ll[border[j]] = (unsigned) b_dynamic & 7; | ||||||
| @@ -750,7 +757,7 @@ static int inflate_block(int *e) | |||||||
| 		i = l = 0; | 		i = l = 0; | ||||||
| 		while ((unsigned) i < n) { | 		while ((unsigned) i < n) { | ||||||
| 			while (k_dynamic < (unsigned) bl) { | 			while (k_dynamic < (unsigned) bl) { | ||||||
| 					b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 				b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 				k_dynamic += 8; | 				k_dynamic += 8; | ||||||
| 			} | 			} | ||||||
| 			j = (td = tl + ((unsigned) b_dynamic & m))->b; | 			j = (td = tl + ((unsigned) b_dynamic & m))->b; | ||||||
| @@ -759,10 +766,10 @@ static int inflate_block(int *e) | |||||||
| 			j = td->v.n; | 			j = td->v.n; | ||||||
| 			if (j < 16) {	/* length of code in bits (0..15) */ | 			if (j < 16) {	/* length of code in bits (0..15) */ | ||||||
| 				ll[i++] = l = j;	/* save last length in l */ | 				ll[i++] = l = j;	/* save last length in l */ | ||||||
| 				} | 			} else if (j == 16) {	/* repeat last length 3 to 6 times */ | ||||||
| 				else if (j == 16) {		/* repeat last length 3 to 6 times */ |  | ||||||
| 				while (k_dynamic < 2) { | 				while (k_dynamic < 2) { | ||||||
| 						b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 					b_dynamic |= | ||||||
|  | 						((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 					k_dynamic += 8; | 					k_dynamic += 8; | ||||||
| 				} | 				} | ||||||
| 				j = 3 + ((unsigned) b_dynamic & 3); | 				j = 3 + ((unsigned) b_dynamic & 3); | ||||||
| @@ -776,7 +783,8 @@ static int inflate_block(int *e) | |||||||
| 				} | 				} | ||||||
| 			} else if (j == 17) {	/* 3 to 10 zero length codes */ | 			} else if (j == 17) {	/* 3 to 10 zero length codes */ | ||||||
| 				while (k_dynamic < 3) { | 				while (k_dynamic < 3) { | ||||||
| 						b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 					b_dynamic |= | ||||||
|  | 						((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 					k_dynamic += 8; | 					k_dynamic += 8; | ||||||
| 				} | 				} | ||||||
| 				j = 3 + ((unsigned) b_dynamic & 7); | 				j = 3 + ((unsigned) b_dynamic & 7); | ||||||
| @@ -791,7 +799,8 @@ static int inflate_block(int *e) | |||||||
| 				l = 0; | 				l = 0; | ||||||
| 			} else {	/* j == 18: 11 to 138 zero length codes */ | 			} else {	/* j == 18: 11 to 138 zero length codes */ | ||||||
| 				while (k_dynamic < 7) { | 				while (k_dynamic < 7) { | ||||||
| 						b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 					b_dynamic |= | ||||||
|  | 						((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 					k_dynamic += 8; | 					k_dynamic += 8; | ||||||
| 				} | 				} | ||||||
| 				j = 11 + ((unsigned) b_dynamic & 0x7f); | 				j = 11 + ((unsigned) b_dynamic & 0x7f); | ||||||
| @@ -853,7 +862,7 @@ static int inflate_block(int *e) | |||||||
|  * |  * | ||||||
|  * GLOBAL VARIABLES: outcnt, bk, bb, hufts, inptr |  * GLOBAL VARIABLES: outcnt, bk, bb, hufts, inptr | ||||||
|  */ |  */ | ||||||
| extern int inflate(FILE *in, FILE *out) | extern int inflate(FILE * in, FILE * out) | ||||||
| { | { | ||||||
| 	int e;				/* last block flag */ | 	int e;				/* last block flag */ | ||||||
| 	int r;				/* result code */ | 	int r;				/* result code */ | ||||||
| @@ -868,7 +877,7 @@ extern int inflate(FILE *in, FILE *out) | |||||||
| 	out_file = out; | 	out_file = out; | ||||||
|  |  | ||||||
| 	/* Allocate all global buffers (for DYN_ALLOC option) */ | 	/* Allocate all global buffers (for DYN_ALLOC option) */ | ||||||
| 	window = xmalloc((size_t)(((2L*WSIZE)+1L)*sizeof(unsigned char))); | 	window = xmalloc((size_t) (((2L * WSIZE) + 1L) * sizeof(unsigned char))); | ||||||
| 	bytes_out = 0L; | 	bytes_out = 0L; | ||||||
|  |  | ||||||
| 	/* Create the crc table */ | 	/* Create the crc table */ | ||||||
| @@ -910,40 +919,35 @@ extern int inflate(FILE *in, FILE *out) | |||||||
|  *   The magic header has already been checked. The output buffer is cleared. |  *   The magic header has already been checked. The output buffer is cleared. | ||||||
|  * in, out: input and output file descriptors |  * in, out: input and output file descriptors | ||||||
|  */ |  */ | ||||||
| extern int unzip(FILE *l_in_file, FILE *l_out_file) | extern int unzip(FILE * l_in_file, FILE * l_out_file) | ||||||
| { | { | ||||||
| 	unsigned char buf[8];	/* extended local header */ | 	unsigned char buf[8];	/* extended local header */ | ||||||
| 	unsigned char flags;	/* compression flags */ | 	unsigned char flags;	/* compression flags */ | ||||||
| 	typedef void (*sig_type) (int); | 	typedef void (*sig_type) (int); | ||||||
| 	unsigned short i; | 	unsigned short i; | ||||||
| 	unsigned char magic [2]; | 	unsigned char magic[2]; | ||||||
|  |  | ||||||
| 	if (signal(SIGINT, SIG_IGN) != SIG_IGN) { | 	if (signal(SIGINT, SIG_IGN) != SIG_IGN) { | ||||||
| 		(void) signal(SIGINT, (sig_type) abort_gzip); | 		(void) signal(SIGINT, (sig_type) abort_gzip); | ||||||
| 	} | 	} | ||||||
| #ifdef SIGTERM |  | ||||||
| //	if (signal(SIGTERM, SIG_IGN) != SIG_IGN) { |  | ||||||
| //		(void) signal(SIGTERM, (sig_type) abort_gzip); |  | ||||||
| //	} |  | ||||||
| #endif |  | ||||||
| #ifdef SIGHUP | #ifdef SIGHUP | ||||||
| 	if (signal(SIGHUP, SIG_IGN) != SIG_IGN) { | 	if (signal(SIGHUP, SIG_IGN) != SIG_IGN) { | ||||||
| 		(void) signal(SIGHUP, (sig_type) abort_gzip); | 		(void) signal(SIGHUP, (sig_type) abort_gzip); | ||||||
| 	} | 	} | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 	magic [0] = fgetc(l_in_file); | 	magic[0] = fgetc(l_in_file); | ||||||
| 	magic [1] = fgetc(l_in_file); | 	magic[1] = fgetc(l_in_file); | ||||||
|  |  | ||||||
| #ifdef CONFIG_FEATURE_UNCOMPRESS | #ifdef CONFIG_FEATURE_UNCOMPRESS | ||||||
| 	/* Magic header for compress files, 1F 9d = \037\235 */ | 	/* Magic header for compress files, 1F 9d = \037\235 */ | ||||||
| 	if (( magic [0] == 0x1F ) && ( magic [1] == 0x9d)) { | 	if ((magic[0] == 0x1F) && (magic[1] == 0x9d)) { | ||||||
| 		return uncompress ( l_in_file, l_out_file ); | 		return uncompress(l_in_file, l_out_file); | ||||||
| 	} | 	} | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 	/* Magic header for gzip files, 1F 8B = \037\213 */ | 	/* Magic header for gzip files, 1F 8B = \037\213 */ | ||||||
| 	if (( magic [0] != 0x1F ) || ( magic [1] != 0x8b)) { | 	if ((magic[0] != 0x1F) || (magic[1] != 0x8b)) { | ||||||
| 		error_msg("Invalid gzip magic"); | 		error_msg("Invalid gzip magic"); | ||||||
| 		return EXIT_FAILURE; | 		return EXIT_FAILURE; | ||||||
| 	} | 	} | ||||||
| @@ -951,7 +955,7 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
| 	/* Check the compression method */ | 	/* Check the compression method */ | ||||||
| 	if (fgetc(l_in_file) != 8) { | 	if (fgetc(l_in_file) != 8) { | ||||||
| 		error_msg("Unknown compression method"); | 		error_msg("Unknown compression method"); | ||||||
| 		return(-1); | 		return (-1); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	flags = (unsigned char) fgetc(l_in_file); | 	flags = (unsigned char) fgetc(l_in_file); | ||||||
| @@ -963,7 +967,8 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
|  |  | ||||||
| 	if (flags & 0x04) { | 	if (flags & 0x04) { | ||||||
| 		/* bit 2 set: extra field present */ | 		/* bit 2 set: extra field present */ | ||||||
| 		const unsigned short extra = fgetc(l_in_file) + (fgetc(l_in_file) << 8); | 		const unsigned short extra = | ||||||
|  | 			fgetc(l_in_file) + (fgetc(l_in_file) << 8); | ||||||
|  |  | ||||||
| 		for (i = 0; i < extra; i++) { | 		for (i = 0; i < extra; i++) { | ||||||
| 			fgetc(l_in_file); | 			fgetc(l_in_file); | ||||||
| @@ -994,11 +999,14 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
| 	fread(buf, 1, 8, l_in_file); | 	fread(buf, 1, 8, l_in_file); | ||||||
|  |  | ||||||
| 	/* Validate decompression - crc */ | 	/* Validate decompression - crc */ | ||||||
| 	if ((unsigned int)((buf[0] | (buf[1] << 8)) |((buf[2] | (buf[3] << 8)) << 16)) != (crc ^ 0xffffffffL)) { | 	if ((unsigned int) ((buf[0] | (buf[1] << 8)) | | ||||||
|  | 						((buf[2] | (buf[3] << 8)) << 16)) != | ||||||
|  | 		(crc ^ 0xffffffffL)) { | ||||||
| 		error_msg("invalid compressed data--crc error"); | 		error_msg("invalid compressed data--crc error"); | ||||||
| 	} | 	} | ||||||
| 	/* Validate decompression - size */ | 	/* Validate decompression - size */ | ||||||
| 	if (((buf[4] | (buf[5] << 8)) |((buf[6] | (buf[7] << 8)) << 16)) != (unsigned long) bytes_out) { | 	if (((buf[4] | (buf[5] << 8)) | ((buf[6] | (buf[7] << 8)) << 16)) != | ||||||
|  | 		(unsigned long) bytes_out) { | ||||||
| 		error_msg("invalid compressed data--length error"); | 		error_msg("invalid compressed data--length error"); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -1011,7 +1019,8 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
| extern void gz_close(int gunzip_pid) | extern void gz_close(int gunzip_pid) | ||||||
| { | { | ||||||
| 	if (kill(gunzip_pid, SIGTERM) == -1) { | 	if (kill(gunzip_pid, SIGTERM) == -1) { | ||||||
| 		error_msg_and_die("***  Couldnt kill old gunzip process *** aborting"); | 		error_msg_and_die | ||||||
|  | 			("***  Couldnt kill old gunzip process *** aborting"); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (waitpid(gunzip_pid, NULL, 0) == -1) { | 	if (waitpid(gunzip_pid, NULL, 0) == -1) { | ||||||
|   | |||||||
							
								
								
									
										248
									
								
								libbb/dump.c
									
									
									
									
									
								
							
							
						
						
									
										248
									
								
								libbb/dump.c
									
									
									
									
									
								
							| @@ -44,7 +44,7 @@ int blocksize;				/* data block size */ | |||||||
| int length = -1;		/* max bytes to read */ | int length = -1;		/* max bytes to read */ | ||||||
|  |  | ||||||
|  |  | ||||||
| int size(FS *fs) | int size(FS * fs) | ||||||
| { | { | ||||||
| 	register FU *fu; | 	register FU *fu; | ||||||
| 	register int bcnt, cursize; | 	register int bcnt, cursize; | ||||||
| @@ -69,23 +69,33 @@ int size(FS *fs) | |||||||
| 				prec = atoi(fmt); | 				prec = atoi(fmt); | ||||||
| 				while (isdigit(*++fmt)); | 				while (isdigit(*++fmt)); | ||||||
| 			} | 			} | ||||||
| 			switch(*fmt) { | 			switch (*fmt) { | ||||||
| 			case 'c': | 			case 'c': | ||||||
| 				bcnt += 1; | 				bcnt += 1; | ||||||
| 				break; | 				break; | ||||||
| 			case 'd': case 'i': case 'o': case 'u': | 			case 'd': | ||||||
| 			case 'x': case 'X': | 			case 'i': | ||||||
|  | 			case 'o': | ||||||
|  | 			case 'u': | ||||||
|  | 			case 'x': | ||||||
|  | 			case 'X': | ||||||
| 				bcnt += 4; | 				bcnt += 4; | ||||||
| 				break; | 				break; | ||||||
| 			case 'e': case 'E': case 'f': case 'g': case 'G': | 			case 'e': | ||||||
|  | 			case 'E': | ||||||
|  | 			case 'f': | ||||||
|  | 			case 'g': | ||||||
|  | 			case 'G': | ||||||
| 				bcnt += 8; | 				bcnt += 8; | ||||||
| 				break; | 				break; | ||||||
| 			case 's': | 			case 's': | ||||||
| 				bcnt += prec; | 				bcnt += prec; | ||||||
| 				break; | 				break; | ||||||
| 			case '_': | 			case '_': | ||||||
| 				switch(*++fmt) { | 				switch (*++fmt) { | ||||||
| 				case 'c': case 'p': case 'u': | 				case 'c': | ||||||
|  | 				case 'p': | ||||||
|  | 				case 'u': | ||||||
| 					bcnt += 1; | 					bcnt += 1; | ||||||
| 					break; | 					break; | ||||||
| 				} | 				} | ||||||
| @@ -93,10 +103,10 @@ int size(FS *fs) | |||||||
| 		} | 		} | ||||||
| 		cursize += bcnt * fu->reps; | 		cursize += bcnt * fu->reps; | ||||||
| 	} | 	} | ||||||
| 	return(cursize); | 	return (cursize); | ||||||
| } | } | ||||||
|  |  | ||||||
| void rewrite(FS *fs) | void rewrite(FS * fs) | ||||||
| { | { | ||||||
| 	enum { NOTOKAY, USEBCNT, USEPREC } sokay; | 	enum { NOTOKAY, USEBCNT, USEPREC } sokay; | ||||||
| 	register PR *pr, **nextpr = NULL; | 	register PR *pr, **nextpr = NULL; | ||||||
| @@ -112,7 +122,7 @@ void rewrite(FS *fs) | |||||||
| 		 */ | 		 */ | ||||||
| 		for (nconv = 0, fmtp = fu->fmt; *fmtp; nextpr = &pr->nextpr) { | 		for (nconv = 0, fmtp = fu->fmt; *fmtp; nextpr = &pr->nextpr) { | ||||||
| 			/* NOSTRICT */ | 			/* NOSTRICT */ | ||||||
| 			pr = (PR *)xmalloc(sizeof(PR)); | 			pr = (PR *) xmalloc(sizeof(PR)); | ||||||
| 			if (!fu->nextpr) | 			if (!fu->nextpr) | ||||||
| 				fu->nextpr = pr; | 				fu->nextpr = pr; | ||||||
| 			else | 			else | ||||||
| @@ -143,8 +153,7 @@ void rewrite(FS *fs) | |||||||
| 					sokay = USEPREC; | 					sokay = USEPREC; | ||||||
| 					prec = atoi(p1); | 					prec = atoi(p1); | ||||||
| 					while (isdigit(*++p1)); | 					while (isdigit(*++p1)); | ||||||
| 				} | 				} else | ||||||
| 				else |  | ||||||
| 					sokay = NOTOKAY; | 					sokay = NOTOKAY; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| @@ -155,41 +164,53 @@ void rewrite(FS *fs) | |||||||
| 			 * rewrite the format as necessary, set up blank- | 			 * rewrite the format as necessary, set up blank- | ||||||
| 			 * padding for end of data. | 			 * padding for end of data. | ||||||
| 			 */ | 			 */ | ||||||
| 			switch(*p1) { | 			switch (*p1) { | ||||||
| 			case 'c': | 			case 'c': | ||||||
| 				pr->flags = F_CHAR; | 				pr->flags = F_CHAR; | ||||||
| 				switch(fu->bcnt) { | 				switch (fu->bcnt) { | ||||||
| 				case 0: case 1: | 				case 0: | ||||||
|  | 				case 1: | ||||||
| 					pr->bcnt = 1; | 					pr->bcnt = 1; | ||||||
| 					break; | 					break; | ||||||
| 				default: | 				default: | ||||||
| 					p1[1] = '\0'; | 					p1[1] = '\0'; | ||||||
| 					error_msg_and_die("bad byte count for conversion character %s.", p1); | 					error_msg_and_die | ||||||
|  | 						("bad byte count for conversion character %s.", p1); | ||||||
| 				} | 				} | ||||||
| 				break; | 				break; | ||||||
| 			case 'd': case 'i': | 			case 'd': | ||||||
|  | 			case 'i': | ||||||
| 				pr->flags = F_INT; | 				pr->flags = F_INT; | ||||||
| 				goto sw1; | 				goto sw1; | ||||||
| 			case 'l': | 			case 'l': | ||||||
| 				++p2; | 				++p2; | ||||||
| 				switch(p1[1]) { | 				switch (p1[1]) { | ||||||
| 				case 'd': case 'i': | 				case 'd': | ||||||
|  | 				case 'i': | ||||||
| 					++p1; | 					++p1; | ||||||
| 					pr->flags = F_INT; | 					pr->flags = F_INT; | ||||||
| 					goto sw1; | 					goto sw1; | ||||||
| 				case 'o': case 'u': case 'x': case 'X': | 				case 'o': | ||||||
|  | 				case 'u': | ||||||
|  | 				case 'x': | ||||||
|  | 				case 'X': | ||||||
| 					++p1; | 					++p1; | ||||||
| 					pr->flags = F_UINT; | 					pr->flags = F_UINT; | ||||||
| 					goto sw1; | 					goto sw1; | ||||||
| 				default: | 				default: | ||||||
| 					p1[2] = '\0'; | 					p1[2] = '\0'; | ||||||
| 					error_msg_and_die("hexdump: bad conversion character %%%s.\n", p1); | 					error_msg_and_die | ||||||
|  | 						("hexdump: bad conversion character %%%s.\n", p1); | ||||||
| 				} | 				} | ||||||
| 				/* NOTREACHED */ | 				/* NOTREACHED */ | ||||||
| 			case 'o': case 'u': case 'x': case 'X': | 			case 'o': | ||||||
|  | 			case 'u': | ||||||
|  | 			case 'x': | ||||||
|  | 			case 'X': | ||||||
| 				pr->flags = F_UINT; | 				pr->flags = F_UINT; | ||||||
| sw1:				switch(fu->bcnt) { | 			  sw1:switch (fu->bcnt) { | ||||||
| 				case 0: case 4: | 				case 0: | ||||||
|  | 				case 4: | ||||||
| 					pr->bcnt = 4; | 					pr->bcnt = 4; | ||||||
| 					break; | 					break; | ||||||
| 				case 1: | 				case 1: | ||||||
| @@ -200,13 +221,19 @@ sw1:				switch(fu->bcnt) { | |||||||
| 					break; | 					break; | ||||||
| 				default: | 				default: | ||||||
| 					p1[1] = '\0'; | 					p1[1] = '\0'; | ||||||
| 					error_msg_and_die("bad byte count for conversion character %s.", p1); | 					error_msg_and_die | ||||||
|  | 						("bad byte count for conversion character %s.", p1); | ||||||
| 				} | 				} | ||||||
| 				break; | 				break; | ||||||
| 			case 'e': case 'E': case 'f': case 'g': case 'G': | 			case 'e': | ||||||
|  | 			case 'E': | ||||||
|  | 			case 'f': | ||||||
|  | 			case 'g': | ||||||
|  | 			case 'G': | ||||||
| 				pr->flags = F_DBL; | 				pr->flags = F_DBL; | ||||||
| 				switch(fu->bcnt) { | 				switch (fu->bcnt) { | ||||||
| 				case 0: case 8: | 				case 0: | ||||||
|  | 				case 8: | ||||||
| 					pr->bcnt = 8; | 					pr->bcnt = 8; | ||||||
| 					break; | 					break; | ||||||
| 				case 4: | 				case 4: | ||||||
| @@ -214,14 +241,16 @@ sw1:				switch(fu->bcnt) { | |||||||
| 					break; | 					break; | ||||||
| 				default: | 				default: | ||||||
| 					p1[1] = '\0'; | 					p1[1] = '\0'; | ||||||
| 					error_msg_and_die("bad byte count for conversion character %s.", p1); | 					error_msg_and_die | ||||||
|  | 						("bad byte count for conversion character %s.", p1); | ||||||
| 				} | 				} | ||||||
| 				break; | 				break; | ||||||
| 			case 's': | 			case 's': | ||||||
| 				pr->flags = F_STR; | 				pr->flags = F_STR; | ||||||
| 				switch(sokay) { | 				switch (sokay) { | ||||||
| 				case NOTOKAY: | 				case NOTOKAY: | ||||||
| 					error_msg_and_die("%%s requires a precision or a byte count."); | 					error_msg_and_die | ||||||
|  | 						("%%s requires a precision or a byte count."); | ||||||
| 				case USEBCNT: | 				case USEBCNT: | ||||||
| 					pr->bcnt = fu->bcnt; | 					pr->bcnt = fu->bcnt; | ||||||
| 					break; | 					break; | ||||||
| @@ -232,7 +261,7 @@ sw1:				switch(fu->bcnt) { | |||||||
| 				break; | 				break; | ||||||
| 			case '_': | 			case '_': | ||||||
| 				++p2; | 				++p2; | ||||||
| 				switch(p1[1]) { | 				switch (p1[1]) { | ||||||
| 				case 'A': | 				case 'A': | ||||||
| 					endfu = fu; | 					endfu = fu; | ||||||
| 					fu->flags |= F_IGNORE; | 					fu->flags |= F_IGNORE; | ||||||
| @@ -240,13 +269,16 @@ sw1:				switch(fu->bcnt) { | |||||||
| 				case 'a': | 				case 'a': | ||||||
| 					pr->flags = F_ADDRESS; | 					pr->flags = F_ADDRESS; | ||||||
| 					++p2; | 					++p2; | ||||||
| 					switch(p1[2]) { | 					switch (p1[2]) { | ||||||
| 					case 'd': case 'o': case'x': | 					case 'd': | ||||||
|  | 					case 'o': | ||||||
|  | 					case 'x': | ||||||
| 						*p1 = p1[2]; | 						*p1 = p1[2]; | ||||||
| 						break; | 						break; | ||||||
| 					default: | 					default: | ||||||
| 						p1[3] = '\0'; | 						p1[3] = '\0'; | ||||||
| 						error_msg_and_die("hexdump: bad conversion character %%%s.\n", p1); | 						error_msg_and_die | ||||||
|  | 							("hexdump: bad conversion character %%%s.\n", p1); | ||||||
| 					} | 					} | ||||||
| 					break; | 					break; | ||||||
| 				case 'c': | 				case 'c': | ||||||
| @@ -260,23 +292,28 @@ sw1:				switch(fu->bcnt) { | |||||||
| 				case 'u': | 				case 'u': | ||||||
| 					pr->flags = F_U; | 					pr->flags = F_U; | ||||||
| 					/* *p1 = 'c';   set in conv_u */ | 					/* *p1 = 'c';   set in conv_u */ | ||||||
| sw2:					switch(fu->bcnt) { | 				  sw2:switch (fu->bcnt) { | ||||||
| 					case 0: case 1: | 					case 0: | ||||||
|  | 					case 1: | ||||||
| 						pr->bcnt = 1; | 						pr->bcnt = 1; | ||||||
| 						break; | 						break; | ||||||
| 					default: | 					default: | ||||||
| 						p1[2] = '\0'; | 						p1[2] = '\0'; | ||||||
| 						error_msg_and_die("bad byte count for conversion character %s.", p1); | 						error_msg_and_die | ||||||
|  | 							("bad byte count for conversion character %s.", | ||||||
|  | 							 p1); | ||||||
| 					} | 					} | ||||||
| 					break; | 					break; | ||||||
| 				default: | 				default: | ||||||
| 					p1[2] = '\0'; | 					p1[2] = '\0'; | ||||||
| 					error_msg_and_die("hexdump: bad conversion character %%%s.\n", p1); | 					error_msg_and_die | ||||||
|  | 						("hexdump: bad conversion character %%%s.\n", p1); | ||||||
| 				} | 				} | ||||||
| 				break; | 				break; | ||||||
| 			default: | 			default: | ||||||
| 				p1[1] = '\0'; | 				p1[1] = '\0'; | ||||||
| 				error_msg_and_die("hexdump: bad conversion character %%%s.\n", p1); | 				error_msg_and_die("hexdump: bad conversion character %%%s.\n", | ||||||
|  | 								  p1); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			/* | 			/* | ||||||
| @@ -292,8 +329,9 @@ sw2:					switch(fu->bcnt) { | |||||||
| 			fmtp = p2; | 			fmtp = p2; | ||||||
|  |  | ||||||
| 			/* only one conversion character if byte count */ | 			/* only one conversion character if byte count */ | ||||||
| 			if (!(pr->flags&F_ADDRESS) && fu->bcnt && nconv++) { | 			if (!(pr->flags & F_ADDRESS) && fu->bcnt && nconv++) { | ||||||
| 				error_msg_and_die("hexdump: byte count with multiple conversion characters.\n"); | 				error_msg_and_die | ||||||
|  | 					("hexdump: byte count with multiple conversion characters.\n"); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		/* | 		/* | ||||||
| @@ -315,7 +353,7 @@ sw2:					switch(fu->bcnt) { | |||||||
| 	 */ | 	 */ | ||||||
| 	for (fu = fs->nextfu;; fu = fu->nextfu) { | 	for (fu = fs->nextfu;; fu = fu->nextfu) { | ||||||
| 		if (!fu->nextfu && fs->bcnt < blocksize && | 		if (!fu->nextfu && fs->bcnt < blocksize && | ||||||
| 		    !(fu->flags&F_SETREP) && fu->bcnt) | 			!(fu->flags & F_SETREP) && fu->bcnt) | ||||||
| 			fu->reps += (blocksize - fs->bcnt) / fu->bcnt; | 			fu->reps += (blocksize - fs->bcnt) / fu->bcnt; | ||||||
| 		if (fu->reps > 1) { | 		if (fu->reps > 1) { | ||||||
| 			for (pr = fu->nextpr;; pr = pr->nextpr) | 			for (pr = fu->nextpr;; pr = pr->nextpr) | ||||||
| @@ -339,10 +377,9 @@ static void doskip(char *fname, int statok) | |||||||
| 		if (fstat(fileno(stdin), &sbuf)) { | 		if (fstat(fileno(stdin), &sbuf)) { | ||||||
| 			perror_msg_and_die("hexdump: %s", fname); | 			perror_msg_and_die("hexdump: %s", fname); | ||||||
| 		} | 		} | ||||||
| 		if ( ( ! (S_ISCHR(sbuf.st_mode) || | 		if ((!(S_ISCHR(sbuf.st_mode) || | ||||||
| 			   S_ISBLK(sbuf.st_mode) || | 			   S_ISBLK(sbuf.st_mode) || | ||||||
|  			  S_ISFIFO(sbuf.st_mode)) ) && | 			   S_ISFIFO(sbuf.st_mode))) && skip >= sbuf.st_size) { | ||||||
| 		     skip >= sbuf.st_size) { |  | ||||||
| 			/* If size valid and skip >= size */ | 			/* If size valid and skip >= size */ | ||||||
| 			skip -= sbuf.st_size; | 			skip -= sbuf.st_size; | ||||||
| 			address += sbuf.st_size; | 			address += sbuf.st_size; | ||||||
| @@ -363,7 +400,7 @@ int next(char **argv) | |||||||
|  |  | ||||||
| 	if (argv) { | 	if (argv) { | ||||||
| 		_argv = argv; | 		_argv = argv; | ||||||
| 		return(1); | 		return (1); | ||||||
| 	} | 	} | ||||||
| 	for (;;) { | 	for (;;) { | ||||||
| 		if (*_argv) { | 		if (*_argv) { | ||||||
| @@ -376,7 +413,7 @@ int next(char **argv) | |||||||
| 			statok = done = 1; | 			statok = done = 1; | ||||||
| 		} else { | 		} else { | ||||||
| 			if (done++) | 			if (done++) | ||||||
| 				return(0); | 				return (0); | ||||||
| 			statok = 0; | 			statok = 0; | ||||||
| 		} | 		} | ||||||
| 		if (skip) | 		if (skip) | ||||||
| @@ -384,13 +421,12 @@ int next(char **argv) | |||||||
| 		if (*_argv) | 		if (*_argv) | ||||||
| 			++_argv; | 			++_argv; | ||||||
| 		if (!skip) | 		if (!skip) | ||||||
| 			return(1); | 			return (1); | ||||||
| 	} | 	} | ||||||
| 	/* NOTREACHED */ | 	/* NOTREACHED */ | ||||||
| } | } | ||||||
|  |  | ||||||
| static u_char * | static u_char *get(void) | ||||||
| get(void) |  | ||||||
| { | { | ||||||
| 	static int ateof = 1; | 	static int ateof = 1; | ||||||
| 	static u_char *curp, *savp; | 	static u_char *curp, *savp; | ||||||
| @@ -399,8 +435,8 @@ get(void) | |||||||
| 	u_char *tmpp; | 	u_char *tmpp; | ||||||
|  |  | ||||||
| 	if (!curp) { | 	if (!curp) { | ||||||
| 		curp = (u_char *)xmalloc(blocksize); | 		curp = (u_char *) xmalloc(blocksize); | ||||||
| 		savp = (u_char *)xmalloc(blocksize); | 		savp = (u_char *) xmalloc(blocksize); | ||||||
| 	} else { | 	} else { | ||||||
| 		tmpp = curp; | 		tmpp = curp; | ||||||
| 		curp = savp; | 		curp = savp; | ||||||
| @@ -413,21 +449,21 @@ get(void) | |||||||
| 		 * and no other files are available, zero-pad the rest of the | 		 * and no other files are available, zero-pad the rest of the | ||||||
| 		 * block and set the end flag. | 		 * block and set the end flag. | ||||||
| 		 */ | 		 */ | ||||||
| 		if (!length || (ateof && !next((char **)NULL))) { | 		if (!length || (ateof && !next((char **) NULL))) { | ||||||
| 			if (need == blocksize) { | 			if (need == blocksize) { | ||||||
| 				return((u_char *)NULL); | 				return ((u_char *) NULL); | ||||||
| 			} | 			} | ||||||
| 			if (vflag != ALL && !bcmp(curp, savp, nread)) { | 			if (vflag != ALL && !bcmp(curp, savp, nread)) { | ||||||
| 				if (vflag != DUP) { | 				if (vflag != DUP) { | ||||||
| 					printf("*\n"); | 					printf("*\n"); | ||||||
| 				} | 				} | ||||||
| 				return((u_char *)NULL); | 				return ((u_char *) NULL); | ||||||
| 			} | 			} | ||||||
| 			bzero((char *)curp + nread, need); | 			bzero((char *) curp + nread, need); | ||||||
| 			eaddress = address + nread; | 			eaddress = address + nread; | ||||||
| 			return(curp); | 			return (curp); | ||||||
| 		} | 		} | ||||||
| 		n = fread((char *)curp + nread, sizeof(u_char), | 		n = fread((char *) curp + nread, sizeof(u_char), | ||||||
| 				  length == -1 ? need : MIN(length, need), stdin); | 				  length == -1 ? need : MIN(length, need), stdin); | ||||||
| 		if (!n) { | 		if (!n) { | ||||||
| 			if (ferror(stdin)) { | 			if (ferror(stdin)) { | ||||||
| @@ -441,12 +477,11 @@ get(void) | |||||||
| 			length -= n; | 			length -= n; | ||||||
| 		} | 		} | ||||||
| 		if (!(need -= n)) { | 		if (!(need -= n)) { | ||||||
| 			if (vflag == ALL || vflag == FIRST || | 			if (vflag == ALL || vflag == FIRST || bcmp(curp, savp, blocksize)) { | ||||||
| 			    bcmp(curp, savp, blocksize)) { |  | ||||||
| 				if (vflag == DUP || vflag == FIRST) { | 				if (vflag == DUP || vflag == FIRST) { | ||||||
| 					vflag = WAIT; | 					vflag = WAIT; | ||||||
| 				} | 				} | ||||||
| 				return(curp); | 				return (curp); | ||||||
| 			} | 			} | ||||||
| 			if (vflag == WAIT) { | 			if (vflag == WAIT) { | ||||||
| 				printf("*\n"); | 				printf("*\n"); | ||||||
| @@ -461,7 +496,7 @@ get(void) | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| static void bpad(PR *pr) | static void bpad(PR * pr) | ||||||
| { | { | ||||||
| 	register char *p1, *p2; | 	register char *p1, *p2; | ||||||
|  |  | ||||||
| @@ -473,14 +508,14 @@ static void bpad(PR *pr) | |||||||
| 	*pr->cchar = 's'; | 	*pr->cchar = 's'; | ||||||
| 	for (p1 = pr->fmt; *p1 != '%'; ++p1); | 	for (p1 = pr->fmt; *p1 != '%'; ++p1); | ||||||
| 	for (p2 = ++p1; *p1 && index(" -0+#", *p1); ++p1); | 	for (p2 = ++p1; *p1 && index(" -0+#", *p1); ++p1); | ||||||
| 	while ((*p2++ = *p1++) != 0) ; | 	while ((*p2++ = *p1++) != 0); | ||||||
| } | } | ||||||
|  |  | ||||||
| void conv_c(PR *pr, u_char *p) | void conv_c(PR * pr, u_char * p) | ||||||
| { | { | ||||||
| 	char buf[10], *str; | 	char buf[10], *str; | ||||||
|  |  | ||||||
| 	switch(*p) { | 	switch (*p) { | ||||||
| 	case '\0': | 	case '\0': | ||||||
| 		str = "\\0"; | 		str = "\\0"; | ||||||
| 		goto strpr; | 		goto strpr; | ||||||
| @@ -511,16 +546,16 @@ void conv_c(PR *pr, u_char *p) | |||||||
| 	} | 	} | ||||||
| 	if (isprint(*p)) { | 	if (isprint(*p)) { | ||||||
| 		*pr->cchar = 'c'; | 		*pr->cchar = 'c'; | ||||||
| 		(void)printf(pr->fmt, *p); | 		(void) printf(pr->fmt, *p); | ||||||
| 	} else { | 	} else { | ||||||
| 		sprintf(str = buf, "%03o", (int)*p); | 		sprintf(str = buf, "%03o", (int) *p); | ||||||
| strpr: | 	  strpr: | ||||||
| 		*pr->cchar = 's'; | 		*pr->cchar = 's'; | ||||||
| 		printf(pr->fmt, str); | 		printf(pr->fmt, str); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| void conv_u(PR *pr, u_char *p) | void conv_u(PR * pr, u_char * p) | ||||||
| { | { | ||||||
| 	static char *list[] = { | 	static char *list[] = { | ||||||
| 		"nul", "soh", "stx", "etx", "eot", "enq", "ack", "bel", | 		"nul", "soh", "stx", "etx", "eot", "enq", "ack", "bel", | ||||||
| @@ -541,19 +576,20 @@ void conv_u(PR *pr, u_char *p) | |||||||
| 		printf(pr->fmt, *p); | 		printf(pr->fmt, *p); | ||||||
| 	} else { | 	} else { | ||||||
| 		*pr->cchar = 'x'; | 		*pr->cchar = 'x'; | ||||||
| 		printf(pr->fmt, (int)*p); | 		printf(pr->fmt, (int) *p); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| void display(void) | void display(void) | ||||||
| { | { | ||||||
| //	extern FU *endfu; | /*  extern FU *endfu; */ | ||||||
| 	register FS *fs; | 	register FS *fs; | ||||||
| 	register FU *fu; | 	register FU *fu; | ||||||
| 	register PR *pr; | 	register PR *pr; | ||||||
| 	register int cnt; | 	register int cnt; | ||||||
| 	register u_char *bp; | 	register u_char *bp; | ||||||
| //	off_t saveaddress; |  | ||||||
|  | /*  off_t saveaddress; */ | ||||||
| 	u_char savech = 0, *savebp; | 	u_char savech = 0, *savebp; | ||||||
|  |  | ||||||
| 	while ((bp = get()) != NULL) { | 	while ((bp = get()) != NULL) { | ||||||
| @@ -567,15 +603,15 @@ void display(void) | |||||||
| 					for (pr = fu->nextpr; pr; address += pr->bcnt, | 					for (pr = fu->nextpr; pr; address += pr->bcnt, | ||||||
| 						 bp += pr->bcnt, pr = pr->nextpr) { | 						 bp += pr->bcnt, pr = pr->nextpr) { | ||||||
| 						if (eaddress && address >= eaddress && | 						if (eaddress && address >= eaddress && | ||||||
| 								!(pr->flags&(F_TEXT|F_BPAD))) { | 							!(pr->flags & (F_TEXT | F_BPAD))) { | ||||||
| 							bpad(pr); | 							bpad(pr); | ||||||
| 						} | 						} | ||||||
| 						if (cnt == 1 && pr->nospace) { | 						if (cnt == 1 && pr->nospace) { | ||||||
| 							savech = *pr->nospace; | 							savech = *pr->nospace; | ||||||
| 							*pr->nospace = '\0'; | 							*pr->nospace = '\0'; | ||||||
| 						} | 						} | ||||||
| //					    PRINT; | /*                      PRINT; */ | ||||||
| 						switch(pr->flags) { | 						switch (pr->flags) { | ||||||
| 						case F_ADDRESS: | 						case F_ADDRESS: | ||||||
| 							printf(pr->fmt, address); | 							printf(pr->fmt, address); | ||||||
| 							break; | 							break; | ||||||
| @@ -588,34 +624,40 @@ void display(void) | |||||||
| 						case F_CHAR: | 						case F_CHAR: | ||||||
| 							printf(pr->fmt, *bp); | 							printf(pr->fmt, *bp); | ||||||
| 							break; | 							break; | ||||||
| 							case F_DBL: { | 						case F_DBL:{ | ||||||
| 							double dval; | 							double dval; | ||||||
| 							float fval; | 							float fval; | ||||||
| 								switch(pr->bcnt) { |  | ||||||
|  | 							switch (pr->bcnt) { | ||||||
| 							case 4: | 							case 4: | ||||||
| 										bcopy((char *)bp, (char *)&fval, sizeof(fval)); | 								bcopy((char *) bp, (char *) &fval, | ||||||
|  | 									  sizeof(fval)); | ||||||
| 								printf(pr->fmt, fval); | 								printf(pr->fmt, fval); | ||||||
| 								break; | 								break; | ||||||
| 							case 8: | 							case 8: | ||||||
| 										bcopy((char *)bp, (char *)&dval, sizeof(dval)); | 								bcopy((char *) bp, (char *) &dval, | ||||||
|  | 									  sizeof(dval)); | ||||||
| 								printf(pr->fmt, dval); | 								printf(pr->fmt, dval); | ||||||
| 								break; | 								break; | ||||||
| 							} | 							} | ||||||
| 							break; | 							break; | ||||||
| 						} | 						} | ||||||
| 							case F_INT: { | 						case F_INT:{ | ||||||
| 							int ival; | 							int ival; | ||||||
| 							short sval; | 							short sval; | ||||||
| 								switch(pr->bcnt) { |  | ||||||
|  | 							switch (pr->bcnt) { | ||||||
| 							case 1: | 							case 1: | ||||||
| 										printf(pr->fmt, (int)*bp); | 								printf(pr->fmt, (int) *bp); | ||||||
| 								break; | 								break; | ||||||
| 							case 2: | 							case 2: | ||||||
| 										bcopy((char *)bp, (char *)&sval, sizeof(sval)); | 								bcopy((char *) bp, (char *) &sval, | ||||||
| 										printf(pr->fmt, (int)sval); | 									  sizeof(sval)); | ||||||
|  | 								printf(pr->fmt, (int) sval); | ||||||
| 								break; | 								break; | ||||||
| 							case 4: | 							case 4: | ||||||
| 										bcopy((char *)bp, (char *)&ival, sizeof(ival)); | 								bcopy((char *) bp, (char *) &ival, | ||||||
|  | 									  sizeof(ival)); | ||||||
| 								printf(pr->fmt, ival); | 								printf(pr->fmt, ival); | ||||||
| 								break; | 								break; | ||||||
| 							} | 							} | ||||||
| @@ -625,7 +667,7 @@ void display(void) | |||||||
| 							printf(pr->fmt, isprint(*bp) ? *bp : '.'); | 							printf(pr->fmt, isprint(*bp) ? *bp : '.'); | ||||||
| 							break; | 							break; | ||||||
| 						case F_STR: | 						case F_STR: | ||||||
| 								printf(pr->fmt, (char *)bp); | 							printf(pr->fmt, (char *) bp); | ||||||
| 							break; | 							break; | ||||||
| 						case F_TEXT: | 						case F_TEXT: | ||||||
| 							printf(pr->fmt); | 							printf(pr->fmt); | ||||||
| @@ -633,19 +675,22 @@ void display(void) | |||||||
| 						case F_U: | 						case F_U: | ||||||
| 							conv_u(pr, bp); | 							conv_u(pr, bp); | ||||||
| 							break; | 							break; | ||||||
| 							case F_UINT: { | 						case F_UINT:{ | ||||||
| 							u_int ival; | 							u_int ival; | ||||||
| 							u_short sval; | 							u_short sval; | ||||||
| 								switch(pr->bcnt) { |  | ||||||
|  | 							switch (pr->bcnt) { | ||||||
| 							case 1: | 							case 1: | ||||||
| 										printf(pr->fmt, (u_int)*bp); | 								printf(pr->fmt, (u_int) * bp); | ||||||
| 								break; | 								break; | ||||||
| 							case 2: | 							case 2: | ||||||
| 										bcopy((char *)bp, (char *)&sval, sizeof(sval)); | 								bcopy((char *) bp, (char *) &sval, | ||||||
| 										printf(pr->fmt, (u_int)sval); | 									  sizeof(sval)); | ||||||
|  | 								printf(pr->fmt, (u_int) sval); | ||||||
| 								break; | 								break; | ||||||
| 							case 4: | 							case 4: | ||||||
| 										bcopy((char *)bp, (char *)&ival, sizeof(ival)); | 								bcopy((char *) bp, (char *) &ival, | ||||||
|  | 									  sizeof(ival)); | ||||||
| 								printf(pr->fmt, ival); | 								printf(pr->fmt, ival); | ||||||
| 								break; | 								break; | ||||||
| 							} | 							} | ||||||
| @@ -672,12 +717,12 @@ void display(void) | |||||||
| 			eaddress = address; | 			eaddress = address; | ||||||
| 		} | 		} | ||||||
| 		for (pr = endfu->nextpr; pr; pr = pr->nextpr) { | 		for (pr = endfu->nextpr; pr; pr = pr->nextpr) { | ||||||
| 			switch(pr->flags) { | 			switch (pr->flags) { | ||||||
| 			case F_ADDRESS: | 			case F_ADDRESS: | ||||||
| 				(void)printf(pr->fmt, eaddress); | 				(void) printf(pr->fmt, eaddress); | ||||||
| 				break; | 				break; | ||||||
| 			case F_TEXT: | 			case F_TEXT: | ||||||
| 				(void)printf(pr->fmt); | 				(void) printf(pr->fmt); | ||||||
| 				break; | 				break; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @@ -703,7 +748,7 @@ int dump(char **argv) | |||||||
| 	next(argv); | 	next(argv); | ||||||
| 	display(); | 	display(); | ||||||
|  |  | ||||||
| 	return(exitval); | 	return (exitval); | ||||||
| } | } | ||||||
|  |  | ||||||
| void add(char *fmt) | void add(char *fmt) | ||||||
| @@ -718,7 +763,7 @@ void add(char *fmt) | |||||||
|  |  | ||||||
| 	/* start new linked list of format units */ | 	/* start new linked list of format units */ | ||||||
| 	/* NOSTRICT */ | 	/* NOSTRICT */ | ||||||
| 	tfs = (FS *)xmalloc(sizeof(FS)); | 	tfs = (FS *) xmalloc(sizeof(FS)); | ||||||
| 	if (!fshead) { | 	if (!fshead) { | ||||||
| 		fshead = tfs; | 		fshead = tfs; | ||||||
| 	} else { | 	} else { | ||||||
| @@ -737,7 +782,7 @@ void add(char *fmt) | |||||||
|  |  | ||||||
| 		/* allocate a new format unit and link it in */ | 		/* allocate a new format unit and link it in */ | ||||||
| 		/* NOSTRICT */ | 		/* NOSTRICT */ | ||||||
| 		tfu = (FU *)xmalloc(sizeof(FU)); | 		tfu = (FU *) xmalloc(sizeof(FU)); | ||||||
| 		*nextfu = tfu; | 		*nextfu = tfu; | ||||||
| 		nextfu = &tfu->nextfu; | 		nextfu = &tfu->nextfu; | ||||||
| 		tfu->reps = 1; | 		tfu->reps = 1; | ||||||
| @@ -785,7 +830,7 @@ void add(char *fmt) | |||||||
| 		} | 		} | ||||||
| 		strncpy(tfu->fmt, savep, p - savep); | 		strncpy(tfu->fmt, savep, p - savep); | ||||||
| 		tfu->fmt[p - savep] = '\0'; | 		tfu->fmt[p - savep] = '\0'; | ||||||
| //		escape(tfu->fmt); | /*      escape(tfu->fmt); */ | ||||||
|  |  | ||||||
| 		p1 = tfu->fmt; | 		p1 = tfu->fmt; | ||||||
|  |  | ||||||
| @@ -796,7 +841,7 @@ void add(char *fmt) | |||||||
| 				break; | 				break; | ||||||
| 			} | 			} | ||||||
| 			if (*p1 == '\\') { | 			if (*p1 == '\\') { | ||||||
| 				switch(*++p1) { | 				switch (*++p1) { | ||||||
| 				case 'a': | 				case 'a': | ||||||
| 					/* *p2 = '\a'; */ | 					/* *p2 = '\a'; */ | ||||||
| 					*p2 = '\007'; | 					*p2 = '\007'; | ||||||
| @@ -829,6 +874,7 @@ void add(char *fmt) | |||||||
| 		p++; | 		p++; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Copyright (c) 1989 The Regents of the University of California. |  * Copyright (c) 1989 The Regents of the University of California. | ||||||
|  * All rights reserved. |  * All rights reserved. | ||||||
|   | |||||||
							
								
								
									
										127
									
								
								libbb/unzip.c
									
									
									
									
									
								
							
							
						
						
									
										127
									
								
								libbb/unzip.c
									
									
									
									
									
								
							| @@ -69,7 +69,7 @@ static char *license_msg[] = { | |||||||
| #include "libbb.h" | #include "libbb.h" | ||||||
|  |  | ||||||
| #ifdef CONFIG_FEATURE_UNCOMPRESS | #ifdef CONFIG_FEATURE_UNCOMPRESS | ||||||
| int uncompress ( FILE *in, FILE *out ); | int uncompress(FILE * in, FILE * out); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| static FILE *in_file, *out_file; | static FILE *in_file, *out_file; | ||||||
| @@ -115,7 +115,7 @@ static const unsigned short mask_bits[] = { | |||||||
| 	0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff | 	0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff | ||||||
| }; | }; | ||||||
|  |  | ||||||
| //static int error_number = 0; | /* static int error_number = 0; */ | ||||||
| /* ======================================================================== | /* ======================================================================== | ||||||
|  * Signal and error handler. |  * Signal and error handler. | ||||||
|  */ |  */ | ||||||
| @@ -145,9 +145,11 @@ static void make_crc_table(void) | |||||||
| 		   * zero was stolen from Haruhiko Okumura's ar002 | 		   * zero was stolen from Haruhiko Okumura's ar002 | ||||||
| 		 */ | 		 */ | ||||||
| 		for (k = 8; k; k--) { | 		for (k = 8; k; k--) { | ||||||
| 			table_entry = table_entry & 1 ? (table_entry >> 1) ^ poly : table_entry >> 1; | 			table_entry = | ||||||
|  | 				table_entry & 1 ? (table_entry >> 1) ^ poly : table_entry >> | ||||||
|  | 				1; | ||||||
| 		} | 		} | ||||||
| 		crc_table[i]=table_entry; | 		crc_table[i] = table_entry; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -179,7 +181,7 @@ static void flush_window(void) | |||||||
|  * each table.  |  * each table.  | ||||||
|  * t: table to free |  * t: table to free | ||||||
|  */ |  */ | ||||||
| static int huft_free(huft_t *t) | static int huft_free(huft_t * t) | ||||||
| { | { | ||||||
| 	huft_t *p, *q; | 	huft_t *p, *q; | ||||||
|  |  | ||||||
| @@ -209,8 +211,9 @@ typedef unsigned char extra_bits_t; | |||||||
|  * t:	result: starting table |  * t:	result: starting table | ||||||
|  * m:	maximum lookup bits, returns actual |  * m:	maximum lookup bits, returns actual | ||||||
|  */ |  */ | ||||||
| static int huft_build(unsigned int *b, const unsigned int n, const unsigned int s,  | static int huft_build(unsigned int *b, const unsigned int n, | ||||||
| 	const unsigned short *d, const extra_bits_t *e, huft_t **t, int *m) | 					  const unsigned int s, const unsigned short *d, | ||||||
|  | 					  const extra_bits_t * e, huft_t ** t, int *m) | ||||||
| { | { | ||||||
| 	unsigned a;			/* counter for codes of length k */ | 	unsigned a;			/* counter for codes of length k */ | ||||||
| 	unsigned c[BMAX + 1];	/* bit length count table */ | 	unsigned c[BMAX + 1];	/* bit length count table */ | ||||||
| @@ -233,7 +236,7 @@ static int huft_build(unsigned int *b, const unsigned int n, const unsigned int | |||||||
| 	unsigned z;			/* number of entries in current table */ | 	unsigned z;			/* number of entries in current table */ | ||||||
|  |  | ||||||
| 	/* Generate counts for each bit length */ | 	/* Generate counts for each bit length */ | ||||||
| 	memset ((void *)(c), 0, sizeof(c)); | 	memset((void *) (c), 0, sizeof(c)); | ||||||
| 	p = b; | 	p = b; | ||||||
| 	i = n; | 	i = n; | ||||||
| 	do { | 	do { | ||||||
| @@ -378,7 +381,7 @@ static int huft_build(unsigned int *b, const unsigned int n, const unsigned int | |||||||
|  * tl, td: literal/length and distance decoder tables |  * tl, td: literal/length and distance decoder tables | ||||||
|  * bl, bd: number of bits decoded by tl[] and td[] |  * bl, bd: number of bits decoded by tl[] and td[] | ||||||
|  */ |  */ | ||||||
| static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | static int inflate_codes(huft_t * tl, huft_t * td, int bl, int bd) | ||||||
| { | { | ||||||
| 	register unsigned long e;	/* table entry flag/number of extra bits */ | 	register unsigned long e;	/* table entry flag/number of extra bits */ | ||||||
| 	unsigned long n, d;	/* length and index for copy */ | 	unsigned long n, d;	/* length and index for copy */ | ||||||
| @@ -398,7 +401,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 	md = mask_bits[bd]; | 	md = mask_bits[bd]; | ||||||
| 	for (;;) {			/* do until end of block */ | 	for (;;) {			/* do until end of block */ | ||||||
| 		while (k < (unsigned) bl) { | 		while (k < (unsigned) bl) { | ||||||
| 			b |= ((unsigned long)fgetc(in_file)) << k; | 			b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 			k += 8; | 			k += 8; | ||||||
| 		} | 		} | ||||||
| 		if ((e = (t = tl + ((unsigned) b & ml))->e) > 16) | 		if ((e = (t = tl + ((unsigned) b & ml))->e) > 16) | ||||||
| @@ -410,17 +413,17 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 				k -= t->b; | 				k -= t->b; | ||||||
| 				e -= 16; | 				e -= 16; | ||||||
| 				while (k < e) { | 				while (k < e) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 					b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 					k += 8; | 					k += 8; | ||||||
| 				} | 				} | ||||||
| 		} while ((e = (t = t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | 			} while ((e = | ||||||
|  | 					  (t = t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | ||||||
| 		b >>= t->b; | 		b >>= t->b; | ||||||
| 		k -= t->b; | 		k -= t->b; | ||||||
| 		if (e == 16) {	/* then it's a literal */ | 		if (e == 16) {	/* then it's a literal */ | ||||||
| 			window[w++] = (unsigned char) t->v.n; | 			window[w++] = (unsigned char) t->v.n; | ||||||
| 			if (w == WSIZE) { | 			if (w == WSIZE) { | ||||||
| 				outcnt=(w), | 				outcnt = (w), flush_window(); | ||||||
| 				flush_window(); |  | ||||||
| 				w = 0; | 				w = 0; | ||||||
| 			} | 			} | ||||||
| 		} else {		/* it's an EOB or a length */ | 		} else {		/* it's an EOB or a length */ | ||||||
| @@ -432,7 +435,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
|  |  | ||||||
| 			/* get length of block to copy */ | 			/* get length of block to copy */ | ||||||
| 			while (k < e) { | 			while (k < e) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 				b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 				k += 8; | 				k += 8; | ||||||
| 			} | 			} | ||||||
| 			n = t->v.n + ((unsigned) b & mask_bits[e]); | 			n = t->v.n + ((unsigned) b & mask_bits[e]); | ||||||
| @@ -441,7 +444,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
|  |  | ||||||
| 			/* decode distance of block to copy */ | 			/* decode distance of block to copy */ | ||||||
| 			while (k < (unsigned) bd) { | 			while (k < (unsigned) bd) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 				b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 				k += 8; | 				k += 8; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| @@ -453,14 +456,16 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 					k -= t->b; | 					k -= t->b; | ||||||
| 					e -= 16; | 					e -= 16; | ||||||
| 					while (k < e) { | 					while (k < e) { | ||||||
| 						b |= ((unsigned long)fgetc(in_file)) << k; | 						b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 						k += 8; | 						k += 8; | ||||||
| 					} | 					} | ||||||
| 				} while ((e = (t = t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | 				} while ((e = | ||||||
|  | 						  (t = | ||||||
|  | 						   t->v.t + ((unsigned) b & mask_bits[e]))->e) > 16); | ||||||
| 			b >>= t->b; | 			b >>= t->b; | ||||||
| 			k -= t->b; | 			k -= t->b; | ||||||
| 			while (k < e) { | 			while (k < e) { | ||||||
| 				b |= ((unsigned long)fgetc(in_file)) << k; | 				b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 				k += 8; | 				k += 8; | ||||||
| 			} | 			} | ||||||
| 			d = w - t->v.n - ((unsigned) b & mask_bits[e]); | 			d = w - t->v.n - ((unsigned) b & mask_bits[e]); | ||||||
| @@ -469,7 +474,9 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
|  |  | ||||||
| 			/* do the copy */ | 			/* do the copy */ | ||||||
| 			do { | 			do { | ||||||
| 				n -= (e = (e = WSIZE - ((d &= WSIZE - 1) > w ? d : w)) > n ? n : e); | 				n -= (e = | ||||||
|  | 					  (e = | ||||||
|  | 					   WSIZE - ((d &= WSIZE - 1) > w ? d : w)) > n ? n : e); | ||||||
| #if !defined(NOMEMCPY) && !defined(DEBUG) | #if !defined(NOMEMCPY) && !defined(DEBUG) | ||||||
| 				if (w - d >= e) {	/* (this test assumes unsigned comparison) */ | 				if (w - d >= e) {	/* (this test assumes unsigned comparison) */ | ||||||
| 					memcpy(window + w, window + d, e); | 					memcpy(window + w, window + d, e); | ||||||
| @@ -481,8 +488,7 @@ static int inflate_codes(huft_t *tl, huft_t *td, int bl, int bd) | |||||||
| 						window[w++] = window[d++]; | 						window[w++] = window[d++]; | ||||||
| 					} while (--e); | 					} while (--e); | ||||||
| 				if (w == WSIZE) { | 				if (w == WSIZE) { | ||||||
| 					outcnt=(w), | 					outcnt = (w), flush_window(); | ||||||
| 					flush_window(); |  | ||||||
| 					w = 0; | 					w = 0; | ||||||
| 				} | 				} | ||||||
| 			} while (n); | 			} while (n); | ||||||
| @@ -502,6 +508,7 @@ static const unsigned short cplens[] = {     /* Copy lengths for literal codes 2 | |||||||
| 	3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, | 	3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, | ||||||
| 	35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 | 	35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* note: see note #13 above about the 258 in this list. */ | /* note: see note #13 above about the 258 in this list. */ | ||||||
| static const extra_bits_t cplext[] = {	/* Extra bits for literal codes 257..285 */ | static const extra_bits_t cplext[] = {	/* Extra bits for literal codes 257..285 */ | ||||||
| 	0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, | 	0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, | ||||||
| @@ -517,6 +524,7 @@ static const extra_bits_t cpdext[] = {  /* Extra bits for distance codes */ | |||||||
| 	7, 7, 8, 8, 9, 9, 10, 10, 11, 11, | 	7, 7, 8, 8, 9, 9, 10, 10, 11, 11, | ||||||
| 	12, 12, 13, 13 | 	12, 12, 13, 13 | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* Tables for deflate from PKZIP's appnote.txt. */ | /* Tables for deflate from PKZIP's appnote.txt. */ | ||||||
| static const extra_bits_t border[] = {	/* Order of the bit length code lengths */ | static const extra_bits_t border[] = {	/* Order of the bit length code lengths */ | ||||||
| 	16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 | 	16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 | ||||||
| @@ -540,7 +548,7 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 	/* read in last block bit */ | 	/* read in last block bit */ | ||||||
| 	while (k < 1) { | 	while (k < 1) { | ||||||
| 		b |= ((unsigned long)fgetc(in_file)) << k; | 		b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 		k += 8; | 		k += 8; | ||||||
| 	} | 	} | ||||||
| 	*e = (int) b & 1; | 	*e = (int) b & 1; | ||||||
| @@ -549,7 +557,7 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 	/* read in block type */ | 	/* read in block type */ | ||||||
| 	while (k < 2) { | 	while (k < 2) { | ||||||
| 		b |= ((unsigned long)fgetc(in_file)) << k; | 		b |= ((unsigned long) fgetc(in_file)) << k; | ||||||
| 		k += 8; | 		k += 8; | ||||||
| 	} | 	} | ||||||
| 	t = (unsigned) b & 3; | 	t = (unsigned) b & 3; | ||||||
| @@ -581,14 +589,14 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 		/* get the length and its complement */ | 		/* get the length and its complement */ | ||||||
| 		while (k_stored < 16) { | 		while (k_stored < 16) { | ||||||
| 				b_stored |= ((unsigned long)fgetc(in_file)) << k_stored; | 			b_stored |= ((unsigned long) fgetc(in_file)) << k_stored; | ||||||
| 			k_stored += 8; | 			k_stored += 8; | ||||||
| 		} | 		} | ||||||
| 		n = ((unsigned) b_stored & 0xffff); | 		n = ((unsigned) b_stored & 0xffff); | ||||||
| 		b_stored >>= 16; | 		b_stored >>= 16; | ||||||
| 		k_stored -= 16; | 		k_stored -= 16; | ||||||
| 		while (k_stored < 16) { | 		while (k_stored < 16) { | ||||||
| 				b_stored |= ((unsigned long)fgetc(in_file)) << k_stored; | 			b_stored |= ((unsigned long) fgetc(in_file)) << k_stored; | ||||||
| 			k_stored += 8; | 			k_stored += 8; | ||||||
| 		} | 		} | ||||||
| 		if (n != (unsigned) ((~b_stored) & 0xffff)) { | 		if (n != (unsigned) ((~b_stored) & 0xffff)) { | ||||||
| @@ -600,13 +608,12 @@ static int inflate_block(int *e) | |||||||
| 		/* read and output the compressed data */ | 		/* read and output the compressed data */ | ||||||
| 		while (n--) { | 		while (n--) { | ||||||
| 			while (k_stored < 8) { | 			while (k_stored < 8) { | ||||||
| 					b_stored |= ((unsigned long)fgetc(in_file)) << k_stored; | 				b_stored |= ((unsigned long) fgetc(in_file)) << k_stored; | ||||||
| 				k_stored += 8; | 				k_stored += 8; | ||||||
| 			} | 			} | ||||||
| 			window[w++] = (unsigned char) b_stored; | 			window[w++] = (unsigned char) b_stored; | ||||||
| 				if (w == (unsigned long)WSIZE) { | 			if (w == (unsigned long) WSIZE) { | ||||||
| 					outcnt=(w), | 				outcnt = (w), flush_window(); | ||||||
| 					flush_window(); |  | ||||||
| 				w = 0; | 				w = 0; | ||||||
| 			} | 			} | ||||||
| 			b_stored >>= 8; | 			b_stored >>= 8; | ||||||
| @@ -697,21 +704,21 @@ static int inflate_block(int *e) | |||||||
|  |  | ||||||
| 		/* read in table lengths */ | 		/* read in table lengths */ | ||||||
| 		while (k_dynamic < 5) { | 		while (k_dynamic < 5) { | ||||||
| 				b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 			b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 			k_dynamic += 8; | 			k_dynamic += 8; | ||||||
| 		} | 		} | ||||||
| 		nl = 257 + ((unsigned) b_dynamic & 0x1f);	/* number of literal/length codes */ | 		nl = 257 + ((unsigned) b_dynamic & 0x1f);	/* number of literal/length codes */ | ||||||
| 		b_dynamic >>= 5; | 		b_dynamic >>= 5; | ||||||
| 		k_dynamic -= 5; | 		k_dynamic -= 5; | ||||||
| 		while (k_dynamic < 5) { | 		while (k_dynamic < 5) { | ||||||
| 				b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 			b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 			k_dynamic += 8; | 			k_dynamic += 8; | ||||||
| 		} | 		} | ||||||
| 		nd = 1 + ((unsigned) b_dynamic & 0x1f);	/* number of distance codes */ | 		nd = 1 + ((unsigned) b_dynamic & 0x1f);	/* number of distance codes */ | ||||||
| 		b_dynamic >>= 5; | 		b_dynamic >>= 5; | ||||||
| 		k_dynamic -= 5; | 		k_dynamic -= 5; | ||||||
| 		while (k_dynamic < 4) { | 		while (k_dynamic < 4) { | ||||||
| 				b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 			b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 			k_dynamic += 8; | 			k_dynamic += 8; | ||||||
| 		} | 		} | ||||||
| 		nb = 4 + ((unsigned) b_dynamic & 0xf);	/* number of bit length codes */ | 		nb = 4 + ((unsigned) b_dynamic & 0xf);	/* number of bit length codes */ | ||||||
| @@ -724,7 +731,7 @@ static int inflate_block(int *e) | |||||||
| 		/* read in bit-length-code lengths */ | 		/* read in bit-length-code lengths */ | ||||||
| 		for (j = 0; j < nb; j++) { | 		for (j = 0; j < nb; j++) { | ||||||
| 			while (k_dynamic < 3) { | 			while (k_dynamic < 3) { | ||||||
| 					b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 				b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 				k_dynamic += 8; | 				k_dynamic += 8; | ||||||
| 			} | 			} | ||||||
| 			ll[border[j]] = (unsigned) b_dynamic & 7; | 			ll[border[j]] = (unsigned) b_dynamic & 7; | ||||||
| @@ -750,7 +757,7 @@ static int inflate_block(int *e) | |||||||
| 		i = l = 0; | 		i = l = 0; | ||||||
| 		while ((unsigned) i < n) { | 		while ((unsigned) i < n) { | ||||||
| 			while (k_dynamic < (unsigned) bl) { | 			while (k_dynamic < (unsigned) bl) { | ||||||
| 					b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 				b_dynamic |= ((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 				k_dynamic += 8; | 				k_dynamic += 8; | ||||||
| 			} | 			} | ||||||
| 			j = (td = tl + ((unsigned) b_dynamic & m))->b; | 			j = (td = tl + ((unsigned) b_dynamic & m))->b; | ||||||
| @@ -759,10 +766,10 @@ static int inflate_block(int *e) | |||||||
| 			j = td->v.n; | 			j = td->v.n; | ||||||
| 			if (j < 16) {	/* length of code in bits (0..15) */ | 			if (j < 16) {	/* length of code in bits (0..15) */ | ||||||
| 				ll[i++] = l = j;	/* save last length in l */ | 				ll[i++] = l = j;	/* save last length in l */ | ||||||
| 				} | 			} else if (j == 16) {	/* repeat last length 3 to 6 times */ | ||||||
| 				else if (j == 16) {		/* repeat last length 3 to 6 times */ |  | ||||||
| 				while (k_dynamic < 2) { | 				while (k_dynamic < 2) { | ||||||
| 						b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 					b_dynamic |= | ||||||
|  | 						((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 					k_dynamic += 8; | 					k_dynamic += 8; | ||||||
| 				} | 				} | ||||||
| 				j = 3 + ((unsigned) b_dynamic & 3); | 				j = 3 + ((unsigned) b_dynamic & 3); | ||||||
| @@ -776,7 +783,8 @@ static int inflate_block(int *e) | |||||||
| 				} | 				} | ||||||
| 			} else if (j == 17) {	/* 3 to 10 zero length codes */ | 			} else if (j == 17) {	/* 3 to 10 zero length codes */ | ||||||
| 				while (k_dynamic < 3) { | 				while (k_dynamic < 3) { | ||||||
| 						b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 					b_dynamic |= | ||||||
|  | 						((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 					k_dynamic += 8; | 					k_dynamic += 8; | ||||||
| 				} | 				} | ||||||
| 				j = 3 + ((unsigned) b_dynamic & 7); | 				j = 3 + ((unsigned) b_dynamic & 7); | ||||||
| @@ -791,7 +799,8 @@ static int inflate_block(int *e) | |||||||
| 				l = 0; | 				l = 0; | ||||||
| 			} else {	/* j == 18: 11 to 138 zero length codes */ | 			} else {	/* j == 18: 11 to 138 zero length codes */ | ||||||
| 				while (k_dynamic < 7) { | 				while (k_dynamic < 7) { | ||||||
| 						b_dynamic |= ((unsigned long)fgetc(in_file)) << k_dynamic; | 					b_dynamic |= | ||||||
|  | 						((unsigned long) fgetc(in_file)) << k_dynamic; | ||||||
| 					k_dynamic += 8; | 					k_dynamic += 8; | ||||||
| 				} | 				} | ||||||
| 				j = 11 + ((unsigned) b_dynamic & 0x7f); | 				j = 11 + ((unsigned) b_dynamic & 0x7f); | ||||||
| @@ -853,7 +862,7 @@ static int inflate_block(int *e) | |||||||
|  * |  * | ||||||
|  * GLOBAL VARIABLES: outcnt, bk, bb, hufts, inptr |  * GLOBAL VARIABLES: outcnt, bk, bb, hufts, inptr | ||||||
|  */ |  */ | ||||||
| extern int inflate(FILE *in, FILE *out) | extern int inflate(FILE * in, FILE * out) | ||||||
| { | { | ||||||
| 	int e;				/* last block flag */ | 	int e;				/* last block flag */ | ||||||
| 	int r;				/* result code */ | 	int r;				/* result code */ | ||||||
| @@ -868,7 +877,7 @@ extern int inflate(FILE *in, FILE *out) | |||||||
| 	out_file = out; | 	out_file = out; | ||||||
|  |  | ||||||
| 	/* Allocate all global buffers (for DYN_ALLOC option) */ | 	/* Allocate all global buffers (for DYN_ALLOC option) */ | ||||||
| 	window = xmalloc((size_t)(((2L*WSIZE)+1L)*sizeof(unsigned char))); | 	window = xmalloc((size_t) (((2L * WSIZE) + 1L) * sizeof(unsigned char))); | ||||||
| 	bytes_out = 0L; | 	bytes_out = 0L; | ||||||
|  |  | ||||||
| 	/* Create the crc table */ | 	/* Create the crc table */ | ||||||
| @@ -910,40 +919,35 @@ extern int inflate(FILE *in, FILE *out) | |||||||
|  *   The magic header has already been checked. The output buffer is cleared. |  *   The magic header has already been checked. The output buffer is cleared. | ||||||
|  * in, out: input and output file descriptors |  * in, out: input and output file descriptors | ||||||
|  */ |  */ | ||||||
| extern int unzip(FILE *l_in_file, FILE *l_out_file) | extern int unzip(FILE * l_in_file, FILE * l_out_file) | ||||||
| { | { | ||||||
| 	unsigned char buf[8];	/* extended local header */ | 	unsigned char buf[8];	/* extended local header */ | ||||||
| 	unsigned char flags;	/* compression flags */ | 	unsigned char flags;	/* compression flags */ | ||||||
| 	typedef void (*sig_type) (int); | 	typedef void (*sig_type) (int); | ||||||
| 	unsigned short i; | 	unsigned short i; | ||||||
| 	unsigned char magic [2]; | 	unsigned char magic[2]; | ||||||
|  |  | ||||||
| 	if (signal(SIGINT, SIG_IGN) != SIG_IGN) { | 	if (signal(SIGINT, SIG_IGN) != SIG_IGN) { | ||||||
| 		(void) signal(SIGINT, (sig_type) abort_gzip); | 		(void) signal(SIGINT, (sig_type) abort_gzip); | ||||||
| 	} | 	} | ||||||
| #ifdef SIGTERM |  | ||||||
| //	if (signal(SIGTERM, SIG_IGN) != SIG_IGN) { |  | ||||||
| //		(void) signal(SIGTERM, (sig_type) abort_gzip); |  | ||||||
| //	} |  | ||||||
| #endif |  | ||||||
| #ifdef SIGHUP | #ifdef SIGHUP | ||||||
| 	if (signal(SIGHUP, SIG_IGN) != SIG_IGN) { | 	if (signal(SIGHUP, SIG_IGN) != SIG_IGN) { | ||||||
| 		(void) signal(SIGHUP, (sig_type) abort_gzip); | 		(void) signal(SIGHUP, (sig_type) abort_gzip); | ||||||
| 	} | 	} | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 	magic [0] = fgetc(l_in_file); | 	magic[0] = fgetc(l_in_file); | ||||||
| 	magic [1] = fgetc(l_in_file); | 	magic[1] = fgetc(l_in_file); | ||||||
|  |  | ||||||
| #ifdef CONFIG_FEATURE_UNCOMPRESS | #ifdef CONFIG_FEATURE_UNCOMPRESS | ||||||
| 	/* Magic header for compress files, 1F 9d = \037\235 */ | 	/* Magic header for compress files, 1F 9d = \037\235 */ | ||||||
| 	if (( magic [0] == 0x1F ) && ( magic [1] == 0x9d)) { | 	if ((magic[0] == 0x1F) && (magic[1] == 0x9d)) { | ||||||
| 		return uncompress ( l_in_file, l_out_file ); | 		return uncompress(l_in_file, l_out_file); | ||||||
| 	} | 	} | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 	/* Magic header for gzip files, 1F 8B = \037\213 */ | 	/* Magic header for gzip files, 1F 8B = \037\213 */ | ||||||
| 	if (( magic [0] != 0x1F ) || ( magic [1] != 0x8b)) { | 	if ((magic[0] != 0x1F) || (magic[1] != 0x8b)) { | ||||||
| 		error_msg("Invalid gzip magic"); | 		error_msg("Invalid gzip magic"); | ||||||
| 		return EXIT_FAILURE; | 		return EXIT_FAILURE; | ||||||
| 	} | 	} | ||||||
| @@ -951,7 +955,7 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
| 	/* Check the compression method */ | 	/* Check the compression method */ | ||||||
| 	if (fgetc(l_in_file) != 8) { | 	if (fgetc(l_in_file) != 8) { | ||||||
| 		error_msg("Unknown compression method"); | 		error_msg("Unknown compression method"); | ||||||
| 		return(-1); | 		return (-1); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	flags = (unsigned char) fgetc(l_in_file); | 	flags = (unsigned char) fgetc(l_in_file); | ||||||
| @@ -963,7 +967,8 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
|  |  | ||||||
| 	if (flags & 0x04) { | 	if (flags & 0x04) { | ||||||
| 		/* bit 2 set: extra field present */ | 		/* bit 2 set: extra field present */ | ||||||
| 		const unsigned short extra = fgetc(l_in_file) + (fgetc(l_in_file) << 8); | 		const unsigned short extra = | ||||||
|  | 			fgetc(l_in_file) + (fgetc(l_in_file) << 8); | ||||||
|  |  | ||||||
| 		for (i = 0; i < extra; i++) { | 		for (i = 0; i < extra; i++) { | ||||||
| 			fgetc(l_in_file); | 			fgetc(l_in_file); | ||||||
| @@ -994,11 +999,14 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
| 	fread(buf, 1, 8, l_in_file); | 	fread(buf, 1, 8, l_in_file); | ||||||
|  |  | ||||||
| 	/* Validate decompression - crc */ | 	/* Validate decompression - crc */ | ||||||
| 	if ((unsigned int)((buf[0] | (buf[1] << 8)) |((buf[2] | (buf[3] << 8)) << 16)) != (crc ^ 0xffffffffL)) { | 	if ((unsigned int) ((buf[0] | (buf[1] << 8)) | | ||||||
|  | 						((buf[2] | (buf[3] << 8)) << 16)) != | ||||||
|  | 		(crc ^ 0xffffffffL)) { | ||||||
| 		error_msg("invalid compressed data--crc error"); | 		error_msg("invalid compressed data--crc error"); | ||||||
| 	} | 	} | ||||||
| 	/* Validate decompression - size */ | 	/* Validate decompression - size */ | ||||||
| 	if (((buf[4] | (buf[5] << 8)) |((buf[6] | (buf[7] << 8)) << 16)) != (unsigned long) bytes_out) { | 	if (((buf[4] | (buf[5] << 8)) | ((buf[6] | (buf[7] << 8)) << 16)) != | ||||||
|  | 		(unsigned long) bytes_out) { | ||||||
| 		error_msg("invalid compressed data--length error"); | 		error_msg("invalid compressed data--length error"); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -1011,7 +1019,8 @@ extern int unzip(FILE *l_in_file, FILE *l_out_file) | |||||||
| extern void gz_close(int gunzip_pid) | extern void gz_close(int gunzip_pid) | ||||||
| { | { | ||||||
| 	if (kill(gunzip_pid, SIGTERM) == -1) { | 	if (kill(gunzip_pid, SIGTERM) == -1) { | ||||||
| 		error_msg_and_die("***  Couldnt kill old gunzip process *** aborting"); | 		error_msg_and_die | ||||||
|  | 			("***  Couldnt kill old gunzip process *** aborting"); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (waitpid(gunzip_pid, NULL, 0) == -1) { | 	if (waitpid(gunzip_pid, NULL, 0) == -1) { | ||||||
|   | |||||||
							
								
								
									
										2799
									
								
								shell/ash.c
									
									
									
									
									
								
							
							
						
						
									
										2799
									
								
								shell/ash.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -54,13 +54,13 @@ static void klogd_signal(int sig) | |||||||
| { | { | ||||||
| 	klogctl(7, NULL, 0); | 	klogctl(7, NULL, 0); | ||||||
| 	klogctl(0, 0, 0); | 	klogctl(0, 0, 0); | ||||||
| 	//logMessage(0, "Kernel log daemon exiting."); | 	/* logMessage(0, "Kernel log daemon exiting."); */ | ||||||
| 	syslog_msg(LOG_DAEMON, 0, "Kernel log daemon exiting."); | 	syslog_msg(LOG_DAEMON, 0, "Kernel log daemon exiting."); | ||||||
| 	exit(TRUE); | 	exit(TRUE); | ||||||
| } | } | ||||||
|  |  | ||||||
| static void doKlogd (void) __attribute__ ((noreturn)); | static void doKlogd(void) __attribute__ ((noreturn)); | ||||||
| static void doKlogd (void) | static void doKlogd(void) | ||||||
| { | { | ||||||
| 	int priority = LOG_INFO; | 	int priority = LOG_INFO; | ||||||
| 	char log_buffer[4096]; | 	char log_buffer[4096]; | ||||||
| @@ -87,30 +87,32 @@ static void doKlogd (void) | |||||||
|  |  | ||||||
| 			if (errno == EINTR) | 			if (errno == EINTR) | ||||||
| 				continue; | 				continue; | ||||||
| 			snprintf(message, 79, "klogd: Error return from sys_sycall: %d - %s.\n",  | 			snprintf(message, 79, | ||||||
| 												errno, strerror(errno)); | 					 "klogd: Error return from sys_sycall: %d - %s.\n", errno, | ||||||
|  | 					 strerror(errno)); | ||||||
| 			syslog_msg(LOG_DAEMON, LOG_SYSLOG | LOG_ERR, message); | 			syslog_msg(LOG_DAEMON, LOG_SYSLOG | LOG_ERR, message); | ||||||
| 			exit(1); | 			exit(1); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		/* klogctl buffer parsing modelled after code in dmesg.c */ | 		/* klogctl buffer parsing modelled after code in dmesg.c */ | ||||||
| 		start=&log_buffer[0]; | 		start = &log_buffer[0]; | ||||||
| 		lastc='\0'; | 		lastc = '\0'; | ||||||
| 		for (i=0; i<n; i++) { | 		for (i = 0; i < n; i++) { | ||||||
| 			if (lastc == '\0' && log_buffer[i] == '<') { | 			if (lastc == '\0' && log_buffer[i] == '<') { | ||||||
| 				priority = 0; | 				priority = 0; | ||||||
| 				i++; | 				i++; | ||||||
| 				while (isdigit(log_buffer[i])) { | 				while (isdigit(log_buffer[i])) { | ||||||
| 					priority = priority*10+(log_buffer[i]-'0'); | 					priority = priority * 10 + (log_buffer[i] - '0'); | ||||||
| 					i++; | 					i++; | ||||||
| 				} | 				} | ||||||
| 				if (log_buffer[i] == '>') i++; | 				if (log_buffer[i] == '>') | ||||||
|  | 					i++; | ||||||
| 				start = &log_buffer[i]; | 				start = &log_buffer[i]; | ||||||
| 			} | 			} | ||||||
| 			if (log_buffer[i] == '\n') { | 			if (log_buffer[i] == '\n') { | ||||||
| 				log_buffer[i] = '\0';	/* zero terminate this message */ | 				log_buffer[i] = '\0';	/* zero terminate this message */ | ||||||
| 				syslog_msg(LOG_DAEMON, LOG_KERN | priority, start); | 				syslog_msg(LOG_DAEMON, LOG_KERN | priority, start); | ||||||
| 				start = &log_buffer[i+1]; | 				start = &log_buffer[i + 1]; | ||||||
| 				priority = LOG_INFO; | 				priority = LOG_INFO; | ||||||
| 			} | 			} | ||||||
| 			lastc = log_buffer[i]; | 			lastc = log_buffer[i]; | ||||||
|   | |||||||
| @@ -81,13 +81,13 @@ enum { | |||||||
| static int use_loop = FALSE; | static int use_loop = FALSE; | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| extern int mount (__const char *__special_file, __const char *__dir, | extern int mount(__const char *__special_file, __const char *__dir, | ||||||
| 				 __const char *__fstype, unsigned long int __rwflag, | 				 __const char *__fstype, unsigned long int __rwflag, | ||||||
| 				 __const void *__data); | 				 __const void *__data); | ||||||
| extern int umount (__const char *__special_file); | extern int umount(__const char *__special_file); | ||||||
| extern int umount2 (__const char *__special_file, int __flags); | extern int umount2(__const char *__special_file, int __flags); | ||||||
|  |  | ||||||
| extern int sysfs( int option, unsigned int fs_index, char * buf); | extern int sysfs(int option, unsigned int fs_index, char *buf); | ||||||
|  |  | ||||||
| extern const char mtab_file[];	/* Defined in utility.c */ | extern const char mtab_file[];	/* Defined in utility.c */ | ||||||
|  |  | ||||||
| @@ -125,14 +125,14 @@ do_mount(char *specialfile, char *dir, char *filesystemtype, | |||||||
| 		 char *mtab_opts, int mount_all) | 		 char *mtab_opts, int mount_all) | ||||||
| { | { | ||||||
| 	int status = 0; | 	int status = 0; | ||||||
|  |  | ||||||
| #if defined CONFIG_FEATURE_MOUNT_LOOP | #if defined CONFIG_FEATURE_MOUNT_LOOP | ||||||
| 	char *lofile = NULL; | 	char *lofile = NULL; | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 	if (! fakeIt) | 	if (!fakeIt) { | ||||||
| 	{ |  | ||||||
| #if defined CONFIG_FEATURE_MOUNT_LOOP | #if defined CONFIG_FEATURE_MOUNT_LOOP | ||||||
| 		if (use_loop==TRUE) { | 		if (use_loop == TRUE) { | ||||||
| 			int loro = flags & MS_RDONLY; | 			int loro = flags & MS_RDONLY; | ||||||
|  |  | ||||||
| 			lofile = specialfile; | 			lofile = specialfile; | ||||||
| @@ -152,8 +152,10 @@ do_mount(char *specialfile, char *dir, char *filesystemtype, | |||||||
| #endif | #endif | ||||||
| 		status = mount(specialfile, dir, filesystemtype, flags, string_flags); | 		status = mount(specialfile, dir, filesystemtype, flags, string_flags); | ||||||
| 		if (status < 0 && errno == EROFS) { | 		if (status < 0 && errno == EROFS) { | ||||||
| 			error_msg("%s is write-protected, mounting read-only", specialfile); | 			error_msg("%s is write-protected, mounting read-only", | ||||||
| 			status = mount(specialfile, dir, filesystemtype, flags |= MS_RDONLY, string_flags); | 					  specialfile); | ||||||
|  | 			status = mount(specialfile, dir, filesystemtype, flags |= | ||||||
|  | 						   MS_RDONLY, string_flags); | ||||||
| 		} | 		} | ||||||
| 		/* Don't whine about already mounted filesystems when mounting all. */ | 		/* Don't whine about already mounted filesystems when mounting all. */ | ||||||
| 		if (status < 0 && errno == EBUSY && mount_all) | 		if (status < 0 && errno == EBUSY && mount_all) | ||||||
| @@ -162,11 +164,11 @@ do_mount(char *specialfile, char *dir, char *filesystemtype, | |||||||
|  |  | ||||||
|  |  | ||||||
| 	/* If the mount was sucessful, do anything needed, then return TRUE */ | 	/* If the mount was sucessful, do anything needed, then return TRUE */ | ||||||
| 	if (status == 0 || fakeIt==TRUE) { | 	if (status == 0 || fakeIt == TRUE) { | ||||||
|  |  | ||||||
| #if defined CONFIG_FEATURE_MTAB_SUPPORT | #if defined CONFIG_FEATURE_MTAB_SUPPORT | ||||||
| 		if (useMtab) { | 		if (useMtab) { | ||||||
| 			erase_mtab(specialfile);	// Clean any stale entries | 			erase_mtab(specialfile);	/* Clean any stale entries */ | ||||||
| 			write_mtab(specialfile, dir, filesystemtype, flags, mtab_opts); | 			write_mtab(specialfile, dir, filesystemtype, flags, mtab_opts); | ||||||
| 		} | 		} | ||||||
| #endif | #endif | ||||||
| @@ -190,13 +192,12 @@ do_mount(char *specialfile, char *dir, char *filesystemtype, | |||||||
|  |  | ||||||
| static void paste_str(char **s1, const char *s2) | static void paste_str(char **s1, const char *s2) | ||||||
| { | { | ||||||
| 	*s1 = xrealloc(*s1, strlen(*s1)+strlen(s2)+1); | 	*s1 = xrealloc(*s1, strlen(*s1) + strlen(s2) + 1); | ||||||
| 	strcat(*s1, s2); | 	strcat(*s1, s2); | ||||||
| } | } | ||||||
|  |  | ||||||
| /* Seperate standard mount options from the nonstandard string options */ | /* Seperate standard mount options from the nonstandard string options */ | ||||||
| static void | static void parse_mount_options(char *options, int *flags, char **strflags) | ||||||
| parse_mount_options(char *options, int *flags, char **strflags) |  | ||||||
| { | { | ||||||
| 	while (options) { | 	while (options) { | ||||||
| 		int gotone = FALSE; | 		int gotone = FALSE; | ||||||
| @@ -222,7 +223,7 @@ parse_mount_options(char *options, int *flags, char **strflags) | |||||||
| 			gotone = TRUE; | 			gotone = TRUE; | ||||||
| 		} | 		} | ||||||
| #endif | #endif | ||||||
| 		if (! gotone) { | 		if (!gotone) { | ||||||
| 			if (**strflags)	/* have previous parsed options */ | 			if (**strflags)	/* have previous parsed options */ | ||||||
| 				paste_str(strflags, ","); | 				paste_str(strflags, ","); | ||||||
| 			paste_str(strflags, options); | 			paste_str(strflags, options); | ||||||
| @@ -245,17 +246,20 @@ mount_one(char *blockDevice, char *directory, char *filesystemType, | |||||||
|  |  | ||||||
| #if defined CONFIG_FEATURE_USE_DEVPS_PATCH | #if defined CONFIG_FEATURE_USE_DEVPS_PATCH | ||||||
| 	if (strcmp(filesystemType, "auto") == 0) { | 	if (strcmp(filesystemType, "auto") == 0) { | ||||||
| 		static const char *noauto_array[] = { "tmpfs", "shm", "proc", "ramfs", "devpts", "devfs", "usbdevfs", 0 }; | 		static const char *noauto_array[] = | ||||||
|  | 			{ "tmpfs", "shm", "proc", "ramfs", "devpts", "devfs", "usbdevfs", | ||||||
|  | 0 }; | ||||||
| 		const char **noauto_fstype; | 		const char **noauto_fstype; | ||||||
| 		const int num_of_filesystems = sysfs(3, 0, 0); | 		const int num_of_filesystems = sysfs(3, 0, 0); | ||||||
| 		char buf[255]; | 		char buf[255]; | ||||||
| 		int i=0; | 		int i = 0; | ||||||
|  |  | ||||||
| 		filesystemType=buf; | 		filesystemType = buf; | ||||||
|  |  | ||||||
| 		while(i < num_of_filesystems) { | 		while (i < num_of_filesystems) { | ||||||
| 			sysfs(2, i++, filesystemType); | 			sysfs(2, i++, filesystemType); | ||||||
| 			for (noauto_fstype = noauto_array; *noauto_fstype; noauto_fstype++) { | 			for (noauto_fstype = noauto_array; *noauto_fstype; | ||||||
|  | 				 noauto_fstype++) { | ||||||
| 				if (!strcmp(filesystemType, *noauto_fstype)) { | 				if (!strcmp(filesystemType, *noauto_fstype)) { | ||||||
| 					break; | 					break; | ||||||
| 				} | 				} | ||||||
| @@ -275,26 +279,27 @@ mount_one(char *blockDevice, char *directory, char *filesystemType, | |||||||
| 		FILE *f; | 		FILE *f; | ||||||
| 		int read_proc = 0; | 		int read_proc = 0; | ||||||
|  |  | ||||||
| 		f = fopen ( "/etc/filesystems", "r" ); | 		f = fopen("/etc/filesystems", "r"); | ||||||
|  |  | ||||||
| 		if ( f ) { | 		if (f) { | ||||||
| 			while ( fgets ( buf, sizeof( buf ), f )) { | 			while (fgets(buf, sizeof(buf), f)) { | ||||||
| 				if ( *buf == '*' ) | 				if (*buf == '*') | ||||||
| 					read_proc = 1; | 					read_proc = 1; | ||||||
| 				else if ( *buf == '#' ) | 				else if (*buf == '#') | ||||||
| 					continue; | 					continue; | ||||||
| 				else { | 				else { | ||||||
| 					filesystemType = buf; | 					filesystemType = buf; | ||||||
|  |  | ||||||
| 					// Add NULL termination to each line | 					/* Add NULL termination to each line */ | ||||||
| 					while (*filesystemType && !isspace ( *filesystemType )) | 					while (*filesystemType && !isspace(*filesystemType)) | ||||||
| 						filesystemType++; | 						filesystemType++; | ||||||
| 					*filesystemType = '\0'; | 					*filesystemType = '\0'; | ||||||
|  |  | ||||||
| 					filesystemType = buf; | 					filesystemType = buf; | ||||||
|  |  | ||||||
| 					if ( xstrlen ( filesystemType )) { | 					if (xstrlen(filesystemType)) { | ||||||
| 						status = do_mount(blockDevice, directory, filesystemType, | 						status = | ||||||
|  | 							do_mount(blockDevice, directory, filesystemType, | ||||||
| 									 flags | MS_MGC_VAL, string_flags, | 									 flags | MS_MGC_VAL, string_flags, | ||||||
| 									 useMtab, fakeIt, mtab_opts, mount_all); | 									 useMtab, fakeIt, mtab_opts, mount_all); | ||||||
| 						if (status) | 						if (status) | ||||||
| @@ -303,23 +308,23 @@ mount_one(char *blockDevice, char *directory, char *filesystemType, | |||||||
|  |  | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 			fclose ( f ); | 			fclose(f); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if (( !f || read_proc ) && !status ) { | 		if ((!f || read_proc) && !status) { | ||||||
| 			f = xfopen("/proc/filesystems", "r"); | 			f = xfopen("/proc/filesystems", "r"); | ||||||
|  |  | ||||||
| 			while (fgets(buf, sizeof(buf), f) != NULL) { | 			while (fgets(buf, sizeof(buf), f) != NULL) { | ||||||
| 				filesystemType = buf; | 				filesystemType = buf; | ||||||
| 				if (*filesystemType == '\t') {	// Not a nodev filesystem | 				if (*filesystemType == '\t') {	/* Not a nodev filesystem */ | ||||||
|  |  | ||||||
| 					// Add NULL termination to each line | 					/* Add NULL termination to each line */ | ||||||
| 					while (*filesystemType && *filesystemType != '\n') | 					while (*filesystemType && *filesystemType != '\n') | ||||||
| 						filesystemType++; | 						filesystemType++; | ||||||
| 					*filesystemType = '\0'; | 					*filesystemType = '\0'; | ||||||
|  |  | ||||||
| 					filesystemType = buf; | 					filesystemType = buf; | ||||||
| 					filesystemType++;	// hop past tab | 					filesystemType++;	/* hop past tab */ | ||||||
|  |  | ||||||
| 					status = do_mount(blockDevice, directory, filesystemType, | 					status = do_mount(blockDevice, directory, filesystemType, | ||||||
| 									  flags | MS_MGC_VAL, string_flags, | 									  flags | MS_MGC_VAL, string_flags, | ||||||
| @@ -338,7 +343,7 @@ mount_one(char *blockDevice, char *directory, char *filesystemType, | |||||||
| 						  fakeIt, mtab_opts, mount_all); | 						  fakeIt, mtab_opts, mount_all); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (! status) { | 	if (!status) { | ||||||
| 		if (whineOnErrors) { | 		if (whineOnErrors) { | ||||||
| 			perror_msg("Mounting %s on %s failed", blockDevice, directory); | 			perror_msg("Mounting %s on %s failed", blockDevice, directory); | ||||||
| 		} | 		} | ||||||
| @@ -361,18 +366,19 @@ static void show_mounts(char *onlytype) | |||||||
|  |  | ||||||
| 	/* How many mounted filesystems?  We need to know to  | 	/* How many mounted filesystems?  We need to know to  | ||||||
| 	 * allocate enough space for later... */ | 	 * allocate enough space for later... */ | ||||||
| 	numfilesystems = ioctl (fd, DEVMTAB_COUNT_MOUNTS); | 	numfilesystems = ioctl(fd, DEVMTAB_COUNT_MOUNTS); | ||||||
| 	if (numfilesystems<0) | 	if (numfilesystems < 0) | ||||||
| 		perror_msg_and_die( "\nDEVMTAB_COUNT_MOUNTS"); | 		perror_msg_and_die("\nDEVMTAB_COUNT_MOUNTS"); | ||||||
| 	mntentlist = (struct k_mntent *) xcalloc ( numfilesystems, sizeof(struct k_mntent)); | 	mntentlist = | ||||||
|  | 		(struct k_mntent *) xcalloc(numfilesystems, sizeof(struct k_mntent)); | ||||||
|  |  | ||||||
| 	/* Grab the list of mounted filesystems */ | 	/* Grab the list of mounted filesystems */ | ||||||
| 	if (ioctl (fd, DEVMTAB_GET_MOUNTS, mntentlist)<0) | 	if (ioctl(fd, DEVMTAB_GET_MOUNTS, mntentlist) < 0) | ||||||
| 		perror_msg_and_die( "\nDEVMTAB_GET_MOUNTS"); | 		perror_msg_and_die("\nDEVMTAB_GET_MOUNTS"); | ||||||
|  |  | ||||||
| 	for( i = 0 ; i < numfilesystems ; i++) { | 	for (i = 0; i < numfilesystems; i++) { | ||||||
| 		if ( !onlytype || ( strcmp ( mntentlist[i].mnt_type, onlytype ) == 0 )) { | 		if (!onlytype || (strcmp(mntentlist[i].mnt_type, onlytype) == 0)) { | ||||||
| 			printf( "%s %s %s %s %d %d\n", mntentlist[i].mnt_fsname, | 			printf("%s %s %s %s %d %d\n", mntentlist[i].mnt_fsname, | ||||||
| 				   mntentlist[i].mnt_dir, mntentlist[i].mnt_type, | 				   mntentlist[i].mnt_dir, mntentlist[i].mnt_type, | ||||||
| 				   mntentlist[i].mnt_opts, mntentlist[i].mnt_freq, | 				   mntentlist[i].mnt_opts, mntentlist[i].mnt_freq, | ||||||
| 				   mntentlist[i].mnt_passno); | 				   mntentlist[i].mnt_passno); | ||||||
| @@ -381,7 +387,7 @@ static void show_mounts(char *onlytype) | |||||||
| #ifdef CONFIG_FEATURE_CLEAN_UP | #ifdef CONFIG_FEATURE_CLEAN_UP | ||||||
| 	/* Don't bother to close files or free memory.  Exit  | 	/* Don't bother to close files or free memory.  Exit  | ||||||
| 	 * does that automagically, so we can save a few bytes */ | 	 * does that automagically, so we can save a few bytes */ | ||||||
| 	free( mntentlist); | 	free(mntentlist); | ||||||
| 	close(fd); | 	close(fd); | ||||||
| #endif | #endif | ||||||
| 	exit(EXIT_SUCCESS); | 	exit(EXIT_SUCCESS); | ||||||
| @@ -393,15 +399,16 @@ static void show_mounts(char *onlytype) | |||||||
|  |  | ||||||
| 		while ((m = getmntent(mountTable)) != 0) { | 		while ((m = getmntent(mountTable)) != 0) { | ||||||
| 			char *blockDevice = m->mnt_fsname; | 			char *blockDevice = m->mnt_fsname; | ||||||
|  |  | ||||||
| 			if (strcmp(blockDevice, "/dev/root") == 0) { | 			if (strcmp(blockDevice, "/dev/root") == 0) { | ||||||
| 				blockDevice = find_real_root_device_name(blockDevice); | 				blockDevice = find_real_root_device_name(blockDevice); | ||||||
| 			} | 			} | ||||||
| 			if ( !onlytype || ( strcmp ( m-> mnt_type, onlytype ) == 0 )) { | 			if (!onlytype || (strcmp(m->mnt_type, onlytype) == 0)) { | ||||||
| 				printf("%s on %s type %s (%s)\n", blockDevice, m->mnt_dir, | 				printf("%s on %s type %s (%s)\n", blockDevice, m->mnt_dir, | ||||||
| 					   m->mnt_type, m->mnt_opts); | 					   m->mnt_type, m->mnt_opts); | ||||||
| 			} | 			} | ||||||
| #ifdef CONFIG_FEATURE_CLEAN_UP | #ifdef CONFIG_FEATURE_CLEAN_UP | ||||||
| 			if(blockDevice != m->mnt_fsname) | 			if (blockDevice != m->mnt_fsname) | ||||||
| 				free(blockDevice); | 				free(blockDevice); | ||||||
| #endif | #endif | ||||||
| 		} | 		} | ||||||
| @@ -470,6 +477,7 @@ extern int mount_main(int argc, char **argv) | |||||||
| 		/* if device is a filename get its real path */ | 		/* if device is a filename get its real path */ | ||||||
| 		if (stat(argv[optind], &statbuf) == 0) { | 		if (stat(argv[optind], &statbuf) == 0) { | ||||||
| 			char *tmp = simplify_path(argv[optind]); | 			char *tmp = simplify_path(argv[optind]); | ||||||
|  |  | ||||||
| 			safe_strncpy(device, tmp, PATH_MAX); | 			safe_strncpy(device, tmp, PATH_MAX); | ||||||
| 		} else { | 		} else { | ||||||
| 			safe_strncpy(device, argv[optind], PATH_MAX); | 			safe_strncpy(device, argv[optind], PATH_MAX); | ||||||
| @@ -483,23 +491,24 @@ extern int mount_main(int argc, char **argv) | |||||||
| 		f = setmntent("/etc/fstab", "r"); | 		f = setmntent("/etc/fstab", "r"); | ||||||
|  |  | ||||||
| 		if (f == NULL) | 		if (f == NULL) | ||||||
| 			perror_msg_and_die( "\nCannot read /etc/fstab"); | 			perror_msg_and_die("\nCannot read /etc/fstab"); | ||||||
|  |  | ||||||
| 		while ((m = getmntent(f)) != NULL) { | 		while ((m = getmntent(f)) != NULL) { | ||||||
| 			if (! all && optind + 1 == argc && ( | 			if (!all && optind + 1 == argc && ((strcmp(device, m->mnt_fsname) | ||||||
| 				(strcmp(device, m->mnt_fsname) != 0) && | 												!= 0) | ||||||
| 				(strcmp(device, m->mnt_dir) != 0) ) ) { | 											   && (strcmp(device, m->mnt_dir) | ||||||
|  | 												   != 0))) { | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			if (all && (							// If we're mounting 'all' | 			if (all && (	/* If we're mounting 'all' */ | ||||||
| 				(strstr(m->mnt_opts, "noauto")) ||	// and the file system isn't noauto, | 						   (strstr(m->mnt_opts, "noauto")) ||	/* and the file system isn't noauto, */ | ||||||
| 				(strstr(m->mnt_type, "swap")) ||	// and isn't swap or nfs, then mount it | 						   (strstr(m->mnt_type, "swap")) ||	/* and isn't swap or nfs, then mount it */ | ||||||
| 				(strstr(m->mnt_type, "nfs")) ) ) { | 						   (strstr(m->mnt_type, "nfs")))) { | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			if (all || flags == 0) {	// Allow single mount to override fstab flags | 			if (all || flags == 0) {	/* Allow single mount to override fstab flags */ | ||||||
| 				flags = 0; | 				flags = 0; | ||||||
| 				string_flags[0] = 0; | 				string_flags[0] = 0; | ||||||
| 				parse_mount_options(m->mnt_opts, &flags, &string_flags); | 				parse_mount_options(m->mnt_opts, &flags, &string_flags); | ||||||
| @@ -508,13 +517,13 @@ extern int mount_main(int argc, char **argv) | |||||||
| 			strcpy(device, m->mnt_fsname); | 			strcpy(device, m->mnt_fsname); | ||||||
| 			strcpy(directory, m->mnt_dir); | 			strcpy(directory, m->mnt_dir); | ||||||
| 			filesystemType = xstrdup(m->mnt_type); | 			filesystemType = xstrdup(m->mnt_type); | ||||||
| singlemount:			 | 		  singlemount: | ||||||
| 			extra_opts = string_flags; | 			extra_opts = string_flags; | ||||||
| 			rc = EXIT_SUCCESS; | 			rc = EXIT_SUCCESS; | ||||||
| #ifdef CONFIG_NFSMOUNT | #ifdef CONFIG_NFSMOUNT | ||||||
| 			if (strchr(device, ':') != NULL) { | 			if (strchr(device, ':') != NULL) { | ||||||
| 				filesystemType = "nfs"; | 				filesystemType = "nfs"; | ||||||
| 				if (nfsmount (device, directory, &flags, &extra_opts, | 				if (nfsmount(device, directory, &flags, &extra_opts, | ||||||
| 							 &string_flags, 1)) { | 							 &string_flags, 1)) { | ||||||
| 					perror_msg("nfsmount failed"); | 					perror_msg("nfsmount failed"); | ||||||
| 					rc = EXIT_FAILURE; | 					rc = EXIT_FAILURE; | ||||||
| @@ -522,16 +531,17 @@ singlemount: | |||||||
| 			} | 			} | ||||||
| #endif | #endif | ||||||
| 			if (!mount_one(device, directory, filesystemType, flags, | 			if (!mount_one(device, directory, filesystemType, flags, | ||||||
| 					string_flags, useMtab, fakeIt, extra_opts, TRUE, all)) | 						   string_flags, useMtab, fakeIt, extra_opts, TRUE, | ||||||
|  | 						   all)) | ||||||
| 				rc = EXIT_FAILURE; | 				rc = EXIT_FAILURE; | ||||||
|  |  | ||||||
| 			if (! all) | 			if (!all) | ||||||
| 				break; | 				break; | ||||||
| 		} | 		} | ||||||
| 		if (f) | 		if (f) | ||||||
| 			endmntent(f); | 			endmntent(f); | ||||||
|  |  | ||||||
| 		if (! all && f && m == NULL) | 		if (!all && f && m == NULL) | ||||||
| 			fprintf(stderr, "Can't find %s in /etc/fstab\n", device); | 			fprintf(stderr, "Can't find %s in /etc/fstab\n", device); | ||||||
|  |  | ||||||
| 		return rc; | 		return rc; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user