fix bug #114290: when interpreter's argv[0] has a relative path make
it absolute by joining it with getcwd result. avoid including unnecessary ./ in path but do not test for ../ (more complicated)
This commit is contained in:
parent
38bfc4d0d5
commit
7198ba986d
|
@ -219,6 +219,23 @@ joinpath(char *buffer, char *stuff)
|
||||||
buffer[n+k] = '\0';
|
buffer[n+k] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
init_path_from_argv0(char *path, char *argv0_path)
|
||||||
|
{
|
||||||
|
if (argv0_path[0] == '/')
|
||||||
|
strcpy(path, argv0_path);
|
||||||
|
else if (argv0_path[0] == '.') {
|
||||||
|
getcwd(path, MAXPATHLEN);
|
||||||
|
if (argv0_path[1] == '/')
|
||||||
|
joinpath(path, argv0_path + 2);
|
||||||
|
else
|
||||||
|
joinpath(path, argv0_path);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
getcwd(path, MAXPATHLEN);
|
||||||
|
joinpath(path, argv0_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
search_for_prefix(char *argv0_path, char *home)
|
search_for_prefix(char *argv0_path, char *home)
|
||||||
|
@ -264,7 +281,7 @@ search_for_prefix(char *argv0_path, char *home)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Search from argv0_path, until root is found */
|
/* Search from argv0_path, until root is found */
|
||||||
strcpy(prefix, argv0_path);
|
init_path_from_argv0(prefix, argv0_path);
|
||||||
do {
|
do {
|
||||||
n = strlen(prefix);
|
n = strlen(prefix);
|
||||||
joinpath(prefix, lib_python);
|
joinpath(prefix, lib_python);
|
||||||
|
@ -314,7 +331,7 @@ search_for_exec_prefix(char *argv0_path, char *home)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Search from argv0_path, until root is found */
|
/* Search from argv0_path, until root is found */
|
||||||
strcpy(exec_prefix, argv0_path);
|
init_path_from_argv0(exec_prefix, argv0_path);
|
||||||
do {
|
do {
|
||||||
n = strlen(exec_prefix);
|
n = strlen(exec_prefix);
|
||||||
joinpath(exec_prefix, lib_python);
|
joinpath(exec_prefix, lib_python);
|
||||||
|
|
Loading…
Reference in New Issue