0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-10-10 00:25:06 -04:00

asm/preproc.c: generalize pp_pre_command()

Generalize pp_pre_command() so that the first argument doesn't have to
be a preprocessor token. Instead, the two arguments are now both
turned into token streams, separated by a whitespace token.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
This commit is contained in:
H. Peter Anvin
2025-10-07 09:53:15 -07:00
parent f1b6d3188c
commit 2c63ab038c

View File

@@ -1100,6 +1100,19 @@ static Token *cut_tlist(Token *t)
return nt; return nt;
} }
/*
* Find the pointer to the end of a tlist. If the tlist is empty,
* return the incoming pointer.
*/
static Token **tlist_endptr(Token **tptr)
{
Token *t;
while ((t = *tptr))
tptr = &t->next;
return tptr;
}
/* /*
* Allocate a new MMacro. This does not claim a refcount; the appropriate * Allocate a new MMacro. This does not claim a refcount; the appropriate
* get_mmacro() calls need to be added. * get_mmacro() calls need to be added.
@@ -8920,13 +8933,17 @@ void pp_pre_undefine(char *definition)
/* Insert an early preprocessor command that doesn't need special handling */ /* Insert an early preprocessor command that doesn't need special handling */
void pp_pre_command(const char *what, char *string) void pp_pre_command(const char *what, char *string)
{ {
Token *def, *space; Token *def;
Line *l; Line *l;
def = tokenize(string); def = tokenize(string);
if (what) { if (what) {
space = new_White(def); Token *wt = tokenize(what);
def = new_Token(space, TOKEN_PREPROC_ID, what, 0); Token **tailp = tlist_endptr(&wt);
*tailp = new_White(def);
def = wt;
} }
nasm_new(l); nasm_new(l);