cmd_test: implement -e test for file existence
authorStephen Warren <swarren@nvidia.com>
Mon, 3 Feb 2014 20:21:06 +0000 (13:21 -0700)
committerTom Rini <trini@ti.com>
Wed, 19 Feb 2014 14:47:34 +0000 (09:47 -0500)
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>
common/cmd_test.c

index 4c2f967c6dc060c710afe644be519a83e18caf69..c93fe78231000e1ad1f28fa8dec560e35f8161ea 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <fs.h>
 
 #define OP_INVALID     0
 #define OP_NOT         1
@@ -33,6 +34,7 @@
 #define OP_INT_LE      13
 #define OP_INT_GT      14
 #define OP_INT_GE      15
+#define OP_FILE_EXISTS 16
 
 const struct {
        int arg;
@@ -55,6 +57,7 @@ const struct {
        {0, "-a", OP_AND, 1},
        {0, "-z", OP_STR_EMPTY, 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[])
@@ -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) >=
                                        simple_strtol(ap[2], NULL, 10);
                        break;
+               case OP_FILE_EXISTS:
+                       expr = file_exists(ap[1], ap[2], ap[3], FS_TYPE_ANY);
+                       break;
                }
 
                switch (op) {