From 23372aee7dc3347c4098c7a041271799794bd61f Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Thu, 15 Mar 2012 09:02:08 +0000 Subject: [PATCH] - new program_run and run_2 --- src/include/gnunet_program_lib.h | 22 +++++++++++++++++ src/util/program.c | 41 ++++++++++++++++++++++++++++---- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/src/include/gnunet_program_lib.h b/src/include/gnunet_program_lib.h index 48d5280ee..5bce4820b 100644 --- a/src/include/gnunet_program_lib.h +++ b/src/include/gnunet_program_lib.h @@ -53,6 +53,28 @@ typedef void (*GNUNET_PROGRAM_Main) (void *cls, char *const *args, cfg); +/** + * Run a standard GNUnet command startup sequence (initialize loggers + * and configuration, parse options). + * + * @param argc number of command line arguments + * @param argv command line arguments + * @param binaryName our expected name + * @param binaryHelp help text for the program + * @param options command line options + * @param task main function to run + * @param task_cls closure for task + * @param run_with_schedule GNUNET_YES start the scheduler, GNUNET_NO do not + * start the scheduler just run the main task + * @return GNUNET_SYSERR on error, GNUNET_OK on success + */ +int +GNUNET_PROGRAM_run2 (int argc, char *const *argv, const char *binaryName, + const char *binaryHelp, + const struct GNUNET_GETOPT_CommandLineOption *options, + GNUNET_PROGRAM_Main task, void *task_cls, + int run_with_schedule); + /** * Run a standard GNUnet command startup sequence (initialize loggers * and configuration, parse options). diff --git a/src/util/program.c b/src/util/program.c index 6a0e5a555..597bd7584 100644 --- a/src/util/program.c +++ b/src/util/program.c @@ -125,13 +125,16 @@ cmd_sorter (__const void *a1, __const void *a2) * @param options command line options * @param task main function to run * @param task_cls closure for task + * @param run_with_schedule GNUNET_NO start the scheduler, GNUNET_YES do not + * start the scheduler just run the main task * @return GNUNET_SYSERR on error, GNUNET_OK on success */ int -GNUNET_PROGRAM_run (int argc, char *const *argv, const char *binaryName, +GNUNET_PROGRAM_run2 (int argc, char *const *argv, const char *binaryName, const char *binaryHelp, const struct GNUNET_GETOPT_CommandLineOption *options, - GNUNET_PROGRAM_Main task, void *task_cls) + GNUNET_PROGRAM_Main task, void *task_cls, + int run_with_schedule) { struct CommandContext cc; char *path; @@ -247,8 +250,15 @@ GNUNET_PROGRAM_run (int argc, char *const *argv, const char *binaryName, } /* run */ cc.args = &argv[ret]; - GNUNET_SCHEDULER_run (&program_main, &cc); - + if (GNUNET_NO == run_with_schedule) + { + GNUNET_SCHEDULER_run (&program_main, &cc); + } + else + { + GNUNET_RESOLVER_connect (cc.cfg); + cc.task (cc.task_cls, cc.args, cc.cfgfile, cc.cfg); + } /* clean up */ GNUNET_CONFIGURATION_destroy (cfg); GNUNET_free_non_null (cc.cfgfile); @@ -257,5 +267,28 @@ GNUNET_PROGRAM_run (int argc, char *const *argv, const char *binaryName, return GNUNET_OK; } +/** + * Run a standard GNUnet command startup sequence (initialize loggers + * and configuration, parse options). + * + * @param argc number of command line arguments + * @param argv command line arguments + * @param binaryName our expected name + * @param binaryHelp help text for the program + * @param options command line options + * @param task main function to run + * @param task_cls closure for task + * @return GNUNET_SYSERR on error, GNUNET_OK on success + */ +int +GNUNET_PROGRAM_run (int argc, char *const *argv, const char *binaryName, + const char *binaryHelp, + const struct GNUNET_GETOPT_CommandLineOption *options, + GNUNET_PROGRAM_Main task, void *task_cls) +{ + return GNUNET_PROGRAM_run2 (argc, argv, binaryName, binaryHelp, options, task, task_cls, GNUNET_NO); +} + + /* end of program.c */ -- 2.25.1