]> git.xonotic.org Git - xonotic/gmqcc.git/commitdiff
qcvm: -trace flag
authorWolfgang (Blub) Bumiller <blub@speed.at>
Sun, 19 Aug 2012 13:19:43 +0000 (15:19 +0200)
committerWolfgang (Blub) Bumiller <blub@speed.at>
Sun, 19 Aug 2012 13:19:43 +0000 (15:19 +0200)
exec.c

diff --git a/exec.c b/exec.c
index 66095f59a0edb1d35bc2f5b979491d04e19a3f26..7f5c9710e019117ee22db575b9f67d5ff1fed424 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -636,17 +636,42 @@ static prog_builtin qc_builtins[] = {
 };
 static size_t qc_builtins_count = sizeof(qc_builtins) / sizeof(qc_builtins[0]);
 
+static const char *arg0 = NULL;
+
+void usage()
+{
+    printf("usage: [-debug] %s file\n", arg0);
+    exit(1);
+}
+
 int main(int argc, char **argv)
 {
     size_t      i;
     qcint       fnmain = -1;
     qc_program *prog;
+    size_t      xflags = VMXF_DEFAULT;
 
-    if (argc != 2) {
-        printf("usage: %s file\n", argv[0]);
-        exit(1);
+    arg0 = argv[0];
+
+    if (argc < 2)
+        usage();
+
+    while (argc > 2) {
+        if (!strcmp(argv[1], "-trace")) {
+            --argc;
+            ++argv;
+            xflags |= VMXF_TRACE;
+        }
+        else if (!strcmp(argv[1], "-profile")) {
+            --argc;
+            ++argv;
+            xflags |= VMXF_PROFILE;
+        }
+        else
+            usage();
     }
 
+
     prog = prog_load(argv[1]);
     if (!prog) {
         printf("failed to load program '%s'\n", argv[1]);
@@ -659,14 +684,14 @@ int main(int argc, char **argv)
 
     for (i = 1; i < prog->functions_count; ++i) {
         const char *name = prog_getstring(prog, prog->functions[i].name);
-        printf("Found function: %s\n", name);
+        /* printf("Found function: %s\n", name); */
         if (!strcmp(name, "main"))
             fnmain = (qcint)i;
     }
     printf("Entity field space: %i\n", (int)prog->entityfields);
     if (fnmain > 0)
     {
-        prog_exec(prog, &prog->functions[fnmain], VMXF_TRACE, VM_JUMPS_DEFAULT);
+        prog_exec(prog, &prog->functions[fnmain], xflags, VM_JUMPS_DEFAULT);
     }
     else
         printf("No main function found\n");