--- arg.h | 65 +++++++++++++++++++++++++++++------------------------------ x.c | 25 +++++++++++------------ 2 files changed, 44 insertions(+), 46 deletions(-) diff --git a/arg.h b/arg.h index a22e019..0726d0a 100644 --- a/arg.h +++ b/arg.h _AT_@ -6,45 +6,44 @@ #ifndef ARG_H__ #define ARG_H__ -extern char *argv0; - /* use main(int argc, char *argv[]) */ -#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ - argv[0] && argv[0][0] == '-'\ - && argv[0][1];\ - argc--, argv++) {\ - char argc_;\ - char **argv_;\ - int brk_;\ - if (argv[0][1] == '-' && argv[0][2] == '\0') {\ - argv++;\ - argc--;\ - break;\ - }\ - int i_;\ - for (i_ = 1, brk_ = 0, argv_ = argv;\ - argv[0][i_] && !brk_;\ - i_++) {\ - if (argv_ != argv)\ - break;\ - argc_ = argv[0][i_];\ - switch (argc_) - -#define ARGEND }\ - } +#define ARGBEGIN \ + char **_argv;\ + argc--;\ + for (_argv = argv+1;\ + _argv[0] && _argv[0][0] == '-' && _argv[0][1];\ + argc--, _argv++) {\ + char argc_;\ + char **argv_;\ + int brk_;\ + if (_argv[0][1] == '-' && _argv[0][2] == '\0') {\ + _argv++;\ + argc--;\ + break;\ + }\ + int i_;\ + for (i_ = 1, brk_ = 0, argv_ = _argv; _argv[0][i_] && !brk_; i_++) {\ + if (argv_ != _argv)\ + break;\ + argc_ = _argv[0][i_];\ + switch (argc_) + +#define ARGEND \ + }\ + } #define ARGC() argc_ -#define EARGF(x) ((argv[0][i_+1] == '\0' && argv[1] == NULL)?\ +#define EARGF(x) ((_argv[0][i_+1] == '\0' && _argv[1] == NULL)?\ ((x), abort(), (char *)0) :\ - (brk_ = 1, (argv[0][i_+1] != '\0')?\ - (&argv[0][i_+1]) :\ - (argc--, argv++, argv[0]))) + (brk_ = 1, (_argv[0][i_+1] != '\0')?\ + (&_argv[0][i_+1]) :\ + (argc--, _argv++, _argv[0]))) -#define ARGF() ((argv[0][i_+1] == '\0' && argv[1] == NULL)?\ +#define ARGF() ((_argv[0][i_+1] == '\0' && _argv[1] == NULL)?\ (char *)0 :\ - (brk_ = 1, (argv[0][i_+1] != '\0')?\ - (&argv[0][i_+1]) :\ - (argc--, argv++, argv[0]))) + (brk_ = 1, (_argv[0][i_+1] != '\0')?\ + (&_argv[0][i_+1]) :\ + (argc--, _argv++, _argv[0]))) #endif diff --git a/x.c b/x.c index d73152b..05a3767 100644 --- a/x.c +++ b/x.c _AT_@ -15,7 +15,6 @@ #include <X11/Xft/Xft.h> #include <X11/XKBlib.h> -char *argv0; #include "arg.h" #include "st.h" #include "win.h" _AT_@ -187,7 +186,7 @@ static char *kmap(KeySym, uint); static int match(uint, uint); static void run(void); -static void usage(void); +static void usage(char *); static void (*handler[LASTEvent])(XEvent *) = { [KeyPress] = kpress, _AT_@ -2024,7 +2023,7 @@ run(void) } void -usage(void) +usage(char *argv0) { die("usage: %s [-aiv] [-c class] [-f font] [-g geometry]" " [-n name] [-o file]\n" _AT_@ -2048,43 +2047,43 @@ main(int argc, char *argv[]) allowaltscreen = 0; break; case 'c': - opt_class = EARGF(usage()); + opt_class = EARGF(usage(argv[0])); break; case 'e': if (argc > 0) --argc, ++argv; goto run; case 'f': - opt_font = EARGF(usage()); + opt_font = EARGF(usage(argv[0])); break; case 'g': - xw.gm = XParseGeometry(EARGF(usage()), + xw.gm = XParseGeometry(EARGF(usage(argv[0])), &xw.l, &xw.t, &cols, &rows); break; case 'i': xw.isfixed = 1; break; case 'o': - opt_io = EARGF(usage()); + opt_io = EARGF(usage(argv[0])); break; case 'l': - opt_line = EARGF(usage()); + opt_line = EARGF(usage(argv[0])); break; case 'n': - opt_name = EARGF(usage()); + opt_name = EARGF(usage(argv[0])); break; case 't': case 'T': - opt_title = EARGF(usage()); + opt_title = EARGF(usage(argv[0])); break; case 'w': - opt_embed = EARGF(usage()); + opt_embed = EARGF(usage(argv[0])); break; case 'v': - die("%s " VERSION "\n", argv0); + die("%s " VERSION "\n", argv[0]); break; default: - usage(); + usage(argv[0]); } ARGEND; run: -- 2.46.0Received on Wed Aug 28 2024 - 23:44:53 CEST
This archive was generated by hypermail 2.3.0 : Thu Aug 29 2024 - 00:00:56 CEST