cmd_test: implement -e test for file existence

This is much like a regular shell's -e operator, except that it takes
multiple arguments to specify the device type and  device/partition ID
in addition to the usual filename:

if test -e mmc 0:1 /boot/boot.scr; then echo yes; else echo no; fi

Signed-off-by: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
Stephen Warren 2014-02-03 13:21:06 -07:00 committed by Tom Rini
parent 2453de99df
commit e5e897c01b

View file

@ -16,6 +16,7 @@
#include <common.h> #include <common.h>
#include <command.h> #include <command.h>
#include <fs.h>
#define OP_INVALID 0 #define OP_INVALID 0
#define OP_NOT 1 #define OP_NOT 1
@ -33,6 +34,7 @@
#define OP_INT_LE 13 #define OP_INT_LE 13
#define OP_INT_GT 14 #define OP_INT_GT 14
#define OP_INT_GE 15 #define OP_INT_GE 15
#define OP_FILE_EXISTS 16
const struct { const struct {
int arg; int arg;
@ -55,6 +57,7 @@ const struct {
{0, "-a", OP_AND, 1}, {0, "-a", OP_AND, 1},
{0, "-z", OP_STR_EMPTY, 2}, {0, "-z", OP_STR_EMPTY, 2},
{0, "-n", OP_STR_NEMPTY, 2}, {0, "-n", OP_STR_NEMPTY, 2},
{0, "-e", OP_FILE_EXISTS, 4},
}; };
static int do_test(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) static int do_test(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
@ -143,6 +146,9 @@ static int do_test(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
expr = simple_strtol(ap[0], NULL, 10) >= expr = simple_strtol(ap[0], NULL, 10) >=
simple_strtol(ap[2], NULL, 10); simple_strtol(ap[2], NULL, 10);
break; break;
case OP_FILE_EXISTS:
expr = file_exists(ap[1], ap[2], ap[3], FS_TYPE_ANY);
break;
} }
switch (op) { switch (op) {