From 66125c806518f74a54232206d02e30a39b621232 Mon Sep 17 00:00:00 2001 From: Glenn L McGrath Date: Sun, 8 Dec 2002 00:54:33 +0000 Subject: [PATCH] Move add_to_list from libunarchive to libbb so it can be of more general use (eg ifupdown). Changed the name to llist_add_to as i plan on adding more llist_ functions as needed (e.g. llist_free). --- archival/ar.c | 2 +- archival/cpio.c | 2 +- archival/dpkg.c | 14 +++++++------- archival/dpkg_deb.c | 12 ++++++------ archival/libunarchive/Makefile.in | 1 - archival/libunarchive/get_header_tar.c | 2 +- archival/tar.c | 6 +++--- archival/unzip.c | 2 +- include/libbb.h | 6 ++++++ include/unarchive.h | 14 ++++---------- libbb/Makefile.in | 2 +- .../add_to_list.c => libbb/llist_add_to.c | 2 +- 12 files changed, 32 insertions(+), 33 deletions(-) rename archival/libunarchive/add_to_list.c => libbb/llist_add_to.c (73%) diff --git a/archival/ar.c b/archival/ar.c index 71cde4ebe..87968f7be 100644 --- a/archival/ar.c +++ b/archival/ar.c @@ -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++; } diff --git a/archival/cpio.c b/archival/cpio.c index 2aa11943e..8b4cc2d3e 100644 --- a/archival/cpio.c +++ b/archival/cpio.c @@ -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++; } diff --git a/archival/dpkg.c b/archival/dpkg.c index 274d711dc..d3e652bc8 100644 --- a/archival/dpkg.c +++ b/archival/dpkg.c @@ -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); diff --git a/archival/dpkg_deb.c b/archival/dpkg_deb.c index 7ce637e5e..2c338227c 100644 --- a/archival/dpkg_deb.c +++ b/archival/dpkg_deb.c @@ -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; diff --git a/archival/libunarchive/Makefile.in b/archival/libunarchive/Makefile.in index 5675d092f..28e2955b9 100644 --- a/archival/libunarchive/Makefile.in +++ b/archival/libunarchive/Makefile.in @@ -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/get_header_tar.c b/archival/libunarchive/get_header_tar.c index 37e33d4c3..5fed7c1bf 100644 --- a/archival/libunarchive/get_header_tar.c +++ b/archival/libunarchive/get_header_tar.c @@ -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); } diff --git a/archival/tar.c b/archival/tar.c index 1899ab954..fa1c57512 100644 --- a/archival/tar.c +++ b/archival/tar.c @@ -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++; } diff --git a/archival/unzip.c b/archival/unzip.c index 4c1e5ce40..86416d327 100644 --- a/archival/unzip.c +++ b/archival/unzip.c @@ -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++; } diff --git a/include/libbb.h b/include/libbb.h index dec6df116..1e95a903e 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -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__ */ diff --git a/include/unarchive.h b/include/unarchive.h index bfd9a1458..aca685915 100644 --- a/include/unarchive.h +++ b/include/unarchive.h @@ -7,8 +7,8 @@ #define ARCHIVE_EXTRACT_QUIET 8 #include - #include +#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); diff --git a/libbb/Makefile.in b/libbb/Makefile.in index 22fcd8306..3f4e77314 100644 --- a/libbb/Makefile.in +++ b/libbb/Makefile.in @@ -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/archival/libunarchive/add_to_list.c b/libbb/llist_add_to.c similarity index 73% rename from archival/libunarchive/add_to_list.c rename to libbb/llist_add_to.c index 052bca351..61e53f0c1 100644 --- a/archival/libunarchive/add_to_list.c +++ b/libbb/llist_add_to.c @@ -3,7 +3,7 @@ #include "unarchive.h" #include "libbb.h" -extern const llist_t *add_to_list(const llist_t *old_head, const char *new_item) +extern llist_t *llist_add_to(llist_t *old_head, char *new_item) { llist_t *new_head; -- 2.25.1