]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - main.c
manpage: -Oglobal-temps
[xonotic/gmqcc.git] / main.c
diff --git a/main.c b/main.c
index 107098a6e582acf312b9663b2511ec651c2500aa..af4a34cb1f094f02b56d7c8a3546abacd0594645 100644 (file)
--- a/main.c
+++ b/main.c
@@ -23,6 +23,7 @@
  */
 #include "gmqcc.h"
 #include "lexer.h"
+#include <time.h>
 
 /* TODO: cleanup this whole file .. it's a fuckign mess */
 
@@ -61,6 +62,7 @@ static int usage() {
     con_out("  -o, --output=file      output file, defaults to progs.dat\n"
             "  -s filename            add a progs.src file to be used\n");
     con_out("  -E                     stop after preprocessing\n");
+    con_out("  -q, --quiet            be less verbose\n");
     con_out("  -config file           use the specified ini file\n");
     con_out("  -std=standard          select one of the following standards\n"
             "       -std=qcc          original QuakeC\n"
@@ -261,6 +263,7 @@ static bool options_parse(int argc, char **argv) {
 
                 case 'E':
                     opts.pp_only = true;
+                    opts_set(opts.flags, FTEPP_PREDEFS, true); /* predefs on for -E */
                     break;
 
                 /* debug turns on -flno */
@@ -269,6 +272,10 @@ static bool options_parse(int argc, char **argv) {
                     opts.g = true;
                     break;
 
+                case 'q':
+                    opts.quiet = true;
+                    break;
+
                 case 'D':
                     if (!strlen(argv[0]+2)) {
                         con_err("expected name after -D\n");
@@ -437,6 +444,10 @@ static bool options_parse(int argc, char **argv) {
                         version();
                         exit(0);
                     }
+                    else if (!strcmp(argv[0]+2, "quiet")) {
+                        opts.quiet = true;
+                        break;
+                    }
                     else {
             /* All long options with arguments */
                         if (options_long_witharg("output", &argc, &argv, &argarg)) {
@@ -504,6 +515,8 @@ int main(int argc, char **argv) {
     con_init ();
     opts_init("progs.dat", COMPILER_GMQCC, (1024 << 3));
 
+    util_seed(time(0));
+
     if (!options_parse(argc, argv)) {
         return usage();
     }
@@ -536,7 +549,7 @@ int main(int argc, char **argv) {
                 exit(1);
             }
             operators_free = true;
-            newops = mem_a(sizeof(operators[0]) * operator_count);
+            newops = (oper_info*)mem_a(sizeof(operators[0]) * operator_count);
             memcpy(newops, operators, sizeof(operators[0]) * operator_count);
             memcpy(&newops[operator_count-2], &operators[operator_count-1], sizeof(newops[0]));
             memcpy(&newops[operator_count-1], &operators[operator_count-2], sizeof(newops[0]));
@@ -566,7 +579,7 @@ int main(int argc, char **argv) {
             }
         }
         else {
-         /* TODO: stdout without stdout .. */
+            outfile = con_default_out();
         }
     }
 
@@ -647,12 +660,12 @@ srcdone:
         goto cleanup;
 
     if (vec_size(items)) {
-        if (!opts.pp_only) {
+        if (!opts.quiet && !opts.pp_only) {
             con_out("Mode: %s\n", (progs_src ? "progs.src" : "manual"));
             con_out("There are %lu items to compile:\n", (unsigned long)vec_size(items));
         }
         for (itr = 0; itr < vec_size(items); ++itr) {
-            if (!opts.pp_only) {
+            if (!opts.quiet && !opts.pp_only) {
                 con_out("  item: %s (%s)\n",
                        items[itr].filename,
                        ( (items[itr].type == TYPE_QC ? "qc" :
@@ -681,7 +694,7 @@ srcdone:
                     }
                     data = ftepp_get();
                     if (vec_size(data)) {
-                        if (!parser_compile_string_len(items[itr].filename, data, vec_size(data))) {
+                        if (!parser_compile_string(items[itr].filename, data, vec_size(data))) {
                             retval = 1;
                             goto cleanup;
                         }
@@ -712,7 +725,7 @@ srcdone:
     }
 
     /* stuff */
-    if (!opts.pp_only) {
+    if (!opts.quiet && !opts.pp_only) {
         for (itr = 0; itr < COUNT_OPTIMIZATIONS; ++itr) {
             if (opts_optimizationcount[itr]) {
                 con_out("%s: %u\n", opts_opt_list[itr].name, (unsigned int)opts_optimizationcount[itr]);