On 10.02.12, Connor Lane Smith wrote: > On 9 February 2012 19:20, Anselm R Garbe <[email protected]> wrote: > > Can we please remove the getopt() dependency? > > If someone writes an ARGBEGIN-style flag parser with clustering, > that's fine. Seems a bit of a waste considering getopt is POSIX, but > never mind.
There you go... Bert
#ifndef _ARG_H_
#define _ARG_H_
extern const char *_argv0;
#define SET(x) ((x)=0)
#define USED(x) ((void)(x))
#define ARGBEGIN \
for (_argv0=*argv++, argc--; \
argv[0] && argv[0][0]=='-' && argv[0][1]; \
argv++, argc--) \
{ \
char _argc, *_args, *_argt; \
_args = &argv[0][1]; \
if (_args[0]=='-' && !_args[1]) { \
argc--; \
argv++; \
break; \
} \
_argc=0; \
while (*_args) \
{ \
_argc = *_args++; \
switch (_argc) \
{
#define ARGEND \
} \
} SET(_argt); USED(_argt); USED(_argc); USED(_args); \
} USED(argc); USED(argv);
#define ARGF() \
(_argt=_args, _args="", \
(*_argt ? _argt : (argv[1] ? (argc--, *++argv) : 0)))
#define EARGF(x) \
(_argt=_args, _args="", \
(*_argt ? _argt : (argv[1] ? (argc--, *++argv) : ((x), abort(), 0))))
#define ARGC() _argc
#endif /* _ARG_H_ */
