blank dos build
[retrobench] / src / dos / main.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include "rbench.h"
4
5 static int parse_args(int argc, char **argv);
6
7 int main(int argc, char **argv)
8 {
9         read_config("rbench.cfg");
10
11         if(parse_args(argc, argv) == -1) {
12                 return 1;
13         }
14
15         printf("foo %dx%d %dbpp\n", opt.width, opt.height, opt.bpp);
16
17         return 0;
18 }
19
20
21 static const char *usage_str =
22         "Usage: %s [options]\n"
23         "Options:\n"
24         "  -s <WxH>: resolution\n"
25         "  -b <bpp>: color depth\n"
26         "  -h: print usage and exit\n";
27
28 static int parse_args(int argc, char **argv)
29 {
30         int i;
31
32         for(i=1; i<argc; i++) {
33                 if(argv[i][0] == '-') {
34                         if(argv[i][2]) {
35                                 goto inval_arg;
36                         }
37                         switch(argv[i][1]) {
38                         case 's':
39                                 if(!argv[++i] || sscanf(argv[i], "%dx%d", &opt.width, &opt.height) != 2) {
40                                         fprintf(stderr, "-s must be followed by WxH\n");
41                                         return -1;
42                                 }
43                                 break;
44
45                         case 'b':
46                                 if(!argv[++i] || !(opt.bpp = atoi(argv[i]))) {
47                                         fprintf(stderr, "-b must be followed by the color depth\n");
48                                         return -1;
49                                 }
50                                 break;
51
52                         case 'h':
53                                 printf(usage_str, argv[0]);
54                                 exit(0);
55
56                         default:
57                                 goto inval_arg;
58                         }
59                 } else {
60 inval_arg:      fprintf(stderr, "invalid argument: %s\n", argv[i]);
61                         return -1;
62                 }
63         }
64         return 0;
65 }
66