82 lines
2.6 KiB
Diff
82 lines
2.6 KiB
Diff
--- Python-2.4.1/pyconfig.h.in.canonicalize 2005-09-14 11:47:04.000000000 -0400
|
|
+++ Python-2.4.1/pyconfig.h.in 2005-09-14 11:47:02.000000000 -0400
|
|
@@ -58,6 +58,9 @@
|
|
/* Define if pthread_sigmask() does not work on your system. */
|
|
#undef HAVE_BROKEN_PTHREAD_SIGMASK
|
|
|
|
+/* Define to 1 if you have the `canonicalize_file_name' function. */
|
|
+#undef HAVE_CANONICALIZE_FILE_NAME
|
|
+
|
|
/* Define to 1 if you have the `chown' function. */
|
|
#undef HAVE_CHOWN
|
|
|
|
--- Python-2.4.1/Python/sysmodule.c.canonicalize 2005-09-14 11:53:30.000000000 -0400
|
|
+++ Python-2.4.1/Python/sysmodule.c 2005-09-14 11:53:30.000000000 -0400
|
|
@@ -1168,11 +1168,13 @@
|
|
void
|
|
PySys_SetArgv(int argc, char **argv)
|
|
{
|
|
+#ifndef HAVE_CANONICALIZE_FILE_NAME
|
|
#if defined(HAVE_REALPATH)
|
|
char fullpath[MAXPATHLEN];
|
|
#elif defined(MS_WINDOWS)
|
|
char fullpath[MAX_PATH];
|
|
#endif
|
|
+#endif
|
|
PyObject *av = makeargvobject(argc, argv);
|
|
PyObject *path = PySys_GetObject("path");
|
|
if (av == NULL)
|
|
@@ -1180,6 +1182,25 @@
|
|
if (PySys_SetObject("argv", av) != 0)
|
|
Py_FatalError("can't assign sys.argv");
|
|
if (path != NULL) {
|
|
+#ifdef HAVE_CANONICALIZE_FILE_NAME
|
|
+ char *argv0;
|
|
+ int n = 0;
|
|
+ int errnum;
|
|
+ PyObject *a;
|
|
+
|
|
+ argv0 = canonicalize_file_name(argv[0]);
|
|
+ errnum = errno;
|
|
+ if (argv0 == NULL) {
|
|
+ if (errno == ENOENT)
|
|
+ /* strdup because we're going to free() it
|
|
+ later no matter what */
|
|
+ argv0 = strdup(argv[0]);
|
|
+ else
|
|
+ Py_FatalError(strerror(errnum));
|
|
+ if (!argv0)
|
|
+ Py_FatalError("no mem for sys.argv");
|
|
+ }
|
|
+#else /* ! HAVE_CANONICALIZE_FILE_NAME */
|
|
char *argv0 = argv[0];
|
|
char *p = NULL;
|
|
int n = 0;
|
|
@@ -1256,9 +1277,13 @@
|
|
#endif /* Unix */
|
|
}
|
|
#endif /* All others */
|
|
+#endif /* ! HAVE_CANONICALIZE_FILE_NAME */
|
|
a = PyString_FromStringAndSize(argv0, n);
|
|
if (a == NULL)
|
|
Py_FatalError("no mem for sys.path insertion");
|
|
+#ifdef HAVE_CANONICALIZE_FILE_NAME
|
|
+ free(argv0);
|
|
+#endif /* HAVE_CANONICALIZE_FILE_NAME */
|
|
if (PyList_Insert(path, 0, a) < 0)
|
|
Py_FatalError("sys.path.insert(0) failed");
|
|
Py_DECREF(a);
|
|
--- Python-2.4.1/configure.in.canonicalize 2005-09-14 11:46:00.000000000 -0400
|
|
+++ Python-2.4.1/configure.in 2005-09-14 11:47:22.000000000 -0400
|
|
@@ -2096,8 +2096,8 @@
|
|
AC_MSG_RESULT(MACHDEP_OBJS)
|
|
|
|
# checks for library functions
|
|
-AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
|
|
- execv fork fpathconf ftime ftruncate \
|
|
+AC_CHECK_FUNCS(alarm bind_textdomain_codeset canonicalize_file_name chown \
|
|
+ clock confstr ctermid execv fork fpathconf ftime ftruncate \
|
|
gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
|
|
getpriority getpwent getsid getwd \
|
|
kill killpg lchown lstat mkfifo mknod mktime \
|