busybox/archival/libarchive/filter_accept_reject_list.c
<<
>>
Prefs
   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 source tree.
   6 */
   7#include "libbb.h"
   8#include "bb_archive.h"
   9
  10/*
  11 * Accept names that are in the accept list and not in the reject list
  12 */
  13char FAST_FUNC filter_accept_reject_list(archive_handle_t *archive_handle)
  14{
  15        const char *key;
  16        const llist_t *reject_entry;
  17        const llist_t *accept_entry;
  18
  19        key = archive_handle->file_header->name;
  20
  21        /* If the key is in a reject list fail */
  22        reject_entry = find_list_entry2(archive_handle->reject, key);
  23        if (reject_entry) {
  24                return EXIT_FAILURE;
  25        }
  26
  27        /* Fail if an accept list was specified and the key wasnt in there */
  28        if (archive_handle->accept) {
  29                accept_entry = find_list_entry2(archive_handle->accept, key);
  30                if (!accept_entry) {
  31                        return EXIT_FAILURE;
  32                }
  33        }
  34
  35        /* Accepted */
  36        return EXIT_SUCCESS;
  37}
  38