search_directories[0] = CurrentDirName;
+ dprintf("CurrentDirName: \"%s\"\n", CurrentDirName);
+
for (i = *CurrentDirName ? 0 : 1; search_directories[i]; i++) {
+ const char *sd = search_directories[i];
for (j = 0; filenames[j]; j++) {
memset(®s, 0, sizeof regs);
- snprintf(ConfigName, FILENAME_MAX, "%s/%s",
- search_directories[i], filenames[j]);
+ snprintf(ConfigName, FILENAME_MAX, "%s%s%s",
+ sd, (*sd && sd[strlen(sd)-1] == '/') ? "" : "/",
+ filenames[j]);
regs.edi.w[0] = OFFS_WRT(ConfigName, 0);
dprintf("Config search: %s\n", ConfigName);
call16(core_open, ®s, ®s);
char mntname[128];
char *ldlinux_name;
char *ldlinux_path;
- const char *subdir;
+ char *subdir;
uint32_t *sectors = NULL;
int ldlinux_sectors = (boot_image_len + SECTOR_SIZE - 1) >> SECTOR_SHIFT;
const char *errmsg;
umask(077);
parse_options(argc, argv, MODE_SYSLINUX);
- subdir = opt.directory;
+ asprintf(&subdir, "%s%s",
+ opt.directory[0] == '/' ? "" : "/", opt.directory);
+ if (!subdir) {
+ perror(program);
+ exit(1);
+ }
if (!opt.device)
usage(EX_USAGE, MODE_SYSLINUX);