summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--session.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/session.c b/session.c
index 5040d3b..01800ee 100644
--- a/session.c
+++ b/session.c
@@ -791,7 +791,7 @@ StartClient (
verify->userEnviron = setEnv(verify->userEnviron, "HOME", "/");
}
if (verify->argv) {
- Debug ("executing session %s\n", verify->argv[0]);
+ LogInfo ("executing session %s\n", verify->argv[0]);
execute (verify->argv, verify->userEnviron);
LogError ("Session \"%s\" execution failed (err %d)\n", verify->argv[0], errno);
} else {
@@ -821,21 +821,28 @@ int
source (char **environ, char *file)
{
char **args, *args_safe[2];
- int ret;
+ int ret = 0;
+ FILE *f;
if (file && file[0]) {
- Debug ("source %s\n", file);
- args = parseArgs ((char **) 0, file);
- if (!args) {
- args = args_safe;
- args[0] = file;
- args[1] = NULL;
+ f = fopen (file, "r");
+ if (!f)
+ LogInfo ("not sourcing %s (%s)\n", file, _SysErrorMsg (errno));
+ else {
+ fclose (f);
+ LogInfo ("sourcing %s\n", file);
+ args = parseArgs ((char **) 0, file);
+ if (!args) {
+ args = args_safe;
+ args[0] = file;
+ args[1] = NULL;
+ }
+ ret = runAndWait (args, environ);
+ freeArgs (args);
}
- ret = runAndWait (args, environ);
- freeArgs (args);
- return ret;
- }
- return 0;
+ } else
+ Debug ("source() given null pointer in file argument\n");
+ return ret;
}
static int