Files

51 lines
1.0 KiB
C
Raw Permalink Normal View History

/*
* Copy me if you can.
* by 20h
*/
2013-12-18 08:29:28 +01:00
#ifndef ARG_H__
#define ARG_H__
extern char *argv0;
/* use main(int argc, char *argv[]) */
#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\
2016-02-19 15:59:49 -03:00
argv[0] && argv[0][0] == '-'\
&& argv[0][1];\
argc--, argv++) {\
2013-12-18 08:29:28 +01:00
char argc_;\
char **argv_;\
int brk_;\
if (argv[0][1] == '-' && argv[0][2] == '\0') {\
argv++;\
argc--;\
break;\
}\
2018-03-20 21:22:27 +01:00
int i_;\
for (i_ = 1, brk_ = 0, argv_ = argv;\
argv[0][i_] && !brk_;\
i_++) {\
2013-12-18 08:29:28 +01:00
if (argv_ != argv)\
break;\
2018-03-20 21:22:27 +01:00
argc_ = argv[0][i_];\
2013-12-18 08:29:28 +01:00
switch (argc_)
2018-03-20 21:22:27 +01:00
#define ARGEND }\
2013-12-18 08:29:28 +01:00
}
#define ARGC() argc_
2018-03-20 21:22:27 +01:00
#define EARGF(x) ((argv[0][i_+1] == '\0' && argv[1] == NULL)?\
((x), abort(), (char *)0) :\
2018-03-20 21:22:27 +01:00
(brk_ = 1, (argv[0][i_+1] != '\0')?\
(&argv[0][i_+1]) :\
(argc--, argv++, argv[0])))
2018-03-20 21:22:27 +01:00
#define ARGF() ((argv[0][i_+1] == '\0' && argv[1] == NULL)?\
(char *)0 :\
2018-03-20 21:22:27 +01:00
(brk_ = 1, (argv[0][i_+1] != '\0')?\
(&argv[0][i_+1]) :\
(argc--, argv++, argv[0])))
#endif