Simple RAM file system.
Dependents: modem_ref_helper_for_v5_3_217 modem_ref_helper
Diff: ram_fs.cpp
- Revision:
- 3:1bc9159847ab
- Parent:
- 2:91473a2fac1c
- Child:
- 4:58ee8b15988b
--- a/ram_fs.cpp Thu May 11 15:20:03 2017 +0000 +++ b/ram_fs.cpp Fri May 12 13:33:37 2017 +0000 @@ -9,15 +9,26 @@ static ram_fs_file_t* g_fs = NULL; -static void ram_fs_append(ram_fs_file_t** file, ram_fs_file_t* file_new) +static void ram_fs_update(ram_fs_file_t** file, ram_fs_file_t* file_new) { if (*file == NULL) { + // Append new file *file = file_new; return; } - ram_fs_append((ram_fs_file_t**)&((*file)->next), file_new); + if ((*file)->file_id == file_new->file_id) + { + // Update existing file + (*file)->header = file_new->header; + (*file)->data = file_new->data; + (*file)->next = file_new->next; + FREE(file_new); + return; + } + + ram_fs_update((ram_fs_file_t**)&((*file)->next), file_new); } static ram_fs_file_t* ram_fs_get(ram_fs_file_t* file, uint8_t fid) @@ -65,7 +76,7 @@ file_new->data = data; file_new->next = NULL; - ram_fs_append(&g_fs, file_new); + ram_fs_update(&g_fs, file_new); } bool ram_fs_delete(uint8_t file_id)