From 4fc6b34d1c14cc61f553ca59264d0909656933f3 Mon Sep 17 00:00:00 2001 From: marha Date: Thu, 17 Jan 2013 09:22:05 +0100 Subject: fontconfig libxcb mesa xkbcomp git update 17 jan 2013 fontconfig: 671bcb34e23ed03b1f564af35560db81f8b12b96 libxcb: 0dd8f8d26a758bc385e79d9239bf6ef2e3d7bf13 mesa: 56c01d81094795286828ecb83713e043695e905a xkbcomp: ed1b90216e59e6b3ac6ac5fd2faca8e056c76caa --- fontconfig/src/fcdefault.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'fontconfig/src/fcdefault.c') diff --git a/fontconfig/src/fcdefault.c b/fontconfig/src/fcdefault.c index aa47840d1..b1bd9cc1f 100644 --- a/fontconfig/src/fcdefault.c +++ b/fontconfig/src/fcdefault.c @@ -23,6 +23,7 @@ */ #include "fcint.h" +#include #include /* MT-safe */ @@ -139,27 +140,38 @@ retry: prgname = FcStrdup (p); } +#elif defined (HAVE_GETPROGNAME) + const char *q = getprogname (); + if (q) + prgname = FcStrdup (q); + else + prgname = FcStrdup (""); #else - char buf[8192]; + char buf[PATH_MAX + 1]; unsigned int len; + char *p = NULL; len = readlink ("/proc/self/exe", buf, sizeof (buf) - 1); if (len > 0) { - char *p; + buf[len] = '\0'; + p = buf; + } - p = strrchr (buf, '/'); - if (p) - p++; + if (p) + { + char *r = strrchr (p, '/'); + if (r) + r++; else - p = buf; + r = p; - prgname = FcStrdup (p); + prgname = FcStrdup (r); } -#endif if (!prgname) prgname = FcStrdup (""); +#endif if (!fc_atomic_ptr_cmpexch (&default_prgname, NULL, prgname)) { free (prgname); -- cgit v1.2.3