This commit was generated by cvs2svn to track changes on a CVS vendor
[unix-history] / gnu / usr.bin / gzip / unlzw.c
index 61c45fc..15d2a31 100644 (file)
@@ -7,7 +7,7 @@
  * to accommodate in-memory decompression.
  */
 
  * to accommodate in-memory decompression.
  */
 
-#ifndef lint
+#ifdef RCSID
 static char rcsid[] = "$Id: unlzw.c,v 0.15 1993/06/10 13:28:35 jloup Exp $";
 #endif
 
 static char rcsid[] = "$Id: unlzw.c,v 0.15 1993/06/10 13:28:35 jloup Exp $";
 #endif
 
@@ -281,8 +281,10 @@ int unlzw(in, out)
                goto resetbuf;
            }
            input(inbuf,posbits,code,n_bits,bitmask);
                goto resetbuf;
            }
            input(inbuf,posbits,code,n_bits,bitmask);
-           
+           Tracev((stderr, "%d ", code));
+
            if (oldcode == -1) {
            if (oldcode == -1) {
+               if (code >= 256) error("corrupt input.");
                outbuf[outpos++] = (char_type)(finchar = (int)(oldcode=code));
                continue;
            }
                outbuf[outpos++] = (char_type)(finchar = (int)(oldcode=code));
                continue;
            }
@@ -316,7 +318,8 @@ int unlzw(in, out)
                        write_buf(out, (char*)outbuf, outpos);
                        bytes_out += (ulg)outpos;
                    }
                        write_buf(out, (char*)outbuf, outpos);
                        bytes_out += (ulg)outpos;
                    }
-                   error("corrupt input. Use zcat to recover some data.");
+                   error(to_stdout ? "corrupt input." :
+                         "corrupt input. Use zcat to recover some data.");
                }
                *--stackp = (char_type)finchar;
                code = oldcode;
                }
                *--stackp = (char_type)finchar;
                code = oldcode;