expanded the build instructions in the README
[dosdemo] / src / cfgopt.c
index 553a145..ef16167 100644 (file)
@@ -4,7 +4,12 @@
 #include <ctype.h>
 #include "cfgopt.h"
 
-struct options opt;
+struct options opt = {
+       0,      /* start_scr */
+       0,      /* music */
+       0,      /* sball */
+       1       /* vsync */
+};
 
 int parse_args(int argc, char **argv)
 {
@@ -19,6 +24,12 @@ int parse_args(int argc, char **argv)
                                opt.music = 0;
                        } else if(strcmp(argv[i], "-scr") == 0 || strcmp(argv[i], "-screen") == 0) {
                                scrname = argv[++i];
+                       } else if(strcmp(argv[i], "-sball") == 0) {
+                               opt.sball = !opt.sball;
+                       } else if(strcmp(argv[i], "-vsync") == 0) {
+                               opt.vsync = 1;
+                       } else if(strcmp(argv[i], "-novsync") == 0) {
+                               opt.vsync = 0;
                        } else {
                                fprintf(stderr, "invalid option: %s\n", argv[i]);
                                return -1;
@@ -32,7 +43,9 @@ int parse_args(int argc, char **argv)
                }
        }
 
-       opt.start_scr = scrname;
+       if(scrname) {
+               opt.start_scr = scrname;
+       }
        return 0;
 }
 
@@ -99,6 +112,10 @@ int load_config(const char *fname)
                        opt.music = bool_value(value);
                } else if(strcmp(line, "screen") == 0) {
                        opt.start_scr = strdup(value);
+               } else if(strcmp(line, "sball") == 0) {
+                       opt.sball = bool_value(value);
+               } else if(strcmp(line, "vsync") == 0) {
+                       opt.vsync = bool_value(value);
                } else {
                        fprintf(stderr, "%s:%d invalid option: %s\n", fname, nline, line);
                        return -1;