mirror of
https://github.com/pellepl/spiffs.git
synced 2026-09-18 23:20:04 +00:00
Add possibility to compile a read-only version of spiffs.
Added configs: SPIFFS_READ_ONLY
This commit is contained in:
@@ -113,12 +113,20 @@ clean:
|
||||
@rm -f ${builddir}/*.elf
|
||||
|
||||
build-all:
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=1"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=1"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=1"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=1"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=0 -DSPIFFS_READ_ONLY=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=1 -DSPIFFS_READ_ONLY=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=0 -DSPIFFS_READ_ONLY=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=1 -DSPIFFS_READ_ONLY=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=0 -DSPIFFS_READ_ONLY=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=1 -DSPIFFS_READ_ONLY=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=0 -DSPIFFS_READ_ONLY=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=1 -DSPIFFS_READ_ONLY=0"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=0 -DSPIFFS_READ_ONLY=1"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=1 -DSPIFFS_READ_ONLY=1"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=0 -DSPIFFS_READ_ONLY=1"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=0 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=1 -DSPIFFS_READ_ONLY=1"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=0 -DSPIFFS_READ_ONLY=1"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=0 -DSPIFFS_CACHE=1 -DSPIFFS_READ_ONLY=1"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=0 -DSPIFFS_READ_ONLY=1"
|
||||
$(MAKE) clean && $(MAKE) CFLAGS="-DSPIFFS_HAL_CALLBACK_EXTRA=1 -DSPIFFS_SINGLETON=1 -DSPIFFS_CACHE=1 -DSPIFFS_READ_ONLY=1"
|
||||
|
||||
@@ -189,6 +189,20 @@
|
||||
#define SPIFFS_FILEHDL_OFFSET 0
|
||||
#endif
|
||||
|
||||
// Enable this to compile a read only version of spiffs.
|
||||
// This will reduce binary size of spiffs. All code comprising modification
|
||||
// of the file system will not be compiled. Some config will be ignored.
|
||||
// HAL functions for erasing and writing to spi-flash may be null. Cache
|
||||
// can be disabled for even further binary size reduction (and ram savings).
|
||||
// Functions modifying the fs will return SPIFFS_ERR_RO_NOT_IMPL.
|
||||
// If the file system cannot be mounted due to aborted erase operation and
|
||||
// SPIFFS_USE_MAGIC is enabled, SPIFFS_ERR_RO_ABORTED_OPERATION will be
|
||||
// returned.
|
||||
// Might be useful for e.g. bootloaders and such.
|
||||
#ifndef SPIFFS_READ_ONLY
|
||||
#define SPIFFS_READ_ONLY 0
|
||||
#endif
|
||||
|
||||
// Set SPIFFS_TEST_VISUALISATION to non-zero to enable SPIFFS_vis function
|
||||
// in the api. This function will visualize all filesystem using given printf
|
||||
// function.
|
||||
|
||||
@@ -50,6 +50,8 @@ extern "C" {
|
||||
#define SPIFFS_ERR_FILE_EXISTS -10030
|
||||
|
||||
#define SPIFFS_ERR_NOT_A_FILE -10031
|
||||
#define SPIFFS_ERR_RO_NOT_IMPL -10032
|
||||
#define SPIFFS_ERR_RO_ABORTED_OPERATION -10033
|
||||
|
||||
#define SPIFFS_ERR_INTERNAL -10050
|
||||
|
||||
|
||||
@@ -19,9 +19,11 @@
|
||||
* Author: petera
|
||||
*/
|
||||
|
||||
|
||||
#include "spiffs.h"
|
||||
#include "spiffs_nucleus.h"
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
|
||||
#if SPIFFS_HAL_CALLBACK_EXTRA
|
||||
#define CHECK_CB(_fs, _type, _rep, _arg1, _arg2) \
|
||||
@@ -106,6 +108,7 @@ static s32_t spiffs_rewrite_index(spiffs *fs, spiffs_obj_id obj_id, spiffs_span_
|
||||
} else {
|
||||
// calc entry in index
|
||||
entry = SPIFFS_OBJ_IX_ENTRY(fs, data_spix);
|
||||
|
||||
}
|
||||
// load index
|
||||
res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_LU2 | SPIFFS_OP_C_READ,
|
||||
@@ -989,3 +992,4 @@ s32_t spiffs_object_index_consistency_check(spiffs *fs) {
|
||||
return res;
|
||||
}
|
||||
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#include "spiffs.h"
|
||||
#include "spiffs_nucleus.h"
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
|
||||
// Erases a logical block and updates the erase counter.
|
||||
// If cache is enabled, all pages that might be cached in this block
|
||||
// is dropped.
|
||||
@@ -571,3 +573,4 @@ s32_t spiffs_gc_clean(spiffs *fs, spiffs_block_ix bix) {
|
||||
return res;
|
||||
}
|
||||
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
+63
-2
@@ -36,6 +36,10 @@ u8_t SPIFFS_mounted(spiffs *fs) {
|
||||
}
|
||||
|
||||
s32_t SPIFFS_format(spiffs *fs) {
|
||||
#if SPIFFS_READ_ONLY
|
||||
(void)fs;
|
||||
return SPIFFS_ERR_RO_NOT_IMPL;
|
||||
#else
|
||||
SPIFFS_API_CHECK_CFG(fs);
|
||||
if (SPIFFS_CHECK_MOUNT(fs)) {
|
||||
fs->err_code = SPIFFS_ERR_MOUNTED;
|
||||
@@ -59,6 +63,7 @@ s32_t SPIFFS_format(spiffs *fs) {
|
||||
SPIFFS_UNLOCK(fs);
|
||||
|
||||
return 0;
|
||||
#endif // SPIFFS_READ_ONLY
|
||||
}
|
||||
|
||||
#if SPIFFS_USE_MAGIC && SPIFFS_USE_MAGIC_LENGTH
|
||||
@@ -178,6 +183,10 @@ void SPIFFS_clearerr(spiffs *fs) {
|
||||
}
|
||||
|
||||
s32_t SPIFFS_creat(spiffs *fs, const char *path, spiffs_mode mode) {
|
||||
#if SPIFFS_READ_ONLY
|
||||
(void)fs; (void)path; (void)mode;
|
||||
return SPIFFS_ERR_RO_NOT_IMPL;
|
||||
#else
|
||||
(void)mode;
|
||||
SPIFFS_API_CHECK_CFG(fs);
|
||||
SPIFFS_API_CHECK_MOUNT(fs);
|
||||
@@ -191,6 +200,7 @@ s32_t SPIFFS_creat(spiffs *fs, const char *path, spiffs_mode mode) {
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
SPIFFS_UNLOCK(fs);
|
||||
return 0;
|
||||
#endif // SPIFFS_READ_ONLY
|
||||
}
|
||||
|
||||
spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs_mode mode) {
|
||||
@@ -202,6 +212,11 @@ spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs
|
||||
spiffs_fd *fd;
|
||||
spiffs_page_ix pix;
|
||||
|
||||
#if SPIFFS_READ_ONLY
|
||||
// not valid flags in read only mode
|
||||
flags &= ~SPIFFS_WRONLY | SPIFFS_CREAT | SPIFFS_TRUNC;
|
||||
#endif // SPIFFS_READ_ONLY
|
||||
|
||||
s32_t res = spiffs_fd_find_new(fs, &fd);
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
|
||||
@@ -222,6 +237,7 @@ spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs
|
||||
}
|
||||
|
||||
if ((flags & SPIFFS_CREAT) && res == SPIFFS_ERR_NOT_FOUND) {
|
||||
#if !SPIFFS_READ_ONLY
|
||||
spiffs_obj_id obj_id;
|
||||
// no need to enter conflicting name here, already looked for it above
|
||||
res = spiffs_obj_lu_find_free_obj_id(fs, &obj_id, 0);
|
||||
@@ -235,6 +251,7 @@ spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs
|
||||
}
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
flags &= ~SPIFFS_TRUNC;
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
} else {
|
||||
if (res < SPIFFS_OK) {
|
||||
spiffs_fd_return(fs, fd->file_nbr);
|
||||
@@ -246,6 +263,7 @@ spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs
|
||||
spiffs_fd_return(fs, fd->file_nbr);
|
||||
}
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
#if !SPIFFS_READ_ONLY
|
||||
if (flags & SPIFFS_TRUNC) {
|
||||
res = spiffs_object_truncate(fd, 0, 0);
|
||||
if (res < SPIFFS_OK) {
|
||||
@@ -253,6 +271,7 @@ spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs
|
||||
}
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
fd->fdoffset = 0;
|
||||
|
||||
@@ -276,6 +295,7 @@ spiffs_file SPIFFS_open_by_dirent(spiffs *fs, struct spiffs_dirent *e, spiffs_fl
|
||||
spiffs_fd_return(fs, fd->file_nbr);
|
||||
}
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
#if !SPIFFS_READ_ONLY
|
||||
if (flags & SPIFFS_TRUNC) {
|
||||
res = spiffs_object_truncate(fd, 0, 0);
|
||||
if (res < SPIFFS_OK) {
|
||||
@@ -283,6 +303,7 @@ spiffs_file SPIFFS_open_by_dirent(spiffs *fs, struct spiffs_dirent *e, spiffs_fl
|
||||
}
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
fd->fdoffset = 0;
|
||||
|
||||
@@ -319,6 +340,8 @@ spiffs_file SPIFFS_open_by_page(spiffs *fs, spiffs_page_ix page_ix, spiffs_flags
|
||||
spiffs_fd_return(fs, fd->file_nbr);
|
||||
}
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
if (flags & SPIFFS_TRUNC) {
|
||||
res = spiffs_object_truncate(fd, 0, 0);
|
||||
if (res < SPIFFS_OK) {
|
||||
@@ -326,6 +349,7 @@ spiffs_file SPIFFS_open_by_page(spiffs *fs, spiffs_page_ix page_ix, spiffs_flags
|
||||
}
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
fd->fdoffset = 0;
|
||||
|
||||
@@ -388,6 +412,7 @@ s32_t SPIFFS_read(spiffs *fs, spiffs_file fh, void *buf, s32_t len) {
|
||||
return len;
|
||||
}
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
static s32_t spiffs_hydro_write(spiffs *fs, spiffs_fd *fd, void *buf, u32_t offset, s32_t len) {
|
||||
(void)fs;
|
||||
s32_t res = SPIFFS_OK;
|
||||
@@ -409,8 +434,13 @@ static s32_t spiffs_hydro_write(spiffs *fs, spiffs_fd *fd, void *buf, u32_t offs
|
||||
return len;
|
||||
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len) {
|
||||
#if SPIFFS_READ_ONLY
|
||||
(void)fs; (void)fh; (void)buf; (void)len;
|
||||
return SPIFFS_ERR_RO_NOT_IMPL;
|
||||
#else
|
||||
SPIFFS_API_CHECK_CFG(fs);
|
||||
SPIFFS_API_CHECK_MOUNT(fs);
|
||||
SPIFFS_LOCK(fs);
|
||||
@@ -528,6 +558,7 @@ s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len) {
|
||||
SPIFFS_UNLOCK(fs);
|
||||
|
||||
return res;
|
||||
#endif // SPIFFS_READ_ONLY
|
||||
}
|
||||
|
||||
s32_t SPIFFS_lseek(spiffs *fs, spiffs_file fh, s32_t offs, int whence) {
|
||||
@@ -577,6 +608,10 @@ s32_t SPIFFS_lseek(spiffs *fs, spiffs_file fh, s32_t offs, int whence) {
|
||||
}
|
||||
|
||||
s32_t SPIFFS_remove(spiffs *fs, const char *path) {
|
||||
#if SPIFFS_READ_ONLY
|
||||
(void)fs; (void)path;
|
||||
return SPIFFS_ERR_RO_NOT_IMPL;
|
||||
#else
|
||||
SPIFFS_API_CHECK_CFG(fs);
|
||||
SPIFFS_API_CHECK_MOUNT(fs);
|
||||
SPIFFS_LOCK(fs);
|
||||
@@ -608,9 +643,14 @@ s32_t SPIFFS_remove(spiffs *fs, const char *path) {
|
||||
|
||||
SPIFFS_UNLOCK(fs);
|
||||
return 0;
|
||||
#endif // SPIFFS_READ_ONLY
|
||||
}
|
||||
|
||||
s32_t SPIFFS_fremove(spiffs *fs, spiffs_file fh) {
|
||||
#if SPIFFS_READ_ONLY
|
||||
(void)fs; (void)fh;
|
||||
return SPIFFS_ERR_RO_NOT_IMPL;
|
||||
#else
|
||||
SPIFFS_API_CHECK_CFG(fs);
|
||||
SPIFFS_API_CHECK_MOUNT(fs);
|
||||
SPIFFS_LOCK(fs);
|
||||
@@ -637,6 +677,7 @@ s32_t SPIFFS_fremove(spiffs *fs, spiffs_file fh) {
|
||||
SPIFFS_UNLOCK(fs);
|
||||
|
||||
return 0;
|
||||
#endif // SPIFFS_READ_ONLY
|
||||
}
|
||||
|
||||
static s32_t spiffs_stat_pix(spiffs *fs, spiffs_page_ix pix, spiffs_file fh, spiffs_stat *s) {
|
||||
@@ -709,7 +750,7 @@ static s32_t spiffs_fflush_cache(spiffs *fs, spiffs_file fh) {
|
||||
(void)fs;
|
||||
(void)fh;
|
||||
s32_t res = SPIFFS_OK;
|
||||
#if SPIFFS_CACHE_WR
|
||||
#if !SPIFFS_READ_ONLY && SPIFFS_CACHE_WR
|
||||
|
||||
spiffs_fd *fd;
|
||||
res = spiffs_fd_get(fs, fh, &fd);
|
||||
@@ -743,7 +784,7 @@ s32_t SPIFFS_fflush(spiffs *fs, spiffs_file fh) {
|
||||
SPIFFS_API_CHECK_CFG(fs);
|
||||
SPIFFS_API_CHECK_MOUNT(fs);
|
||||
s32_t res = SPIFFS_OK;
|
||||
#if SPIFFS_CACHE_WR
|
||||
#if !SPIFFS_READ_ONLY && SPIFFS_CACHE_WR
|
||||
SPIFFS_LOCK(fs);
|
||||
fh = SPIFFS_FH_UNOFFS(fs, fh);
|
||||
res = spiffs_fflush_cache(fs, fh);
|
||||
@@ -775,6 +816,10 @@ s32_t SPIFFS_close(spiffs *fs, spiffs_file fh) {
|
||||
}
|
||||
|
||||
s32_t SPIFFS_rename(spiffs *fs, const char *old, const char *new) {
|
||||
#if SPIFFS_READ_ONLY
|
||||
(void)fs; (void)old; (void)new;
|
||||
return SPIFFS_ERR_RO_NOT_IMPL;
|
||||
#else
|
||||
SPIFFS_API_CHECK_CFG(fs);
|
||||
SPIFFS_API_CHECK_MOUNT(fs);
|
||||
SPIFFS_LOCK(fs);
|
||||
@@ -812,6 +857,7 @@ s32_t SPIFFS_rename(spiffs *fs, const char *old, const char *new) {
|
||||
SPIFFS_UNLOCK(fs);
|
||||
|
||||
return res;
|
||||
#endif // SPIFFS_READ_ONLY
|
||||
}
|
||||
|
||||
spiffs_DIR *SPIFFS_opendir(spiffs *fs, const char *name, spiffs_DIR *d) {
|
||||
@@ -908,6 +954,10 @@ s32_t SPIFFS_closedir(spiffs_DIR *d) {
|
||||
}
|
||||
|
||||
s32_t SPIFFS_check(spiffs *fs) {
|
||||
#if SPIFFS_READ_ONLY
|
||||
(void)fs;
|
||||
return SPIFFS_ERR_RO_NOT_IMPL;
|
||||
#else
|
||||
s32_t res;
|
||||
SPIFFS_API_CHECK_CFG(fs);
|
||||
SPIFFS_API_CHECK_MOUNT(fs);
|
||||
@@ -923,6 +973,7 @@ s32_t SPIFFS_check(spiffs *fs) {
|
||||
|
||||
SPIFFS_UNLOCK(fs);
|
||||
return res;
|
||||
#endif // SPIFFS_READ_ONLY
|
||||
}
|
||||
|
||||
s32_t SPIFFS_info(spiffs *fs, u32_t *total, u32_t *used) {
|
||||
@@ -950,6 +1001,10 @@ s32_t SPIFFS_info(spiffs *fs, u32_t *total, u32_t *used) {
|
||||
}
|
||||
|
||||
s32_t SPIFFS_gc_quick(spiffs *fs, u16_t max_free_pages) {
|
||||
#if SPIFFS_READ_ONLY
|
||||
(void)fs; (void)max_free_pages;
|
||||
return SPIFFS_ERR_RO_NOT_IMPL;
|
||||
#else
|
||||
s32_t res;
|
||||
SPIFFS_API_CHECK_CFG(fs);
|
||||
SPIFFS_API_CHECK_MOUNT(fs);
|
||||
@@ -960,10 +1015,15 @@ s32_t SPIFFS_gc_quick(spiffs *fs, u16_t max_free_pages) {
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
SPIFFS_UNLOCK(fs);
|
||||
return 0;
|
||||
#endif // SPIFFS_READ_ONLY
|
||||
}
|
||||
|
||||
|
||||
s32_t SPIFFS_gc(spiffs *fs, u32_t size) {
|
||||
#if SPIFFS_READ_ONLY
|
||||
(void)fs; (void)size;
|
||||
return SPIFFS_ERR_RO_NOT_IMPL;
|
||||
#else
|
||||
s32_t res;
|
||||
SPIFFS_API_CHECK_CFG(fs);
|
||||
SPIFFS_API_CHECK_MOUNT(fs);
|
||||
@@ -974,6 +1034,7 @@ s32_t SPIFFS_gc(spiffs *fs, u32_t size) {
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
SPIFFS_UNLOCK(fs);
|
||||
return 0;
|
||||
#endif // SPIFFS_READ_ONLY
|
||||
}
|
||||
|
||||
s32_t SPIFFS_eof(spiffs *fs, spiffs_file fh) {
|
||||
|
||||
+33
-4
@@ -29,6 +29,7 @@ static s32_t spiffs_page_data_check(spiffs *fs, spiffs_fd *fd, spiffs_page_ix pi
|
||||
return res;
|
||||
}
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
static s32_t spiffs_page_index_check(spiffs *fs, spiffs_fd *fd, spiffs_page_ix pix, spiffs_span_ix spix) {
|
||||
s32_t res = SPIFFS_OK;
|
||||
if (pix == (spiffs_page_ix)-1) {
|
||||
@@ -56,6 +57,7 @@ static s32_t spiffs_page_index_check(spiffs *fs, spiffs_fd *fd, spiffs_page_ix p
|
||||
#endif
|
||||
return res;
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
#if !SPIFFS_CACHE
|
||||
|
||||
@@ -77,6 +79,7 @@ s32_t spiffs_phys_wr(
|
||||
|
||||
#endif
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
s32_t spiffs_phys_cpy(
|
||||
spiffs *fs,
|
||||
spiffs_file fh,
|
||||
@@ -98,6 +101,7 @@ s32_t spiffs_phys_cpy(
|
||||
}
|
||||
return SPIFFS_OK;
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
// Find object lookup entry containing given id with visitor.
|
||||
// Iterate over object lookup pages in each block until a given object id entry is found.
|
||||
@@ -218,6 +222,7 @@ s32_t spiffs_obj_lu_find_entry_visitor(
|
||||
return SPIFFS_VIS_END;
|
||||
}
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
s32_t spiffs_erase_block(
|
||||
spiffs *fs,
|
||||
spiffs_block_ix bix) {
|
||||
@@ -257,7 +262,7 @@ s32_t spiffs_erase_block(
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
#if SPIFFS_USE_MAGIC && SPIFFS_USE_MAGIC_LENGTH
|
||||
s32_t spiffs_probe(
|
||||
@@ -374,7 +379,11 @@ s32_t spiffs_obj_lu_scan(
|
||||
if (unerased_bix != (spiffs_block_ix)-1) {
|
||||
// found one unerased block, remedy
|
||||
SPIFFS_DBG("mount: erase block %i\n", bix);
|
||||
#if SPIFFS_READ_ONLY
|
||||
res = SPIFFS_ERR_RO_ABORTED_OPERATION;
|
||||
#else
|
||||
res = spiffs_erase_block(fs, unerased_bix);
|
||||
#endif // SPIFFS_READ_ONLY
|
||||
SPIFFS_CHECK_RES(res);
|
||||
}
|
||||
#endif
|
||||
@@ -405,6 +414,7 @@ s32_t spiffs_obj_lu_scan(
|
||||
return res;
|
||||
}
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
// Find free object lookup entry
|
||||
// Iterate over object lookup pages in each block until a free object id entry is found
|
||||
s32_t spiffs_obj_lu_find_free(
|
||||
@@ -439,6 +449,7 @@ s32_t spiffs_obj_lu_find_free(
|
||||
|
||||
return res;
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
// Find object lookup entry containing given id
|
||||
// Iterate over object lookup pages in each block until a given object id entry is found
|
||||
@@ -560,6 +571,7 @@ s32_t spiffs_obj_lu_find_id_and_span_by_phdr(
|
||||
return res;
|
||||
}
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
// Allocates a free defined page with given obj_id
|
||||
// Occupies object lookup entry and page
|
||||
// data may be NULL; where only page header is stored, len and page_offs is ignored
|
||||
@@ -617,7 +629,9 @@ s32_t spiffs_page_allocate_data(
|
||||
|
||||
return res;
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
// Moves a page from src to a free page and finalizes it. Updates page index. Page data is given in param page.
|
||||
// If page data is null, provided header is used for metainfo and page data is physically copied.
|
||||
s32_t spiffs_page_move(
|
||||
@@ -680,7 +694,9 @@ s32_t spiffs_page_move(
|
||||
res = spiffs_page_delete(fs, src_pix);
|
||||
return res;
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
// Deletes a page and removes it from object lookup.
|
||||
s32_t spiffs_page_delete(
|
||||
spiffs *fs,
|
||||
@@ -709,7 +725,9 @@ s32_t spiffs_page_delete(
|
||||
|
||||
return res;
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
// Create an object index header page with empty index and undefined length
|
||||
s32_t spiffs_object_create(
|
||||
spiffs *fs,
|
||||
@@ -761,7 +779,9 @@ s32_t spiffs_object_create(
|
||||
|
||||
return res;
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
// update object index header with any combination of name/size/index
|
||||
// new_objix_hdr_data may be null, if so the object index header page is loaded
|
||||
// name may be null, if so name is not changed
|
||||
@@ -816,6 +836,7 @@ s32_t spiffs_object_update_index_hdr(
|
||||
|
||||
return res;
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
void spiffs_cb_object_event(
|
||||
spiffs *fs,
|
||||
@@ -912,6 +933,7 @@ s32_t spiffs_object_open_by_page(
|
||||
return res;
|
||||
}
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
// Append to object
|
||||
// keep current object index (header) page in fs->work buffer
|
||||
s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) {
|
||||
@@ -1151,8 +1173,10 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) {
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
} // spiffs_object_append
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
// Modify object
|
||||
// keep current object index (header) page in fs->work buffer
|
||||
s32_t spiffs_object_modify(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) {
|
||||
@@ -1352,7 +1376,8 @@ s32_t spiffs_object_modify(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) {
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
} // spiffs_object_modify
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
static s32_t spiffs_object_find_object_index_header_by_name_v(
|
||||
spiffs *fs,
|
||||
@@ -1418,6 +1443,7 @@ s32_t spiffs_object_find_object_index_header_by_name(
|
||||
return res;
|
||||
}
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
// Truncates object to new size. If new size is null, object may be removed totally
|
||||
s32_t spiffs_object_truncate(
|
||||
spiffs_fd *fd,
|
||||
@@ -1638,7 +1664,8 @@ s32_t spiffs_object_truncate(
|
||||
fd->size = cur_size;
|
||||
|
||||
return res;
|
||||
}
|
||||
} // spiffs_object_truncate
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
s32_t spiffs_object_read(
|
||||
spiffs_fd *fd,
|
||||
@@ -1718,6 +1745,7 @@ s32_t spiffs_object_read(
|
||||
return res;
|
||||
}
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
typedef struct {
|
||||
spiffs_obj_id min_obj_id;
|
||||
spiffs_obj_id max_obj_id;
|
||||
@@ -1885,6 +1913,7 @@ s32_t spiffs_obj_lu_find_free_obj_id(spiffs *fs, spiffs_obj_id *obj_id, const u8
|
||||
|
||||
return res;
|
||||
}
|
||||
#endif // !SPIFFS_READ_ONLY
|
||||
|
||||
s32_t spiffs_fd_find_new(spiffs *fs, spiffs_fd **fd) {
|
||||
u32_t i;
|
||||
|
||||
@@ -376,6 +376,7 @@ TEST(zero_sized_file_44) {
|
||||
return TEST_RES_OK;
|
||||
} TEST_END(zero_sized_file_44)
|
||||
|
||||
#if !SPIFFS_READ_ONLY
|
||||
TEST(truncate_48) {
|
||||
fs_reset();
|
||||
|
||||
@@ -421,5 +422,6 @@ TEST(truncate_48) {
|
||||
|
||||
return TEST_RES_OK;
|
||||
} TEST_END(truncate_48)
|
||||
#endif
|
||||
|
||||
SUITE_END(bug_tests)
|
||||
|
||||
Reference in New Issue
Block a user