xref: /plan9-contrib/sys/src/cmd/tcs/plan9.h (revision e94a8e9b44de11e62dfd4566245554f8bf8e0295)
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