Added the lfs_stat function
This commit is contained in:
@@ -1376,3 +1376,31 @@ int lfs_remove(lfs_t *lfs, const char *path) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int lfs_stat(lfs_t *lfs, const char *path, struct lfs_info *info) {
|
||||
lfs_dir_t cwd;
|
||||
int err = lfs_dir_fetch(lfs, &cwd, lfs->cwd);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
lfs_entry_t entry;
|
||||
err = lfs_dir_find(lfs, &cwd, &path, &entry);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
// TODO abstract out info assignment
|
||||
memset(info, 0, sizeof(*info));
|
||||
info->type = entry.d.type & 0xff;
|
||||
if (info->type == LFS_TYPE_REG) {
|
||||
info->size = entry.d.u.file.size;
|
||||
}
|
||||
|
||||
err = lfs_bd_read(lfs, entry.dir[0], entry.off + sizeof(entry.d),
|
||||
entry.d.len - sizeof(entry.d), info->name);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -138,6 +138,7 @@ int lfs_mount(lfs_t *lfs, const struct lfs_config *config);
|
||||
int lfs_unmount(lfs_t *lfs);
|
||||
|
||||
int lfs_remove(lfs_t *lfs, const char *path);
|
||||
int lfs_stat(lfs_t *lfs, const char *path, struct lfs_info *info);
|
||||
|
||||
int lfs_mkdir(lfs_t *lfs, const char *path);
|
||||
int lfs_dir_open(lfs_t *lfs, lfs_dir_t *dir, const char *path);
|
||||
|
||||
Reference in New Issue
Block a user