* </para>
* <para>
* This example also shows how to use #GOptionContext for parsing the
- * commandline arguments.
+ * commandline arguments. Note that it is necessary to disable the
+ * built-in help-handling of #GOptionContext, since it calls exit()
+ * after printing help, which is not what you want to happen in
+ * the primary instance.
* </para>
* <programlisting>
* <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gapplication-example-cmdline3.c">
gint argc;
gint arg1;
gboolean arg2;
+ gboolean help;
GOptionContext *context;
GOptionEntry entries[] = {
{ "arg1", 0, 0, G_OPTION_ARG_INT, &arg1, NULL, NULL },
{ "arg2", 0, 0, G_OPTION_ARG_NONE, &arg2, NULL, NULL },
+ { "help", '?', 0, G_OPTION_ARG_NONE, &help, NULL, NULL },
{ NULL }
};
GError *error;
argv[i] = args[i];
context = g_option_context_new (NULL);
+ g_option_context_set_help_enabled (context, FALSE);
g_option_context_add_main_entries (context, entries, NULL);
arg1 = 0;
arg2 = FALSE;
+ help = FALSE;
error = NULL;
if (!g_option_context_parse (context, &argc, &argv, &error))
{
g_error_free (error);
g_application_command_line_set_exit_status (cmdline, 1);
}
+ else if (help)
+ {
+ gchar *text;
+ text = g_option_context_get_help (context, FALSE, NULL);
+ g_application_command_line_print (cmdline, "%s", text);
+ g_free (text);
+ }
else
{
g_application_command_line_print (cmdline, "arg1 is %d and arg2 is %s\n",