version 1.67, 2010/03/25 18:52:29 |
version 1.68, 2010/09/07 19:58:09 |
|
|
size_t mark = SIZE_MAX; |
size_t mark = SIZE_MAX; |
|
|
expansion_id++; |
expansion_id++; |
if (td & RECDEF) |
if (td & RECDEF) |
m4errx(1, "expanding recursive definition for %s.", argv[1]); |
m4errx(1, "expanding recursive definition for %s.", argv[1]); |
if (is_traced) |
if (is_traced) |
mark = trace(argv, argc, infile+ilevel); |
mark = trace(argv, argc, infile+ilevel); |
|
|
expand_macro(argv, argc); |
expand_macro(argv, argc); |
else |
else |
expand_builtin(argv, argc, td); |
expand_builtin(argv, argc, td); |
if (mark != SIZE_MAX) |
if (mark != SIZE_MAX) |
finish_trace(mark); |
finish_trace(mark); |
} |
} |
|
|
|
|
/* we keep the initial value for those built-ins that differentiate |
/* we keep the initial value for those built-ins that differentiate |
* between builtin() and builtin. |
* between builtin() and builtin. |
*/ |
*/ |
ac = argc; |
ac = argc; |
|
|
if (argc == 3 && !*(argv[2]) && !mimic_gnu) |
if (argc == 3 && !*(argv[2]) && !mimic_gnu) |
argc--; |
argc--; |
|
|
/* |
/* |
* dosysval - return value of the last |
* dosysval - return value of the last |
* system call. |
* system call. |
* |
* |
*/ |
*/ |
pbnum(sysval); |
pbnum(sysval); |
break; |
break; |
|
|
case ESYSCMDTYPE: |
case ESYSCMDTYPE: |
if (argc > 2) |
if (argc > 2) |
doesyscmd(argv[2]); |
doesyscmd(argv[2]); |
break; |
break; |
case INCLTYPE: |
case INCLTYPE: |
if (argc > 2) |
if (argc > 2) |
if (!doincl(argv[2])) |
if (!doincl(argv[2])) |
|
|
case SUBSTYPE: |
case SUBSTYPE: |
/* |
/* |
* dosub - select substring |
* dosub - select substring |
* |
* |
*/ |
*/ |
if (argc > 3) |
if (argc > 3) |
dosub(argv, argc); |
dosub(argv, argc); |
|
|
char *temp; |
char *temp; |
|
|
temp = xstrdup(argv[2]); |
temp = xstrdup(argv[2]); |
|
|
fd = mkstemp(temp); |
fd = mkstemp(temp); |
if (fd == -1) |
if (fd == -1) |
err(1, |
err(1, |
"%s at line %lu: couldn't make temp file %s", |
"%s at line %lu: couldn't make temp file %s", |
CURRENT_NAME, CURRENT_LINE, argv[2]); |
CURRENT_NAME, CURRENT_LINE, argv[2]); |
close(fd); |
close(fd); |
pbstr(temp); |
pbstr(temp); |
|
|
if (argc > 2) |
if (argc > 2) |
doindir(argv, argc); |
doindir(argv, argc); |
break; |
break; |
|
|
case BUILTINTYPE: /* Builtins only */ |
case BUILTINTYPE: /* Builtins only */ |
if (argc > 2) |
if (argc > 2) |
dobuiltin(argv, argc); |
dobuiltin(argv, argc); |
|
|
pushback(COMMA); |
pushback(COMMA); |
} |
} |
pbstr(argv[2]); |
pbstr(argv[2]); |
} |
} |
break; |
break; |
case '@': |
case '@': |
if (argc > 2) { |
if (argc > 2) { |
|
|
{ |
{ |
if (!*name && !mimic_gnu) |
if (!*name && !mimic_gnu) |
m4errx(1, "null definition."); |
m4errx(1, "null definition."); |
else |
else |
macro_define(name, defn); |
macro_define(name, defn); |
} |
} |
|
|
|
|
fprintf(traceout, "%s:\t%s\n", name, p->defn); |
fprintf(traceout, "%s:\t%s\n", name, p->defn); |
else { |
else { |
fprintf(traceout, "%s:\t<%s>\n", name, p->defn); |
fprintf(traceout, "%s:\t<%s>\n", name, p->defn); |
} |
} |
} else |
} else |
fprintf(traceout, "`%s'\t`%s'\n", name, p->defn); |
fprintf(traceout, "`%s'\t`%s'\n", name, p->defn); |
} |
} |
|
|
resizedivs(n + 10); |
resizedivs(n + 10); |
else |
else |
n = 0; /* bitbucket */ |
n = 0; /* bitbucket */ |
} |
} |
|
|
if (n < 0) |
if (n < 0) |
n = 0; /* bitbucket */ |
n = 0; /* bitbucket */ |
|
|
handledash(char *buffer, char *end, const char *src) |
handledash(char *buffer, char *end, const char *src) |
{ |
{ |
char *p; |
char *p; |
|
|
p = buffer; |
p = buffer; |
while(*src) { |
while(*src) { |
if (src[1] == '-' && src[2]) { |
if (src[1] == '-' && src[2]) { |