filter_accept_reject_list.c 887 B

123456789101112131415161718192021222324252627282930313233343536
  1. /* vi: set sw=4 ts=4: */
  2. /*
  3. * Copyright (C) 2002 by Glenn McGrath
  4. *
  5. * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  6. */
  7. #include "libbb.h"
  8. #include "unarchive.h"
  9. /*
  10. * Accept names that are in the accept list and not in the reject list
  11. */
  12. char FAST_FUNC filter_accept_reject_list(archive_handle_t *archive_handle)
  13. {
  14. const char *key;
  15. const llist_t *reject_entry;
  16. const llist_t *accept_entry;
  17. key = archive_handle->file_header->name;
  18. /* If the key is in a reject list fail */
  19. reject_entry = find_list_entry2(archive_handle->reject, key);
  20. if (reject_entry) {
  21. return EXIT_FAILURE;
  22. }
  23. accept_entry = find_list_entry2(archive_handle->accept, key);
  24. /* Fail if an accept list was specified and the key wasnt in there */
  25. if ((accept_entry == NULL) && archive_handle->accept) {
  26. return EXIT_FAILURE;
  27. }
  28. /* Accepted */
  29. return EXIT_SUCCESS;
  30. }