]> git.sur5r.net Git - cc65/commitdiff
Preprocess the remainder of the line in a #include preprocessor directive.
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 31 Aug 2007 16:02:03 +0000 (16:02 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 31 Aug 2007 16:02:03 +0000 (16:02 +0000)
This allows use of macros in the file spec and is a requirement of the C
standard.

git-svn-id: svn://svn.cc65.org/cc65/trunk@3803 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/preproc.c

index b7edc05de79154b65e7061aaa1c1214ee565ac4f..f45bcdedd93e89005fd5d2e4b44d87e3cf3be5ed 100644 (file)
@@ -1044,20 +1044,6 @@ static int DoIf (int Skip)
        UseLineInfo (SavedNextTok.LI);
     }
 
-#if 0
-    /* Remove the #if from the line */
-    SkipWhitespace ();
-    S = line;
-    while (CurC != '\0') {
-       *S++ = CurC;
-       NextChar ();
-    }
-    *S = '\0';
-
-    /* Start over parsing from line */
-    InitLine (line);
-#endif
-
     /* Switch into special preprocessing mode */
     Preprocessing = 1;
 
@@ -1114,6 +1100,9 @@ static void DoInclude (void)
     StrBuf      Filename = STATIC_STRBUF_INITIALIZER;
 
 
+    /* Preprocess the remainder of the line */
+    PreprocessLine ();
+
     /* Skip blanks */
     SkipWhitespace ();
 
@@ -1146,15 +1135,14 @@ static void DoInclude (void)
     SB_Terminate (&Filename);
 
     /* Check if we got a terminator */
-    if (CurC != RTerm) {
+    if (CurC == RTerm) {
+        /* Open the include file */
+        OpenIncludeFile (SB_GetConstBuf (&Filename), DirSpec);
+    } else if (CurC == '\0') {
                /* No terminator found */
-               PPError ("Missing terminator or file name too long");
-               goto Done;
+               PPError ("#include expects \"FILENAME\" or <FILENAME>");
     }
 
-    /* Open the include file */
-    OpenIncludeFile (SB_GetConstBuf (&Filename), DirSpec);
-
 Done:
     /* Free the allocated filename data */
     DoneStrBuf (&Filename);