commit d5e391d810e555807f83a65e0e3f8b805ae8d697
parent fd018e70a3dda6b8616014eb533297b44c3a983f
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date: Wed, 28 Aug 2024 21:37:16 +0200
util: semi-cleanup GNUNET_PROGRAM_MAIN macro
Diffstat:
4 files changed, 65 insertions(+), 92 deletions(-)
diff --git a/src/include/gnunet_program_lib.h b/src/include/gnunet_program_lib.h
@@ -125,7 +125,7 @@ GNUNET_PROGRAM_run (int argc,
enum GNUNET_GenericReturnValue
GNUNET_DAEMON_register (const char *daemon_name,
const char *daemon_desc,
- GNUNET_SCHEDULER_TaskCallback task);
+ GNUNET_PROGRAM_Main task);
/**
* Start all services and daemons in a single prozess.
diff --git a/src/lib/util/program.c b/src/lib/util/program.c
@@ -415,10 +415,11 @@ GNUNET_PROGRAM_run (int argc,
GNUNET_NO);
}
+
enum GNUNET_GenericReturnValue
GNUNET_PROGRAM_conf_and_options (int argc,
- char *const *argv,
- struct GNUNET_CONFIGURATION_Handle *cfg)
+ char *const *argv,
+ struct GNUNET_CONFIGURATION_Handle *cfg)
{
char *cfg_filename;
char *opt_cfg_filename;
@@ -470,7 +471,7 @@ GNUNET_PROGRAM_conf_and_options (int argc,
// NOTE: that was not the idea. What are you proposing? -CG
if (GNUNET_OK !=
GNUNET_log_setup ("libgnunet",
- "DEBUG",//loglev,
+ "DEBUG",// loglev,
logfile))
{
GNUNET_break (0);
@@ -487,10 +488,10 @@ GNUNET_PROGRAM_conf_and_options (int argc,
GNUNET_CONFIGURATION_load (cfg,
opt_cfg_filename)) )
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _ ("Malformed configuration file `%s', exit ...\n"),
- opt_cfg_filename);
- goto error;
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _ ("Malformed configuration file `%s', exit ...\n"),
+ opt_cfg_filename);
+ goto error;
}
}
else
@@ -498,28 +499,28 @@ GNUNET_PROGRAM_conf_and_options (int argc,
if (GNUNET_YES ==
GNUNET_DISK_file_test (cfg_filename))
{
- if (GNUNET_SYSERR ==
- GNUNET_CONFIGURATION_load (cfg,
- cfg_filename))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _ ("Malformed configuration file `%s', exit ...\n"),
- cfg_filename);
- GNUNET_free (cfg_filename);
- goto error;;
- }
+ if (GNUNET_SYSERR ==
+ GNUNET_CONFIGURATION_load (cfg,
+ cfg_filename))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _ ("Malformed configuration file `%s', exit ...\n"),
+ cfg_filename);
+ GNUNET_free (cfg_filename);
+ goto error;;
+ }
}
else
{
- if (GNUNET_SYSERR ==
- GNUNET_CONFIGURATION_load (cfg,
- NULL))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _ ("Malformed configuration, exit ...\n"));
- GNUNET_free (cfg_filename);
- goto error;
- }
+ if (GNUNET_SYSERR ==
+ GNUNET_CONFIGURATION_load (cfg,
+ NULL))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _ ("Malformed configuration, exit ...\n"));
+ GNUNET_free (cfg_filename);
+ goto error;
+ }
}
}
}
@@ -531,15 +532,15 @@ GNUNET_PROGRAM_conf_and_options (int argc,
return GNUNET_OK;
- error:
- GNUNET_SPEEDUP_stop_ ();
- GNUNET_CONFIGURATION_destroy (cfg);
- GNUNET_free (logfile);
- GNUNET_free (loglev);
- GNUNET_free (cfg_filename);
- GNUNET_free (opt_cfg_filename);
+error:
+ GNUNET_SPEEDUP_stop_ ();
+ GNUNET_CONFIGURATION_destroy (cfg);
+ GNUNET_free (logfile);
+ GNUNET_free (loglev);
+ GNUNET_free (cfg_filename);
+ GNUNET_free (opt_cfg_filename);
- return GNUNET_SYSERR;
+ return GNUNET_SYSERR;
}
@@ -566,8 +567,8 @@ GNUNET_PROGRAM_monolith_main (int argc,
{
if (GNUNET_YES != GNUNET_PROGRAM_conf_and_options (argc,
- argv,
- cfg))
+ argv,
+ cfg))
return;
GNUNET_SCHEDULER_run (&monolith_main,
cfg);
@@ -586,7 +587,9 @@ struct DaemonHandleList
struct DaemonHandleList *next;
/* Program to launch */
- GNUNET_SCHEDULER_TaskCallback d;
+ GNUNET_PROGRAM_Main d;
+
+ const struct GNUNET_CONFIGURATION_Handle *cfg;
const char *daemon_name;
};
@@ -597,6 +600,15 @@ static struct DaemonHandleList *hll_head = NULL;
/* The daemon list */
static struct DaemonHandleList *hll_tail = NULL;
+static void
+launch_daemon (void *cls)
+{
+ struct DaemonHandleList *hll = cls;
+
+ // FIXME read from config argv argc?
+ hll->d (NULL, NULL, NULL, hll->cfg);
+}
+
static void
launch_daemons (void *cls)
@@ -610,8 +622,9 @@ launch_daemons (void *cls)
LOG (GNUNET_ERROR_TYPE_DEBUG,
"Launching daemon %s\n",
hll->daemon_name);
- GNUNET_SCHEDULER_add_now (hll->d,
- cfg);
+ hll->cfg = cfg;
+ GNUNET_SCHEDULER_add_now (&launch_daemon,
+ hll);
}
}
@@ -641,13 +654,13 @@ GNUNET_DAEMON_main (int argc,
enum GNUNET_GenericReturnValue
GNUNET_DAEMON_register (const char *daemon_name,
const char *daemon_help,
- GNUNET_SCHEDULER_TaskCallback task)
+ GNUNET_PROGRAM_Main task)
{
struct DaemonHandleList *hle;
LOG (GNUNET_ERROR_TYPE_DEBUG,
- "registering daemon %s\n",
- daemon_name);
+ "registering daemon %s\n",
+ daemon_name);
hle = GNUNET_new (struct DaemonHandleList);
hle->d = task;
hle->daemon_name = daemon_name;
diff --git a/src/service/rest/gnunet-rest-server.c b/src/service/rest/gnunet-rest-server.c
@@ -1145,7 +1145,10 @@ setup_plugin (const char *name,
* @param c configuration
*/
static void
-run_ (const struct GNUNET_CONFIGURATION_Handle *c)
+run (void *cls,
+ char *const *args,
+ const char *cfgfile,
+ const struct GNUNET_CONFIGURATION_Handle *c)
{
static const char *err_page = "{}";
char *addr_str;
@@ -1430,25 +1433,6 @@ run_ (const struct GNUNET_CONFIGURATION_Handle *c)
}
-#ifndef HAVE_GNUNET_MONOLITH
-static void
-run (void *cls,
- char *const *args,
- const char *cfgfile,
- const struct GNUNET_CONFIGURATION_Handle *c)
-{
- run_ (c);
-}
GNUNET_DAEMON_MAIN ("rest", _ ("GNUnet REST service"), &run)
-#else
-static void
-run_monolith (void *cls)
-{
- const struct GNUNET_CONFIGURATION_Handle *c = cls;
-
- run_ (c);
-}
-GNUNET_DAEMON_MAIN ("rest", _ ("GNUnet REST service"), &run_monolith)
-#endif
/* end of gnunet-rest-server.c */
diff --git a/src/service/transport/gnunet-communicator-udp.c b/src/service/transport/gnunet-communicator-udp.c
@@ -3575,7 +3575,7 @@ start_burst (const char *addr,
"1 sock addr %s addr %s rtt %lu %u\n",
sock_info->address,
addr,
- sock_info->rtt.rel_value_us,
+ (unsigned long) sock_info->rtt.rel_value_us,
my_port);
burst_task = GNUNET_get_udp_socket (sock_info,
&udp_socket_notify);
@@ -3584,7 +3584,10 @@ start_burst (const char *addr,
static void
-run_ (const struct GNUNET_CONFIGURATION_Handle *c)
+run (void *cls,
+ char *const *args,
+ const char *cfgfile,
+ const struct GNUNET_CONFIGURATION_Handle *c)
{
const struct sockaddr_in *v4;
char *bindto;
@@ -3790,32 +3793,5 @@ run_ (const struct GNUNET_CONFIGURATION_Handle *c)
}
-/**
- * Setup communicator and launch network interactions.
- *
- * @param cls NULL (always)
- * @param args remaining command-line arguments
- * @param cfgfile name of the configuration file used (for saving, can be NULL!)
- * @param c configuration
- */
-#ifndef HAVE_GNUNET_MONOLITH
-static void
-run (void *cls,
- char *const *args,
- const char *cfgfile,
- const struct GNUNET_CONFIGURATION_Handle *c)
-{
- run_ (c);
-}
GNUNET_DAEMON_MAIN ("gnunet-communicator-udp", _ ("GNUnet UDP communicator"), &run)
-#else
-static void
-run_monolith (void *cls)
-{
- const struct GNUNET_CONFIGURATION_Handle *c = cls;
-
- run_ (c);
-}
-GNUNET_DAEMON_MAIN ("gnunet-communicator-udp", _ ("GNUnet UDP communicator"), &run_monolith)
-#endif
/* end of gnunet-communicator-udp.c */