aboutsummaryrefslogtreecommitdiffstats
path: root/com32/elflink/ldlinux/ldlinux.c
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@linux.intel.com>2011-03-09 14:20:19 +0000
committerMatt Fleming <matt.fleming@linux.intel.com>2011-03-09 14:32:36 +0000
commit9ded45991b4fc83b40af963feb773ddca2589d74 (patch)
treed538d93d7b9040a0582c7382bf45dbf84e415fcd /com32/elflink/ldlinux/ldlinux.c
parent5c907b4f4fbbe9ee565aa4fdfec6ae9be6d28580 (diff)
downloadsyslinux-9ded45991b4fc83b40af963feb773ddca2589d74.tar.gz
syslinux-9ded45991b4fc83b40af963feb773ddca2589d74.tar.xz
syslinux-9ded45991b4fc83b40af963feb773ddca2589d74.zip
ldlinux: Parse and store the "onerror" command line
If we fail to load a kernel and the parser found an "onerror" directive, execute the onerror command line. Signed-off-by: Matt Fleming <matt.fleming@linux.intel.com>
Diffstat (limited to 'com32/elflink/ldlinux/ldlinux.c')
-rw-r--r--com32/elflink/ldlinux/ldlinux.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/com32/elflink/ldlinux/ldlinux.c b/com32/elflink/ldlinux/ldlinux.c
index b94010e3..b5a44093 100644
--- a/com32/elflink/ldlinux/ldlinux.c
+++ b/com32/elflink/ldlinux/ldlinux.c
@@ -29,6 +29,7 @@ static void enter_cmdline(void)
static void load_kernel(void)
{
enum kernel_type type;
+ const char *cmdline;
if (defaultlevel == LEVEL_UI)
type = KT_COM32;
@@ -36,6 +37,15 @@ static void load_kernel(void)
type = KT_KERNEL;
execute(default_cmd, type);
+
+ /*
+ * If we fail to boot the kernel execute the "onerror" command
+ * line.
+ */
+ if (onerrorlen) {
+ rsprintf(&cmdline, "%s %s", onerror, default_cmd);
+ execute(cmdline, KT_COM32);
+ }
}
static int ldlinux_main(int argc, char **argv)