/*
This file is part of GNUnet.
- (C) 2009-2013 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2009-2013 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
* program. Runs the program-specific main task.
*/
static void
-program_main (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+program_main (void *cls)
{
struct CommandContext *cc = cls;
- if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason))
- return;
GNUNET_SPEEDUP_start_(cc->cfg);
GNUNET_RESOLVER_connect (cc->cfg);
cc->task (cc->task_cls, cc->args, cc->cfgfile, cc->cfg);
*/
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_without_scheduler)
+ const char *binaryHelp,
+ const struct GNUNET_GETOPT_CommandLineOption *options,
+ GNUNET_PROGRAM_Main task, void *task_cls,
+ int run_without_scheduler)
{
struct CommandContext cc;
#if ENABLE_NLS
GNUNET_malloc ((cnt +
1) * sizeof (struct GNUNET_GETOPT_CommandLineOption) +
sizeof (defoptions));
- memcpy (allopts, defoptions, sizeof (defoptions));
- memcpy (&allopts
+ GNUNET_memcpy (allopts, defoptions, sizeof (defoptions));
+ GNUNET_memcpy (&allopts
[sizeof (defoptions) /
sizeof (struct GNUNET_GETOPT_CommandLineOption)], options,
(cnt + 1) * sizeof (struct GNUNET_GETOPT_CommandLineOption));
"%s%s%s",
xdg,
DIR_SEPARATOR_STR,
- "gnunet.conf");
+ GNUNET_OS_project_data_get ()->config_file);
else
- cfg_fn = GNUNET_strdup (GNUNET_DEFAULT_USER_CONFIG_FILE);
+ cfg_fn = GNUNET_strdup (GNUNET_OS_project_data_get ()->user_config_file);
lpfx = GNUNET_strdup (binaryName);
if (NULL != (spc = strstr (lpfx, " ")))
*spc = '\0';
clock_offset = skew_offset - skew_variance;
GNUNET_TIME_set_offset (clock_offset);
}
+ /* ARM needs to know which configuration file to use when starting
+ services. If we got a command-line option *and* if nothing is
+ specified in the configuration, remember the command-line option
+ in "cfg". This is typically really only having an effect if we
+ are running code in src/arm/, as obviously the rest of the code
+ has little business with ARM-specific options. */
+ if (GNUNET_YES !=
+ GNUNET_CONFIGURATION_have_value (cfg,
+ "arm",
+ "CONFIG"))
+ {
+ GNUNET_CONFIGURATION_set_value_string (cfg,
+ "arm", "CONFIG",
+ cc.cfgfile);
+ }
+
/* run */
cc.args = &argv[ret];
if (GNUNET_NO == run_without_scheduler)