Move add_to_list from libunarchive to libbb so it can be of more general use (eg...
authorGlenn L McGrath <bug1@ihug.co.nz>
Sun, 8 Dec 2002 00:54:33 +0000 (00:54 -0000)
committerGlenn L McGrath <bug1@ihug.co.nz>
Sun, 8 Dec 2002 00:54:33 +0000 (00:54 -0000)
13 files changed:
archival/ar.c
archival/cpio.c
archival/dpkg.c
archival/dpkg_deb.c
archival/libunarchive/Makefile.in
archival/libunarchive/add_to_list.c [deleted file]
archival/libunarchive/get_header_tar.c
archival/tar.c
archival/unzip.c
include/libbb.h
include/unarchive.h
libbb/Makefile.in
libbb/llist_add_to.c [new file with mode: 0644]

index 71cde4ebe9c8cbb44094f90bde6063b577b22fca..87968f7be5f3e3c6c4f0976d791315b295a99f3a 100644 (file)
@@ -124,7 +124,7 @@ extern int ar_main(int argc, char **argv)
        /* TODO: This is the same as in tar, seperate function ? */
        while (optind < argc) {
                archive_handle->filter = filter_accept_list;
-               archive_handle->accept = add_to_list(archive_handle->accept, argv[optind]);
+               archive_handle->accept = llist_add_to(archive_handle->accept, argv[optind]);
                optind++;
        }
 
index 2aa11943e0d288ebdd6e24a17eed83ecb33dcc29..8b4cc2d3e4f39345d59a4e6d3ed4f42afb054a3d 100644 (file)
@@ -79,7 +79,7 @@ extern int cpio_main(int argc, char **argv)
 
        while (optind < argc) {
                archive_handle->filter = filter_accept_list;
-               archive_handle->accept = add_to_list(archive_handle->accept, argv[optind]);
+               archive_handle->accept = llist_add_to(archive_handle->accept, argv[optind]);
                optind++;
        }
 
index 274d711dc9c8a5427df876d45d08cf7535665f1c..d3e652bc86525a387fef81564f467ad923ab9932 100644 (file)
@@ -1330,10 +1330,10 @@ static void init_archive_deb_control(archive_handle_t *ar_handle)
 
        /* We dont care about data.tar.* or debian-binary, just control.tar.* */
 #ifdef CONFIG_FEATURE_DEB_TAR_GZ
-       ar_handle->accept = add_to_list(NULL, "control.tar.gz");
+       ar_handle->accept = llist_add_to(NULL, "control.tar.gz");
 #endif
 #ifdef CONFIG_FEATURE_DEB_TAR_BZ2
-       ar_handle->accept = add_to_list(ar_handle->accept, "control.tar.bz2");
+       ar_handle->accept = llist_add_to(ar_handle->accept, "control.tar.bz2");
 #endif
 
        /* Assign the tar handle as a subarchive of the ar handle */
@@ -1353,10 +1353,10 @@ static void init_archive_deb_data(archive_handle_t *ar_handle)
 
        /* We dont care about data.tar.* or debian-binary, just control.tar.* */
 #ifdef CONFIG_FEATURE_DEB_TAR_GZ
-       tar_handle->accept = add_to_list(NULL, "data.tar.gz");
+       tar_handle->accept = llist_add_to(NULL, "data.tar.gz");
 #endif
 #ifdef CONFIG_FEATURE_DEB_TAR_BZ2
-       tar_handle->accept = add_to_list(ar_handle->accept, "data.tar.bz2");
+       tar_handle->accept = llist_add_to(ar_handle->accept, "data.tar.bz2");
 #endif
 
        /* Assign the tar handle as a subarchive of the ar handle */
@@ -1365,7 +1365,7 @@ static void init_archive_deb_data(archive_handle_t *ar_handle)
        return; 
 }
 
-static char *deb_extract_control_file_to_buffer(archive_handle_t *ar_handle, const llist_t *accept)
+static char *deb_extract_control_file_to_buffer(archive_handle_t *ar_handle, llist_t *accept)
 {
        ar_handle->sub_archive->action_data = data_extract_to_buffer;
        ar_handle->sub_archive->accept = accept;
@@ -1532,10 +1532,10 @@ int dpkg_main(int argc, char **argv)
                deb_file[deb_count] = (deb_file_t *) xmalloc(sizeof(deb_file_t));
                if (dpkg_opt & dpkg_opt_filename) {
                        archive_handle_t *archive_handle;
-                       const llist_t *control_list = NULL;
+                       llist_t *control_list = NULL;
 
                        /* Extract the control file */
-                       control_list = add_to_list(NULL, "./control");
+                       control_list = llist_add_to(NULL, "./control");
                        archive_handle = init_archive_deb_ar(argv[optind]);
                        init_archive_deb_control(archive_handle);
                        deb_file[deb_count]->control_file = deb_extract_control_file_to_buffer(archive_handle, control_list);
index 7ce637e5e7e4319758372f7a008d31b01d1f5e0a..2c338227c3d951ec74fbcab0ce08dec4cddce6cd 100644 (file)
@@ -27,7 +27,7 @@ extern int dpkg_deb_main(int argc, char **argv)
        archive_handle_t *tar_archive;
        int opt = 0;
 #ifndef CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY
-       const llist_t *control_tar_llist = NULL;
+       llist_t *control_tar_llist = NULL;
 #endif
        
        /* Setup the tar archive handle */
@@ -39,16 +39,16 @@ extern int dpkg_deb_main(int argc, char **argv)
        ar_archive->filter = filter_accept_list_reassign;
 
 #ifdef CONFIG_FEATURE_DEB_TAR_GZ
-       ar_archive->accept = add_to_list(NULL, "data.tar.gz");
+       ar_archive->accept = llist_add_to(NULL, "data.tar.gz");
 # ifndef CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY
-       control_tar_llist = add_to_list(NULL, "control.tar.gz");
+       control_tar_llist = llist_add_to(NULL, "control.tar.gz");
 # endif
 #endif
 
 #ifdef CONFIG_FEATURE_DEB_TAR_BZ2
-       ar_archive->accept = add_to_list(ar_archive->accept, "data.tar.bz2");
+       ar_archive->accept = llist_add_to(ar_archive->accept, "data.tar.bz2");
 # ifndef CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY
-       control_tar_llist = add_to_list(control_tar_llist, "control.tar.bz2");
+       control_tar_llist = llist_add_to(control_tar_llist, "control.tar.bz2");
 # endif
 #endif
 
@@ -71,7 +71,7 @@ extern int dpkg_deb_main(int argc, char **argv)
                                 * it should accept a second argument which specifies a 
                                 * specific field to print */
                                ar_archive->accept = control_tar_llist;
-                               tar_archive->accept = add_to_list(NULL, "./control");;
+                               tar_archive->accept = llist_add_to(NULL, "./control");;
                                tar_archive->filter = filter_accept_list;
                                tar_archive->action_data = data_extract_to_stdout;
                                break;
index 5675d092f46409106c9fa1b9d9092cd4725c2f06..28e2955b9816a1d9404123697c5795ee9902b05c 100644 (file)
@@ -53,7 +53,6 @@ LIBUNARCHIVE-y:= \
 \
        archive_copy_file.o \
 \
-       add_to_list.o \
        check_header_gzip.o \
        check_trailer_gzip.o \
        data_align.o \
diff --git a/archival/libunarchive/add_to_list.c b/archival/libunarchive/add_to_list.c
deleted file mode 100644 (file)
index 052bca3..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-#include "unarchive.h"
-#include "libbb.h"
-
-extern const llist_t *add_to_list(const llist_t *old_head, const char *new_item)
-{
-       llist_t *new_head;
-
-       new_head = xmalloc(sizeof(llist_t));
-       new_head->data = new_item;
-       new_head->link = old_head;
-
-       return(new_head);
-}
index 37e33d4c325dce4b9f9d5e9d3d891e3e658ee2f2..5fed7c1bf8ba1e2001dfbd1e45ab217370bc269f 100644 (file)
@@ -171,7 +171,7 @@ extern char get_header_tar(archive_handle_t *archive_handle)
                archive_handle->action_header(archive_handle->file_header);
                archive_handle->flags |= ARCHIVE_EXTRACT_QUIET;
                archive_handle->action_data(archive_handle);
-               archive_handle->passed = add_to_list(archive_handle->passed, archive_handle->file_header->name);
+               archive_handle->passed = llist_add_to(archive_handle->passed, archive_handle->file_header->name);
        } else {
                data_skip(archive_handle);                      
        }
index 1899ab9542c5de23e2c0af93709c15180d15a188..fa1c575121e43a4aaa3498cc54bc5f95ad21070c 100644 (file)
@@ -583,13 +583,13 @@ static inline int writeTarFile(const char *tarName, const int verboseFlag,
 #endif                                                 /* tar_create */
 
 #ifdef CONFIG_FEATURE_TAR_EXCLUDE
-static const llist_t *append_file_list_to_list(const char *filename, const llist_t *list)
+static llist_t *append_file_list_to_list(const char *filename, llist_t *list)
 {
        FILE *src_stream = xfopen(filename, "r");
        char *line;
        while((line = get_line_from_file(src_stream)) != NULL) {
                chomp(line);
-               list = add_to_list(list, line);
+               list = llist_add_to(list, line);
        }
        fclose(src_stream);
 
@@ -708,7 +708,7 @@ int tar_main(int argc, char **argv)
        /* Setup an array of filenames to work with */
        /* TODO: This is the same as in ar, seperate function ? */
        while (optind < argc) {
-               tar_handle->accept = add_to_list(tar_handle->accept, argv[optind]);
+               tar_handle->accept = llist_add_to(tar_handle->accept, argv[optind]);
                optind++;
        }
 
index 4c1e5ce409ab9facee3a4f0555dc6e8b430b5e53..86416d327cfdfb0ec513319acf97aef5e4749459 100644 (file)
@@ -147,7 +147,7 @@ extern int unzip_main(int argc, char **argv)
 
        while (optind < argc) {
                archive_handle->filter = filter_accept_list;
-               archive_handle->accept = add_to_list(archive_handle->accept, argv[optind]);
+               archive_handle->accept = llist_add_to(archive_handle->accept, argv[optind]);
                optind++;
        }
 
index dec6df1165918f9758aae000e870526d25ad865c..1e95a903e7c96d3d3bd7ea2082cd9ca231cc428d 100644 (file)
@@ -357,4 +357,10 @@ typedef struct {
 extern procps_status_t * procps_scan(int save_user_arg0);
 extern unsigned short compare_string_array(const char *string_array[], const char *key);
 
+typedef struct llist_s {
+       char *data;
+       struct llist_s *link;
+} llist_t;
+extern llist_t *llist_add_to(llist_t *old_head, char *new_item);
+
 #endif /* __LIBCONFIG_H__ */
index bfd9a1458e4f5f8d73f31156ecee7526ce9cca60..aca6859150fa77e91f060f30e839364123a838b9 100644 (file)
@@ -7,8 +7,8 @@
 #define ARCHIVE_EXTRACT_QUIET  8
 
 #include <sys/types.h>
-
 #include <stdio.h>
+#include "libbb.h"
 
 typedef struct file_headers_s {
        char *name;
@@ -21,17 +21,12 @@ typedef struct file_headers_s {
        dev_t device;
 } file_header_t;
 
-typedef struct llist_s {
-       const char *data;
-       const struct llist_s *link;
-} llist_t;
-
 typedef struct archive_handle_s {
        /* define if the header and data compenent should processed */
        char (*filter)(struct archive_handle_s *);
-       const llist_t *accept;
-       const llist_t *reject;
-       const llist_t *passed;  /* List of files that have successfully been worked on */
+       llist_t *accept;
+       llist_t *reject;
+       llist_t *passed;        /* List of files that have successfully been worked on */
 
        /* Contains the processed header entry */
        file_header_t *file_header;
@@ -103,7 +98,6 @@ extern void archive_xread_all(const archive_handle_t *archive_handle, void *buf,
 extern ssize_t archive_xread_all_eof(archive_handle_t *archive_handle, unsigned char *buf, size_t count);
 
 extern void data_align(archive_handle_t *archive_handle, const unsigned short boundary);
-extern const llist_t *add_to_list(const llist_t *old_head, const char *new_item);
 extern void archive_copy_file(const archive_handle_t *archive_handle, const int dst_fd);
 extern const llist_t *find_list_entry(const llist_t *list, const char *filename);
 
index 22fcd830625ea352f4c04f18fc2a45a1f0c9bea3..3f4e77314573d4d14a6a9a5f759069485c83ed63 100644 (file)
@@ -33,7 +33,7 @@ LIBBB_SRC:= \
        get_last_path_component.c get_line_from_file.c herror_msg.c \
        herror_msg_and_die.c human_readable.c inet_common.c inode_hash.c \
        interface.c isdirectory.c kernel_version.c last_char_is.c libc5.c \
-       loop.c make_directory.c mode_string.c \
+       llist_add_to.c loop.c make_directory.c mode_string.c \
        module_syscalls.c mtab.c mtab_file.c my_getgrgid.c my_getgrnam.c \
        my_getpwnam.c my_getpwnamegid.c my_getpwuid.c obscure.c parse_mode.c \
        parse_number.c perror_msg.c perror_msg_and_die.c print_file.c \
diff --git a/libbb/llist_add_to.c b/libbb/llist_add_to.c
new file mode 100644 (file)
index 0000000..61e53f0
--- /dev/null
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <string.h>
+#include "unarchive.h"
+#include "libbb.h"
+
+extern llist_t *llist_add_to(llist_t *old_head, char *new_item)
+{
+       llist_t *new_head;
+
+       new_head = xmalloc(sizeof(llist_t));
+       new_head->data = new_item;
+       new_head->link = old_head;
+
+       return(new_head);
+}