diff --git a/python-2.4.1-canonicalize.patch b/python-2.4.1-canonicalize.patch index facaa2d..bdc631e 100644 --- a/python-2.4.1-canonicalize.patch +++ b/python-2.4.1-canonicalize.patch @@ -1,5 +1,17 @@ +--- Python-2.4.1/pyconfig.h.in.canonicalize 2004-10-13 11:30:55.000000000 -0400 ++++ Python-2.4.1/pyconfig.h.in 2005-09-25 16:30:43.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-01-27 13:58:30.000000000 -0500 -+++ Python-2.4.1/Python/sysmodule.c 2005-09-23 17:18:33.000000000 -0400 ++++ Python-2.4.1/Python/sysmodule.c 2005-09-25 16:38:47.000000000 -0400 @@ -1168,11 +1168,13 @@ void PySys_SetArgv(int argc, char **argv) @@ -14,39 +26,41 @@ PyObject *av = makeargvobject(argc, argv); PyObject *path = PySys_GetObject("path"); if (av == NULL) -@@ -1184,6 +1186,31 @@ +@@ -1184,6 +1186,33 @@ char *p = NULL; int n = 0; PyObject *a; +#ifdef HAVE_CANONICALIZE_FILE_NAME + int errnum; + -+ if (argv[0][0] == '\0') -+ /* python started with no arguments -+ copy the empty string and move on */ -+ argv0 = strdup(argv[0]); -+ else { -+ argv0 = canonicalize_file_name(argv[0]); -+ errnum = errno; -+ if (argv0 == NULL) { -+ if (errnum != ENOENT) -+ Py_FatalError(strerror(errnum)); ++ if (argc > 0 && argv0 != NULL) { ++ if (argv[0][0] == '\0') ++ /* python started with no arguments ++ copy the empty string and move on */ ++ argv0 = strdup(argv[0]); ++ else { ++ argv0 = canonicalize_file_name(argv[0]); ++ errnum = errno; ++ if (argv0 == NULL) { ++ if (errnum != ENOENT) ++ Py_FatalError(strerror(errnum)); + -+ /* errnum == ENOENT; the input file name is empty, or -+ * at least one of the path components does not exist -+ * */ -+ /* strdup because we're going to free() it -+ later no matter what */ -+ argv0 = strdup(argv[0]); -+ if (argv0 == NULL) -+ Py_FatalError("no mem for sys.argv"); -+ } -+ } ++ /* errno == ENOENT; the input file name is ++ empty, or at least one of the path ++ components does not exist */ ++ /* strdup because we're going to free() it ++ later no matter what */ ++ argv0 = strdup(argv[0]); ++ } ++ } ++ if (argv0 == NULL) ++ Py_FatalError("no mem for sys.argv"); ++ } +#else /* ! HAVE_CANONICALIZE_FILE_NAME */ #ifdef HAVE_READLINK char link[MAXPATHLEN+1]; char argv0copy[2*MAXPATHLEN+1]; -@@ -1256,9 +1283,13 @@ +@@ -1256,9 +1285,14 @@ #endif /* Unix */ } #endif /* All others */ @@ -55,13 +69,14 @@ if (a == NULL) Py_FatalError("no mem for sys.path insertion"); +#ifdef HAVE_CANONICALIZE_FILE_NAME -+ free(argv0); ++ if (argv0) ++ 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-03-28 18:23:34.000000000 -0500 -+++ Python-2.4.1/configure.in 2005-09-23 17:19:14.000000000 -0400 ++++ Python-2.4.1/configure.in 2005-09-25 16:30:43.000000000 -0400 @@ -2096,8 +2096,8 @@ AC_MSG_RESULT(MACHDEP_OBJS) @@ -73,15 +88,3 @@ gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \ getpriority getpwent getsid getwd \ kill killpg lchown lstat mkfifo mknod mktime \ ---- Python-2.4.1/pyconfig.h.in.canonicalize 2004-10-13 11:30:55.000000000 -0400 -+++ Python-2.4.1/pyconfig.h.in 2005-09-23 17:19:14.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 -