[syslinux] [RESEND][PATCH] ldlinux: CurrentDir not set if syslinux.cfg is missing

Sebastian Herbszt herbszt at gmx.de
Wed Jul 9 12:02:39 PDT 2008


> If a syslinux floppy does not contain a config file (syslinux.cfg) modules are
> not being found unless specified with a directory prefix (e.g. /pcitest.c32).
> The reason is that CurrentDir is only set if there is a config file present. This is a
> possible regression since commit 68eefb79e2cbb590ebf958dd0c50ce00b941abd2.
> Before this change RootDir was used in searchdir and now it's CurrentDir unless
> the filename starts with '/'. Possible fix is to set CurrentDir to RootDir if no config
> file is found.

Actually it seems better to move this to the top of the "check for config file" block.
Initialize CurrentDir to RootDir and change it if a config file is found.

- Sebastian

--- core/ldlinux.asm.orig	2008-06-17 19:25:35.000000000 +0200
+++ core/ldlinux.asm	2008-06-18 12:10:45.000000000 +0200
@@ -901,6 +901,8 @@
 		mov di,ConfigName
 		call strcpy
 
+		mov eax,[RootDir]	; Make the root directory ...
+		mov [CurrentDir],eax	; ... the current directory
 		mov di,syslinux_cfg1
 		call open
 		jnz .config_open




More information about the Syslinux mailing list