[download]

local/src/dmenu/arg.h

   1 /*
   2  * Copy me if you can.
   3  * by 20h
   4  */
   5 
   6 #ifndef ARG_H__
   7 #define ARG_H__
   8 
   9 extern char *argv0;
  10 
  11 /* use main(int argc, char *argv[]) */
  12 #define ARGBEGIN	for (argv0 = *argv, argv++, argc--;\
  13 					argv[0] && argv[0][0] == '-'\
  14 					&& argv[0][1];\
  15 					argc--, argv++) {\
  16 				char argc_;\
  17 				char **argv_;\
  18 				int brk_;\
  19 				if (argv[0][1] == '-' && argv[0][2] == '\0') {\
  20 					argv++;\
  21 					argc--;\
  22 					break;\
  23 				}\
  24 				for (brk_ = 0, argv[0]++, argv_ = argv;\
  25 						argv[0][0] && !brk_;\
  26 						argv[0]++) {\
  27 					if (argv_ != argv)\
  28 						break;\
  29 					argc_ = argv[0][0];\
  30 					switch (argc_)
  31 
  32 #define ARGEND			}\
  33 			}
  34 
  35 #define ARGC()		argc_
  36 
  37 #define EARGF(x)	((argv[0][1] == '\0' && argv[1] == NULL)?\
  38 				((x), abort(), (char *)0) :\
  39 				(brk_ = 1, (argv[0][1] != '\0')?\
  40 					(&argv[0][1]) :\
  41 					(argc--, argv++, argv[0])))
  42 
  43 #define ARGF()		((argv[0][1] == '\0' && argv[1] == NULL)?\
  44 				(char *)0 :\
  45 				(brk_ = 1, (argv[0][1] != '\0')?\
  46 					(&argv[0][1]) :\
  47 					(argc--, argv++, argv[0])))
  48 
  49 #endif