aboutsummaryrefslogtreecommitdiffstats
path: root/com32/elflink/ldlinux/readconfig.c
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@linux.intel.com>2011-05-27 17:49:39 +0100
committerMatt Fleming <matt.fleming@linux.intel.com>2011-06-07 20:02:55 +0100
commit26c1f437deb4b1ebe1df75e3613f24da62b73ae1 (patch)
tree094b61686e88042cf6f1d0231b680039ff636e10 /com32/elflink/ldlinux/readconfig.c
parent79163251bab8079623d4ea9d55e275e7b8b4607c (diff)
downloadsyslinux-26c1f437deb4b1ebe1df75e3613f24da62b73ae1.tar.gz
syslinux-26c1f437deb4b1ebe1df75e3613f24da62b73ae1.tar.xz
syslinux-26c1f437deb4b1ebe1df75e3613f24da62b73ae1.zip
ldlinux: Parse "display" in config files
Teach ldlinux to parse the "display" directive. Signed-off-by: Matt Fleming <matt.fleming@linux.intel.com>
Diffstat (limited to 'com32/elflink/ldlinux/readconfig.c')
-rw-r--r--com32/elflink/ldlinux/readconfig.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/com32/elflink/ldlinux/readconfig.c b/com32/elflink/ldlinux/readconfig.c
index f0e45e97..906cbe05 100644
--- a/com32/elflink/ldlinux/readconfig.c
+++ b/com32/elflink/ldlinux/readconfig.c
@@ -30,6 +30,7 @@
#include "config.h"
#include "getkey.h"
#include "core.h"
+#include "fs.h"
const struct menu_parameter mparm[NPARAMS] = {
[P_WIDTH] = {"width", 0},
@@ -725,6 +726,8 @@ static inline void io_delay(void)
outb(0, 0x80);
}
+extern void get_msg_file(void);
+
extern char syslinux_banner[];
extern char copyright_str[];
@@ -1112,7 +1115,25 @@ do_include:
* display/font/kbdmap are rather similar, open a file then do sth
*/
else if (looking_at(p, "display")) {
+ com32sys_t reg;
+ char *filename, *dst = KernelName;
+ size_t len = FILENAME_MAX - 1;
+
+ filename = refstrdup(skipspace(p + 7));
+
+ while (len-- && not_whitespace(*filename))
+ *dst++ = *filename++;
+ *dst = '\0';
+
+ memset(&reg, 0, sizeof(reg));
+ reg.edi.w[0] = OFFS_WRT(KernelName, 0);
+ call16(core_open, &reg, &reg);
+ if (!(reg.eflags.l & EFLAGS_ZF))
+ call16(get_msg_file, &reg, NULL);
+ else
+ printf("File not found\n");
+ refstr_put(filename);
} else if (looking_at(p, "font")) {
} else if (looking_at(p, "kbdmap")) {