/* vi: set sw=4 ts=4: */
/*
 * Copyright (C) 2002 by Glenn McGrath
 *
 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
 */

#include "libbb.h"
#include "bb_archive.h"

/*
 * Accept names that are in the accept list and not in the reject list
 */
char FAST_FUNC filter_accept_reject_list(archive_handle_t *archive_handle)
{
	const char *key;
	const llist_t *reject_entry;
	const llist_t *accept_entry;

	key = archive_handle->file_header->name;

	/* If the key is in a reject list fail */
	reject_entry = find_list_entry2(archive_handle->reject, key);
	if (reject_entry) {
		return EXIT_FAILURE;
	}

	/* Fail if an accept list was specified and the key wasnt in there */
	if (archive_handle->accept) {
		accept_entry = find_list_entry2(archive_handle->accept, key);
		if (!accept_entry) {
			return EXIT_FAILURE;
		}
	}

	/* Accepted */
	return EXIT_SUCCESS;
}
