made previous commit less hairy

* src/getargs.c : here
This commit is contained in:
Theophile Ranquet
2012-09-21 05:00:32 +02:00
committed by yro3ht
parent 981c53e257
commit fd01e1d05e

View File

@@ -85,61 +85,42 @@ flags_argmatch (const char *option,
if (args) if (args)
{ {
args = strtok (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) while (args)
{ {
int err = STRPREFIX_LIT ("error", args); int value = all;
if (err) int *save_flags = flags;
args += (args[5] == '=') ? 6 : 5; int no = STRPREFIX_LIT ("no-", args) ? 3 : 0;
int err = STRPREFIX_LIT ("error", args + no) ? 5 : 0;
if (!err || args[-1] == '=') if (err)
value = XARGMATCH (option, args, keys, values); flags = &errors_flag;
if (value == 0) if (!err || args[no + err++] != '\0')
{ value = XARGMATCH (option, args + no + err, keys, values);
if (no)
if (!value)
{ {
if (err) if (no)
/* Using &= ~all activates complaint, silent and fatal */
errors_flag = Wnone;
else
*flags |= all; *flags |= all;
else
*flags &= ~all;
} }
else else
{ {
if (err) if (no)
errors_flag |= all;
else
*flags &= ~all;
}
}
else
{
if (no)
{
if (err)
errors_flag &= ~value;
else
*flags &= ~value; *flags &= ~value;
}
else
{
if (err)
{
errors_flag |= value;
warnings_flag |= value;
}
else else
*flags |= value; {
if (err)
warnings_flag |= value;
*flags |= value;
}
} }
} flags = save_flags;
args = strtok (NULL, ","); args = strtok (NULL, ",");
} }
} }
else
*flags |= all;
} }
/** Decode a set of sub arguments. /** Decode a set of sub arguments.