summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillem Jover <guillem@hadrons.org>2011-02-25 13:52:59 +0100
committerGuillem Jover <guillem@hadrons.org>2011-05-14 13:43:49 +0200
commit1497d34760d53777648f91b357762ba8bbb2d5ce (patch)
tree3f12b176d18c4dc12025b67ef6faa3adc23f9ce9
parent741eb5876341c0310fe485cc9dd3af75bc9f4ab9 (diff)
Initialize __progname to program_invocation_short_name
As we do not have cooperation from the crt0 code to set __progname, we have to set it ourselves from getprogname() in case it's NULL. On GNU systems we can use program_invocation_short_name which is actually set on crt0.
-rw-r--r--src/progname.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/progname.c b/src/progname.c
index ef56144..1079429 100644
--- a/src/progname.c
+++ b/src/progname.c
@@ -1,6 +1,6 @@
/*
* Copyright © 2006 Robert Millan
- * Copyright © 2010 Guillem Jover
+ * Copyright © 2010-2011 Guillem Jover
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,6 +29,7 @@
Rejected in glibc (http://sourceware.org/ml/libc-alpha/2006-03/msg00125.html)
*/
+#include <errno.h>
#include <string.h>
#include <bsd/stdlib.h>
@@ -38,6 +39,11 @@ static const char *__progname = NULL;
const char *
getprogname(void)
{
+#ifdef __GLIBC__
+ if (__progname == NULL)
+ __progname = program_invocation_short_name;
+#endif
+
return __progname;
}