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.dev
							parent
							
								
									d60ee7337b
								
							
						
					
					
						commit
						33da67dac0
					
				
							
								
								
									
										48
									
								
								arg.h
								
								
								
								
							
							
						
						
									
										48
									
								
								arg.h
								
								
								
								
							| 
						 | 
					@ -3,53 +3,61 @@
 | 
				
			||||||
 * by 20h
 | 
					 * by 20h
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __ARG_H__
 | 
					#ifndef ARG_H__
 | 
				
			||||||
#define __ARG_H__
 | 
					#define ARG_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern char *argv0;
 | 
					extern char *argv0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define USED(x)		((void)(x))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* use main(int argc, char *argv[]) */
 | 
					/* use main(int argc, char *argv[]) */
 | 
				
			||||||
#define ARGBEGIN	for (argv0 = *argv, argv++, argc--;\
 | 
					#define ARGBEGIN	for (argv0 = *argv, argv++, argc--;\
 | 
				
			||||||
					argv[0] && argv[0][1]\
 | 
										argv[0] && argv[0][1]\
 | 
				
			||||||
					&& argv[0][0] == '-';\
 | 
										&& argv[0][0] == '-';\
 | 
				
			||||||
					argc--, argv++) {\
 | 
										argc--, argv++) {\
 | 
				
			||||||
				char _argc;\
 | 
									char argc_;\
 | 
				
			||||||
				char **_argv;\
 | 
									char **argv_;\
 | 
				
			||||||
				int brk;\
 | 
									int brk_;\
 | 
				
			||||||
				if (argv[0][1] == '-' && argv[0][2] == '\0') {\
 | 
									if (argv[0][1] == '-' && argv[0][2] == '\0') {\
 | 
				
			||||||
					argv++;\
 | 
										argv++;\
 | 
				
			||||||
					argc--;\
 | 
										argc--;\
 | 
				
			||||||
					break;\
 | 
										break;\
 | 
				
			||||||
				}\
 | 
									}\
 | 
				
			||||||
				for (brk = 0, argv[0]++, _argv = argv;\
 | 
									for (brk_ = 0, argv[0]++, argv_ = argv;\
 | 
				
			||||||
						argv[0][0] && !brk;\
 | 
											argv[0][0] && !brk_;\
 | 
				
			||||||
						argv[0]++) {\
 | 
											argv[0]++) {\
 | 
				
			||||||
					if (_argv != argv)\
 | 
										if (argv_ != argv)\
 | 
				
			||||||
						break;\
 | 
											break;\
 | 
				
			||||||
					_argc = argv[0][0];\
 | 
										argc_ = argv[0][0];\
 | 
				
			||||||
					switch (_argc)
 | 
										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			}\
 | 
					#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)?\
 | 
					#define EARGF(x)	((argv[0][1] == '\0' && argv[1] == NULL)?\
 | 
				
			||||||
				((x), abort(), (char *)0) :\
 | 
									((x), abort(), (char *)0) :\
 | 
				
			||||||
				(brk = 1, (argv[0][1] != '\0')?\
 | 
									(brk_ = 1, (argv[0][1] != '\0')?\
 | 
				
			||||||
					(&argv[0][1]) :\
 | 
										(&argv[0][1]) :\
 | 
				
			||||||
					(argc--, argv++, argv[0])))
 | 
										(argc--, argv++, argv[0])))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ARGF()		((argv[0][1] == '\0' && argv[1] == NULL)?\
 | 
					#define ARGF()		((argv[0][1] == '\0' && argv[1] == NULL)?\
 | 
				
			||||||
				(char *)0 :\
 | 
									(char *)0 :\
 | 
				
			||||||
				(brk = 1, (argv[0][1] != '\0')?\
 | 
									(brk_ = 1, (argv[0][1] != '\0')?\
 | 
				
			||||||
					(&argv[0][1]) :\
 | 
										(&argv[0][1]) :\
 | 
				
			||||||
					(argc--, argv++, argv[0])))
 | 
										(argc--, argv++, argv[0])))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue