Move compare_string_array to libbb
[oweals/busybox.git] / archival / gunzip.c
index ca7e343cc1b1207a48c5ff8f8b07e4d0bcabcad1..e9963a8d23fa40592efd32c8c846497874d2151a 100644 (file)
@@ -143,6 +143,11 @@ extern int gunzip_main(int argc, char **argv)
                        new_path = xstrdup(old_path);
 
                        extension = strrchr(new_path, '.');
+#ifdef CONFIG_FEATURE_GUNZIP_UNCOMPRESS
+                       if (extension && (strcmp(extension, ".Z") == 0)) {
+                               *extension = '\0';
+                       } else
+#endif
                        if (extension && (strcmp(extension, ".gz") == 0)) {
                                *extension = '\0';
                        } else if (extension && (strcmp(extension, ".tgz") == 0)) {
@@ -167,21 +172,23 @@ extern int gunzip_main(int argc, char **argv)
                        unsigned char magic2;
                        
                        magic2 = xread_char(src_fd);
-#ifdef CONFIG_FEATURE_UNCOMPRESS
+#ifdef CONFIG_FEATURE_GUNZIP_UNCOMPRESS
                        if (magic2 == 0x9d) {
-                               return(uncompress(src_fd, dst_fd));
+                               status = uncompress(src_fd, dst_fd);
                        } else 
 #endif
                                if (magic2 == 0x8b) {
                                        check_header_gzip(src_fd);
                                        status = inflate(src_fd, dst_fd);
                                        if (status != 0) {
-                                               error_msg("Error inflating");
+                                               error_msg_and_die("Error inflating");
                                        }
                                        check_trailer_gzip(src_fd);
                                } else {
-                                       error_msg_and_die("Invalid magic\n");
+                                       error_msg_and_die("Invalid magic");
                                }
+               } else {
+                       error_msg_and_die("Invalid magic");
                }
 
                if ((status != EXIT_SUCCESS) && (new_path)) {