Fix GET_PROGRAM_NAME() on Solaris to not try to modify a read-only string

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
This commit is contained in:
Alan Coopersmith
2011-04-08 13:03:16 -07:00
parent ee678895e9
commit 64ce3933f5

View File

@@ -64,7 +64,25 @@ extern char *program_invocation_name, *program_invocation_short_name;
the basename to match BSD getprogname() */
# include <stdlib.h>
# include <libgen.h>
# define GET_PROGRAM_NAME() basename(getexecname())
static const char *__getProgramName () {
static const char *progname;
if (progname == NULL) {
const char *e = getexecname();
if (e != NULL) {
/* Have to make a copy since getexecname can return a readonly
string, but basename expects to be able to modify its arg. */
char *n = strdup(e);
if (n != NULL) {
progname = basename(n);
}
}
}
return progname;
}
# define GET_PROGRAM_NAME() __getProgramName()
#endif
#if !defined(GET_PROGRAM_NAME)