aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2012-11-29 09:34:18 +0000
committerMatt Fleming <matt.fleming@intel.com>2012-11-29 13:28:47 +0000
commit0174945b6b604425e8f576c0af0908ce00cdc493 (patch)
treeea0b2b8958fb687dd8c20f423606f32101080321
parent771aea5ed2eb791717eea939089f8246a47d8634 (diff)
downloadsyslinux-0174945b6b604425e8f576c0af0908ce00cdc493.tar.gz
syslinux-0174945b6b604425e8f576c0af0908ce00cdc493.tar.xz
syslinux-0174945b6b604425e8f576c0af0908ce00cdc493.zip
ldlinux: Complain to user on failure to perform file operations
If we fail to chdir or to execute a COM32 file we should inform the user so that they can debug the problem. We don't currently print anything if the user tries to execute a regular file, such as a config file, as an COM32 image. We also shouldn't be returning the exit value of the module from spawn_load(), because we have no way of doing anything useful with it, and just because a main() function returns -1 doesn't mean it failed to run. Modules need to take care of printing any error messages themselves. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
-rw-r--r--com32/elflink/ldlinux/execute.c3
-rw-r--r--com32/elflink/ldlinux/readconfig.c3
-rw-r--r--com32/lib/sys/module/exec.c2
3 files changed, 4 insertions, 4 deletions
diff --git a/com32/elflink/ldlinux/execute.c b/com32/elflink/ldlinux/execute.c
index 10399230..2f0e037e 100644
--- a/com32/elflink/ldlinux/execute.c
+++ b/com32/elflink/ldlinux/execute.c
@@ -109,7 +109,8 @@ void execute(const char *cmdline, uint32_t type)
ldlinux_console_init();
/* new entry for elf format c32 */
- create_args_and_load((char *)cmdline);
+ if (create_args_and_load((char *)cmdline))
+ printf("Failed to load COM32 file %s\n", kernel);
/*
* The old COM32 module code would run the module then
diff --git a/com32/elflink/ldlinux/readconfig.c b/com32/elflink/ldlinux/readconfig.c
index 2fa0641e..cc57dd8e 100644
--- a/com32/elflink/ldlinux/readconfig.c
+++ b/com32/elflink/ldlinux/readconfig.c
@@ -1368,7 +1368,8 @@ static int parse_one_config(const char *filename)
parse_config_file(f);
if (config_cwd[0]) {
- chdir(config_cwd);
+ if (chdir(config_cwd) < 0)
+ printf("Failed to chdir to %s\n", config_cwd);
config_cwd[0] = '\0';
}
diff --git a/com32/lib/sys/module/exec.c b/com32/lib/sys/module/exec.c
index 9ccab36e..559bafc7 100644
--- a/com32/lib/sys/module/exec.c
+++ b/com32/lib/sys/module/exec.c
@@ -261,8 +261,6 @@ int spawn_load(const char *name, int argc, char **argv)
if (res != 0)
goto out;
-
- return ((unsigned int)ret_val & 0xFF);
}
out: