@ -3,53 +3,61 @@
* by 20 h
*/
# 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 ARG NUMF(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