From 162e38c6a312aa3e9c353419301087a4620c513c Mon Sep 17 00:00:00 2001 From: Guido van Rossum <guido@python.org> Date: Wed, 19 Feb 2003 15:25:10 +0000 Subject: [PATCH] - sys.path[0] (the directory from which the script is loaded) is now turned into an absolute pathname, unless it is the empty string. (SF patch #664376, by Skip Montanaro.) --- Misc/NEWS | 4 ++++ Python/sysmodule.c | 12 ++++++++++-- configure | 5 +++-- configure.in | 2 +- pyconfig.h.in | 3 +++ 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index 8671650bc5..7198541a2a 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,10 @@ What's New in Python 2.3 alpha 2? Core and builtins ----------------- +- sys.path[0] (the directory from which the script is loaded) is now + turned into an absolute pathname, unless it is the empty string. + (SF patch #664376.) + - Finally fixed the bug in compile() and exec where a string ending with an indented code block but no newline would raise SyntaxError. This would have been a four-line change in parsetok.c... Except diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 765621ecdb..1f51f988f9 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -993,7 +993,9 @@ makeargvobject(int argc, char **argv) void PySys_SetArgv(int argc, char **argv) { -#ifdef MS_WINDOWS +#if defined(HAVE_REALPATH) + char fullpath[MAXPATHLEN]; +#elif defined(MS_WINDOWS) char fullpath[MAX_PATH]; #endif PyObject *av = makeargvobject(argc, argv); @@ -1059,8 +1061,14 @@ PySys_SetArgv(int argc, char **argv) } } #else /* All other filename syntaxes */ - if (argc > 0 && argv0 != NULL) + if (argc > 0 && argv0 != NULL) { +#if defined(HAVE_REALPATH) + if (realpath(argv0, fullpath)) { + argv0 = fullpath; + } +#endif p = strrchr(argv0, SEP); + } if (p != NULL) { #ifndef RISCOS n = p + 1 - argv0; diff --git a/configure b/configure index e0837f7a7a..1dfc8bc175 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 1.387 . +# From configure.in Revision: 1.389 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.53 for python 2.3. # @@ -12093,6 +12093,7 @@ echo "${ECHO_T}MACHDEP_OBJS" >&6 + for ac_func in alarm chown clock confstr ctermid execv \ @@ -12101,7 +12102,7 @@ for ac_func in alarm chown clock confstr ctermid execv \ getpriority getpwent getwd \ hstrerror inet_aton inet_pton kill killpg lchown lstat mkfifo mknod mktime \ mremap nice pathconf pause plock poll pthread_init \ - putenv readlink \ + putenv readlink realpath \ select setegid seteuid setgid \ setlocale setregid setreuid setsid setpgid setuid setvbuf snprintf \ sigaction siginterrupt sigrelse strftime strptime \ diff --git a/configure.in b/configure.in index 8fce1cd9be..0b893a5c36 100644 --- a/configure.in +++ b/configure.in @@ -1843,7 +1843,7 @@ AC_CHECK_FUNCS(alarm chown clock confstr ctermid execv \ getpriority getpwent getwd \ hstrerror inet_aton inet_pton kill killpg lchown lstat mkfifo mknod mktime \ mremap nice pathconf pause plock poll pthread_init \ - putenv readlink \ + putenv readlink realpath \ select setegid seteuid setgid \ setlocale setregid setreuid setsid setpgid setuid setvbuf snprintf \ sigaction siginterrupt sigrelse strftime strptime \ diff --git a/pyconfig.h.in b/pyconfig.h.in index c1697975bf..e2dd4d28ec 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -342,6 +342,9 @@ /* Define to 1 if you have the `readlink' function. */ #undef HAVE_READLINK +/* Define to 1 if you have the `realpath' function. */ +#undef HAVE_REALPATH + /* Define if you have readline 2.2 */ #undef HAVE_RL_COMPLETION_APPEND_CHARACTER -- 2.49.0