Quiet mode, sometimes error messages arent wanted
authorGlenn L McGrath <bug1@ihug.co.nz>
Thu, 12 Jul 2001 10:24:57 +0000 (10:24 -0000)
committerGlenn L McGrath <bug1@ihug.co.nz>
Thu, 12 Jul 2001 10:24:57 +0000 (10:24 -0000)
include/libbb.h
libbb/libbb.h
libbb/unarchive.c

index 4a4b9191c094a8ec9b2785f46bc29715820a1bfa..224c561d558b12a2a6546d5c31ab3ae5a9f59733 100644 (file)
@@ -237,7 +237,8 @@ enum extract_functions_e {
        extract_control_tar_gz = 128,
        extract_unzip_only = 256,
        extract_unconditional = 512,
-       extract_create_leading_dirs = 1024
+       extract_create_leading_dirs = 1024,
+       extract_quiet = 2048
 };
 char *unarchive(FILE *src_stream, FILE *out_stream, file_header_t *(*get_header)(FILE *),
        const int extract_function, const char *prefix, char **extract_names);
index 4a4b9191c094a8ec9b2785f46bc29715820a1bfa..224c561d558b12a2a6546d5c31ab3ae5a9f59733 100644 (file)
@@ -237,7 +237,8 @@ enum extract_functions_e {
        extract_control_tar_gz = 128,
        extract_unzip_only = 256,
        extract_unconditional = 512,
-       extract_create_leading_dirs = 1024
+       extract_create_leading_dirs = 1024,
+       extract_quiet = 2048
 };
 char *unarchive(FILE *src_stream, FILE *out_stream, file_header_t *(*get_header)(FILE *),
        const int extract_function, const char *prefix, char **extract_names);
index d95f2cfc70e5e776a40d48cd48131d796b778c34..5c5bb49f3d095cc7d265e60f9eb24093527b22cd 100644 (file)
@@ -116,15 +116,19 @@ char *extract_archive(FILE *src_stream, FILE *out_stream, const file_header_t *f
                                        unlink(full_name); /* Directories might not be empty etc */
                                }
                        } else {
-                               error_msg("%s not created: newer or same age file exists", file_entry->name);
-                                       seek_sub_file(src_stream, file_entry->size);
+                               if ((function & extract_quiet) != extract_quiet) {
+                                       error_msg("%s not created: newer or same age file exists", file_entry->name);
+                               }
+                               seek_sub_file(src_stream, file_entry->size);
                                return (NULL);
                        }
                }
                if (function & extract_create_leading_dirs) { /* Create leading directories with default umask */
                        char *parent = dirname(full_name);
                        if (make_directory (parent, -1, FILEUTILS_RECUR) != 0) {
-                               error_msg("couldn't create leading directories");
+                               if ((function & extract_quiet) != extract_quiet) {
+                                       error_msg("couldn't create leading directories");
+                               }
                        }
                        free (parent);
                }
@@ -132,8 +136,10 @@ char *extract_archive(FILE *src_stream, FILE *out_stream, const file_header_t *f
                        case S_IFREG:
                                if (file_entry->link_name) { /* Found a cpio hard link */
                                        if (link(file_entry->link_name, full_name) != 0) {
-                                               perror_msg("Cannot link from %s to '%s'",
-                                                       file_entry->name, file_entry->link_name);
+                                               if ((function & extract_quiet) != extract_quiet) {
+                                                       perror_msg("Cannot link from %s to '%s'",
+                                                               file_entry->name, file_entry->link_name);
+                                               }
                                        }
                                } else {
                                        if ((dst_stream = wfopen(full_name, "w")) == NULL) {
@@ -148,13 +154,17 @@ char *extract_archive(FILE *src_stream, FILE *out_stream, const file_header_t *f
                        case S_IFDIR:
                                if (stat_res != 0) {
                                        if (mkdir(full_name, file_entry->mode) < 0) {
-                                               perror_msg("extract_archive: ");
+                                               if ((function & extract_quiet) != extract_quiet) {
+                                                       perror_msg("extract_archive: ");
+                                               }
                                        }
                                }
                                break;
                        case S_IFLNK:
                                if (symlink(file_entry->link_name, full_name) < 0) {
-                                       perror_msg("Cannot create symlink from %s to '%s'", file_entry->name, file_entry->link_name); 
+                                       if ((function & extract_quiet) != extract_quiet) {
+                                               perror_msg("Cannot create symlink from %s to '%s'", file_entry->name, file_entry->link_name);
+                                       }
                                        return NULL;
                                }
                                break;
@@ -163,7 +173,9 @@ char *extract_archive(FILE *src_stream, FILE *out_stream, const file_header_t *f
                        case S_IFCHR:
                        case S_IFIFO:
                                if (mknod(full_name, file_entry->mode, file_entry->device) == -1) {
-                                       perror_msg("Cannot create node %s", file_entry->name);
+                                       if ((function & extract_quiet) != extract_quiet) {
+                                               perror_msg("Cannot create node %s", file_entry->name);
+                                       }
                                        return NULL;
                                }
                                break;