Treat already preprocessed code just like normal #include'ed code.

This commit is contained in:
Ge van Geldorp 2005-02-25 16:19:35 +00:00 committed by Alexandre Julliard
parent d55575e976
commit 73227aa568
1 changed files with 11 additions and 6 deletions

View File

@ -232,6 +232,7 @@ typedef struct macexpstackentry {
static void newline(int);
static int make_number(int radix, YYSTYPE *val, const char *str, int len);
static void put_buffer(const char *s, int len);
static int is_c_h_include(char *fname, int quoted);
/* Buffer management */
static void push_buffer(pp_entry_t *ppp, char *filename, char *incname, int pop);
static bufferstackentry_t *pop_buffer(void);
@ -551,11 +552,15 @@ includelogicentry_t *pp_includelogiclist = NULL;
case pp_define:
case pp_mbody:
case pp_inc:
case pp_line:
case RCINCL:
if (yy_current_state()==RCINCL) yy_pop_state();
pplval.cptr = get_string();
return tDQSTRING;
case pp_line:
pplval.cptr = get_string();
if (is_c_h_include(pplval.cptr, 1)) pass_data=0;
else pass_data=1;
return tDQSTRING;
default:
put_string();
}
@ -1404,12 +1409,12 @@ static void put_buffer(const char *s, int len)
* Include management
*-------------------------------------------------------------------------
*/
static int is_c_h_include(char *fname)
static int is_c_h_include(char *fname, int quoted)
{
int sl=strlen(fname);
if (sl < 2) return 0;
if ((toupper(fname[sl-1])!='H') && (toupper(fname[sl-1])!='C')) return 0;
if (fname[sl-2]!='.') return 0;
if (sl < 2 + 2 * quoted) return 0;
if ((toupper(fname[sl-1-quoted])!='H') && (toupper(fname[sl-1-quoted])!='C')) return 0;
if (fname[sl-2-quoted]!='.') return 0;
return 1;
}
@ -1448,7 +1453,7 @@ void pp_do_include(char *fname, int type)
pp_incl_state.seen_junk = 0;
pp_incl_state.state = 0;
pp_incl_state.ppp = NULL;
if (is_c_h_include(newpath)) pass_data=0;
if (is_c_h_include(newpath, 0)) pass_data=0;
else pass_data=1;
if(pp_status.debug)