aboutsummaryrefslogtreecommitdiff
path: root/coreutils/test.c
diff options
context:
space:
mode:
Diffstat (limited to 'coreutils/test.c')
-rw-r--r--coreutils/test.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/coreutils/test.c b/coreutils/test.c
index bbbfce58e..3796e2cd2 100644
--- a/coreutils/test.c
+++ b/coreutils/test.c
@@ -183,6 +183,7 @@ int bb_test(int argc, char **argv)
183{ 183{
184 int res; 184 int res;
185 char *arg0; 185 char *arg0;
186 bool _off;
186 187
187 arg0 = strrchr(argv[0], '/'); 188 arg0 = strrchr(argv[0], '/');
188 if (!arg0++) arg0 = argv[0]; 189 if (!arg0++) arg0 = argv[0];
@@ -224,15 +225,19 @@ int bb_test(int argc, char **argv)
224 if (argc == 2) 225 if (argc == 2)
225 return *argv[1] == '\0'; 226 return *argv[1] == '\0';
226//assert(argc); 227//assert(argc);
228 /* remember if we saw argc==4 which wants *no* '!' test */
229 _off = argc - 4;
230 if (_off ?
231 (LONE_CHAR(argv[1], '!'))
232 : (argv[1][0] != '!' || argv[1][1] != '\0'))
227 { 233 {
228 bool _off;
229 if (argc == 3) 234 if (argc == 3)
230 return *argv[2] != '\0'; 235 return *argv[2] != '\0';
231 _off = argc - 4; 236
232 t_lex(argv[2 + _off]); 237 t_lex(argv[2 + _off]);
233 if (t_wp_op && t_wp_op->op_type == BINOP) { 238 if (t_wp_op && t_wp_op->op_type == BINOP) {
234 t_wp = &argv[1 + _off]; 239 t_wp = &argv[1 + _off];
235 return binop() == (LONE_CHAR(argv[1], '!')); 240 return binop() == _off;
236 } 241 }
237 } 242 }
238 t_wp = &argv[1]; 243 t_wp = &argv[1];