1 extern char *argv0; 2 #define ARGBEGIN for((argv0? 0: (argv0=*argv)),argv++,argc--;\ 3 argv[0] && argv[0][0]=='-' && argv[0][1];\ 4 argc--, argv++) {\ 5 char *_args, *_argt;\ 6 Rune _argc;\ 7 _args = &argv[0][1];\ 8 if(_args[0]=='-' && _args[1]==0){\ 9 argc--; argv++; break;\ 10 }\ 11 _argc = 0;\ 12 while(*_args && (_args += chartorune(&_argc, _args)))\ 13 switch(_argc) 14 #define ARGEND SET(_argt);USED(_argt); USED(_argc); USED(_args);}USED(argv); USED(argc); 15 #define ARGF() (_argt=_args, _args="",\ 16 (*_argt? _argt: argv[1]? (argc--, *++argv): 0)) 17 #define ARGC() _argc 18 19 #define EARGF(x) (_argt=_args, _args="",\ 20 (*_argt? _argt: argv[1]? (argc--, *++argv): (x, (char*)0))) 21