summaryrefslogtreecommitdiffhomepage
path: root/archival
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2002-10-19 02:18:51 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2002-10-19 02:18:51 +0000
commit25bca9566d66f13e17220135d45bb0fa94d4ed9d (patch)
treedde4b6999b3be2380cc9adc499797f50dc72e85a /archival
parent98f824aa227e99891d9e65780197122772ca4dc2 (diff)
Remove entries from the accept list as they are matched so we can determine if any files that were specified in the list wernt found.
Diffstat (limited to 'archival')
-rw-r--r--archival/libunarchive/filter_accept_list.c8
-rw-r--r--archival/tar.c6
2 files changed, 14 insertions, 0 deletions
diff --git a/archival/libunarchive/filter_accept_list.c b/archival/libunarchive/filter_accept_list.c
index 06b1dd3dd..9f92e6440 100644
--- a/archival/libunarchive/filter_accept_list.c
+++ b/archival/libunarchive/filter_accept_list.c
@@ -6,10 +6,18 @@
*/
extern char filter_accept_list(const llist_t *accept_list, const llist_t *reject_list, const char *key)
{
+ llist_t *accept_old;
+
while (accept_list) {
if (fnmatch(accept_list->data, key, 0) == 0) {
+ /* Remove entry from list */
+ accept_old->link = accept_list->link;
+ free(accept_list->data);
+ free(accept_list);
+ accept_list = accept_old;
return(EXIT_SUCCESS);
}
+ accept_old = accept_list;
accept_list = accept_list->link;
}
return(EXIT_FAILURE);
diff --git a/archival/tar.c b/archival/tar.c
index 993478a67..df110a149 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -717,6 +717,7 @@ int tar_main(int argc, char **argv)
#ifdef CONFIG_FEATURE_TAR_EXCLUDE
if (tar_handle->reject) {
+ printf("Reject list\n");
tar_handle->filter = filter_accept_reject_list;
} else
#endif /* CONFIG_FEATURE_TAR_EXCLUDE */
@@ -762,6 +763,11 @@ int tar_main(int argc, char **argv)
while (get_header_tar(tar_handle) == EXIT_SUCCESS);
}
+ /* Skip through list */
+ while (tar_handle->accept) {
+ error_msg_and_die("%s: Not found in archive\n", tar_handle->accept->data);
+ tar_handle->accept = tar_handle->accept->link;
+ }
#ifdef CONFIG_FEATURE_CLEAN_UP
if (tar_handle->src_fd != fileno(stdin)) {
close(tar_handle->src_fd);