1 #define nil	((void*)0)
2 #define nelem(ary) (sizeof(ary) / sizeof(*ary))
3 
4 /* Types */
5 #undef uchar
6 #undef ushort
7 #undef uint
8 #undef ulong
9 #undef uvlong
10 #undef vlong
11 #ifndef KENC
12 # define uchar	_wmiiuchar
13 # define ushort	_wmiiushort
14 # define uint	_wmiiuint
15 # define ulong	_wmiiulong
16 # define vlong	_wmiivlong
17 # define uvlong	_wmiiuvlong
18 #endif
19 typedef unsigned char		uchar;
20 typedef unsigned short		ushort;
21 typedef unsigned int		uint;
22 typedef unsigned long		ulong;
23 typedef unsigned long long	uvlong;
24 typedef long long		vlong;
25 
26 /* util.c */
27 uint tokenize(char *res[], uint reslen, char *str, char delim);
28 char *estrdup(const char *str);
29 void *erealloc(void *ptr, uint size);
30 void *emallocz(uint size);
31 void *emalloc(uint size);
32 void fatal(const char *fmt, ...);
33 int max(int a, int b);
34 int min(int a, int b);
35 char *str_nil(char *s);
36 int utflcpy(char *to, const char *from, int l);
37 uint wmii_strlcat(char *dst, const char *src, unsigned int siz);
38 
39 extern char *argv0;
40 extern void *__p;
41 extern int __i;
42 #undef ARGBEGIN
43 #undef ARGEND
44 #undef ARGF
45 #undef EARGF
46 #define ARGBEGIN \
47 		int _argi=0, _argtmp=0, _inargv=0; char *_argv=nil; \
48 		if(!argv0) argv0=ARGF(); \
49 		_inargv=1; USED(_inargv); \
50 		while(argc && argv[0][0] == '-') { \
51 			_argi=1; _argv=*argv++; argc--; \
52 			while(_argv[_argi]) switch(_argv[_argi++])
53 #define ARGEND }_inargv=0;USED(_argtmp);USED(_argv);USED(_argi);USED(_inargv)
54 
55 #define ARGF() ((_inargv && _argv[_argi]) ? \
56 			(_argtmp=_argi, _argi=strlen(_argv), __i=_argi,_argv+_argtmp) \
57 			: ((argc > 0) ? (--argc, ++argv, __i=argc, __p=argv, *(argv-1)) : ((char*)0)))
58 
59 #define EARGF(f) ((_inargv && _argv[_argi]) ? \
60 			(_argtmp=_argi, _argi=strlen(_argv), __i=_argi, _argv+_argtmp) \
61 			: ((argc > 0) ? (--argc, ++argv, __i=argc, __p=argv, *(argv-1)) : ((f), (char*)0)))
62 
63 #ifndef KENC
64 # undef USED
65 # undef SET
66 # define USED(x) if(x){}else
67 # define SET(x) ((x)=0)
68 #endif
69 
70