From b5cc17d66498c3da0aa862a517f630b4aa5d5dc6 Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Tue, 5 Jul 2011 23:27:31 +0200 Subject: [PATCH] Use getexecname() if available for getprogname() This function is present on Solaris. --- configure.ac | 1 + src/progname.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) 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 * * 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;