struct file_info *fp;
int fd;
char *argv[] = { LDLINUX, NULL };
+ char *realname;
static const char *search_directories[] = {
"/boot/isolinux",
/*
* If we failed to load LDLINUX it could be because our
* current working directory isn't the install directory. Try
- * a bit harder to find LDLINUX. If search_config() succeeds
+ * a bit harder to find LDLINUX. If search_dirs() succeeds
* in finding LDLINUX it will set the cwd.
*/
fd = opendev(&__file_dev, NULL, O_RDONLY);
fp = &__file_info[fd];
- if (!search_config(&fp->i.fd, search_directories, filenames))
+ if (!search_dirs(&fp->i.fd, search_directories, filenames, realname))
start_ldlinux(argv);
}
NULL
};
- return search_config(filedata, search_directories, filenames);
+ return search_dirs(filedata, search_directories, filenames, ConfigName);
}
static int iso_fs_init(struct fs_info *fs)
dprintf("CurrentDirName: \"%s\"\n", CurrentDirName);
- return search_config(filedata, search_directories, filenames);
+ return search_dirs(filedata, search_directories, filenames, ConfigName);
}
char config_cwd[FILENAME_MAX];
/*
- * 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(struct com32_filedata *filedata,
- const char *search_directories[], const char *filenames[])
+int search_dirs(struct com32_filedata *filedata,
+ const char *search_directories[],
+ const char *filenames[],
+ char *realname)
{
- char confignamebuf[FILENAME_MAX];
+ char namebuf[FILENAME_MAX];
const char *sd, **sdp;
const char *sf, **sfp;
for (sdp = search_directories; (sd = *sdp); sdp++) {
for (sfp = filenames; (sf = *sfp); sfp++) {
- snprintf(confignamebuf, sizeof confignamebuf,
+ snprintf(namebuf, sizeof namebuf,
"%s%s%s",
sd, (*sd && sd[strlen(sd)-1] == '/') ? "" : "/",
sf);
- realpath(ConfigName, confignamebuf, FILENAME_MAX);
- dprintf("Config search: %s\n", ConfigName);
- if (open_file(ConfigName, filedata) >= 0) {
+ realpath(realname, namebuf, FILENAME_MAX);
+ dprintf("Directory search: %s\n", realname);
+ if (open_file(realname, filedata) >= 0) {
chdir(sd);
return 0; /* Got it */
}
void generic_mangle_name(char *, const char *);
/* loadconfig.c */
-int search_config(struct com32_filedata *filedata,
- const char *search_directores[], const char *filenames[]);
+int search_dirs(struct com32_filedata *filedata,
+ const char *search_directores[], const char *filenames[],
+ char *realname);
int generic_open_config(struct com32_filedata *filedata);
/* close.c */