Better fix for 2fe5ddfd
authorAkira TAGOH <akira@tagoh.org>
Thu, 17 Jan 2013 03:49:16 +0000 (12:49 +0900)
committerAkira TAGOH <akira@tagoh.org>
Thu, 17 Jan 2013 03:49:16 +0000 (12:49 +0900)
Drop realpath() and fix breakage on Win32

configure.ac
src/fcdefault.c

index 91875b1..e8ee559 100644 (file)
@@ -141,7 +141,7 @@ AC_TYPE_PID_T
 # Checks for library functions.
 AC_FUNC_VPRINTF
 AC_FUNC_MMAP
-AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s getopt getopt_long getprogname rand random lrand48 random_r rand_r realpath regcomp regerror regexec regfree fstatvfs fstatfs lstat])
+AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s getopt getopt_long getprogname rand random lrand48 random_r rand_r regcomp regerror regexec regfree fstatvfs fstatfs lstat])
 
 dnl AC_CHECK_FUNCS doesn't check for header files.
 dnl posix_fadvise() may be not available in older libc.
index 2d7c4f7..b1bd9cc 100644 (file)
@@ -140,23 +140,23 @@ retry:
 
            prgname = FcStrdup (p);
        }
+#elif defined (HAVE_GETPROGNAME)
+       const char *q = getprogname ();
+       if (q)
+           prgname = FcStrdup (q);
+       else
+           prgname = FcStrdup ("");
 #else
        char buf[PATH_MAX + 1];
        unsigned int len;
        char *p = NULL;
 
-#if defined (HAVE_GETPROGNAME) && defined (HAVE_REALPATH)
-       const char *q = getprogname ();
-       if (q)
-           p = realpath (q, buf);
-#else
        len = readlink ("/proc/self/exe", buf, sizeof (buf) - 1);
        if (len > 0)
        {
            buf[len] = '\0';
            p = buf;
        }
-#endif
 
        if (p)
        {
@@ -171,12 +171,12 @@ retry:
 
        if (!prgname)
            prgname = FcStrdup ("");
+#endif
 
        if (!fc_atomic_ptr_cmpexch (&default_prgname, NULL, prgname)) {
            free (prgname);
            goto retry;
        }
-#endif
     }
 
     if (prgname && !prgname[0])