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