core: split loadconfig.c into two files
authorH. Peter Anvin <hpa@linux.intel.com>
Fri, 2 Jul 2010 23:19:59 +0000 (16:19 -0700)
committerH. Peter Anvin <hpa@linux.intel.com>
Fri, 2 Jul 2010 23:19:59 +0000 (16:19 -0700)
Split loadconfig.c into two files.  In particular, isolinux needs
search_config() but not generic_load_config().

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
core/fs/lib/loadconfig.c
core/fs/lib/searchconfig.c [new file with mode: 0644]

index c2fd972..c9652b6 100644 (file)
@@ -4,34 +4,6 @@
 #include <core.h>
 #include <fs.h>
 
-int search_config(const char *search_directories[], const char *filenames[])
-{
-    char confignamebuf[FILENAME_MAX];
-    com32sys_t regs;
-    const char *sd, **sdp;
-    const char *sf, **sfp;
-
-    for (sdp = search_directories; (sd = *sdp); sdp++) {
-       for (sfp = filenames; (sf = *sfp); sfp++) {
-           memset(&regs, 0, sizeof regs);
-           snprintf(confignamebuf, sizeof confignamebuf,
-                    "%s%s%s",
-                    sd, (*sd && sd[strlen(sd)-1] == '/') ? "" : "/",
-                    sf);
-           realpath(ConfigName, confignamebuf, FILENAME_MAX);
-           regs.edi.w[0] = OFFS_WRT(ConfigName, 0);
-           dprintf("Config search: %s\n", ConfigName);
-           call16(core_open, &regs, &regs);
-           if (!(regs.eflags.l & EFLAGS_ZF)) {
-               chdir(sd);
-               return 0;       /* Got it */
-           }
-       }
-    }
-
-    return -1;
-}
-
 /*
  * Standard version of load_config for extlinux/syslinux filesystems.
  *
@@ -43,7 +15,7 @@ int generic_load_config(void)
 {
     static const char *search_directories[] = {
        NULL,                   /* CurrentDirName */
-       "/boot/syslinux", 
+       "/boot/syslinux",
        "/syslinux",
        "/",
        NULL
diff --git a/core/fs/lib/searchconfig.c b/core/fs/lib/searchconfig.c
new file mode 100644 (file)
index 0000000..24bfde3
--- /dev/null
@@ -0,0 +1,40 @@
+#include <dprintf.h>
+#include <stdio.h>
+#include <string.h>
+#include <core.h>
+#include <fs.h>
+
+/*
+ * Common implementation of load_config
+ *
+ * This searches for a specified set of filenames in a specified set
+ * of directories.  If found, set the current working directory to
+ * match.
+ */
+int search_config(const char *search_directories[], const char *filenames[])
+{
+    char confignamebuf[FILENAME_MAX];
+    com32sys_t regs;
+    const char *sd, **sdp;
+    const char *sf, **sfp;
+
+    for (sdp = search_directories; (sd = *sdp); sdp++) {
+       for (sfp = filenames; (sf = *sfp); sfp++) {
+           memset(&regs, 0, sizeof regs);
+           snprintf(confignamebuf, sizeof confignamebuf,
+                    "%s%s%s",
+                    sd, (*sd && sd[strlen(sd)-1] == '/') ? "" : "/",
+                    sf);
+           realpath(ConfigName, confignamebuf, FILENAME_MAX);
+           regs.edi.w[0] = OFFS_WRT(ConfigName, 0);
+           dprintf("Config search: %s\n", ConfigName);
+           call16(core_open, &regs, &regs);
+           if (!(regs.eflags.l & EFLAGS_ZF)) {
+               chdir(sd);
+               return 0;       /* Got it */
+           }
+       }
+    }
+
+    return -1;
+}