lib: rename Prog to shadow_progname, with only one definition

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.
This commit is contained in:
Adam Sampson
2021-12-25 22:41:58 +00:00
parent 6761cf2d7e
commit 0e6fe5e728
8 changed files with 64 additions and 61 deletions

View File

@ -2,14 +2,17 @@
#include "lib/shadowlog_internal.h"
const char *shadow_progname;
FILE *shadow_logfd;
void log_set_progname(const char *progname)
{
Prog = progname;
shadow_progname = progname;
}
const char *log_get_progname(void)
{
return Prog;
return shadow_progname;
}
void log_set_logfd(FILE *fd)