From cd2cf236c2a0ef04c7cdf6653ecb3a48fa6ab151 Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Sun, 30 Aug 2020 05:29:21 +0100 Subject: [PATCH] test/[: use a shell state bit (re: 7003aba4) Instead of a global 'sh_in_test_builtin' integer flag, it is nicer to use the mechanism for shell state bits, which was designed for this sort of thing. src/cmd/ksh93/include/defs.h, src/cmd/ksh93/sh/defs.c: - Remove global sh_in_test_builtin integer. - Define new SH_INTESTCMD state bit. src/cmd/ksh93/bltins/test.c: _ERROR_exit_b_test(), b_test(): - Use the new state bit. --- src/cmd/ksh93/bltins/test.c | 8 ++++---- src/cmd/ksh93/include/defs.h | 2 +- src/cmd/ksh93/sh/defs.c | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/cmd/ksh93/bltins/test.c b/src/cmd/ksh93/bltins/test.c index b0b4b20ab..e3bea6aa2 100644 --- a/src/cmd/ksh93/bltins/test.c +++ b/src/cmd/ksh93/bltins/test.c @@ -89,9 +89,9 @@ static int e3(struct test*); */ int _ERROR_exit_b_test(int exitval) { - if(sh_in_test_builtin) + if(sh_isstate(SH_INTESTCMD)) { - sh_in_test_builtin = 0; + sh_offstate(SH_INTESTCMD); if(exitval < 2) exitval = 2; } @@ -133,7 +133,7 @@ int b_test(int argc, char *argv[],Shbltin_t *context) register int not; int exitval; - sh_in_test_builtin = 1; + sh_onstate(SH_INTESTCMD); tdata.sh = context->shp; tdata.av = argv; tdata.ap = 1; @@ -226,7 +226,7 @@ int b_test(int argc, char *argv[],Shbltin_t *context) tdata.ac = argc; exitval = (!expr(&tdata,0)); done: - sh_in_test_builtin = 0; + sh_offstate(SH_INTESTCMD); return(exitval); } diff --git a/src/cmd/ksh93/include/defs.h b/src/cmd/ksh93/include/defs.h index 543c777fa..e56a53739 100644 --- a/src/cmd/ksh93/include/defs.h +++ b/src/cmd/ksh93/include/defs.h @@ -309,6 +309,7 @@ struct shared #define SH_FCOMPLETE 17 /* set for filename completion */ #define SH_PREINIT 18 /* set with SH_INIT before parsing options */ #define SH_COMPLETE 19 /* set for command completion */ +#define SH_INTESTCMD 20 /* set while test/[ command is being run */ #define SH_BASH 41 #define SH_BRACEEXPAND 42 @@ -507,7 +508,6 @@ extern const char e_dict[]; # define sh_stats(x) #endif /* SHOPT_STATS */ -extern int sh_in_test_builtin; extern int _ERROR_exit_b_test(int); #endif diff --git a/src/cmd/ksh93/sh/defs.c b/src/cmd/ksh93/sh/defs.c index d505af120..308ce22fe 100644 --- a/src/cmd/ksh93/sh/defs.c +++ b/src/cmd/ksh93/sh/defs.c @@ -46,4 +46,3 @@ char *sh_lexstates[ST_NONE] = {0}; struct jobs job = {0}; int32_t sh_mailchk = 600; -int sh_in_test_builtin = 0;