diff options
author | Guillem Jover <guillem@hadrons.org> | 2011-02-25 13:52:59 +0100 |
---|---|---|
committer | Guillem Jover <guillem@hadrons.org> | 2011-05-14 13:43:49 +0200 |
commit | 1497d34760d53777648f91b357762ba8bbb2d5ce (patch) | |
tree | 3f12b176d18c4dc12025b67ef6faa3adc23f9ce9 | |
parent | 741eb5876341c0310fe485cc9dd3af75bc9f4ab9 (diff) | |
download | libbsd-1497d34760d53777648f91b357762ba8bbb2d5ce.tar.gz |
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.c | 8 |
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; } |