Deprecate LFS_F_OPENED and use lfs_mlist_isused instead

Instead of additional flag, we can just go through the mlist.
This commit is contained in:
Noah Gorny
2020-11-17 16:32:00 -06:00
committed by Christopher Haster
parent ce425a56c3
commit 7388b2938a
2 changed files with 12 additions and 14 deletions

25
lfs.c
View File

@@ -2462,7 +2462,7 @@ static int lfs_file_opencfgraw(lfs_t *lfs, lfs_file_t *file,
// setup simple file details // setup simple file details
int err; int err;
file->cfg = cfg; file->cfg = cfg;
file->flags = flags | LFS_F_OPENED; file->flags = flags;
file->pos = 0; file->pos = 0;
file->off = 0; file->off = 0;
file->cache.buffer = NULL; file->cache.buffer = NULL;
@@ -2615,7 +2615,7 @@ static int lfs_file_openraw(lfs_t *lfs, lfs_file_t *file,
} }
static int lfs_file_closeraw(lfs_t *lfs, lfs_file_t *file) { static int lfs_file_closeraw(lfs_t *lfs, lfs_file_t *file) {
LFS_ASSERT(file->flags & LFS_F_OPENED); LFS_ASSERT(lfs_mlist_isopen(lfs->mlist, (struct lfs_mlist*)file));
#ifdef LFS_READONLY #ifdef LFS_READONLY
int err = 0; int err = 0;
@@ -2631,14 +2631,13 @@ static int lfs_file_closeraw(lfs_t *lfs, lfs_file_t *file) {
lfs_free(file->cache.buffer); lfs_free(file->cache.buffer);
} }
file->flags &= ~LFS_F_OPENED;
return err; return err;
} }
#ifndef LFS_READONLY #ifndef LFS_READONLY
static int lfs_file_relocate(lfs_t *lfs, lfs_file_t *file) { static int lfs_file_relocate(lfs_t *lfs, lfs_file_t *file) {
LFS_ASSERT(file->flags & LFS_F_OPENED); LFS_ASSERT(lfs_mlist_isopen(lfs->mlist, (struct lfs_mlist*)file));
while (true) { while (true) {
// just relocate what exists into new block // just relocate what exists into new block
@@ -2725,7 +2724,7 @@ static int lfs_file_outline(lfs_t *lfs, lfs_file_t *file) {
#ifndef LFS_READONLY #ifndef LFS_READONLY
static int lfs_file_flush(lfs_t *lfs, lfs_file_t *file) { static int lfs_file_flush(lfs_t *lfs, lfs_file_t *file) {
LFS_ASSERT(file->flags & LFS_F_OPENED); LFS_ASSERT(lfs_mlist_isopen(lfs->mlist, (struct lfs_mlist*)file));
if (file->flags & LFS_F_READING) { if (file->flags & LFS_F_READING) {
if (!(file->flags & LFS_F_INLINE)) { if (!(file->flags & LFS_F_INLINE)) {
@@ -2742,7 +2741,7 @@ static int lfs_file_flush(lfs_t *lfs, lfs_file_t *file) {
lfs_file_t orig = { lfs_file_t orig = {
.ctz.head = file->ctz.head, .ctz.head = file->ctz.head,
.ctz.size = file->ctz.size, .ctz.size = file->ctz.size,
.flags = LFS_O_RDONLY | LFS_F_OPENED, .flags = LFS_O_RDONLY,
.pos = file->pos, .pos = file->pos,
.cache = lfs->rcache, .cache = lfs->rcache,
}; };
@@ -2807,7 +2806,7 @@ relocate:
#ifndef LFS_READONLY #ifndef LFS_READONLY
static int lfs_file_syncraw(lfs_t *lfs, lfs_file_t *file) { static int lfs_file_syncraw(lfs_t *lfs, lfs_file_t *file) {
LFS_ASSERT(file->flags & LFS_F_OPENED); LFS_ASSERT(lfs_mlist_isopen(lfs->mlist, (struct lfs_mlist*)file));
if (file->flags & LFS_F_ERRED) { if (file->flags & LFS_F_ERRED) {
// it's not safe to do anything if our file errored // it's not safe to do anything if our file errored
@@ -2862,7 +2861,7 @@ static int lfs_file_syncraw(lfs_t *lfs, lfs_file_t *file) {
static lfs_ssize_t lfs_file_readraw(lfs_t *lfs, lfs_file_t *file, static lfs_ssize_t lfs_file_readraw(lfs_t *lfs, lfs_file_t *file,
void *buffer, lfs_size_t size) { void *buffer, lfs_size_t size) {
LFS_ASSERT(file->flags & LFS_F_OPENED); LFS_ASSERT(lfs_mlist_isopen(lfs->mlist, (struct lfs_mlist*)file));
#ifndef LFS_READONLY #ifndef LFS_READONLY
LFS_ASSERT((file->flags & LFS_O_RDWR) != LFS_O_WRONLY); LFS_ASSERT((file->flags & LFS_O_RDWR) != LFS_O_WRONLY);
#endif #endif
@@ -2939,7 +2938,7 @@ static lfs_ssize_t lfs_file_readraw(lfs_t *lfs, lfs_file_t *file,
#ifndef LFS_READONLY #ifndef LFS_READONLY
static lfs_ssize_t lfs_file_writeraw(lfs_t *lfs, lfs_file_t *file, static lfs_ssize_t lfs_file_writeraw(lfs_t *lfs, lfs_file_t *file,
const void *buffer, lfs_size_t size) { const void *buffer, lfs_size_t size) {
LFS_ASSERT(file->flags & LFS_F_OPENED); LFS_ASSERT(lfs_mlist_isopen(lfs->mlist, (struct lfs_mlist*)file));
LFS_ASSERT((file->flags & LFS_O_RDWR) != LFS_O_RDONLY); LFS_ASSERT((file->flags & LFS_O_RDWR) != LFS_O_RDONLY);
const uint8_t *data = buffer; const uint8_t *data = buffer;
@@ -3060,7 +3059,7 @@ relocate:
static lfs_soff_t lfs_file_seekraw(lfs_t *lfs, lfs_file_t *file, static lfs_soff_t lfs_file_seekraw(lfs_t *lfs, lfs_file_t *file,
lfs_soff_t off, int whence) { lfs_soff_t off, int whence) {
LFS_ASSERT(file->flags & LFS_F_OPENED); LFS_ASSERT(lfs_mlist_isopen(lfs->mlist, (struct lfs_mlist*)file));
#ifndef LFS_READONLY #ifndef LFS_READONLY
// write out everything beforehand, may be noop if rdonly // write out everything beforehand, may be noop if rdonly
@@ -3092,7 +3091,7 @@ static lfs_soff_t lfs_file_seekraw(lfs_t *lfs, lfs_file_t *file,
#ifndef LFS_READONLY #ifndef LFS_READONLY
static int lfs_file_truncateraw(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) { static int lfs_file_truncateraw(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) {
LFS_ASSERT(file->flags & LFS_F_OPENED); LFS_ASSERT(lfs_mlist_isopen(lfs->mlist, (struct lfs_mlist*)file));
LFS_ASSERT((file->flags & LFS_O_RDWR) != LFS_O_RDONLY); LFS_ASSERT((file->flags & LFS_O_RDWR) != LFS_O_RDONLY);
if (size > LFS_FILE_MAX) { if (size > LFS_FILE_MAX) {
@@ -3148,7 +3147,7 @@ static int lfs_file_truncateraw(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) {
#endif #endif
static lfs_soff_t lfs_file_tellraw(lfs_t *lfs, lfs_file_t *file) { static lfs_soff_t lfs_file_tellraw(lfs_t *lfs, lfs_file_t *file) {
LFS_ASSERT(file->flags & LFS_F_OPENED); LFS_ASSERT(lfs_mlist_isopen(lfs->mlist, (struct lfs_mlist*)file));
(void)lfs; (void)lfs;
return file->pos; return file->pos;
} }
@@ -3163,7 +3162,7 @@ static int lfs_file_rewindraw(lfs_t *lfs, lfs_file_t *file) {
} }
static lfs_soff_t lfs_file_sizeraw(lfs_t *lfs, lfs_file_t *file) { static lfs_soff_t lfs_file_sizeraw(lfs_t *lfs, lfs_file_t *file) {
LFS_ASSERT(file->flags & LFS_F_OPENED); LFS_ASSERT(lfs_mlist_isopen(lfs->mlist, (struct lfs_mlist*)file));
(void)lfs; (void)lfs;
#ifndef LFS_READONLY #ifndef LFS_READONLY

1
lfs.h
View File

@@ -143,7 +143,6 @@ enum lfs_open_flags {
LFS_F_ERRED = 0x080000, // An error occurred during write LFS_F_ERRED = 0x080000, // An error occurred during write
#endif #endif
LFS_F_INLINE = 0x100000, // Currently inlined in directory entry LFS_F_INLINE = 0x100000, // Currently inlined in directory entry
LFS_F_OPENED = 0x200000, // File has been opened
}; };
// File seek flags // File seek flags