diff options
| author | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2013-12-18 08:29:28 +0100 | 
|---|---|---|
| committer | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2013-12-18 08:29:28 +0100 | 
| commit | 33da67dac035b0d592f984bce90aec8d815b38a8 (patch) | |
| tree | debc84c9dee1a03e96bc00c9c8dfd4386330caef | |
| parent | d60ee7337b5f378d8858ef3774c5552d2c8e54fa (diff) | |
Update arg.h from sbase
sbase did some interesting modifications to arg.h (basically it
was fixed an incorrect use of the _ namespace), and this commit
take this last version for st.
| -rw-r--r-- | arg.h | 48 | 
1 files changed, 28 insertions, 20 deletions
@@ -3,53 +3,61 @@   * by 20h   */ -#ifndef __ARG_H__ -#define __ARG_H__ +#ifndef ARG_H__ +#define ARG_H__  extern char *argv0; -#define USED(x)		((void)(x)) -  /* use main(int argc, char *argv[]) */  #define ARGBEGIN	for (argv0 = *argv, argv++, argc--;\  					argv[0] && argv[0][1]\  					&& argv[0][0] == '-';\  					argc--, argv++) {\ -				char _argc;\ -				char **_argv;\ -				int brk;\ +				char argc_;\ +				char **argv_;\ +				int brk_;\  				if (argv[0][1] == '-' && argv[0][2] == '\0') {\  					argv++;\  					argc--;\  					break;\  				}\ -				for (brk = 0, argv[0]++, _argv = argv;\ -						argv[0][0] && !brk;\ +				for (brk_ = 0, argv[0]++, argv_ = argv;\ +						argv[0][0] && !brk_;\  						argv[0]++) {\ -					if (_argv != argv)\ +					if (argv_ != argv)\  						break;\ -					_argc = argv[0][0];\ -					switch (_argc) +					argc_ = argv[0][0];\ +					switch (argc_) + +/* Handles obsolete -NUM syntax */ +#define ARGNUM				case '0':\ +					case '1':\ +					case '2':\ +					case '3':\ +					case '4':\ +					case '5':\ +					case '6':\ +					case '7':\ +					case '8':\ +					case '9'  #define ARGEND			}\ -				USED(_argc);\ -			}\ -			USED(argv);\ -			USED(argc); +			} + +#define ARGC()		argc_ -#define ARGC()		_argc +#define ARGNUMF(base)	(brk_ = 1, estrtol(argv[0], (base)))  #define EARGF(x)	((argv[0][1] == '\0' && argv[1] == NULL)?\  				((x), abort(), (char *)0) :\ -				(brk = 1, (argv[0][1] != '\0')?\ +				(brk_ = 1, (argv[0][1] != '\0')?\  					(&argv[0][1]) :\  					(argc--, argv++, argv[0])))  #define ARGF()		((argv[0][1] == '\0' && argv[1] == NULL)?\  				(char *)0 :\ -				(brk = 1, (argv[0][1] != '\0')?\ +				(brk_ = 1, (argv[0][1] != '\0')?\  					(&argv[0][1]) :\  					(argc--, argv++, argv[0])))  #endif -  | 
