fix issues from public functions defined without declaration visible

policy is that all public functions which have a public declaration
should be defined in a context where that public declaration is
visible, to avoid preventable type mismatches.

an audit performed using GCC's -Wmissing-declarations turned up the
violations corrected here. in some cases the public header had not
been included; in others, a feature test macro needed to make the
declaration visible had been omitted.

in the case of gethostent and getnetent, the omission seems to have
been intentional, as a hack to admit a single stub definition for both
functions. this kind of hack is no longer acceptable; it's UB and
would not fly with LTO or advanced toolchains. the hack is undone to
make exposure of the declarations possible.
This commit is contained in:
Rich Felker
2018-09-12 14:34:20 -04:00
parent eeb6f77425
commit c221d3e586
11 changed files with 22 additions and 2 deletions
+7 -2
View File
@@ -1,10 +1,16 @@
#include <netdb.h>
#include "libc.h"
void sethostent(int x)
{
}
void *gethostent()
struct hostent *gethostent()
{
return 0;
}
struct netent *getnetent()
{
return 0;
}
@@ -14,5 +20,4 @@ void endhostent(void)
}
weak_alias(sethostent, setnetent);
weak_alias(gethostent, getnetent);
weak_alias(endhostent, endnetent);