Introduction
Introduction Statistics Contact Development Disclaimer Help
tImport the arg.h from st which fixed the oob bug. - surf - customized build of…
git clone git://src.adamsgaard.dk/surf
Log
Files
Refs
README
LICENSE
---
commit 581075796aa380f32a0313c4c64a608e55f8b374
parent 934705c420a25054b9be55a5321e97d6d56579e2
Author: Christoph Lohmann <[email protected]>
Date: Mon, 22 Feb 2016 06:47:46 +0100
Import the arg.h from st which fixed the oob bug.
Diffstat:
M arg.h | 47 ++++++++++++++++++-----------…
1 file changed, 27 insertions(+), 20 deletions(-)
---
diff --git a/arg.h b/arg.h
t@@ -3,39 +3,46 @@
* by 20h
*/
-#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] == '-';\
+ argv[0] && argv[0][0] == '-'\
+ && argv[0][1];\
argc--, argv++) {\
- char _argc;\
- char **_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)\
+ if (argv_ != argv)\
break;\
- _argc = argv[0][0];\
- switch (_argc)
-
+ argc_ = argv[0][0];\
+ switch (argc_)
#define ARGEND }\
- USED(_argc);\
- }\
- USED(argv);\
- USED(argc);
+ }
-#define EARGF(x) ((argv[1] == NULL)? ((x), abort(), (char *)0) :\
- (argc--, argv++, argv[0]))
+#define ARGC() argc_
-#endif
+#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 mx1.adamsgaard.dk. 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.