extern ushort left[], right[];
+/* utilities */
+#define MIN(a, b) (((a) > (b)) ? (b) : (a))
+
#include "prototypes.h"
void
extract(struct lzh_istream *rp, int to_file, struct lzh_header *h)
{
- int n;
FILE *outfile = NULL;
unsigned int crc;
char buf[MAXDICSIZ];
unsigned int slide_off = 0;
int slide_len = 0;
+ unsigned long remainder = h->origsize;
crc = INIT_CRC;
if (opts.method->dicbit != 0)
decode_start(rp);
- while (h->origsize != 0) {
- n = (uint) ((h->origsize > MAXDICSIZ) ? MAXDICSIZ : h->origsize);
+ while (remainder != 0) {
+ uint n = (uint)MIN(remainder, MAXDICSIZ);
if (opts.method->dicbit != 0)
decode(rp, n, buf, &slide_off, &slide_len);
else {
if (outfile != stdout && opts.quiet < 1) {
putc('.', stdout);
}
- h->origsize -= n;
+ remainder -= n;
}
}