From 8ee8d898147678089ff92069bf0d013658855a44 Mon Sep 17 00:00:00 2001 From: nhmall Date: Sat, 2 Dec 2023 11:09:41 -0500 Subject: [PATCH] optlist.h Currently, options.c is the only file that #includes "optlist.h". In theory, if a source file did want to include optlist.h (perhaps for the struct allopt_t declaration so they could deal with a pointer to such a struct), they wouldn't be able to include it because of a static function prototype that it contains. Add some protection to only include that static function prototype when optlist.h is included from options.c. --- include/optlist.h | 5 ++++- src/options.c | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/optlist.h b/include/optlist.h index 8e7d911f9..91c0518ea 100644 --- a/include/optlist.h +++ b/include/optlist.h @@ -4,6 +4,10 @@ #ifndef OPTLIST_H #define OPTLIST_H +#ifdef OPTIONS_C +static int optfn_boolean(int, int, boolean, char *, char *); +#endif + /* * NOTE: If you add (or delete) an option, please review: * doc/options.txt @@ -12,7 +16,6 @@ * updates that should accompany your change. */ -static int optfn_boolean(int, int, boolean, char *, char *); enum OptType { BoolOpt, CompOpt, OthrOpt }; enum Y_N { No, Yes }; enum Off_On { Off, On }; diff --git a/src/options.c b/src/options.c index 415284c71..fc727a39f 100644 --- a/src/options.c +++ b/src/options.c @@ -50,6 +50,8 @@ NEARDATA struct instance_flags iflags; /* provide linkage */ * */ +#define OPTIONS_C + #define NHOPT_PROTO #include "optlist.h" #undef NHOPT_PROTO @@ -72,6 +74,7 @@ static struct allopt_t allopt_init[] = { }; #undef NHOPT_PARSE +#undef OPTIONS_C #define PILE_LIMIT_DFLT 5 #define rolestring(val, array, field) \