Dropped bmoss/bsprout support from lfsr_stat_
I think this was just overlooked when dropping bmoss/bsprouts.
Dropping bmoss here makes it so file size is always the first leb128 in
the data, which is nice.
Saves a bit of code:
code stack ctx
before: 35864 2440 640
after: 35820 (-0.1%) 2440 (+0.0%) 640 (+0.0%)
This commit is contained in:
@@ -10724,28 +10724,22 @@ static int lfsr_stat_(lfs_t *lfs, const lfsr_mdir_t *mdir,
|
||||
}
|
||||
info->name[name_len] = '\0';
|
||||
|
||||
// get file size if we're a regular file, this gets a bit messy
|
||||
// because of the different file representations
|
||||
// default size to zero
|
||||
info->size = 0;
|
||||
|
||||
// get file size if we're a regular file
|
||||
if (tag == LFSR_TAG_REG) {
|
||||
// inlined?
|
||||
lfsr_tag_t tag;
|
||||
lfsr_data_t data;
|
||||
int err = lfsr_mdir_lookupnext(lfs, mdir, LFSR_TAG_DATA,
|
||||
int err = lfsr_mdir_lookup(lfs, mdir,
|
||||
LFSR_TAG_MASK8 | LFSR_TAG_STRUCT,
|
||||
&tag, &data);
|
||||
if (err && err != LFS_ERR_NOENT) {
|
||||
return err;
|
||||
}
|
||||
|
||||
// may be a moss (simple inlined data)
|
||||
if (err != LFS_ERR_NOENT && tag == LFSR_TAG_DATA) {
|
||||
info->size = lfsr_data_size(data);
|
||||
|
||||
// or a block/bshrub/btree, size is always first field here
|
||||
} else if (err != LFS_ERR_NOENT
|
||||
&& (tag == LFSR_TAG_BLOCK
|
||||
|| tag == LFSR_TAG_BSHRUB
|
||||
|| tag == LFSR_TAG_BTREE)) {
|
||||
if (err != LFS_ERR_NOENT) {
|
||||
// in bshrubs/btrees, size is always the first field
|
||||
err = lfsr_data_readleb128(lfs, &data, &info->size);
|
||||
if (err) {
|
||||
return err;
|
||||
|
||||
Reference in New Issue
Block a user