From 2408820115b1f7529c6909c6a2bc3d35525a5141 Mon Sep 17 00:00:00 2001 From: Mattia Dongili Date: Mon, 1 May 2006 12:16:01 -0700 Subject: [PATCH] --- yaml --- r: 26403 b: refs/heads/master c: cb98cdcd0dd892dcaec7dabd57c3b00890006b61 h: refs/heads/master i: 26401: c1fb8dcaa47c1cc82e3b2bdf88560a1bc5f80dff 26399: 5105c1feb0a36bf0ab1a79c104ff32024309f2bb v: v3 --- [refs] | 2 +- trunk/arch/um/os-Linux/main.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 7bdd71b974e9..26925dee32d6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b15fb6b157b83ce983e42130ab7d1a866020d8f5 +refs/heads/master: cb98cdcd0dd892dcaec7dabd57c3b00890006b61 diff --git a/trunk/arch/um/os-Linux/main.c b/trunk/arch/um/os-Linux/main.c index 2878e89a674f..3a0ac38e978b 100644 --- a/trunk/arch/um/os-Linux/main.c +++ b/trunk/arch/um/os-Linux/main.c @@ -74,6 +74,34 @@ static void last_ditch_exit(int sig) exit(1); } +#define UML_LIB_PATH ":/usr/lib/uml" + +static void setup_env_path(void) +{ + char *new_path = NULL; + char *old_path = NULL; + int path_len = 0; + + old_path = getenv("PATH"); + /* if no PATH variable is set or it has an empty value + * just use the default + /usr/lib/uml + */ + if (!old_path || (path_len = strlen(old_path)) == 0) { + putenv("PATH=:/bin:/usr/bin/" UML_LIB_PATH); + return; + } + + /* append /usr/lib/uml to the existing path */ + path_len += strlen("PATH=" UML_LIB_PATH) + 1; + new_path = malloc(path_len); + if (!new_path) { + perror("coudn't malloc to set a new PATH"); + return; + } + snprintf(new_path, path_len, "PATH=%s" UML_LIB_PATH, old_path); + putenv(new_path); +} + extern int uml_exitcode; extern void scan_elf_aux( char **envp); @@ -114,6 +142,8 @@ int main(int argc, char **argv, char **envp) set_stklim(); + setup_env_path(); + new_argv = malloc((argc + 1) * sizeof(char *)); if(new_argv == NULL){ perror("Mallocing argv");