@ -3,53 +3,61 @@  
														
													
														
															
																 *  by  20 h   *  by  20 h   
														
													
														
															
																 */   */   
														
													
														
															
																
 
  
														
													
														
															
																# ifndef __ ARG_H__  
														
													
														
															
																# define __ ARG_H__  
														
													
														
															
																# ifndef 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  * * _ argv; \   
														
													
														
															
																				int  brk ; \   
														
													
														
															
																				char  argc_  ; \   
														
													
														
															
																				char  * * argv_  ; \   
														
													
														
															
																				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 ; \   
														
													
														
															
																						argv [ 0 ] [ 0 ]  & &  ! brk ; \   
														
													
														
															
																				for  ( brk_   =  0 ,  argv [ 0 ] + + ,  argv_   =  argv ; \   
														
													
														
															
																						argv [ 0 ] [ 0 ]  & &  ! brk_  ; \   
														
													
														
															
																						argv [ 0 ] + + )  { \  						argv [ 0 ] + + )  { \   
														
													
														
															
																					if  ( _ argv! =  argv ) \   
														
													
														
															
																					if  ( argv_   ! =  argv ) \   
														
													
														
															
																						break ; \  						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			}\ # 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