X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=warning.c;h=c102f9c93792a308f60e420d051529c0ae987ddd;hb=f017f4f5080052f95185056b3af472ab737bc64a;hp=212a3377451db449b3f64d85bb0db3a8e3aaadf6;hpb=5fb7f098bd4da0bf438525f6ecd1d3b07e2affa2;p=cparser diff --git a/warning.c b/warning.c index 212a337..c102f9c 100644 --- a/warning.c +++ b/warning.c @@ -13,78 +13,28 @@ warning_t warning = { .main = true, .missing_declarations = false, .missing_prototypes = false, + .multichar = true, .redundant_decls = true, .s_are_errors = false, + .shadow = false, + .sign_compare = false, .strict_prototypes = true, .switch_default = false, .unknown_pragmas = true, .unused_function = false, .unused_label = false, .unused_parameter = false, - .unused_variable = false, - .unused_value = true + .unused_value = true, + .unused_variable = false }; -/** - * Switch on options for -Wall. - */ -static void set_all_options(void) { - warning.char_subscripts = true; - warning.check_format = true; - warning.empty_statement = true; - /* warning.fatal_errors */ - /* warning.float_equal */ - warning.implicit_function_declaration = true; - warning.implicit_int = true; - warning.main = true; - /* warning.missing_declarations */ - /* warning.missing_prototypes */ - warning.redundant_decls = true; - /* warning.s_are_errors */ - warning.strict_prototypes = true; - warning.switch_default = true; - warning.unknown_pragmas = true; - warning.unused_function = true; - warning.unused_label = true; - warning.unused_parameter = true; - warning.unused_variable = true; - warning.unused_value = true; -} - -/** - * Switch on options for -Wunused. - */ -static void set_unused_options(void) { - warning.unused_function = true; - warning.unused_label = true; - warning.unused_parameter = true; - warning.unused_variable = true; - warning.unused_value = true; -} - -/** - * Switch on options for -Wextra. - */ -static void set_extra_options(void) { -} - void set_warning_opt(const char *const opt) { const char* s = opt; bool state = true; - if (strcmp(s, "all") == 0) { - set_all_options(); - return; - } else if (strcmp(s, "extra") == 0) { - set_extra_options(); - return; - } else if (strcmp(s, "unused") == 0) { - set_unused_options(); - return; - } - /* no- modifier */ + /* "no-" prefix */ if (s[0] == 'n' && s[1] == 'o' && s[2] == '-') { s += 3; state = false; @@ -94,9 +44,38 @@ void set_warning_opt(const char *const opt) #define OPTX(x) else if (strcmp(s, x) == 0) #define SET(y) warning.y = state; #define OPT(x, y) OPTX(x) SET(y) + OPTX("all") { + /* Note: this switched on a lot of more warnings than gcc's -Wall */ + SET(char_subscripts) + SET(check_format) + SET(empty_statement) + SET(implicit_function_declaration) + SET(implicit_int) + SET(main) + SET(redundant_decls) + SET(shadow) + SET(sign_compare) + SET(strict_prototypes) + SET(unknown_pragmas) + SET(unused_function) + SET(unused_label) + SET(unused_parameter) + SET(unused_value) + SET(unused_variable) + } OPT("char-subscripts", char_subscripts) OPT("empty-statement", empty_statement) OPT("error", s_are_errors) + OPTX("extra") { + /* TODO */ + // TODO SET(function_end_without_return) + SET(empty_statement) + // TODO SET(incomplete_aggregate_init) + // TODO SET(pointless_comparison) + // TODO SET(sign_compare) + SET(unused_parameter) + SET(unused_value) + } OPT("fatal-errors", fatal_errors) OPT("float-equal", float_equal) OPT("format", check_format) @@ -109,24 +88,25 @@ void set_warning_opt(const char *const opt) OPT("main", main) OPT("missing-declarations", missing_declarations) OPT("missing-prototypes", missing_prototypes) + OPT("multichar", multichar) OPT("redundant-decls", redundant_decls) + OPT("shadow", shadow) + OPT("sign-compare", sign_compare) OPT("strict-prototypes", strict_prototypes) OPT("switch-default", switch_default) OPT("unknown-pragmas", unknown_pragmas) - OPT("unused-function", unused_function) - OPT("unused-label", unused_label) - OPT("unused-parameter", unused_parameter) - OPT("unused-variable", unused_variable) -#if 0 OPTX("unused") { SET(unused_function) SET(unused_label) SET(unused_parameter) - SET(unused_variable) SET(unused_value) + SET(unused_variable) } -#endif + OPT("unused-function", unused_function) + OPT("unused-label", unused_label) + OPT("unused-parameter", unused_parameter) OPT("unused-value", unused_value) + OPT("unused-variable", unused_variable) #undef OPT #undef SET #undef OPT_X