GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 2, or (at your
+ by the Free Software Foundation; either version 3, or (at your
option) any later version.
GNUnet is distributed in the hope that it will be useful, but
* @brief implements command line that sets option
* @author Christian Grothoff
*/
-
#include "platform.h"
-#include "gnunet_common.h"
-#include "gnunet_getopt_lib.h"
+#include "gnunet_util_lib.h"
#define LOG(kind,...) GNUNET_log_from (kind, "util", __VA_ARGS__)
* @param scls additional closure (points to version string)
* @param option name of the option
* @param value not used (NULL)
- * @return GNUNET_SYSERR (do not continue)
+ * @return GNUNET_NO (do not continue, not an error)
*/
int
GNUNET_GETOPT_print_version_ (struct GNUNET_GETOPT_CommandLineProcessorContext
const char *version = scls;
printf ("%s v%s\n", ctx->binaryName, version);
- return GNUNET_SYSERR;
+ return GNUNET_NO;
}
* @param scls additional closure (points to about text)
* @param option name of the option
* @param value not used (NULL)
- * @return GNUNET_SYSERR (do not continue)
+ * @return GNUNET_NO (do not continue, not an error)
*/
int
GNUNET_GETOPT_format_help_ (struct GNUNET_GETOPT_CommandLineProcessorContext
const char *trans;
const struct GNUNET_GETOPT_CommandLineOption *opt;
- printf ("%s\n%s\n", ctx->binaryOptions, gettext (about));
- printf (_
- ("Arguments mandatory for long options are also mandatory for short options.\n"));
+ if (NULL != about)
+ {
+ printf ("%s\n%s\n", ctx->binaryOptions, gettext (about));
+ printf (_
+ ("Arguments mandatory for long options are also mandatory for short options.\n"));
+ }
i = 0;
opt = ctx->allOptions;
while (opt[i].description != NULL)
printf ("Report bugs to gnunet-developers@gnu.org.\n"
"GNUnet home page: http://www.gnu.org/software/gnunet/\n"
"General help using GNU software: http://www.gnu.org/gethelp/\n");
- return GNUNET_SYSERR;
+ return GNUNET_NO;
}
* A pointer to this function should be passed as part of the
* 'struct GNUNET_GETOPT_CommandLineOption' array to initialize options
* of this type. It should be followed by a pointer to a value of
- * type 'char *'.
+ * type 'char *', which will be allocated with the requested string.
*
* @param ctx command line processing context
* @param scls additional closure (will point to the 'char *',
}
+int
+GNUNET_GETOPT_set_filename (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
+ void *scls, const char *option, const char *value)
+{
+ char **val = scls;
+
+ GNUNET_assert (value != NULL);
+ GNUNET_free_non_null (*val);
+ *val = GNUNET_STRINGS_filename_expand (value);
+ return GNUNET_OK;
+}
+
/**
* Set an option of type 'unsigned long long' from the command line.
* A pointer to this function should be passed as part of the
}
+/**
+ * Set an option of type 'struct GNUNET_TIME_Relative' from the command line.
+ * A pointer to this function should be passed as part of the
+ * 'struct GNUNET_GETOPT_CommandLineOption' array to initialize options
+ * of this type. It should be followed by a pointer to a value of
+ * type 'struct GNUNET_TIME_Relative'.
+ *
+ * @param ctx command line processing context
+ * @param scls additional closure (will point to the 'struct GNUNET_TIME_Relative')
+ * @param option name of the option
+ * @param value actual value of the option as a string.
+ * @return GNUNET_OK if parsing the value worked
+ */
+int
+GNUNET_GETOPT_set_relative_time (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
+ void *scls, const char *option, const char *value)
+{
+ struct GNUNET_TIME_Relative *val = scls;
+
+ if (GNUNET_OK !=
+ GNUNET_STRINGS_fancy_time_to_relative (value,
+ val))
+ {
+ FPRINTF (stderr, _("You must pass relative time to the `%s' option.\n"), option);
+ return GNUNET_SYSERR;
+ }
+ return GNUNET_OK;
+}
+
+
/**
* Set an option of type 'unsigned int' from the command line.
* A pointer to this function should be passed as part of the