mirror of
https://github.com/frida/tinycc
synced 2025-01-01 17:44:26 +03:00
#include_next support (Bernhard Fischer)
This commit is contained in:
parent
9825011ced
commit
8f2d519203
17
tcc.c
17
tcc.c
@ -2731,6 +2731,7 @@ static void preprocess(int is_bof)
|
|||||||
define_undef(s);
|
define_undef(s);
|
||||||
break;
|
break;
|
||||||
case TOK_INCLUDE:
|
case TOK_INCLUDE:
|
||||||
|
case TOK_INCLUDE_NEXT:
|
||||||
ch = file->buf_ptr[0];
|
ch = file->buf_ptr[0];
|
||||||
/* XXX: incorrect if comments : use next_nomacro with a special mode */
|
/* XXX: incorrect if comments : use next_nomacro with a special mode */
|
||||||
skip_spaces();
|
skip_spaces();
|
||||||
@ -2807,8 +2808,12 @@ static void preprocess(int is_bof)
|
|||||||
buf1[size] = '\0';
|
buf1[size] = '\0';
|
||||||
pstrcat(buf1, sizeof(buf1), buf);
|
pstrcat(buf1, sizeof(buf1), buf);
|
||||||
f = tcc_open(s1, buf1);
|
f = tcc_open(s1, buf1);
|
||||||
if (f)
|
if (f) {
|
||||||
goto found;
|
if (tok == TOK_INCLUDE_NEXT)
|
||||||
|
tok = TOK_INCLUDE;
|
||||||
|
else
|
||||||
|
goto found;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (s1->include_stack_ptr >= s1->include_stack + INCLUDE_STACK_SIZE)
|
if (s1->include_stack_ptr >= s1->include_stack + INCLUDE_STACK_SIZE)
|
||||||
error("#include recursion too deep");
|
error("#include recursion too deep");
|
||||||
@ -2824,8 +2829,12 @@ static void preprocess(int is_bof)
|
|||||||
pstrcat(buf1, sizeof(buf1), "/");
|
pstrcat(buf1, sizeof(buf1), "/");
|
||||||
pstrcat(buf1, sizeof(buf1), buf);
|
pstrcat(buf1, sizeof(buf1), buf);
|
||||||
f = tcc_open(s1, buf1);
|
f = tcc_open(s1, buf1);
|
||||||
if (f)
|
if (f) {
|
||||||
goto found;
|
if (tok == TOK_INCLUDE_NEXT)
|
||||||
|
tok = TOK_INCLUDE;
|
||||||
|
else
|
||||||
|
goto found;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
error("include file '%s' not found", buf);
|
error("include file '%s' not found", buf);
|
||||||
f = NULL;
|
f = NULL;
|
||||||
|
1
tcctok.h
1
tcctok.h
@ -64,6 +64,7 @@
|
|||||||
/* preprocessor only */
|
/* preprocessor only */
|
||||||
DEF(TOK_DEFINE, "define")
|
DEF(TOK_DEFINE, "define")
|
||||||
DEF(TOK_INCLUDE, "include")
|
DEF(TOK_INCLUDE, "include")
|
||||||
|
DEF(TOK_INCLUDE_NEXT, "include_next")
|
||||||
DEF(TOK_IFDEF, "ifdef")
|
DEF(TOK_IFDEF, "ifdef")
|
||||||
DEF(TOK_IFNDEF, "ifndef")
|
DEF(TOK_IFNDEF, "ifndef")
|
||||||
DEF(TOK_ELIF, "elif")
|
DEF(TOK_ELIF, "elif")
|
||||||
|
Loading…
Reference in New Issue
Block a user