the -U option did not work properly; call do_undef() now

This commit is contained in:
eck 1990-04-18 16:40:17 +00:00
parent 52f08181a6
commit 64e9d11570
4 changed files with 19 additions and 27 deletions

View file

@ -123,7 +123,7 @@ domacro()
do_pragma();
break;
case K_UNDEF: /* "undef" */
do_undef();
do_undef((struct idf *) 0);
break;
default:
/* invalid word seen after the '#' */
@ -422,12 +422,14 @@ do_ifdef(how)
SkipToNewLine();
}
do_undef()
/* argidf != NULL when the undef came from a -U option */
do_undef(argidf)
struct idf *argidf;
{
register struct idf *id;
register struct idf *id = argidf;
/* Forget a macro definition. */
if (id = GetIdentifier(1)) {
if (id || (id = GetIdentifier(1))) {
if (id->id_macro) { /* forget the macro */
if (id->id_macro->mc_flag & NOUNDEF) {
lexerror("it is not allowed to undef %s", id->id_text);
@ -437,7 +439,7 @@ do_undef()
id->id_macro = (struct macro *) 0;
}
} /* else: don't complain */
SkipToNewLine();
if (!argidf) SkipToNewLine();
}
else
lexerror("illegal #undef construction");

View file

@ -224,14 +224,7 @@ deleted, is now a debug-flag
case 'U' : { /* -Uname : undefine predefined */
#ifndef NOPP
register struct idf *idef;
if (*text) {
if ((idef = str2idf(text))->id_macro) {
free_macro(idef->id_macro);
idef->id_macro = (struct macro *) 0;
}
}
if (*text) do_undef(str2idf(text));
#else NOPP
warning("-U option ignored");
#endif NOPP

View file

@ -133,7 +133,7 @@ domacro()
do_pragma();
break;
case K_UNDEF: /* "undef" */
do_undef();
do_undef((char *)0);
break;
default:
/* invalid word seen after the '#' */
@ -439,13 +439,15 @@ do_ifdef(how)
SkipToNewLine();
}
do_undef()
/* argstr != NULL when the undef came from a -U option */
do_undef(argstr)
char *argstr;
{
register struct idf *id;
register char *str;
register char *str = argstr;
/* Forget a macro definition. */
if (str = GetIdentifier(1)) {
if (str || (str = GetIdentifier(1))) {
if ((id = findidf(str)) && id->id_macro) {
if (id->id_macro->mc_flag & NOUNDEF) {
error("it is not allowed to #undef %s", str);
@ -455,9 +457,11 @@ do_undef()
id->id_macro = (struct macro *) 0;
}
} /* else: don't complain */
if (!argstr){
free(str);
SkipToNewLine();
}
}
else
error("illegal #undef construction");
}

View file

@ -109,14 +109,7 @@ do_option(text)
options['P'] = 1;
break;
case 'U' : /* -Uname : undefine predefined */
if (*text) {
register struct idf *idef = findidf(text);
if (idef && idef->id_macro) {
free_macro(idef->id_macro);
idef->id_macro = (struct macro *) 0;
}
}
if (*text) do_undef(text);
break;
}
}