static char *detoken(Token * tlist, bool expand_locals)
{
Token *t;
- int len;
char *line, *p;
const char *q;
+ int len = 0;
- len = 0;
- for (t = tlist; t; t = t->next) {
+ list_for_each(t, tlist) {
if (t->type == TOK_PREPROC_ID && t->text[1] == '!') {
char *p = getenv(t->text + 2);
nasm_free(t->text);
t->text = p;
}
}
- if (t->type == TOK_WHITESPACE) {
+ if (t->type == TOK_WHITESPACE)
len++;
- } else if (t->text) {
+ else if (t->text)
len += strlen(t->text);
- }
}
+
p = line = nasm_malloc(len + 1);
- for (t = tlist; t; t = t->next) {
+
+ list_for_each(t, tlist) {
if (t->type == TOK_WHITESPACE) {
*p++ = ' ';
} else if (t->text) {
}
}
*p = '\0';
+
return line;
}