X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=warning.c;h=68045372685103a5c186b9b61c23a885ffc7f573;hb=f56ee1a34627fb21c5909086f3597c76ce9583be;hp=f2fd2b9243f7bb0bbfbb950bb04409e6304c082b;hpb=6d7d61de445629e1590d3a2ba2990ef7a651368a;p=cparser diff --git a/warning.c b/warning.c index f2fd2b9..6804537 100644 --- a/warning.c +++ b/warning.c @@ -20,6 +20,7 @@ #include #include #include "warning.h" +#include "help.h" warning_t warning = { .other = true, @@ -59,11 +60,13 @@ warning_t warning = { .return_type = true, .s_are_errors = false, .shadow = false, + .shadow_local = false, .sign_compare = false, .strict_prototypes = true, .switch_default = false, .switch_enum = false, .traditional = false, + .uninitialized = true, .unknown_pragmas = true, .unreachable_code = false, .unused_function = false, @@ -74,6 +77,66 @@ warning_t warning = { .write_strings = false }; +void print_warning_opt_help(void) +{ + /* TODO: write explanations */ + put_help("-Waddress", ""); + put_help("-Wall", ""); + put_help("-Waggregate-return", ""); + put_help("-Wattribute", ""); + put_help("-Wcast-qual", ""); + put_help("-Wchar-subscripts", ""); + put_help("-Wcomment", ""); + put_help("-Wconversion", ""); + put_help("-Wdeclaration-after-statement", ""); + put_help("-Wdeprecated-declarations", ""); + put_help("-Wdiv-by-zero", ""); + put_help("-Wempty-statement", ""); + put_help("-Werror", "warnings are errors"); + put_help("-Werror-implicit-function-declaration", ""); + put_help("-Wextra", ""); + put_help("-Wfatal-errors", ""); + put_help("-Wfloat-equal", ""); + put_help("-Wformat", ""); + put_help("-Wimplicit", ""); + put_help("-Wimplicit-function-declaration", ""); + put_help("-Wimplicit-int", ""); + put_help("-Winit-self", ""); + put_help("-Wlong-long", ""); + put_help("-Wmain", ""); + put_help("-Wmissing-declarations", ""); + put_help("-Wmissing-noreturn", ""); + put_help("-Wmissing-prototypes", ""); + put_help("-Wmultichar", ""); + put_help("-Wnested-externs", ""); + put_help("-Wnonnull", ""); + put_help("-Wold-style-definition", ""); + put_help("-Wparentheses", ""); + put_help("-Wpacked", ""); + put_help("-Wpadded", ""); + put_help("-Wparentheses", ""); + put_help("-Wpointer-arith", ""); + put_help("-Wredundant-decls", ""); + put_help("-Wreturn-type", ""); + put_help("-Wshadow", ""); + put_help("-Wshadow-local", ""); + put_help("-Wsign-compare", ""); + put_help("-Wstrict-prototypes", ""); + put_help("-Wswitch-default", ""); + put_help("-Wswitch-enum", ""); + put_help("-Wtraditional", ""); + put_help("-Wuninitialized", ""); + put_help("-Wunknown-pragmas", ""); + put_help("-Wunreachable-code", ""); + put_help("-Wunused", ""); + put_help("-Wunused-function", ""); + put_help("-Wunused-label", ""); + put_help("-Wunused-parameter", ""); + put_help("-Wunused-value", ""); + put_help("-Wunused-variable", ""); + put_help("-Wwrite-strings", ""); +} + void set_warning_opt(const char *const opt) { const char* s = opt; @@ -86,7 +149,9 @@ void set_warning_opt(const char *const opt) state = false; } - if (0) {} + if (s[0] == '\0') { // -W is an alias for -Wextra + goto extra; + } #define OPTX(x) else if (strcmp(s, x) == 0) #define SET(y) (void)(warning.y = state) #define OPT(x, y) OPTX(x) SET(y) @@ -104,15 +169,17 @@ void set_warning_opt(const char *const opt) SET(implicit_int); SET(init_self); SET(main); + SET(missing_declarations); SET(nonnull); SET(parentheses); SET(pointer_arith); SET(redundant_decls); SET(return_type); - SET(shadow); + SET(shadow_local); SET(sign_compare); SET(strict_prototypes); SET(switch_enum); + SET(uninitialized); SET(unknown_pragmas); SET(unreachable_code); SET(unused_function); @@ -135,12 +202,14 @@ void set_warning_opt(const char *const opt) OPT("error", s_are_errors); OPT("error-implicit-function-declaration", error_implicit_function_declaration); OPTX("extra") { +extra: /* TODO */ // TODO SET(function_end_without_return); SET(empty_statement); // TODO SET(incomplete_aggregate_init); // TODO SET(missing_field_initializers); // TODO SET(pointless_comparison); + SET(shadow); SET(unused_parameter); SET(unused_value); } @@ -173,11 +242,13 @@ void set_warning_opt(const char *const opt) OPT("redundant-decls", redundant_decls); OPT("return-type", return_type); OPT("shadow", shadow); + OPT("shadow-local", shadow_local); OPT("sign-compare", sign_compare); OPT("strict-prototypes", strict_prototypes); OPT("switch-default", switch_default); OPT("switch-enum", switch_enum); OPT("traditional", traditional); + OPT("uninitialized", uninitialized); OPT("unknown-pragmas", unknown_pragmas); OPT("unreachable-code", unreachable_code); OPTX("unused") {