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.
This commit is contained in:
Guillem Jover 2011-02-25 13:52:59 +01:00
parent 741eb58763
commit 1497d34760

View File

@ -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;
}