[apparmor] [PATCH 12/20] Reduce the number of -O flag options by factoring our no- prefix
John Johansen
john.johansen at canonical.com
Fri Nov 5 05:51:08 GMT 2010
Factor out the "no-" prefix so that optimization flags and their no-
counter parts are handled by the same code.
Signed-off-by: John Johansen <john.johansen at canonical.com>
---
parser/parser_main.c | 63 +++++++++++++++++++++++++++----------------------
1 files changed, 35 insertions(+), 28 deletions(-)
diff --git a/parser/parser_main.c b/parser/parser_main.c
index 0e92678..5f35050 100644
--- a/parser/parser_main.c
+++ b/parser/parser_main.c
@@ -257,6 +257,8 @@ static int process_args(int argc, char *argv[])
int c, o;
int count = 0;
option = OPTION_ADD;
+ const char *arg;
+ dfaflags_t flags;
while ((c = getopt_long(argc, argv, "adf:h::rRVvI:b:BCD:NSm:qQn:XKTWkO:po:", long_options, &o)) != -1)
{
@@ -391,52 +393,57 @@ static int process_args(int argc, char *argv[])
break;
case 'O':
skip_read_cache = 1;
+ arg = optarg;
+ flags = 0;
+
if (strcmp(optarg, "0") == 0) {
dfaflags &= ~(DFA_CONTROL_TREE_NORMAL |
DFA_CONTROL_TREE_SIMPLE |
DFA_CONTROL_MINIMIZE |
DFA_CONTROL_REMOVE_UNREACHABLE);
- } else if (strcmp(optarg, "equiv") == 0) {
- dfaflags |= DFA_CONTROL_EQUIV;
- } else if (strcmp(optarg, "no-equiv") == 0) {
- dfaflags &= ~DFA_CONTROL_EQUIV;
- } else if (strcmp(optarg, "expr-normalize") == 0) {
- dfaflags |= DFA_CONTROL_TREE_NORMAL;
- } else if (strcmp(optarg, "no-expr-normalize") == 0) {
- dfaflags &= ~DFA_CONTROL_TREE_NORMAL;
- } else if (strcmp(optarg, "expr-simplify") == 0) {
- dfaflags |= DFA_CONTROL_TREE_SIMPLE;
- } else if (strcmp(optarg, "no-expr-simplify") == 0) {
- dfaflags &= ~DFA_CONTROL_TREE_SIMPLE;
+ break;
} else if (strcmp(optarg, "expr-left-simplify") == 0) {
dfaflags |= DFA_CONTROL_TREE_LEFT;
+ break;
} else if (strcmp(optarg, "expr-right-simplify") == 0) {
dfaflags &= ~DFA_CONTROL_TREE_LEFT;
- } else if (strcmp(optarg, "minimize") == 0) {
- dfaflags |= DFA_CONTROL_MINIMIZE;
- } else if (strcmp(optarg, "no-minimize") == 0) {
- dfaflags &= ~DFA_CONTROL_MINIMIZE;
- } else if (strcmp(optarg, "hash-trans") == 0) {
- dfaflags |= DFA_CONTROL_MINIMIZE_HASH_TRANS;
- } else if (strcmp(optarg, "no-hash-trans") == 0) {
- dfaflags &= ~DFA_CONTROL_MINIMIZE_HASH_TRANS;
- } else if (strcmp(optarg, "hash-perms") == 0) {
- dfaflags |= DFA_CONTROL_MINIMIZE_HASH_PERMS;
- } else if (strcmp(optarg, "no-hash-perms") == 0) {
- dfaflags &= ~DFA_CONTROL_MINIMIZE_HASH_PERMS;
+ break;
} else if (strcmp(optarg, "compress-fast") == 0) {
dfaflags &= ~DFA_CONTROL_TRANS_HIGH;
+ break;
} else if (strcmp(optarg, "compress-high") == 0) {
dfaflags |= DFA_CONTROL_TRANS_HIGH;
- } else if (strcmp(optarg, "remove-unreachable") == 0) {
- dfaflags |= DFA_CONTROL_REMOVE_UNREACHABLE;
- } else if (strcmp(optarg, "no-remove-unreachable") == 0) {
- dfaflags &= ~DFA_CONTROL_REMOVE_UNREACHABLE;
+ break;
+ }
+
+ if (strncmp(optarg, "no-", 3))
+ arg = optarg + 3;
+
+ if (strcmp(arg, "equiv") == 0) {
+ flags |= DFA_CONTROL_EQUIV;
+ } else if (strcmp(arg, "expr-normalize") == 0) {
+ flags |= DFA_CONTROL_TREE_NORMAL;
+ } else if (strcmp(arg, "expr-simplify") == 0) {
+ flags |= DFA_CONTROL_TREE_SIMPLE;
+ } else if (strcmp(arg, "minimize") == 0) {
+ flags |= DFA_CONTROL_MINIMIZE;
+ } else if (strcmp(arg, "hash-trans") == 0) {
+ flags |= DFA_CONTROL_MINIMIZE_HASH_TRANS;
+ } else if (strcmp(arg, "hash-perms") == 0) {
+ flags |= DFA_CONTROL_MINIMIZE_HASH_PERMS;
+ } else if (strcmp(arg, "remove-unreachable") == 0) {
+ flags |= DFA_CONTROL_REMOVE_UNREACHABLE;
} else {
PERROR("%s: Invalid --Optimize option %s\n",
progname, optarg);
exit(1);
}
+
+ if (strncmp(optarg, "no-", 3))
+ dfaflags &= ~flags;
+ else
+ dfaflags |= flags;
+
break;
case 'm':
match_string = strdup(optarg);
--
1.7.1
More information about the AppArmor
mailing list