winehq.org
Sign In Sign Up
  • Sign In
  • Sign Up
  • Manage this list

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

2025

  • June
  • May
  • April
  • March
  • February
  • January

2024

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2023

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2022

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2021

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2020

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2019

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2018

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2017

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2016

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2015

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2014

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2013

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2012

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2011

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2010

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2009

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2008

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2007

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2006

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2005

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2004

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2003

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2002

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January

2001

  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
List overview
thread

wpp

Ge van Geldorp
20 Feb 2005 20 Feb '05
3:42 p.m.

wpp will currently silently drop non-preprocessor stuff (typedefs, function prototypes etc.) when #including a .c or .h file. However, if you preprocess e.g. a .rc file externally and then feed it to wrc (which in turn will feed it through wpp) the non-preprocessor stuff isn't removed. The patch below changes that, by looking at the filename on the #line directive. If it ends in .c or .h, no output is generated (but the file is still parsed for preproc statements ofcourse). We need this for ReactOS, it doesn't hurt Wine (yes, I've tested it <g>) and including it in Wine would make my monthly job of merging Wine and ReactOS a tad easier. If there are no objections I'll submit to wine-patches in a few days. We also have another change in wpp, which adds support for #include_next (can't take credit for that, Filip Navara wrote it). Since you can't use that #include_next in Wine anyway (not every compiler supports it) I'm not going to bother creating and testing a Wine patch for it. If I misjudged and there is interest in this from the Wine side just let me know.

Ge van Geldorp.

Index: libs/wpp/ppl.l =================================================================== RCS file: /home/wine/wine/libs/wpp/ppl.l,v retrieving revision 1.4 diff -u -r1.4 ppl.l --- libs/wpp/ppl.l 21 Oct 2003 23:57:25 -0000 1.4 +++ libs/wpp/ppl.l 20 Feb 2005 15:12:10 -0000 @@ -232,6 +232,7 @@ 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 @@ 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 @@ * 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 @@ 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)

0 0

Back to the thread

Back to the list

Powered by HyperKitty version 1.3.7.