Added lfs_fs_size for finding a count of used blocks

This has existed for some time in the form of the lfs_traverse
function, through which a user could provide a simple callback that
would just count the number of blocks lfs_traverse finds. However,
this approach is relatively unconventional and has proven to be confusing
for most users.
This commit is contained in:
Christopher Haster
2018-04-08 22:25:58 -05:00
parent 93244a3734
commit 746b90965c
2 changed files with 24 additions and 0 deletions

16
lfs.c
View File

@@ -3183,3 +3183,19 @@ int lfs_fs_setattrs(lfs_t *lfs, const struct lfs_attr *attrs, int count) {
return lfs_dir_setattrs(lfs, &dir, &entry, attrs, count);
}
static int lfs_fs_size_count(void *p, lfs_block_t block) {
lfs_size_t *size = p;
*size += 1;
return 0;
}
lfs_ssize_t lfs_fs_size(lfs_t *lfs) {
lfs_size_t size = 0;
int err = lfs_traverse(lfs, lfs_fs_size_count, &size);
if (err) {
return err;
}
return size;
}