diff options
author | Andre Ericson <de.ericson@gmail.com> | 2012-05-28 06:54:15 -0300 |
---|---|---|
committer | Matt Fleming <matt.fleming@intel.com> | 2012-06-08 08:10:22 +0100 |
commit | 6bf3351711fe6c3f5731e519c2fbb298c6bcf2b4 (patch) | |
tree | 115642c96c3df39e1a97e90d202634eabe1fa825 /com32/lib/sys/module/common.c | |
parent | e7bd19def830e8341b1a100956345f1028740b9e (diff) | |
download | syslinux-6bf3351711fe6c3f5731e519c2fbb298c6bcf2b4.tar.gz syslinux-6bf3351711fe6c3f5731e519c2fbb298c6bcf2b4.tar.xz syslinux-6bf3351711fe6c3f5731e519c2fbb298c6bcf2b4.zip |
ldlinux: fixes bug that happens when using fullpath for a COM32 module
When using full path for a com32 module, for example,
/boot/syslinux/ls.c32 it fails without any error message. This patch
fixes it by looking first if the argv[0] is the path to a module before
looking for it at PATH.
Since we're using fopen to open module files (which works for both
absolute paths and paths relative to the current working directory) we
no longer need to include "." in PATH and neither the code to handle it.
Signed-off-by: Andre Ericson <de.ericson@gmail.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Diffstat (limited to 'com32/lib/sys/module/common.c')
-rw-r--r-- | com32/lib/sys/module/common.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/com32/lib/sys/module/common.c b/com32/lib/sys/module/common.c index eeb26075..19742e65 100644 --- a/com32/lib/sys/module/common.c +++ b/com32/lib/sys/module/common.c @@ -64,6 +64,10 @@ static FILE *findpath(char *name) char *p, *n; int i; + f = fopen(name, "rb"); /* for full path */ + if (f) + return f; + p = PATH; again: i = 0; @@ -74,15 +78,6 @@ again: if (*p == ':') p++; - if (path[0] == '.' && i == 1) { - if (!core_getcwd(path, sizeof(path))) { - DBG_PRINT("Could not get cwd\n"); - return NULL; - } - - i = strlen(path); - } - n = name; while (*n && i < FILENAME_MAX) path[i++] = *n++; |