Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-2-0]: src/usr.bin/gzip Pull up revision 1.5 (requested by mrg in ...



details:   https://anonhg.NetBSD.org/src/rev/6363a1f43f21
branches:  netbsd-2-0
changeset: 561230:6363a1f43f21
user:      tron <tron%NetBSD.org@localhost>
date:      Sun May 30 14:48:32 2004 +0000

description:
Pull up revision 1.5 (requested by mrg in ticket #420):
- fix "gzip -t" to not output anything by default.  PR#25507
- fix any decompression on corrupted gzip files.  PR#25508
- ask to overwrite files if we have a tty, rather than failing the
  operation.  PR#25509.
- clean up maybe_err()/maybe_warn(): use maybe_err() only for fatal
  errors.  maybe_warn() is for processing errors.  this allows
  "gzip -d file1.gz file2.gz" to decompress file2.gz even if file1.gz
  is corrupted, etc.
- change the internal compressor/decompressor API to return "-1" on
  failure, not 0.  this allows for 0-sized files to be decompressed
  correctly.

diffstat:

 usr.bin/gzip/unbzip2.c |  30 ++++++++++++++++++------------
 1 files changed, 18 insertions(+), 12 deletions(-)

diffs (79 lines):

diff -r 40e08fe5c51f -r 6363a1f43f21 usr.bin/gzip/unbzip2.c
--- a/usr.bin/gzip/unbzip2.c    Sun May 30 14:48:27 2004 +0000
+++ b/usr.bin/gzip/unbzip2.c    Sun May 30 14:48:32 2004 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: unbzip2.c,v 1.1.2.3 2004/04/29 04:48:40 jmc Exp $      */
+/*     $NetBSD: unbzip2.c,v 1.1.2.4 2004/05/30 14:48:32 tron Exp $     */
 
 /* This file is #included by gzip.c */
 
@@ -12,9 +12,9 @@
        static char     *inbuf, *outbuf;
 
        if (inbuf == NULL && (inbuf = malloc(BUFLEN)) == NULL)
-               maybe_err(1, "malloc");
+               maybe_err("malloc");
        if (outbuf == NULL && (outbuf = malloc(BUFLEN)) == NULL)
-               maybe_err(1, "malloc");
+               maybe_err("malloc");
 
        bzs.bzalloc = NULL;
        bzs.bzfree = NULL;
@@ -23,7 +23,7 @@
        end_of_file = 0;
        ret = BZ2_bzDecompressInit(&bzs, 0, 0);
        if (ret != BZ_OK)
-               maybe_errx(1, "bzip2 init");
+               maybe_errx("bzip2 init");
 
        /* Prepend. */
        bzs.avail_in = prelen;
@@ -36,7 +36,7 @@
                if (bzs.avail_in == 0 && !end_of_file) {
                        n = read(in, inbuf, BUFLEN);
                        if (n < 0)
-                               maybe_err(1, "read");
+                               maybe_err("read");
                        if (n == 0)
                                end_of_file = 1;
                        bzs.next_in = inbuf;
@@ -53,26 +53,32 @@
                case BZ_STREAM_END:
                case BZ_OK:
                        if (ret == BZ_OK && end_of_file)
-                               maybe_err(1, "read");
+                               maybe_err("read");
                        if (!tflag) {
                                n = write(out, outbuf, BUFLEN - bzs.avail_out);
                                if (n < 0)
-                                       maybe_err(1, "write");
+                                       maybe_err("write");
                        }
                        bytes_out += n;
                        break;
 
                case BZ_DATA_ERROR:
-                       maybe_errx(1, "bzip2 data integrity error");
+                       maybe_warn("bzip2 data integrity error");
+                       break;
+
                case BZ_DATA_ERROR_MAGIC:
-                       maybe_errx(1, "bzip2 magic number error");
+                       maybe_warn("bzip2 magic number error");
+                       break;
+
                case BZ_MEM_ERROR:
-                       maybe_errx(1, "bzip2 out of memory");
+                       maybe_warn("bzip2 out of memory");
+                       break;
+
                }
        }
 
-       if (BZ2_bzDecompressEnd(&bzs) != BZ_OK)
-               return (0);
+       if (ret != BZ_STREAM_END || BZ2_bzDecompressEnd(&bzs) != BZ_OK)
+               return (-1);
 
        return (bytes_out);
 }



Home | Main Index | Thread Index | Old Index