ldlinux: Parse configuration files
authorMatt Fleming <matt.fleming@linux.intel.com>
Tue, 8 Mar 2011 19:25:37 +0000 (19:25 +0000)
committerMatt Fleming <matt.fleming@linux.intel.com>
Wed, 9 Mar 2011 14:32:36 +0000 (14:32 +0000)
Use the configuration file parser provided by ldlinux to search for
and parse any configuration files. If a kernel or ui module is found
in the configuration file, it is executed once parsing completes.

Parsing and loading kernels is now entirely done in C!

The parser also builds the data structures for later use by the menu
system. Previously, after the asm config parser had parsed the config
file and found a kernel image to boot (or dropped the user at a
command prompt), the menu.c32 module had to open the config file and
re-parse it. Now, we only need to parse the file once.

Signed-off-by: Matt Fleming <matt.fleming@linux.intel.com>
com32/elflink/ldlinux/ldlinux.c
core/isolinux.asm

index b348490..b94010e 100644 (file)
@@ -26,10 +26,45 @@ static void enter_cmdline(void)
        }
 }
 
+static void load_kernel(void)
+{
+       enum kernel_type type;
+
+       if (defaultlevel == LEVEL_UI)
+               type = KT_COM32;
+       else
+               type = KT_KERNEL;
+
+       execute(default_cmd, type);
+}
+
 static int ldlinux_main(int argc, char **argv)
 {
        openconsole(&dev_rawcon_r, &dev_ansiserial_w);
 
+       parse_configs(NULL);
+
+       /* TODO: ADV */
+       /* TODO: Check KbdFlags? */
+
+       if (forceprompt)
+               goto cmdline;
+
+       /*
+        * Auto boot
+        */
+       if (defaultlevel || !noescape) {
+               if (defaultlevel) {
+                       load_kernel();  /* Shouldn't return */
+               } else {
+                       printf("No DEFAULT or UI configuration directive found!\n");
+
+                       if (noescape)
+                               kaboom();
+               }
+       }
+
+cmdline:
        /* Should never return */
        enter_cmdline();
 
index ba1d156..8995ce8 100644 (file)
@@ -1185,12 +1185,6 @@ ROOT_FS_OPS:
                section .text16
 
 ;
-; Locate the configuration file
-;
-               ;pm_call pm_load_config
-               ;jz no_config_file
-
-;
 ; Now we have the config file open.  Parse the config file and
 ; run the user interface.
 ;