summaryrefslogtreecommitdiff
path: root/cpp/cpp.c
diff options
context:
space:
mode:
authorRobert de Bath <rdebath@poboxes.com>2002-08-30 20:22:10 +0200
committerLubomir Rintel <lkundrak@v3.sk>2013-10-23 23:48:48 +0200
commit67ef77f9e0744e524188c01fe314b609edd53456 (patch)
tree8a29acbf686764a050b4960a579e2a6d71f43ae2 /cpp/cpp.c
parent26ade8d624457b7164502ed9c190ca3f146bda0c (diff)
downloaddev86-67ef77f9e0744e524188c01fe314b609edd53456.tar.gz
Import Dev86src-0.16.9.tar.gzv0.16.9
Diffstat (limited to 'cpp/cpp.c')
-rw-r--r--cpp/cpp.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/cpp/cpp.c b/cpp/cpp.c
index 030535e..231760b 100644
--- a/cpp/cpp.c
+++ b/cpp/cpp.c
@@ -23,17 +23,18 @@
* c_lineno Current line number in file being parsed.
*
* alltok Control flag for the kind of tokens you want (C or generic)
- * dislect Control flag to change the preprocessor for Ansi C.
+ * dialect Control flag to change the preprocessor for Ansi C.
*
* TODO:
* #asm -> asm("...") translation.
* ?: in #if expressions
- * __DATE__ and __TIME__ macros.
- * Add #line directive.
- * Poss: Seperate current directory for #include from errors (#line).
- * Poss: C99 Variable macro args.
+ * Complete #line directive.
* \n in "\n" in a stringized argument.
* Comments in stringized arguments should be deleted.
+ *
+ * Poss: Seperate current directory for #include from errors (#line).
+ * (For editors that hunt down source files)
+ * Poss: C99 Variable macro args.
*/
#define KEEP_SPACE 0
@@ -83,7 +84,7 @@ static int if_count = 0;
static int if_false = 0;
static int if_has_else = 0;
static int if_hidden = 0;
-static int if_stack = 0;
+static unsigned int if_stack = 0;
struct arg_store {
char * name;
@@ -276,7 +277,7 @@ Try_again:
if( cc < WORDSIZE-1 ) *p++ = ch; /* Clip to WORDSIZE */
*p = '\0'; cc++;
ch = chget();
- if (ch == 1) ch = chget();
+ if (ch == SYN) ch = chget();
}
break_break:
/* Numbers */
@@ -671,7 +672,10 @@ do_preproc()
cwarn(curword);
} else if( strcmp(curword, "pragma") == 0 ) {
do_proc_copy_hashline(); pgetc();
- /* Ignore #pragma */
+ /* Ignore #pragma ? */
+ } else if( strcmp(curword, "line") == 0 ) {
+ do_proc_copy_hashline(); pgetc();
+ /* Ignore #line for now. */
} else if( strcmp(curword, "asm") == 0 ) {
alltok |= 0x100;
return do_proc_copy_hashline();
@@ -905,6 +909,13 @@ do_proc_if(type)
int type;
{
int ch = 0;
+ if(if_false && if_hidden)
+ {
+ if( type != 3 ) if_hidden++;
+ do_proc_tail();
+ return 0;
+ }
+
if( type == 3 )
{
if( if_count == 0 )