From 6652eeba585aff3e63b28d04435a4f9d8aeba43c Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Fri, 21 Sep 2012 09:15:37 +0200 Subject: [PATCH] Revert "made previous commit less hairy" This reverts commit fd01e1d05ea3e627033d148b5400b99a18ac7ba3. --- src/getargs.c | 59 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/src/getargs.c b/src/getargs.c index f0eddbc6..b0a6601a 100644 --- a/src/getargs.c +++ b/src/getargs.c @@ -85,42 +85,61 @@ flags_argmatch (const char *option, if (args) { args = strtok (args, ","); + + /* Not sure whether we should keep this : -Werror=no-bar */ + int no = STRPREFIX_LIT ("no-", args) ? 3 : 0; + args += no; + int value = 0; + while (args) { - int value = all; - int *save_flags = flags; - int no = STRPREFIX_LIT ("no-", args) ? 3 : 0; - int err = STRPREFIX_LIT ("error", args + no) ? 5 : 0; - + int err = STRPREFIX_LIT ("error", args); if (err) - flags = &errors_flag; - if (!err || args[no + err++] != '\0') - value = XARGMATCH (option, args + no + err, keys, values); + args += (args[5] == '=') ? 6 : 5; - if (!value) + if (!err || args[-1] == '=') + value = XARGMATCH (option, args, keys, values); + if (value == 0) + { + if (no) { - if (no) - *flags |= all; + if (err) + /* Using &= ~all activates complaint, silent and fatal */ + errors_flag = Wnone; else - *flags &= ~all; + *flags |= all; } else { - if (no) - *flags &= ~value; + if (err) + errors_flag |= all; else + *flags &= ~all; + } + } + else + { + if (no) + { + if (err) + errors_flag &= ~value; + else + *flags &= ~value; + } + else + { + if (err) { - if (err) - warnings_flag |= value; - *flags |= value; + errors_flag |= value; + warnings_flag |= value; } + else + *flags |= value; } - flags = save_flags; + } args = strtok (NULL, ","); } } - else - *flags |= all; } /** Decode a set of sub arguments. -- 2.47.2