]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - ftepp.c
Wrong condition *sigh*
[xonotic/gmqcc.git] / ftepp.c
diff --git a/ftepp.c b/ftepp.c
index 4cdfb68fbf6f04042722ee102be0097b4c90628a..449dcd51e0b0c3ea3540d9f6f9c2dda713caa4e2 100644 (file)
--- a/ftepp.c
+++ b/ftepp.c
@@ -136,7 +136,7 @@ static void pptoken_delete(pptoken *self)
 static ppmacro *ppmacro_new(lex_ctx ctx, const char *name)
 {
     ppmacro *macro = (ppmacro*)mem_a(sizeof(ppmacro));
-    
+
     (void)ctx;
     memset(macro, 0, sizeof(*macro));
     macro->name = util_strdup(name);
@@ -311,6 +311,8 @@ static bool ftepp_define_body(ftepp_t *ftepp, ppmacro *macro)
 static bool ftepp_define(ftepp_t *ftepp)
 {
     ppmacro *macro;
+    size_t l = ftepp_ctx(ftepp).line;
+
     (void)ftepp_next(ftepp);
     if (!ftepp_skipspace(ftepp))
         return false;
@@ -351,6 +353,9 @@ static bool ftepp_define(ftepp_t *ftepp)
     else {
         ppmacro_delete(macro);
     }
+
+    for (; l < ftepp_ctx(ftepp).line; ++l)
+        ftepp_out(ftepp, "\n", true);
     return true;
 }
 
@@ -989,12 +994,6 @@ static char *ftepp_include_find_path(const char *file, const char *pathfile)
         memcpy(vec_add(filename, len), pathfile, len);
         vec_push(filename, '/');
     }
-    else {
-        len = strlen(pathfile);
-        memcpy(vec_add(filename, len), pathfile, len);
-        if (vec_last(filename) != '/')
-            vec_push(filename, '/');
-    }
 
     len = strlen(file);
     memcpy(vec_add(filename, len+1), file, len);
@@ -1057,7 +1056,7 @@ static bool ftepp_include(ftepp_t *ftepp)
     }
     inlex = lex_open(filename);
     if (!inlex) {
-        ftepp_error(ftepp, "failed to open include file `%s`", filename);
+        ftepp_error(ftepp, "open failed on include file `%s`", filename);
         vec_free(filename);
         return false;
     }
@@ -1266,7 +1265,10 @@ static bool ftepp_preprocess(ftepp_t *ftepp)
             case TOKEN_KEYWORD:
             case TOKEN_IDENT:
             case TOKEN_TYPENAME:
-                macro = ftepp_macro_find(ftepp, ftepp_tokval(ftepp));
+                if (ftepp->output_on)
+                    macro = ftepp_macro_find(ftepp, ftepp_tokval(ftepp));
+                else
+                    macro = NULL;
                 if (!macro) {
                     ftepp_out(ftepp, ftepp_tokval(ftepp), false);
                     ftepp_next(ftepp);
@@ -1363,7 +1365,16 @@ bool ftepp_init()
     ftepp = ftepp_new();
     if (!ftepp)
         return false;
+
+    /* set the right macro based on the selected standard */
     ftepp_add_define(NULL, "GMQCC");
+    if (opts_standard == COMPILER_FTEQCC)
+        ftepp_add_define(NULL, "__STD_FTEQCC__");
+    else if (opts_standard == COMPILER_GMQCC)
+        ftepp_add_define(NULL, "__STD_GMQCC__");
+    else if (opts_standard == COMPILER_QCC)
+        ftepp_add_define(NULL, "__STD_QCC__");
+
     return true;
 }