X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=warning.c;h=975f2d05817bc648e6bd5af1328e265d8856849c;hb=2fb66fd8bd2a5956ab2cad26978ccfb7e105d45f;hp=6bffa2b21e9abe20c5460c4bf3ad99039393c640;hpb=92253254f77e5ebb69bc7fb6acddf4b373d3eaad;p=cparser diff --git a/warning.c b/warning.c index 6bffa2b..975f2d0 100644 --- a/warning.c +++ b/warning.c @@ -21,6 +21,7 @@ #include #include +#include "adt/strutil.h" #include "adt/util.h" #include "warning.h" #include "help.h" @@ -91,7 +92,9 @@ void print_warning_opt_help(void) { /* TODO: write explanations */ for (warning_switch_t* i = warning; i != endof(warning); ++i) { - put_help(i->name, ""); + char buf[256]; + snprintf(buf, sizeof(buf), "-W%s", i->name); + put_help(buf, ""); } } @@ -99,8 +102,9 @@ void set_warning_opt(const char *const opt) { /* Process prefixes: -W[no-][error=] */ char const *s = opt; - bool const no = strncmp(s, "no-", 3) == 0 ? s += 3, true : false; - bool const error = strncmp(s, "error=", 6) == 0 ? s += 6, true : false; + char const *rest; + bool const no = (rest = strstart(s, "no-")) ? s = rest, true : false; + bool const error = (rest = strstart(s, "error=")) ? s = rest, true : false; warn_state_t on = WARN_STATE_NONE; warn_state_t off = WARN_STATE_NONE; @@ -117,7 +121,7 @@ void set_warning_opt(const char *const opt) } for (warning_switch_t* i = warning; i != endof(warning); ++i) { - if (strcmp(i->name, s) == 0) { + if (streq(i->name, s)) { i->state = (i->state & ~off) | on; return; } @@ -126,7 +130,7 @@ void set_warning_opt(const char *const opt) if (s[0] == '\0') { // -W is an alias for -Wextra goto extra; } -#define OPTX(x) else if (strcmp(s, x) == 0) +#define OPTX(x) else if (streq(s, x)) #define SET(y) (void)(warning[y].state = (warning[y].state & ~off) | on) OPTX("all") { /* Note: this switched on a lot more warnings than gcc's -Wall */ @@ -184,7 +188,7 @@ extra: } #undef SET #undef OPT_X - else if (strcmp(opt /* sic */, "error-implicit-function-declaration") == 0) { + else if (streq(opt /* sic */, "error-implicit-function-declaration")) { /* GCC legacy: This way it only can be activated. */ warning[WARN_IMPLICIT_FUNCTION_DECLARATION].state = WARN_STATE_ON | WARN_STATE_ERROR; return;