version 1.21, 1999/11/30 22:19:50 |
version 1.22, 1999/12/21 22:30:47 |
|
|
for (n = 0; n < argc; n++) |
for (n = 0; n < argc; n++) |
printf("argv[%d] = %s\n", n, argv[n]); |
printf("argv[%d] = %s\n", n, argv[n]); |
#endif |
#endif |
|
|
|
if (td & RECDEF) |
|
errx(1, "expanding recursive definition for %s", argv[1]); |
/* |
/* |
* if argc == 3 and argv[2] is null, then we |
* if argc == 3 and argv[2] is null, then we |
* have macro-or-builtin() type call. We adjust |
* have macro-or-builtin() type call. We adjust |
|
|
if (argc == 3 && !*(argv[2])) |
if (argc == 3 && !*(argv[2])) |
argc--; |
argc--; |
|
|
switch (td & ~STATIC) { |
switch (td & TYPEMASK) { |
|
|
case DEFITYPE: |
case DEFITYPE: |
if (argc > 2) |
if (argc > 2) |
|
|
|
|
if (!*name) |
if (!*name) |
errx(1, "null definition."); |
errx(1, "null definition."); |
if (STREQ(name, defn)) |
|
errx(1, "%s: recursive definition.", name); |
|
if ((p = lookup(name)) == nil) |
if ((p = lookup(name)) == nil) |
p = addent(name); |
p = addent(name); |
else if (p->defn != null) |
else if (p->defn != null) |
|
|
else |
else |
p->defn = xstrdup(defn); |
p->defn = xstrdup(defn); |
p->type = MACRTYPE; |
p->type = MACRTYPE; |
|
if (STREQ(name, defn)) |
|
p->type |= RECDEF; |
} |
} |
|
|
/* |
/* |
|
|
|
|
if (!*name) |
if (!*name) |
errx(1, "null definition"); |
errx(1, "null definition"); |
if (STREQ(name, defn)) |
|
errx(1, "%s: recursive definition.", name); |
|
p = addent(name); |
p = addent(name); |
if (!*defn) |
if (!*defn) |
p->defn = null; |
p->defn = null; |
else |
else |
p->defn = xstrdup(defn); |
p->defn = xstrdup(defn); |
p->type = MACRTYPE; |
p->type = MACRTYPE; |
|
if (STREQ(name, defn)) |
|
p->type |= RECDEF; |
} |
} |
|
|
/* |
/* |