1*e94a8e9bSDavid du Colombier typedef unsigned long Rune; /* 21 bits */ 2219b2ee8SDavid du Colombier typedef unsigned char uchar; 3219b2ee8SDavid du Colombier #define Runeerror 0x80 /* decoding error in UTF */ 4219b2ee8SDavid du Colombier #define Runeself 0x80 /* rune and UTF sequences are the same (<) */ 5219b2ee8SDavid du Colombier #define UTFmax 6 /* maximum bytes per rune */ 6219b2ee8SDavid du Colombier 7219b2ee8SDavid du Colombier /* 8219b2ee8SDavid du Colombier plan 9 argument parsing 9219b2ee8SDavid du Colombier */ 10219b2ee8SDavid du Colombier #define ARGBEGIN for((argv0? 0: (argv0= *argv)),argv++,argc--;\ 11219b2ee8SDavid du Colombier argv[0] && argv[0][0]=='-' && argv[0][1];\ 12219b2ee8SDavid du Colombier argc--, argv++) {\ 13219b2ee8SDavid du Colombier char *_args, *_argt, _argc;\ 14219b2ee8SDavid du Colombier _args = &argv[0][1];\ 15219b2ee8SDavid du Colombier if(_args[0]=='-' && _args[1]==0){\ 16219b2ee8SDavid du Colombier argc--; argv++; break;\ 17219b2ee8SDavid du Colombier }\ 18219b2ee8SDavid du Colombier _argc=0;while(*_args) switch(_argc= *_args++) 19219b2ee8SDavid du Colombier #define ARGEND } 20219b2ee8SDavid du Colombier #define ARGF() (_argt=_args, _args="",\ 21219b2ee8SDavid du Colombier (*_argt? _argt: argv[1]? (argc--, *++argv): 0)) 22219b2ee8SDavid du Colombier #define ARGC() _argc 23219b2ee8SDavid du Colombier extern char *argv0; 24