Imported Upstream version 1.5
[debian/gzip] / unlzw.c
diff --git a/unlzw.c b/unlzw.c
index 8f8cbeee16fa007762ae842d76e1ad1398c6066b..63f941c6213533bf3140ce642bc16d5bfe3e02a9 100644 (file)
--- a/unlzw.c
+++ b/unlzw.c
@@ -121,19 +121,19 @@ union     bytes {
     long  word;
     struct {
 #if BYTEORDER == 4321
-       char_type       b1;
-       char_type       b2;
-       char_type       b3;
-       char_type       b4;
+        char_type      b1;
+        char_type      b2;
+        char_type      b3;
+        char_type      b4;
 #else
 #if BYTEORDER == 1234
-       char_type       b4;
-       char_type       b3;
-       char_type       b2;
-       char_type       b1;
+        char_type      b4;
+        char_type      b3;
+        char_type      b2;
+        char_type      b1;
 #else
 #      undef   BYTEORDER
-       int  dummy;
+        int  dummy;
 #endif
 #endif
     } bytes;
@@ -206,18 +206,18 @@ int unlzw(in, out)
     maxbits = get_byte();
     block_mode = maxbits & BLOCK_MODE;
     if ((maxbits & LZW_RESERVED) != 0) {
-       WARN((stderr, "\n%s: %s: warning, unknown flags 0x%x\n",
-             program_name, ifname, maxbits & LZW_RESERVED));
+        WARN((stderr, "\n%s: %s: warning, unknown flags 0x%x\n",
+              program_name, ifname, maxbits & LZW_RESERVED));
     }
     maxbits &= BIT_MASK;
     maxmaxcode = MAXCODE(maxbits);
 
     if (maxbits > BITS) {
-       fprintf(stderr,
-               "\n%s: %s: compressed with %d bits, can only handle %d bits\n",
-               program_name, ifname, maxbits, BITS);
-       exit_code = ERROR;
-       return ERROR;
+        fprintf(stderr,
+                "\n%s: %s: compressed with %d bits, can only handle %d bits\n",
+                program_name, ifname, maxbits, BITS);
+        exit_code = ERROR;
+        return ERROR;
     }
     rsize = insize;
     maxcode = MAXCODE(n_bits = INIT_BITS)-1;
@@ -232,141 +232,141 @@ int unlzw(in, out)
     clear_tab_prefixof(); /* Initialize the first 256 entries in the table. */
 
     for (code = 255 ; code >= 0 ; --code) {
-       tab_suffixof(code) = (char_type)code;
+        tab_suffixof(code) = (char_type)code;
     }
     do {
-       REG1 int i;
-       int  e;
-       int  o;
+        REG1 int i;
+        int  e;
+        int  o;
 
     resetbuf:
-       o = posbits >> 3;
-       e = o <= insize ? insize - o : 0;
-
-       for (i = 0 ; i < e ; ++i) {
-           inbuf[i] = inbuf[i+o];
-       }
-       insize = e;
-       posbits = 0;
-
-       if (insize < INBUF_EXTRA) {
-           rsize = read_buffer (in, (char *) inbuf + insize, INBUFSIZ);
-           if (rsize == -1) {
-               read_error();
-           }
-           insize += rsize;
-           bytes_in += (off_t)rsize;
-       }
-       inbits = ((rsize != 0) ? ((long)insize - insize%n_bits)<<3 :
-                 ((long)insize<<3)-(n_bits-1));
-
-       while (inbits > posbits) {
-           if (free_ent > maxcode) {
-               posbits = ((posbits-1) +
-                          ((n_bits<<3)-(posbits-1+(n_bits<<3))%(n_bits<<3)));
-               ++n_bits;
-               if (n_bits == maxbits) {
-                   maxcode = maxmaxcode;
-               } else {
-                   maxcode = MAXCODE(n_bits)-1;
-               }
-               bitmask = (1<<n_bits)-1;
-               goto resetbuf;
-           }
-           input(inbuf,posbits,code,n_bits,bitmask);
-           Tracev((stderr, "%d ", code));
-
-           if (oldcode == -1) {
-               if (256 <= code)
-                 gzip_error ("corrupt input.");
-               outbuf[outpos++] = (char_type)(finchar = (int)(oldcode=code));
-               continue;
-           }
-           if (code == CLEAR && block_mode) {
-               clear_tab_prefixof();
-               free_ent = FIRST - 1;
-               posbits = ((posbits-1) +
-                          ((n_bits<<3)-(posbits-1+(n_bits<<3))%(n_bits<<3)));
-               maxcode = MAXCODE(n_bits = INIT_BITS)-1;
-               bitmask = (1<<n_bits)-1;
-               goto resetbuf;
-           }
-           incode = code;
-           stackp = de_stack;
-
-           if (code >= free_ent) { /* Special case for KwKwK string. */
-               if (code > free_ent) {
+        o = posbits >> 3;
+        e = o <= insize ? insize - o : 0;
+
+        for (i = 0 ; i < e ; ++i) {
+            inbuf[i] = inbuf[i+o];
+        }
+        insize = e;
+        posbits = 0;
+
+        if (insize < INBUF_EXTRA) {
+            rsize = read_buffer (in, (char *) inbuf + insize, INBUFSIZ);
+            if (rsize == -1) {
+                read_error();
+            }
+            insize += rsize;
+            bytes_in += (off_t)rsize;
+        }
+        inbits = ((rsize != 0) ? ((long)insize - insize%n_bits)<<3 :
+                  ((long)insize<<3)-(n_bits-1));
+
+        while (inbits > posbits) {
+            if (free_ent > maxcode) {
+                posbits = ((posbits-1) +
+                           ((n_bits<<3)-(posbits-1+(n_bits<<3))%(n_bits<<3)));
+                ++n_bits;
+                if (n_bits == maxbits) {
+                    maxcode = maxmaxcode;
+                } else {
+                    maxcode = MAXCODE(n_bits)-1;
+                }
+                bitmask = (1<<n_bits)-1;
+                goto resetbuf;
+            }
+            input(inbuf,posbits,code,n_bits,bitmask);
+            Tracev((stderr, "%d ", code));
+
+            if (oldcode == -1) {
+                if (256 <= code)
+                  gzip_error ("corrupt input.");
+                outbuf[outpos++] = (char_type)(finchar = (int)(oldcode=code));
+                continue;
+            }
+            if (code == CLEAR && block_mode) {
+                clear_tab_prefixof();
+                free_ent = FIRST - 1;
+                posbits = ((posbits-1) +
+                           ((n_bits<<3)-(posbits-1+(n_bits<<3))%(n_bits<<3)));
+                maxcode = MAXCODE(n_bits = INIT_BITS)-1;
+                bitmask = (1<<n_bits)-1;
+                goto resetbuf;
+            }
+            incode = code;
+            stackp = de_stack;
+
+            if (code >= free_ent) { /* Special case for KwKwK string. */
+                if (code > free_ent) {
 #ifdef DEBUG
-                   char_type *p;
-
-                   posbits -= n_bits;
-                   p = &inbuf[posbits>>3];
-                   fprintf(stderr,
-                           "code:%ld free_ent:%ld n_bits:%d insize:%u\n",
-                           code, free_ent, n_bits, insize);
-                   fprintf(stderr,
-                           "posbits:%ld inbuf:%02X %02X %02X %02X %02X\n",
-                           posbits, p[-1],p[0],p[1],p[2],p[3]);
+                    char_type *p;
+
+                    posbits -= n_bits;
+                    p = &inbuf[posbits>>3];
+                    fprintf(stderr,
+                            "code:%ld free_ent:%ld n_bits:%d insize:%u\n",
+                            code, free_ent, n_bits, insize);
+                    fprintf(stderr,
+                            "posbits:%ld inbuf:%02X %02X %02X %02X %02X\n",
+                            posbits, p[-1],p[0],p[1],p[2],p[3]);
 #endif
-                   if (!test && outpos > 0) {
-                       write_buf(out, (char*)outbuf, outpos);
-                       bytes_out += (off_t)outpos;
-                   }
-                   gzip_error (to_stdout
-                               ? "corrupt input."
-                               : "corrupt input. Use zcat to recover some data.");
-               }
-               *--stackp = (char_type)finchar;
-               code = oldcode;
-           }
-
-           while ((cmp_code_int)code >= (cmp_code_int)256) {
-               /* Generate output characters in reverse order */
-               *--stackp = tab_suffixof(code);
-               code = tab_prefixof(code);
-           }
-           *--stackp = (char_type)(finchar = tab_suffixof(code));
-
-           /* And put them out in forward order */
-           {
-               REG1 int        i;
-
-               if (outpos+(i = (de_stack-stackp)) >= OUTBUFSIZ) {
-                   do {
-                       if (i > OUTBUFSIZ-outpos) i = OUTBUFSIZ-outpos;
-
-                       if (i > 0) {
-                           memcpy(outbuf+outpos, stackp, i);
-                           outpos += i;
-                       }
-                       if (outpos >= OUTBUFSIZ) {
-                           if (!test) {
-                               write_buf(out, (char*)outbuf, outpos);
-                               bytes_out += (off_t)outpos;
-                           }
-                           outpos = 0;
-                       }
-                       stackp+= i;
-                   } while ((i = (de_stack-stackp)) > 0);
-               } else {
-                   memcpy(outbuf+outpos, stackp, i);
-                   outpos += i;
-               }
-           }
-
-           if ((code = free_ent) < maxmaxcode) { /* Generate the new entry. */
-
-               tab_prefixof(code) = (unsigned short)oldcode;
-               tab_suffixof(code) = (char_type)finchar;
-               free_ent = code+1;
-           }
-           oldcode = incode;   /* Remember previous code.      */
-       }
+                    if (!test && outpos > 0) {
+                        write_buf(out, (char*)outbuf, outpos);
+                        bytes_out += (off_t)outpos;
+                    }
+                    gzip_error (to_stdout
+                                ? "corrupt input."
+                                : "corrupt input. Use zcat to recover some data.");
+                }
+                *--stackp = (char_type)finchar;
+                code = oldcode;
+            }
+
+            while ((cmp_code_int)code >= (cmp_code_int)256) {
+                /* Generate output characters in reverse order */
+                *--stackp = tab_suffixof(code);
+                code = tab_prefixof(code);
+            }
+            *--stackp =        (char_type)(finchar = tab_suffixof(code));
+
+            /* And put them out in forward order */
+            {
+                REG1 int       i;
+
+                if (outpos+(i = (de_stack-stackp)) >= OUTBUFSIZ) {
+                    do {
+                        if (i > OUTBUFSIZ-outpos) i = OUTBUFSIZ-outpos;
+
+                        if (i > 0) {
+                            memcpy(outbuf+outpos, stackp, i);
+                            outpos += i;
+                        }
+                        if (outpos >= OUTBUFSIZ) {
+                            if (!test) {
+                                write_buf(out, (char*)outbuf, outpos);
+                                bytes_out += (off_t)outpos;
+                            }
+                            outpos = 0;
+                        }
+                        stackp+= i;
+                    } while ((i = (de_stack-stackp)) > 0);
+                } else {
+                    memcpy(outbuf+outpos, stackp, i);
+                    outpos += i;
+                }
+            }
+
+            if ((code = free_ent) < maxmaxcode) { /* Generate the new entry. */
+
+                tab_prefixof(code) = (unsigned short)oldcode;
+                tab_suffixof(code) = (char_type)finchar;
+                free_ent = code+1;
+            }
+            oldcode = incode;  /* Remember previous code.      */
+        }
     } while (rsize != 0);
 
     if (!test && outpos > 0) {
-       write_buf(out, (char*)outbuf, outpos);
-       bytes_out += (off_t)outpos;
+        write_buf(out, (char*)outbuf, outpos);
+        bytes_out += (off_t)outpos;
     }
     return OK;
 }