+ for(i=1; i<argc; i++) {
+ if(argv[i][0] == '-') {
+ if(argv[i][2]) {
+invalopt: fprintf(stderr, "invalid option: %s\n", argv[i]);
+ return 1;
+ }
+ switch(argv[i][1]) {
+ case 's':
+ if(!argv[++i] || sscanf(argv[i], "%dx%d", &xres, &yres) != 2) {
+ fprintf(stderr, "invalid resolution: %s\n", argv[i]);
+ return 1;
+ }
+ break;
+
+ case 'b':
+ if(!argv[++i] || (bpp = atoi(argv[i])) <= 0) {
+ fprintf(stderr, "invalid color depth: %s\n", argv[i]);
+ return 1;
+ }
+ break;
+
+ case 'd':
+ doublebuf = 1;
+ break;
+
+ case 'h':
+ printf(usage_fmt, argv[0]);
+ return 0;
+
+ default:
+ goto invalopt;
+ }
+ } else {
+ fprintf(stderr, "unexpected argument: %s\n", argv[i]);
+ return 1;
+ }
+ }
+
+