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.
diff --git a/archival/libunarchive/filter_accept_list.c b/archival/libunarchive/filter_accept_list.c
index 06b1dd3..9f92e64 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 993478a..df110a1 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -717,6 +717,7 @@
 
 #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 @@
 			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);