We have some news to share for the request index beta feature. We’ve added more options to sort your requests, counters to the individual filters and documentation for the search functionality. Checkout the blog post for more details.

File python-2.7.4-canonicalize2.patch of Package python.42333

---
 Python/sysmodule.c |   26 +++++++++++++++++++-------
 configure.ac       |    2 +-
 pyconfig.h.in      |    3 +++
 3 files changed, 23 insertions(+), 8 deletions(-)

--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -1638,7 +1638,20 @@ PySys_SetArgvEx(int argc, char **argv, i
         char *p = NULL;
         Py_ssize_t n = 0;
         PyObject *a;
-#ifdef HAVE_READLINK
+#ifdef HAVE_CANONICALIZE_FILE_NAME
+        int errnum;
+
+        if (argc > 0 && argv0 != NULL && strcmp(argv0, "-c") != 0) {
+            argv0 = canonicalize_file_name(argv0);
+            if (argv0 == NULL) argv0 = strdup(argv[0]);
+        }
+#elif defined(HAVE_REALPATH)
+        if (argc > 0 && argv0 != NULL && strcmp(argv0, "-c") != 0) {
+            if (realpath(argv0, fullpath)) {
+                argv0 = fullpath;
+            }
+        }
+#elif defined(HAVE_READLINK)
         char link[MAXPATHLEN+1];
         char argv0copy[2*MAXPATHLEN+1];
         int nr = 0;
@@ -1665,7 +1678,8 @@ PySys_SetArgvEx(int argc, char **argv, i
                 }
             }
         }
-#endif /* HAVE_READLINK */
+#endif /* resolve method selection */
+
 #if SEP == '\\' /* Special case for MS filename syntax */
         if (argc > 0 && argv0 != NULL && strcmp(argv0, "-c") != 0) {
             char *q;
@@ -1694,11 +1708,6 @@ PySys_SetArgvEx(int argc, char **argv, i
         }
 #else /* All other filename syntaxes */
         if (argc > 0 && argv0 != NULL && strcmp(argv0, "-c") != 0) {
-#if defined(HAVE_REALPATH)
-            if (realpath(argv0, fullpath)) {
-                argv0 = fullpath;
-            }
-#endif
             p = strrchr(argv0, SEP);
         }
         if (p != NULL) {
@@ -1716,6 +1725,9 @@ PySys_SetArgvEx(int argc, char **argv, i
         a = PyString_FromStringAndSize(argv0, n);
         if (a == NULL)
             Py_FatalError("no mem for sys.path insertion");
+#ifdef HAVE_CANONICALIZE_FILE_NAME
+        if (argc > 0 && argv0 != NULL && strcmp(argv0, "-c") != 0) free(argv0);
+#endif /* HAVE_CANONICALIZE_FILE_NAME */
         if (PyList_Insert(path, 0, a) < 0)
             Py_FatalError("sys.path.insert(0) failed");
         Py_DECREF(a);
--- a/configure.ac
+++ b/configure.ac
@@ -3165,7 +3165,7 @@ AC_CHECK_FUNCS(alarm setitimer getitimer
  getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
  initgroups kill killpg lchown lstat mkfifo mknod mktime mmap \
  mremap nice pathconf pause plock poll pthread_init \
- putenv readlink realpath \
+ putenv readlink realpath canonicalize_file_name \
  select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
  setgid \
  setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -109,6 +109,9 @@
 /* Define to 1 if you have the 'chflags' function. */
 #undef HAVE_CHFLAGS
 
+/* 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
 
openSUSE Build Service is sponsored by