diff --git a/util.h b/util.h index c7d3a28..01327be 100644 --- a/util.h +++ b/util.h @@ -12,22 +12,23 @@ if(!argv0) \ argv0 = argv[0]; \ for(argc--, argv++; argv[0] && argv[0][0] == '-' && argv[0][1] != '\0'; argc--, argv++) { \ + int _break=0;\ if(argv[0][1] == '-' && argv[0][2] == '\0') { /* -- signifies end of flags */ \ argc--; argv++; \ break; \ } \ - for(argv[0]++; *argv[0] != '\0'; argv[0]++) \ - switch(*argv[0]) + for(argv[0]++; *argv[0] != '\0' && !_break;) \ + switch(*argv[0]++) #define ARGEND \ } \ } #define ARGC() (*argv[0]) -#define ARGF() (*argv[0] ? argv[0] \ - : argv[1] ? (argc--, *++argv) : NULL) -#define EARGF(x) (*argv[0] ? argv[0] \ - : argv[1] ? (argc--, *++argv) : ((x), abort(), NULL)) +#define ARGF() ((_break=1), *argv[0] ? argv[0] \ + : argv[1] ? (argc--, *++argv) : (char*)0) +#define EARGF(x) ((_break=1), *argv[0] ? argv[0] \ + : argv[1] ? (argc--, *++argv) : ((x), abort(), (char*)0)) extern char *argv0;