Struct wanted (void)() function pointers. GCC-15 says no.
We compromised on (void)(const char*) and giving no argument to functions
that take no argument. Hopefully, when someone upstream adds
a function with num_args > 1, it would be a problem of upstream
https://bugs.gentoo.org/949574
--- a/include/libproto.h
+++ b/include/libproto.h
@@ -64,7 +64,7 @@
 extern int64_t new_exp(const object *ob);
 extern int has_ability(const object *ob);
 extern void init_experience(void);
-extern void dump_experience(void);
+extern void dump_experience(const char* v);
 extern void free_experience(void);
 /* friend.c */
 extern void add_friendly_object(object *op);
--- a/include/sproto.h
+++ b/include/sproto.h
@@ -458,7 +458,7 @@
 void quest_set_player_state(player *pl, sstring quest_code, int state);
 int quest_was_completed(player *pl, sstring quest_code);
 void command_quest(object *op, const char *params);
-void dump_quests(void);
+void dump_quests(const char* v);
 void free_quest(void);
 void free_quest_definitions(void);
 void quest_send_initial_states(player *pl);
--- a/server/init.c
+++ b/server/init.c
@@ -33,7 +33,7 @@
 #include "server.h"
 #include "sproto.h"
 
-static void help(void);
+static void help(const char* v);
 static void init_beforeplay(void);
 static void init_startup(void);
 static void init_signals(void);
@@ -46,73 +46,73 @@
  * Command line option: set logfile name.
  * @param val new name.
  */
-static void set_logfile(char *val) {
+static void set_logfile(const char *val) {
     settings.logfilename = val;
 }
 
 /** Command line option: show version. */
-static void call_version(void) {
+static void call_version(const char* v) {
     puts(FULL_VERSION);
     exit(EXIT_SUCCESS);
 }
 
 /** Command line option: debug flag. */
-static void set_debug(void) {
+static void set_debug(const char* v) {
     settings.debug = llevDebug;
 }
 
 /** Command line option: unset debug flag. */
-static void unset_debug(void) {
+static void unset_debug(const char* v) {
     settings.debug = llevInfo;
 }
 
 /** Command line option: monster debug flag. */
-static void set_mondebug(void) {
+static void set_mondebug(const char* v) {
     settings.debug = llevMonster;
 }
 
 /** Command line option: dump monsters. */
-static void set_dumpmon1(void) {
+static void set_dumpmon1(const char* v) {
     settings.dumpvalues = 1;
 }
 
 /** Command line option: dump abilities. */
-static void set_dumpmon2(void) {
+static void set_dumpmon2(const char* v) {
     settings.dumpvalues = 2;
 }
 
 /** Command line option: dump artifacts. */
-static void set_dumpmon3(void) {
+static void set_dumpmon3(const char* v) {
     settings.dumpvalues = 3;
 }
 
 /** Command line option: dump spells. */
-static void set_dumpmon4(void) {
+static void set_dumpmon4(const char* v) {
     settings.dumpvalues = 4;
 }
 
 /** Command line option: ? */
-static void set_dumpmon5(void) {
+static void set_dumpmon5(const char* v) {
     settings.dumpvalues = 5;
 }
 
 /** Command line option: dump races. */
-static void set_dumpmon6(void) {
+static void set_dumpmon6(const char* v) {
     settings.dumpvalues = 6;
 }
 
 /** Command line option: dump alchemy. */
-static void set_dumpmon7(void) {
+static void set_dumpmon7(const char* v) {
     settings.dumpvalues = 7;
 }
 
 /** Command line option: dump gods. */
-static void set_dumpmon8(void) {
+static void set_dumpmon8(const char* v) {
     settings.dumpvalues = 8;
 }
 
 /** Command line option: dump alchemy costs. */
-static void set_dumpmon9(void) {
+static void set_dumpmon9(const char* v) {
     settings.dumpvalues = 9;
 }
 
@@ -246,7 +246,7 @@
 /**
  * Dump all animations, then exit.
  */
-static void server_dump_animations(void) {
+static void server_dump_animations(const char* v) {
     dump_animations();
     cleanup();
 }
@@ -267,7 +267,7 @@
     const char *cmd_option; /**< How it is called on the command line. */
     uint8_t num_args;         /**< Number or args it takes. */
     uint8_t pass;             /**< What pass this should be processed on. @todo describe passes :) */
-    void (*func)();         /**< function to call when we match this.
+    void (*func)(const char* v); /**< function to call when we match this.
                              * if num_args is true, than that gets passed
                              * to the function, otherwise nothing is passed
                              */
@@ -1056,7 +1056,7 @@
 /**
  * Display the command line options and exits.
  */
-static void help(void) {
+static void help(const char* v) {
     printf("Usage: crossfire-server [options]\n\n");
 
     printf("Options:\n");
--- a/common/exp.c
+++ b/common/exp.c
@@ -247,7 +247,7 @@
  * Dump the experience table, then calls exit() - useful in terms of debugging to make sure the
  * format of the exp_table is correct.
  */
-void dump_experience(void) {
+void dump_experience(const char* v) {
     int i;
 
     for (i = 1; i <= settings.max_level; i++) {
--- a/server/quest.c
+++ b/server/quest.c
@@ -1303,7 +1303,7 @@
  * Dump all of the quests, then calls exit() - useful in terms of debugging to make sure that
  * quests are set up and recognised correctly.
  */
-void dump_quests(void) {
+void dump_quests(const char* v) {
     quest_load_definitions();
     output_quests(NULL, 0);
     exit(0);