0e6fe5e728
The build was failing with duplicate symbol errors with -fno-common. This is the default in GCC 10 and later, and explicitly enabled in some distributions to catch problems like this. There were two causes: - Prog and shadow_logfd were defined in a header file that was included in multiple other files. Fix this by defining them once in shadowlog.c, and having extern declarations in the header. - Most of the tools (except id/nologin) also define a Prog variable, which is not intended to alias the one in the library. Fix this by renaming Prog in the library to shadow_progname, which also matches the new accessor functions for it.
32 lines
453 B
C
32 lines
453 B
C
#include "shadowlog.h"
|
|
|
|
#include "lib/shadowlog_internal.h"
|
|
|
|
const char *shadow_progname;
|
|
FILE *shadow_logfd;
|
|
|
|
void log_set_progname(const char *progname)
|
|
{
|
|
shadow_progname = progname;
|
|
}
|
|
|
|
const char *log_get_progname(void)
|
|
{
|
|
return shadow_progname;
|
|
}
|
|
|
|
void log_set_logfd(FILE *fd)
|
|
{
|
|
if (NULL != fd)
|
|
shadow_logfd = fd;
|
|
else
|
|
shadow_logfd = stderr;
|
|
}
|
|
|
|
FILE *log_get_logfd(void)
|
|
{
|
|
if (shadow_logfd != NULL)
|
|
return shadow_logfd;
|
|
return stderr;
|
|
}
|