Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <[email protected]>
---
 commands/test.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/commands/test.c b/commands/test.c
index 9ffa892..56e8c52 100644
--- a/commands/test.c
+++ b/commands/test.c
@@ -44,6 +44,7 @@ typedef enum {
        OPT_FILE,
        OPT_EXISTS,
        OPT_MAX,
+       OPT_SYMBOLIC_LINK,
 } test_opts;
 
 static char *test_options[] = {
@@ -62,6 +63,7 @@ static char *test_options[] = {
        [OPT_FILE]                      = "-f",
        [OPT_DIRECTORY]                 = "-d",
        [OPT_EXISTS]                    = "-e",
+       [OPT_SYMBOLIC_LINK]             = "-L",
 };
 
 static int parse_opt(const char *opt)
@@ -140,9 +142,10 @@ static int do_test(int argc, char *argv[])
                case OPT_FILE:
                case OPT_DIRECTORY:
                case OPT_EXISTS:
+               case OPT_SYMBOLIC_LINK:
                        adv = 2;
                        if (ap[1] && *ap[1] != ']' && strlen(ap[1])) {
-                               expr = stat(ap[1], &statbuf);
+                               expr = (opt == OPT_SYMBOLIC_LINK ? lstat : 
stat)(ap[1], &statbuf);
                                if (expr < 0) {
                                        expr = 0;
                                        break;
@@ -160,6 +163,10 @@ static int do_test(int argc, char *argv[])
                                        expr = 1;
                                        break;
                                }
+                               if (opt == OPT_SYMBOLIC_LINK && 
S_ISLNK(statbuf.st_mode)) {
+                                       expr = 1;
+                                       break;
+                               }
                        }
                        break;
 
@@ -224,7 +231,7 @@ static const char *test_aliases[] = { "[", NULL};
 
 static const __maybe_unused char cmd_test_help[] =
 "Usage: test [OPTIONS]\n"
-"options: !, =, !=, -eq, -ne, -ge, -gt, -le, -lt, -o, -a, -z, -n, -d, -e, -f\n"
+"options: !, =, !=, -eq, -ne, -ge, -gt, -le, -lt, -o, -a, -z, -n, -d, -e, -f, 
-L\n"
 "see 'man test' on your PC for more information.\n";
 
 static const __maybe_unused char cmd_test_usage[] = "minimal test like 
/bin/sh";
-- 
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to