gnunet

Main GNUnet Logic
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/include/gnunet_program_lib.h | 2+-
Msrc/lib/util/program.c | 97+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Msrc/service/rest/gnunet-rest-server.c | 24++++--------------------
Msrc/service/transport/gnunet-communicator-udp.c | 34+++++-----------------------------
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 */