:: commit 65b39a41115cb917f180efbbfdcd376b65f290f6

mintsuki <mintsuki@protonmail.com> — 2020-11-05 12:29

parents: f0172ee1ed

menu: Make theme colours a single key

diff --git a/limine-pxe.bin b/limine-pxe.bin
index 6846a495..53b2b850 100644
Binary files a/limine-pxe.bin and b/limine-pxe.bin differ
diff --git a/limine.bin b/limine.bin
index baf86a86..e22d3f3c 100644
Binary files a/limine.bin and b/limine.bin differ
diff --git a/stage2/menu.c b/stage2/menu.c
index 13ffcfaf..849e12a2 100644
--- a/stage2/menu.c
+++ b/stage2/menu.c
@@ -21,7 +21,7 @@ static char config_entry_name[1024];
 char *menu(void) {
     cmdline = conv_mem_alloc(CMDLINE_MAX);
 
-    char buf[16];
+    char *buf = conv_mem_alloc(256);
 
     int selected_entry = 0;
     if (config_get_value(buf, 0, 16, "DEFAULT_ENTRY")) {
@@ -52,36 +52,17 @@ char *menu(void) {
             0x00aaaaaa  // grey
         };
 
-        if (config_get_value(buf, 0, 16, "THEME_BLACK")) {
-            colourscheme[0] = (int)strtoui(buf, NULL, 16);
-        }
-
-        if (config_get_value(buf, 0, 16, "THEME_RED")) {
-            colourscheme[1] = (int)strtoui(buf, NULL, 16);
-        }
-
-        if (config_get_value(buf, 0, 16, "THEME_GREEN")) {
-            colourscheme[2] = (int)strtoui(buf, NULL, 16);
-        }
-
-        if (config_get_value(buf, 0, 16, "THEME_BROWN")) {
-            colourscheme[3] = (int)strtoui(buf, NULL, 16);
-        }
-
-        if (config_get_value(buf, 0, 16, "THEME_BLUE")) {
-            colourscheme[4] = (int)strtoui(buf, NULL, 16);
-        }
-
-        if (config_get_value(buf, 0, 16, "THEME_MAGENTA")) {
-            colourscheme[5] = (int)strtoui(buf, NULL, 16);
-        }
-
-        if (config_get_value(buf, 0, 16, "THEME_CYAN")) {
-            colourscheme[6] = (int)strtoui(buf, NULL, 16);
-        }
-
-        if (config_get_value(buf, 0, 16, "THEME_GREY")) {
-            colourscheme[7] = (int)strtoui(buf, NULL, 16);
+        if (config_get_value(buf, 0, 256, "THEME_COLOURS")
+         || config_get_value(buf, 0, 256, "THEME_COLORS")) {
+            const char *first = buf;
+            for (int i = 0; i < 8; i++) {
+                const char *last;
+                uint32_t col = strtoui(first, &last, 16);
+                if (first == last || *last == 0)
+                    break;
+                first = last + 1;
+                colourscheme[i] = col;
+            }
         }
 
         if (config_get_value(buf, 0, 16, "THEME_MARGIN")) {
diff --git a/test/limine.cfg b/test/limine.cfg
index 71a5cb9b..acdd4a61 100644
--- a/test/limine.cfg
+++ b/test/limine.cfg
@@ -3,15 +3,7 @@ TIMEOUT=3
 GRAPHICS=yes
 E9_OUTPUT=yes
 
-THEME_BLACK=80000000
-THEME_RED=aa0000
-THEME_GREEN=00aaff
-THEME_BROWN=aa5500
-THEME_BLUE=0000aa
-THEME_MAGENTA=aa00aa
-THEME_CYAN=9076DE
-THEME_GREY=aaaaaa
-
+THEME_COLOURS=80000000;aa0000;00aaff;aa5500;0000aa;aa00aa;9076de;aaaaaa
 THEME_MARGIN=64
 
 BACKGROUND_PATH=guid://@GUID@/bg.bmp
tab: 248 wrap: offon