From 601467a05b97aa88a5b24f3ecac6eb7e7fdf5df9 Mon Sep 17 00:00:00 2001 From: zhouliang3 Date: Thu, 2 Sep 2021 12:41:08 +0800 Subject: [PATCH] fs/littlefs: Add attr to dir N/A Signed-off-by: zhouliang3 Change-Id: Ibe2bf53f4eb37e67bd982d6523a1b686a52b77ad --- fs/littlefs/lfs_vfs.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/fs/littlefs/lfs_vfs.c b/fs/littlefs/lfs_vfs.c index b0624630af9..ba602538bcd 100644 --- a/fs/littlefs/lfs_vfs.c +++ b/fs/littlefs/lfs_vfs.c @@ -1356,6 +1356,24 @@ static int littlefs_mkdir(FAR struct inode *mountpt, FAR const char *relpath, } ret = lfs_mkdir(&fs->lfs, relpath); + if (ret >= 0) + { + struct littlefs_attr_s attr; + struct timespec time; + + clock_gettime(CLOCK_REALTIME, &time); + memset(&attr, 0, sizeof(attr)); + attr.at_mode = mode; + attr.at_ctim = 1000000000ull * time.tv_sec + time.tv_nsec; + attr.at_atim = attr.at_ctim; + attr.at_mtim = attr.at_ctim; + ret = lfs_setattr(&fs->lfs, relpath, 0, &attr, sizeof(attr)); + if (ret < 0) + { + lfs_remove(&fs->lfs, relpath); + } + } + littlefs_semgive(fs); return ret; @@ -1450,6 +1468,7 @@ static int littlefs_stat(FAR struct inode *mountpt, FAR const char *relpath, ret = 0; memset(&attr, 0, sizeof(attr)); + attr.at_mode = S_IRWXG | S_IRWXU | S_IRWXO; } buf->st_mode = attr.at_mode;