From 342b51e9a65831cbf2a3b373d2e2501a7ded4ff2 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Wed, 1 Nov 2017 09:13:51 -0600 Subject: [PATCH] apps/examples/userfs: Fix bad logic in test stat() implementation. --- examples/userfs/userfs_main.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/examples/userfs/userfs_main.c b/examples/userfs/userfs_main.c index f4381ae40..8040291e8 100644 --- a/examples/userfs/userfs_main.c +++ b/examples/userfs/userfs_main.c @@ -492,11 +492,23 @@ static int ufstest_stat(FAR void *volinfo, FAR const char *relpath, FAR void *openinfo; int ret; - ret = ufstest_open(volinfo, relpath, O_RDWR, 0644, &openinfo); - if (ret >= 0) + /* Are we stat'ing the directory? Of one of the files in the directory? */ + + if (*relpath == '\0') { - ret = ufstest_fstat(volinfo, openinfo, buf); - (void)ufstest_close(volinfo, openinfo); + memset(buf, 0, sizeof(struct stat)); + buf->st_mode = (S_IFDIR | S_IRWXU | S_IRUSR | S_IRGRP | S_IRWXG | + S_IROTH | S_IRWXO); + buf->st_blksize = UFSTEST_FS_BLOCKSIZE; + } + else + { + ret = ufstest_open(volinfo, relpath, O_RDWR, 0644, &openinfo); + if (ret >= 0) + { + ret = ufstest_fstat(volinfo, openinfo, buf); + (void)ufstest_close(volinfo, openinfo); + } } return ret;