mirror of
https://github.com/eledio-devices/thirdparty-littlefs.git
synced 2025-11-01 00:38:29 +01:00
Merge pull request #24 from aldot/silence-shadow-warnings-1
Silence shadow warnings
This commit is contained in:
2
Makefile
2
Makefile
@@ -37,7 +37,7 @@ test: test_format test_dirs test_files test_seek test_truncate test_parallel \
|
|||||||
test_alloc test_paths test_orphan test_move test_corrupt
|
test_alloc test_paths test_orphan test_move test_corrupt
|
||||||
test_%: tests/test_%.sh
|
test_%: tests/test_%.sh
|
||||||
ifdef QUIET
|
ifdef QUIET
|
||||||
./$< | sed -n '/^[-=]/p'
|
@./$< | sed -n '/^[-=]/p'
|
||||||
else
|
else
|
||||||
./$<
|
./$<
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ int lfs_emubd_erase(const struct lfs_config *cfg, lfs_block_t block) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!err && S_ISREG(st.st_mode) && (S_IWUSR & st.st_mode)) {
|
if (!err && S_ISREG(st.st_mode) && (S_IWUSR & st.st_mode)) {
|
||||||
int err = unlink(emu->path);
|
err = unlink(emu->path);
|
||||||
if (err) {
|
if (err) {
|
||||||
return -errno;
|
return -errno;
|
||||||
}
|
}
|
||||||
|
|||||||
58
lfs.c
58
lfs.c
@@ -481,7 +481,7 @@ static int lfs_dir_commit(lfs_t *lfs, lfs_dir_t *dir,
|
|||||||
while (newoff < (0x7fffffff & dir->d.size)-4) {
|
while (newoff < (0x7fffffff & dir->d.size)-4) {
|
||||||
if (i < count && regions[i].oldoff == oldoff) {
|
if (i < count && regions[i].oldoff == oldoff) {
|
||||||
lfs_crc(&crc, regions[i].newdata, regions[i].newlen);
|
lfs_crc(&crc, regions[i].newdata, regions[i].newlen);
|
||||||
int err = lfs_bd_prog(lfs, dir->pair[0],
|
err = lfs_bd_prog(lfs, dir->pair[0],
|
||||||
newoff, regions[i].newdata, regions[i].newlen);
|
newoff, regions[i].newdata, regions[i].newlen);
|
||||||
if (err) {
|
if (err) {
|
||||||
if (err == LFS_ERR_CORRUPT) {
|
if (err == LFS_ERR_CORRUPT) {
|
||||||
@@ -495,7 +495,7 @@ static int lfs_dir_commit(lfs_t *lfs, lfs_dir_t *dir,
|
|||||||
i += 1;
|
i += 1;
|
||||||
} else {
|
} else {
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
int err = lfs_bd_read(lfs, oldpair[1], oldoff, &data, 1);
|
err = lfs_bd_read(lfs, oldpair[1], oldoff, &data, 1);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -1005,7 +1005,7 @@ int lfs_dir_seek(lfs_t *lfs, lfs_dir_t *dir, lfs_off_t off) {
|
|||||||
return LFS_ERR_INVAL;
|
return LFS_ERR_INVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int err = lfs_dir_fetch(lfs, dir, dir->d.tail);
|
err = lfs_dir_fetch(lfs, dir, dir->d.tail);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -1016,6 +1016,7 @@ int lfs_dir_seek(lfs_t *lfs, lfs_dir_t *dir, lfs_off_t off) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lfs_soff_t lfs_dir_tell(lfs_t *lfs, lfs_dir_t *dir) {
|
lfs_soff_t lfs_dir_tell(lfs_t *lfs, lfs_dir_t *dir) {
|
||||||
|
(void)lfs;
|
||||||
return dir->pos;
|
return dir->pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1116,7 +1117,7 @@ static int lfs_ctz_extend(lfs_t *lfs,
|
|||||||
if (size != lfs->cfg->block_size) {
|
if (size != lfs->cfg->block_size) {
|
||||||
for (lfs_off_t i = 0; i < size; i++) {
|
for (lfs_off_t i = 0; i < size; i++) {
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
int err = lfs_cache_read(lfs, rcache, NULL,
|
err = lfs_cache_read(lfs, rcache, NULL,
|
||||||
head, i, &data, 1);
|
head, i, &data, 1);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
@@ -1142,7 +1143,7 @@ static int lfs_ctz_extend(lfs_t *lfs,
|
|||||||
lfs_size_t skips = lfs_ctz(index) + 1;
|
lfs_size_t skips = lfs_ctz(index) + 1;
|
||||||
|
|
||||||
for (lfs_off_t i = 0; i < skips; i++) {
|
for (lfs_off_t i = 0; i < skips; i++) {
|
||||||
int err = lfs_cache_prog(lfs, pcache, rcache,
|
err = lfs_cache_prog(lfs, pcache, rcache,
|
||||||
nblock, 4*i, &head, 4);
|
nblock, 4*i, &head, 4);
|
||||||
if (err) {
|
if (err) {
|
||||||
if (err == LFS_ERR_CORRUPT) {
|
if (err == LFS_ERR_CORRUPT) {
|
||||||
@@ -1450,7 +1451,7 @@ int lfs_file_sync(lfs_t *lfs, lfs_file_t *file) {
|
|||||||
!lfs_pairisnull(file->pair)) {
|
!lfs_pairisnull(file->pair)) {
|
||||||
// update dir entry
|
// update dir entry
|
||||||
lfs_dir_t cwd;
|
lfs_dir_t cwd;
|
||||||
int err = lfs_dir_fetch(lfs, &cwd, file->pair);
|
err = lfs_dir_fetch(lfs, &cwd, file->pair);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -1669,7 +1670,8 @@ int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) {
|
|||||||
return LFS_ERR_INVAL;
|
return LFS_ERR_INVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size < lfs_file_size(lfs, file)) {
|
lfs_off_t oldsize = lfs_file_size(lfs, file);
|
||||||
|
if (size < oldsize) {
|
||||||
// need to flush since directly changing metadata
|
// need to flush since directly changing metadata
|
||||||
int err = lfs_file_flush(lfs, file);
|
int err = lfs_file_flush(lfs, file);
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -1686,11 +1688,11 @@ int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) {
|
|||||||
|
|
||||||
file->size = size;
|
file->size = size;
|
||||||
file->flags |= LFS_F_DIRTY;
|
file->flags |= LFS_F_DIRTY;
|
||||||
} else if (size > lfs_file_size(lfs, file)) {
|
} else if (size > oldsize) {
|
||||||
lfs_off_t pos = file->pos;
|
lfs_off_t pos = file->pos;
|
||||||
|
|
||||||
// flush+seek if not already at end
|
// flush+seek if not already at end
|
||||||
if (file->pos != lfs_file_size(lfs, file)) {
|
if (file->pos != oldsize) {
|
||||||
int err = lfs_file_seek(lfs, file, 0, SEEK_END);
|
int err = lfs_file_seek(lfs, file, 0, SEEK_END);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
@@ -1716,6 +1718,7 @@ int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lfs_soff_t lfs_file_tell(lfs_t *lfs, lfs_file_t *file) {
|
lfs_soff_t lfs_file_tell(lfs_t *lfs, lfs_file_t *file) {
|
||||||
|
(void)lfs;
|
||||||
return file->pos;
|
return file->pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1729,6 +1732,7 @@ int lfs_file_rewind(lfs_t *lfs, lfs_file_t *file) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lfs_soff_t lfs_file_size(lfs_t *lfs, lfs_file_t *file) {
|
lfs_soff_t lfs_file_size(lfs_t *lfs, lfs_file_t *file) {
|
||||||
|
(void)lfs;
|
||||||
if (file->flags & LFS_F_WRITING) {
|
if (file->flags & LFS_F_WRITING) {
|
||||||
return lfs_max(file->pos, file->size);
|
return lfs_max(file->pos, file->size);
|
||||||
} else {
|
} else {
|
||||||
@@ -1737,7 +1741,7 @@ lfs_soff_t lfs_file_size(lfs_t *lfs, lfs_file_t *file) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// General fs oprations ///
|
/// General fs operations ///
|
||||||
int lfs_stat(lfs_t *lfs, const char *path, struct lfs_info *info) {
|
int lfs_stat(lfs_t *lfs, const char *path, struct lfs_info *info) {
|
||||||
// check for root, can only be something like '/././../.'
|
// check for root, can only be something like '/././../.'
|
||||||
if (strspn(path, "/.") == strlen(path)) {
|
if (strspn(path, "/.") == strlen(path)) {
|
||||||
@@ -1801,7 +1805,7 @@ int lfs_remove(lfs_t *lfs, const char *path) {
|
|||||||
// must be empty before removal, checking size
|
// must be empty before removal, checking size
|
||||||
// without masking top bit checks for any case where
|
// without masking top bit checks for any case where
|
||||||
// dir is not empty
|
// dir is not empty
|
||||||
int err = lfs_dir_fetch(lfs, &dir, entry.d.u.dir);
|
err = lfs_dir_fetch(lfs, &dir, entry.d.u.dir);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
} else if (dir.d.size != sizeof(dir.d)+4) {
|
} else if (dir.d.size != sizeof(dir.d)+4) {
|
||||||
@@ -1826,7 +1830,7 @@ int lfs_remove(lfs_t *lfs, const char *path) {
|
|||||||
cwd.d.tail[0] = dir.d.tail[0];
|
cwd.d.tail[0] = dir.d.tail[0];
|
||||||
cwd.d.tail[1] = dir.d.tail[1];
|
cwd.d.tail[1] = dir.d.tail[1];
|
||||||
|
|
||||||
int err = lfs_dir_commit(lfs, &cwd, NULL, 0);
|
err = lfs_dir_commit(lfs, &cwd, NULL, 0);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -1883,7 +1887,7 @@ int lfs_rename(lfs_t *lfs, const char *oldpath, const char *newpath) {
|
|||||||
// must be empty before removal, checking size
|
// must be empty before removal, checking size
|
||||||
// without masking top bit checks for any case where
|
// without masking top bit checks for any case where
|
||||||
// dir is not empty
|
// dir is not empty
|
||||||
int err = lfs_dir_fetch(lfs, &dir, preventry.d.u.dir);
|
err = lfs_dir_fetch(lfs, &dir, preventry.d.u.dir);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
} else if (dir.d.size != sizeof(dir.d)+4) {
|
} else if (dir.d.size != sizeof(dir.d)+4) {
|
||||||
@@ -1910,12 +1914,12 @@ int lfs_rename(lfs_t *lfs, const char *oldpath, const char *newpath) {
|
|||||||
newentry.d.nlen = strlen(newpath);
|
newentry.d.nlen = strlen(newpath);
|
||||||
|
|
||||||
if (prevexists) {
|
if (prevexists) {
|
||||||
int err = lfs_dir_update(lfs, &newcwd, &newentry, newpath);
|
err = lfs_dir_update(lfs, &newcwd, &newentry, newpath);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int err = lfs_dir_append(lfs, &newcwd, &newentry, newpath);
|
err = lfs_dir_append(lfs, &newcwd, &newentry, newpath);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -1943,7 +1947,7 @@ int lfs_rename(lfs_t *lfs, const char *oldpath, const char *newpath) {
|
|||||||
newcwd.d.tail[0] = dir.d.tail[0];
|
newcwd.d.tail[0] = dir.d.tail[0];
|
||||||
newcwd.d.tail[1] = dir.d.tail[1];
|
newcwd.d.tail[1] = dir.d.tail[1];
|
||||||
|
|
||||||
int err = lfs_dir_commit(lfs, &newcwd, NULL, 0);
|
err = lfs_dir_commit(lfs, &newcwd, NULL, 0);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -2080,7 +2084,7 @@ int lfs_format(lfs_t *lfs, const struct lfs_config *cfg) {
|
|||||||
// write both pairs to be safe
|
// write both pairs to be safe
|
||||||
bool valid = false;
|
bool valid = false;
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
int err = lfs_dir_commit(lfs, &superdir, (struct lfs_region[]){
|
err = lfs_dir_commit(lfs, &superdir, (struct lfs_region[]){
|
||||||
{sizeof(superdir.d), sizeof(superblock.d),
|
{sizeof(superdir.d), sizeof(superblock.d),
|
||||||
&superblock.d, sizeof(superblock.d)}
|
&superblock.d, sizeof(superblock.d)}
|
||||||
}, 1);
|
}, 1);
|
||||||
@@ -2125,7 +2129,7 @@ int lfs_mount(lfs_t *lfs, const struct lfs_config *cfg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!err) {
|
if (!err) {
|
||||||
int err = lfs_bd_read(lfs, dir.pair[0], sizeof(dir.d),
|
err = lfs_bd_read(lfs, dir.pair[0], sizeof(dir.d),
|
||||||
&superblock.d, sizeof(superblock.d));
|
&superblock.d, sizeof(superblock.d));
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
@@ -2182,7 +2186,7 @@ int lfs_traverse(lfs_t *lfs, int (*cb)(void*, lfs_block_t), void *data) {
|
|||||||
|
|
||||||
// iterate over contents
|
// iterate over contents
|
||||||
while (dir.off + sizeof(entry.d) <= (0x7fffffff & dir.d.size)-4) {
|
while (dir.off + sizeof(entry.d) <= (0x7fffffff & dir.d.size)-4) {
|
||||||
int err = lfs_bd_read(lfs, dir.pair[0], dir.off,
|
err = lfs_bd_read(lfs, dir.pair[0], dir.off,
|
||||||
&entry.d, sizeof(entry.d));
|
&entry.d, sizeof(entry.d));
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
@@ -2190,7 +2194,7 @@ int lfs_traverse(lfs_t *lfs, int (*cb)(void*, lfs_block_t), void *data) {
|
|||||||
|
|
||||||
dir.off += lfs_entry_size(&entry);
|
dir.off += lfs_entry_size(&entry);
|
||||||
if ((0x70 & entry.d.type) == (0x70 & LFS_TYPE_REG)) {
|
if ((0x70 & entry.d.type) == (0x70 & LFS_TYPE_REG)) {
|
||||||
int err = lfs_ctz_traverse(lfs, &lfs->rcache, NULL,
|
err = lfs_ctz_traverse(lfs, &lfs->rcache, NULL,
|
||||||
entry.d.u.file.head, entry.d.u.file.size, cb, data);
|
entry.d.u.file.head, entry.d.u.file.size, cb, data);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
@@ -2244,7 +2248,7 @@ static int lfs_pred(lfs_t *lfs, const lfs_block_t dir[2], lfs_dir_t *pdir) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int err = lfs_dir_fetch(lfs, pdir, pdir->d.tail);
|
err = lfs_dir_fetch(lfs, pdir, pdir->d.tail);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -2270,7 +2274,7 @@ static int lfs_parent(lfs_t *lfs, const lfs_block_t dir[2],
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
int err = lfs_dir_next(lfs, parent, entry);
|
err = lfs_dir_next(lfs, parent, entry);
|
||||||
if (err && err != LFS_ERR_NOENT) {
|
if (err && err != LFS_ERR_NOENT) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -2304,13 +2308,13 @@ static int lfs_moved(lfs_t *lfs, const void *e) {
|
|||||||
// iterate over all directory directory entries
|
// iterate over all directory directory entries
|
||||||
lfs_entry_t entry;
|
lfs_entry_t entry;
|
||||||
while (!lfs_pairisnull(cwd.d.tail)) {
|
while (!lfs_pairisnull(cwd.d.tail)) {
|
||||||
int err = lfs_dir_fetch(lfs, &cwd, cwd.d.tail);
|
err = lfs_dir_fetch(lfs, &cwd, cwd.d.tail);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
int err = lfs_dir_next(lfs, &cwd, &entry);
|
err = lfs_dir_next(lfs, &cwd, &entry);
|
||||||
if (err && err != LFS_ERR_NOENT) {
|
if (err && err != LFS_ERR_NOENT) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -2441,7 +2445,7 @@ int lfs_deorphan(lfs_t *lfs) {
|
|||||||
// check entries for moves
|
// check entries for moves
|
||||||
lfs_entry_t entry;
|
lfs_entry_t entry;
|
||||||
while (true) {
|
while (true) {
|
||||||
int err = lfs_dir_next(lfs, &cwd, &entry);
|
err = lfs_dir_next(lfs, &cwd, &entry);
|
||||||
if (err && err != LFS_ERR_NOENT) {
|
if (err && err != LFS_ERR_NOENT) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -2460,7 +2464,7 @@ int lfs_deorphan(lfs_t *lfs) {
|
|||||||
if (moved) {
|
if (moved) {
|
||||||
LFS_DEBUG("Found move %d %d",
|
LFS_DEBUG("Found move %d %d",
|
||||||
entry.d.u.dir[0], entry.d.u.dir[1]);
|
entry.d.u.dir[0], entry.d.u.dir[1]);
|
||||||
int err = lfs_dir_remove(lfs, &cwd, &entry);
|
err = lfs_dir_remove(lfs, &cwd, &entry);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -2468,7 +2472,7 @@ int lfs_deorphan(lfs_t *lfs) {
|
|||||||
LFS_DEBUG("Found partial move %d %d",
|
LFS_DEBUG("Found partial move %d %d",
|
||||||
entry.d.u.dir[0], entry.d.u.dir[1]);
|
entry.d.u.dir[0], entry.d.u.dir[1]);
|
||||||
entry.d.type &= ~0x80;
|
entry.d.type &= ~0x80;
|
||||||
int err = lfs_dir_update(lfs, &cwd, &entry, NULL);
|
err = lfs_dir_update(lfs, &cwd, &entry, NULL);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,11 +7,11 @@
|
|||||||
|
|
||||||
|
|
||||||
// test stuff
|
// test stuff
|
||||||
void test_log(const char *s, uintmax_t v) {{
|
static void test_log(const char *s, uintmax_t v) {{
|
||||||
printf("%s: %jd\n", s, v);
|
printf("%s: %jd\n", s, v);
|
||||||
}}
|
}}
|
||||||
|
|
||||||
void test_assert(const char *file, unsigned line,
|
static void test_assert(const char *file, unsigned line,
|
||||||
const char *s, uintmax_t v, uintmax_t e) {{
|
const char *s, uintmax_t v, uintmax_t e) {{
|
||||||
static const char *last[6] = {{0, 0}};
|
static const char *last[6] = {{0, 0}};
|
||||||
if (v != e || !(last[0] == s || last[1] == s ||
|
if (v != e || !(last[0] == s || last[1] == s ||
|
||||||
@@ -37,7 +37,8 @@ void test_assert(const char *file, unsigned line,
|
|||||||
|
|
||||||
|
|
||||||
// utility functions for traversals
|
// utility functions for traversals
|
||||||
int test_count(void *p, lfs_block_t b) {{
|
static int __attribute__((used)) test_count(void *p, lfs_block_t b) {{
|
||||||
|
(void)b;
|
||||||
unsigned *u = (unsigned*)p;
|
unsigned *u = (unsigned*)p;
|
||||||
*u += 1;
|
*u += 1;
|
||||||
return 0;
|
return 0;
|
||||||
@@ -96,7 +97,7 @@ const struct lfs_config cfg = {{
|
|||||||
|
|
||||||
|
|
||||||
// Entry point
|
// Entry point
|
||||||
int main() {{
|
int main(void) {{
|
||||||
lfs_emubd_create(&cfg, "blocks");
|
lfs_emubd_create(&cfg, "blocks");
|
||||||
|
|
||||||
{tests}
|
{tests}
|
||||||
|
|||||||
Reference in New Issue
Block a user