:: commit 725a1fc186655e6b1b5d9140b815ebe24bd63163

mintsuki <mintsuki@protonmail.com> — 2020-04-21 14:23

parents: fb827cb5bf

Add parsing of config entries

diff --git a/src/lib/config.c b/src/lib/config.c
index 9dff4aea..f6000358 100644
--- a/src/lib/config.c
+++ b/src/lib/config.c
@@ -29,6 +29,51 @@ int init_config(int drive, int part) {
     return 0;
 }
 
+int config_get_entry_name(char *ret, size_t index, size_t limit) {
+    char *p = config_addr;
+
+    for (size_t i = 0; i <= index; i++) {
+        while (*p != ':') {
+            if (!*p)
+                return -1;
+            p++;
+        }
+        p++;
+    }
+
+    size_t i;
+    for (i = 0; i < (limit - 1); i++) {
+        if (p[i] == SEPARATOR)
+            break;
+        ret[i] = p[i];
+    }
+
+    ret[i] = 0;
+    return 0;
+}
+
+int config_set_entry(size_t index) {
+    char *p = config_addr;
+
+    for (size_t i = 0; i <= index; i++) {
+        while (*p != ':') {
+            if (!*p)
+                return -1;
+            p++;
+        }
+    }
+    p++;
+
+    config_addr = p;
+
+    while (*config_addr != ':' && *config_addr)
+        config_addr++;
+
+    *config_addr = 0;
+
+    return 0;
+}
+
 char *config_get_value(char *buf, size_t index, size_t limit, const char *key) {
     if (!limit || !buf || !key)
         return NULL;
diff --git a/src/lib/config.h b/src/lib/config.h
index a403fade..ff767c6f 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -4,6 +4,8 @@
 #include <stddef.h>
 
 int init_config(int drive, int part);
+int config_get_entry_name(char *ret, size_t index, size_t limit);
+int config_set_entry(size_t index);
 char *config_get_value(char *buf, size_t index, size_t limit, const char *key);
 
 #endif
tab: 248 wrap: offon