=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/m4/eval.c,v retrieving revision 1.30 retrieving revision 1.31 diff -c -r1.30 -r1.31 *** src/usr.bin/m4/eval.c 2001/09/18 13:52:58 1.30 --- src/usr.bin/m4/eval.c 2001/09/18 14:05:14 1.31 *************** *** 1,4 **** ! /* $OpenBSD: eval.c,v 1.30 2001/09/18 13:52:58 espie Exp $ */ /* $NetBSD: eval.c,v 1.7 1996/11/10 21:21:29 pk Exp $ */ /* --- 1,4 ---- ! /* $OpenBSD: eval.c,v 1.31 2001/09/18 14:05:14 espie Exp $ */ /* $NetBSD: eval.c,v 1.7 1996/11/10 21:21:29 pk Exp $ */ /* *************** *** 41,47 **** #if 0 static char sccsid[] = "@(#)eval.c 8.2 (Berkeley) 4/27/95"; #else ! static char rcsid[] = "$OpenBSD: eval.c,v 1.30 2001/09/18 13:52:58 espie Exp $"; #endif #endif /* not lint */ --- 41,47 ---- #if 0 static char sccsid[] = "@(#)eval.c 8.2 (Berkeley) 4/27/95"; #else ! static char rcsid[] = "$OpenBSD: eval.c,v 1.31 2001/09/18 14:05:14 espie Exp $"; #endif #endif /* not lint */ *************** *** 65,70 **** --- 65,72 ---- #include "extern.h" #include "pathnames.h" + #define BUILTIN_MARKER "__builtin_" + static void dodefn __P((const char *)); static void dopushdef __P((const char *, const char *)); static void dodump __P((const char *[], int)); *************** *** 544,549 **** --- 546,552 ---- const char *defn; { ndptr p; + int n; if (!*name) errx(1, "%s at line %lu: null definition.", CURRENT_NAME, *************** *** 552,557 **** --- 555,568 ---- p = addent(name); else if (p->defn != null) free((char *) p->defn); + if (strncmp(defn, BUILTIN_MARKER, sizeof(BUILTIN_MARKER)-1) == 0) { + n = builtin_type(defn+sizeof(BUILTIN_MARKER)-1); + if (n != -1) { + p->type = n; + p->defn = null; + return; + } + } if (!*defn) p->defn = null; else *************** *** 570,580 **** const char *name; { ndptr p; ! if ((p = lookup(name)) != nil && p->defn != null) { pbstr(rquote); pbstr(p->defn); pbstr(lquote); } } --- 581,597 ---- const char *name; { ndptr p; + char *real; ! if ((p = lookup(name)) != nil) { ! if (p->defn != null) { pbstr(rquote); pbstr(p->defn); pbstr(lquote); + } else if ((real = builtin_realname(p->type)) != NULL) { + pbstr(real); + pbstr(BUILTIN_MARKER); + } } }