int all, int *flags, char *args)
{
if (args)
- {
- args = strtok (args, ",");
- 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;
-
- if (err)
- flags = &errors_flag;
- if (!err || args[no + err++] != '\0')
- value = XARGMATCH (option, args + no + err, keys, values);
-
- if (!value)
+ args = strtok (args, ",");
+ while (args)
{
- if (no)
- *flags |= all;
+ int no = STRPREFIX_LIT ("no-", args) ? 3 : 0;
+ int value = XARGMATCH (option, args + no, keys, values);
+ if (value == 0)
+ {
+ if (no)
+ *flags |= all;
+ else
+ *flags &= ~all;
+ }
else
- *flags &= ~all;
- }
- else
- {
- if (no)
- *flags &= ~value;
- else
- {
- if (err)
- warnings_flag |= value;
- *flags |= value;
- }
+ {
+ if (no)
+ *flags &= ~value;
+ else
+ *flags |= value;
+ }
+ args = strtok (NULL, ",");
}
- flags = save_flags;
- args = strtok (NULL, ",");
}
- }
else
*flags |= all;
}