Exemplo n.º 1
0
int
Wflag(const char *str)
{
    size_t i;
    int set, err;

    if (strcmp("all", str) == 0)
        return Wset(W_ALL);
    if (strcmp("extra", str) == 0)
        return Wset(W_EXTRA);
    if (strcmp("W", str) == 0)
        return Wset(0);

    set = 1;
    err = 0;
    if (strcmp("error", str) != 0) {
        if (strncmp("no-", str, 3) == 0) {
            str += 3;
            set = 0;
        }

        if (strncmp("error=", str, 6) == 0) {
            str += 6;
            err = 1;
        }
    }

    for (i = 0; i < ARRAYLEN(Warns); i++) {
        if (strcmp(Warns[i].name, str) == 0) {
            if (set)
                Warns[i].flag |= W_SET;
            else
                Warns[i].flag &= ~W_SET;

            if (err)
                Warns[i].flag |= W_ERR;
            else
                Warns[i].flag &= ~W_ERR;

            return 1;
        }
    }

    return 0;
}
Exemplo n.º 2
0
/*
 * gcc-specific pragmas.
 */
int
pragmas_gcc(char *t)
{
	char u;
	extern char *pragstore;

	if (strcmp((t = pragtok(NULL)), "diagnostic") == 0) {
		int warn, err;

		if (strcmp((t = pragtok(NULL)), "ignored") == 0)
			warn = 0, err = 0;
		else if (strcmp(t, "warning") == 0)
			warn = 1, err = 0;
		else if (strcmp(t, "error") == 0)
			warn = 1, err = 1;
		else
			return 1;

		if (eat('\"') || eat('-'))
			return 1;

		for (t = pragstore; *t && *t != '\"'; t++)
			;

		u = *t;
		*t = 0;
		Wset(pragstore + 1, warn, err);
		*t = u;
	} else if (strcmp(t, "poison") == 0) {
		/* currently ignore */;
	} else if (strcmp(t, "visibility") == 0) {
		/* currently ignore */;
	} else if (strcmp(t, "system_header") == 0) {
		/* currently ignore */;
	} else
		werror("gcc pragma unsupported");
	return 0;
}