summaryrefslogtreecommitdiff
path: root/src/fcdefault.c
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2013-01-16 21:01:28 -0600
committerBehdad Esfahbod <behdad@behdad.org>2013-01-16 21:01:28 -0600
commit2fe5ddfdae6be80db5b7e622ab6c1ab985377542 (patch)
tree4ba8c2b4894d980269b19b803544512a360cb4db /src/fcdefault.c
parent55d39bcad0737e92e1207fabbd8c65fa9e5e0482 (diff)
downloadfontconfig-2fe5ddfdae6be80db5b7e622ab6c1ab985377542.tar.gz
Fix FC_PRGNAME default
As reported by Raimund Steger.
Diffstat (limited to 'src/fcdefault.c')
-rw-r--r--src/fcdefault.c36
1 files changed, 19 insertions, 17 deletions
diff --git a/src/fcdefault.c b/src/fcdefault.c
index 88978b8..2d7c4f7 100644
--- a/src/fcdefault.c
+++ b/src/fcdefault.c
@@ -140,33 +140,34 @@ retry:
prgname = FcStrdup (p);
}
-#elif defined (HAVE_GETPROGNAME) && defined (HAVE_REALPATH)
- const char *p = getprogname ();
- char resolved_path[PATH_MAX + 1];
-
- if (p)
- {
- if (realpath (p, resolved_path) != NULL)
- prgname = FcStrdup (resolved_path);
- }
#else
- char buf[8192];
+ 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)
{
- char *p;
+ buf[len] = '\0';
+ p = buf;
+ }
+#endif
- 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 ("");
@@ -175,6 +176,7 @@ retry:
free (prgname);
goto retry;
}
+#endif
}
if (prgname && !prgname[0])