Introduction
Introduction Statistics Contact Development Disclaimer Help
Adding the form of -r1, which will result in -r 1 in arg.h. - tabbed - tab inte…
git clone git://git.suckless.org/tabbed
Log
Files
Refs
README
LICENSE
---
commit d488a80a1e3d999629de1d4f5be3cec23139041f
parent ffa2dbeb645a3a3d6883d569107b1efd49472035
Author: Christoph Lohmann <[email protected]>
Date: Tue, 27 Nov 2012 21:17:10 +0100
Adding the form of -r1, which will result in -r 1 in arg.h.
Diffstat:
M arg.h | 29 ++++++++++++++++++++++-------
1 file changed, 22 insertions(+), 7 deletions(-)
---
diff --git a/arg.h b/arg.h
@@ -1,26 +1,30 @@
/*
- * See LICENSE file for copyright and license details.
+ * Copy me if you can.
+ * by 20h
*/
-#ifndef __CMD_H__
-#define __CMD_H__
+#ifndef __ARG_H__
+#define __ARG_H__
extern char *argv0;
-#define USED(x) ((void)(x))
+#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;\
if (argv[0][1] == '-' && argv[0][2] == '\0') {\
argv++;\
argc--;\
break;\
}\
- for (argv[0]++, _argv = argv; argv[0][0];\
+ for (brk = 0, argv[0]++, _argv = argv;\
+ argv[0][0] && !brk;\
argv[0]++) {\
if (_argv != argv)\
break;\
@@ -33,8 +37,19 @@ extern char *argv0;
USED(argv);\
USED(argc);
-#define EARGF(x) ((argv[1] == NULL)? ((x), abort(), (char *)0) :\
- (argc--, argv++, argv[0]))
+#define ARGC() _argc
+
+#define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\
+ ((x), abort(), (char *)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')?\
+ (&argv[0][1]) :\
+ (argc--, argv++, argv[0])))
#endif
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.