aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2002-12-08 00:54:33 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2002-12-08 00:54:33 +0000
commit66125c806518f74a54232206d02e30a39b621232 (patch)
treef7e34d157460ad689c350071a25d19cdd51e1ebb
parent346cdb1ddea7d825b29e9dcd73d6f7af8db8598f (diff)
downloadbusybox-66125c806518f74a54232206d02e30a39b621232.tar.gz
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).
-rw-r--r--archival/ar.c2
-rw-r--r--archival/cpio.c2
-rw-r--r--archival/dpkg.c14
-rw-r--r--archival/dpkg_deb.c12
-rw-r--r--archival/libunarchive/Makefile.in1
-rw-r--r--archival/libunarchive/get_header_tar.c2
-rw-r--r--archival/tar.c6
-rw-r--r--archival/unzip.c2
-rw-r--r--include/libbb.h6
-rw-r--r--include/unarchive.h14
-rw-r--r--libbb/Makefile.in2
-rw-r--r--libbb/llist_add_to.c (renamed from archival/libunarchive/add_to_list.c)2
12 files changed, 32 insertions, 33 deletions
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 <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);
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
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;