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 |