Fix small issues in the stage2 loader (#78)

* stage2 loader: Fix loadlist parsing breaking out of the loop too early

* stage2 loader: Use bct0 from the loader context
This commit is contained in:
Max K 2018-05-03 22:08:30 +02:00 committed by SciresM
parent 54a1529ef4
commit 0807aaea2b

View file

@ -54,7 +54,7 @@ void load_list_entry(const char *key) {
printk("Loading %s\n", key); printk("Loading %s\n", key);
if (ini_parse_string(g_bct0, loadlist_entry_ini_handler, &load_file_ctx) < 0) { if (ini_parse_string(get_loader_ctx()->bct0, loadlist_entry_ini_handler, &load_file_ctx) < 0) {
printk("Error: Failed to parse BCT.ini!\n"); printk("Error: Failed to parse BCT.ini!\n");
generic_panic(); generic_panic();
} }
@ -110,20 +110,22 @@ void parse_loadlist(const char *ll) {
/* Load the entry. */ /* Load the entry. */
load_list_entry(entry); load_list_entry(entry);
/* Skip to the next delimiter. */ /* Skip to the next delimiter. */
for (; *p == ' ' || *p == '\t'; p++) { } for (; *p == ' ' || *p == '\t' || *p == '\x00'; p++) { }
if (*p == '\x00') { if (*p != '|') {
break;
} else if (*p != '|') {
printk("Error: Load list is malformed!\n"); printk("Error: Load list is malformed!\n");
generic_panic(); generic_panic();
} else { } else {
/* Skip to the next entry. */ /* Skip to the next entry. */
for (; *p == ' ' || *p == '\t'; p++) { } for (; *p == ' ' || *p == '\t' || *p == '|'; p++) { }
entry = p; entry = p;
} }
} }
p++; p++;
if (*p == '\x00') {
/* We're at the end of the line, load the last entry */
load_list_entry(entry);
}
} }
} }