Commit b5cc17d66498c3da0aa862a517f630b4aa5d5dc6

Guillem Jover 2011-07-05T23:27:31

Use getexecname() if available for getprogname() This function is present on Solaris.

diff --git a/configure.ac b/configure.ac
index 06a02b7..c9cf0a4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -37,6 +37,7 @@ AC_TYPE_SIZE_T
 AC_TYPE_SSIZE_T
 
 # Checks for library functions.
+AC_CHECK_FUNCS([getexecname])
 
 AC_CONFIG_FILES([
 	Makefile
diff --git a/src/progname.c b/src/progname.c
index f24071a..b5132d8 100644
--- a/src/progname.c
+++ b/src/progname.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2006 Robert Millan
- * Copyright © 2010-2011 Guillem Jover
+ * Copyright © 2010-2012 Guillem Jover <guillem@hadrons.org>
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -41,6 +41,10 @@ getprogname(void)
 #ifdef __GLIBC__
 	if (__progname == NULL)
 		__progname = program_invocation_short_name;
+#elif defined(HAVE_GETEXECNAME)
+	/* getexecname(3) returns an absolute pathname, normalize it. */
+	if (__progname == NULL)
+		setprogname(getexecname());
 #endif
 
 	return __progname;