Simple RAM file system.

Dependents:   modem_ref_helper_for_v5_3_217 modem_ref_helper

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)