1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-25 01:02:24 +00:00

Fix command-line error handling in pterm. (Hint: wrapping a multi-

statement macro in `do ... while (0)' and putting a `continue'
within it don't go well together. Oops.)

[originally from svn r2192]
This commit is contained in:
Simon Tatham 2002-11-05 13:20:42 +00:00
parent 64e9693c4d
commit 3a084e9333

View File

@ -1779,18 +1779,22 @@ int do_cmdline(int argc, char **argv, int do_everything)
extern char **pty_argv; /* declared in pty.c */
/*
* Macros to make argument handling easier.
* Macros to make argument handling easier. Note that because
* they need to call `continue', they cannot be contained in
* the usual do {...} while (0) wrapper to make them
* syntactically single statements; hence it is not legal to
* use one of these macros as an unbraced statement between
* `if' and `else'.
*/
#define EXPECTS_ARG do { \
#define EXPECTS_ARG { \
if (--argc <= 0) { \
err = 1; \
fprintf(stderr, "pterm: %s expects an argument\n", p); \
continue; \
} else \
val = *++argv; \
} while (0)
#define SECOND_PASS_ONLY do { \
if (!do_everything) continue; \
} while (0)
}
#define SECOND_PASS_ONLY { if (!do_everything) continue; }
/*
* TODO: