diff options
Diffstat (limited to 'sim/ppc/filter.c')
-rw-r--r-- | sim/ppc/filter.c | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/sim/ppc/filter.c b/sim/ppc/filter.c deleted file mode 100644 index c2f28ea..0000000 --- a/sim/ppc/filter.c +++ /dev/null @@ -1,141 +0,0 @@ -/* This file is part of the program psim. - - Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see <http://www.gnu.org/licenses/>. - - */ - - -#include <stdio.h> - -#include <string.h> - -#include "misc.h" -#include "filter.h" - -struct _filter { - char *flag; - filter *next; -}; - - -filter * -new_filter(const char *filt, - filter *filters) -{ - while (strlen(filt) > 0) { - filter *new_filter; - /* break up the filt list */ - const char *end = strchr(filt, ','); - const char *next; - int len; - if (end == NULL) { - end = strchr(filt, '\0'); - next = end; - } - else { - next = end + 1; - } - len = end - filt; - /* add to filter list */ - new_filter = ZALLOC(filter); - new_filter->flag = (char*)zalloc(len + 1); - strncpy(new_filter->flag, filt, len); - new_filter->next = filters; - filters = new_filter; - filt = next; - } - return filters; -} - - -int -is_filtered_out(const char *flags, - filter *filters) -{ - while (strlen(flags) > 0) { - int present; - filter *filt = filters; - /* break the string up */ - const char *end = strchr(flags, ','); - const char *next; - int len; - if (end == NULL) { - end = strchr(flags, '\0'); - next = end; - } - else { - next = end + 1; - } - len = end - flags; - /* check that it is present */ - present = 0; - filt = filters; - while (filt != NULL) { - if (strncmp(flags, filt->flag, len) == 0 - && strlen(filt->flag) == len) { - present = 1; - break; - } - filt = filt->next; - } - if (!present) - return 1; - flags = next; - } - return 0; -} - - -int -it_is(const char *flag, - const char *flags) -{ - int flag_len = strlen(flag); - while (*flags != '\0') { - if (!strncmp(flags, flag, flag_len) - && (flags[flag_len] == ',' || flags[flag_len] == '\0')) - return 1; - while (*flags != ',') { - if (*flags == '\0') - return 0; - flags++; - } - flags++; - } - return 0; -} - - -#ifdef MAIN -int -main(int argc, char **argv) -{ - filter *filters = NULL; - int i; - if (argc < 2) { - printf("Usage: filter <flags> <filter> ...\n"); - exit (1); - } - /* load the filter up */ - for (i = 2; i < argc; i++) - filters = new_filter(argv[i], filters); - if (is_filtered_out(argv[1], filters)) - printf("fail\n"); - else - printf("pass\n"); - return 0; -} -#endif |