glviewvol
annotate src/opt.cc @ 3:32c4a7160350
den kanei kryo stin ellada
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 28 Dec 2014 21:48:15 +0200 |
parents | |
children | f22be47a3572 |
rev | line source |
---|---|
nuclear@3 | 1 #include <stdio.h> |
nuclear@3 | 2 #include <string.h> |
nuclear@3 | 3 #include "opt.h" |
nuclear@3 | 4 |
nuclear@3 | 5 static struct { |
nuclear@3 | 6 const char *name; |
nuclear@3 | 7 RendererType rtype; |
nuclear@3 | 8 } rend[] = { |
nuclear@3 | 9 { "fast", REND_FAST }, |
nuclear@3 | 10 { 0, REND_NONE } |
nuclear@3 | 11 }; |
nuclear@3 | 12 |
nuclear@3 | 13 Options opt; |
nuclear@3 | 14 |
nuclear@3 | 15 static void init_opt() |
nuclear@3 | 16 { |
nuclear@3 | 17 opt.fname = 0; |
nuclear@3 | 18 opt.rend_type = REND_FAST; |
nuclear@3 | 19 } |
nuclear@3 | 20 |
nuclear@3 | 21 static RendererType renderer_type(const char *name) |
nuclear@3 | 22 { |
nuclear@3 | 23 for(int i=0; rend[i].name; i++) { |
nuclear@3 | 24 if(strcmp(rend[i].name, name) == 0) { |
nuclear@3 | 25 return rend[i].rtype; |
nuclear@3 | 26 } |
nuclear@3 | 27 } |
nuclear@3 | 28 return REND_NONE; |
nuclear@3 | 29 } |
nuclear@3 | 30 |
nuclear@3 | 31 int parse_args(int argc, char **argv) |
nuclear@3 | 32 { |
nuclear@3 | 33 init_opt(); |
nuclear@3 | 34 |
nuclear@3 | 35 for(int i=1; i<argc; i++) { |
nuclear@3 | 36 if(argv[i][0] == '-') { |
nuclear@3 | 37 if(argv[i][2] == 0) { |
nuclear@3 | 38 switch(argv[i][1]) { |
nuclear@3 | 39 case 'r': |
nuclear@3 | 40 if((opt.rend_type = renderer_type(argv[++i])) == REND_NONE) { |
nuclear@3 | 41 if(strcmp(argv[i], "help") == 0) { |
nuclear@3 | 42 printf("available renderers: "); |
nuclear@3 | 43 for(int j=0; rend[j].name; j++) { |
nuclear@3 | 44 printf("%s ", rend[j].name); |
nuclear@3 | 45 } |
nuclear@3 | 46 putchar('\n'); |
nuclear@3 | 47 return -1; |
nuclear@3 | 48 } |
nuclear@3 | 49 fprintf(stderr, "unknown renderer type: %s (use -r help to show list of renderers)\n", argv[i]); |
nuclear@3 | 50 return -1; |
nuclear@3 | 51 } |
nuclear@3 | 52 break; |
nuclear@3 | 53 |
nuclear@3 | 54 default: |
nuclear@3 | 55 fprintf(stderr, "invalid option: %s\n", argv[i]); |
nuclear@3 | 56 return -1; |
nuclear@3 | 57 } |
nuclear@3 | 58 } else { |
nuclear@3 | 59 fprintf(stderr, "invalid option: %s\n", argv[i]); |
nuclear@3 | 60 return -1; |
nuclear@3 | 61 } |
nuclear@3 | 62 } else { |
nuclear@3 | 63 if(opt.fname) { |
nuclear@3 | 64 fprintf(stderr, "unexpected argument: %s\n", argv[i]); |
nuclear@3 | 65 return -1; |
nuclear@3 | 66 } |
nuclear@3 | 67 opt.fname = argv[i]; |
nuclear@3 | 68 } |
nuclear@3 | 69 } |
nuclear@3 | 70 |
nuclear@3 | 71 return 0; |
nuclear@3 | 72 } |