Commit 338d9495 authored by Anders Carlsson's avatar Anders Carlsson Committed by Anders Carlsson

Handle option contexts without a main group.

2004-09-01  Anders Carlsson  <andersca@gnome.org>

	* glib/goption.c: (g_option_context_free), (print_help),
	(g_option_context_parse):
	Handle option contexts without a main group.

	* tests/option-test.c: (empty_test2), (main):
	Add test case for that.
parent 7f760a91
2004-09-01 Anders Carlsson <andersca@gnome.org>
* glib/goption.c: (g_option_context_free), (print_help),
(g_option_context_parse):
Handle option contexts without a main group.
* tests/option-test.c: (empty_test2), (main):
Add test case for that.
2004-08-30 Anders Carlsson <andersca@gnome.org>
* glib/goption.c: (g_option_context_parse):
......
2004-09-01 Anders Carlsson <andersca@gnome.org>
* glib/goption.c: (g_option_context_free), (print_help),
(g_option_context_parse):
Handle option contexts without a main group.
* tests/option-test.c: (empty_test2), (main):
Add test case for that.
2004-08-30 Anders Carlsson <andersca@gnome.org>
* glib/goption.c: (g_option_context_parse):
......
2004-09-01 Anders Carlsson <andersca@gnome.org>
* glib/goption.c: (g_option_context_free), (print_help),
(g_option_context_parse):
Handle option contexts without a main group.
* tests/option-test.c: (empty_test2), (main):
Add test case for that.
2004-08-30 Anders Carlsson <andersca@gnome.org>
* glib/goption.c: (g_option_context_parse):
......
2004-09-01 Anders Carlsson <andersca@gnome.org>
* glib/goption.c: (g_option_context_free), (print_help),
(g_option_context_parse):
Handle option contexts without a main group.
* tests/option-test.c: (empty_test2), (main):
Add test case for that.
2004-08-30 Anders Carlsson <andersca@gnome.org>
* glib/goption.c: (g_option_context_parse):
......
2004-09-01 Anders Carlsson <andersca@gnome.org>
* glib/goption.c: (g_option_context_free), (print_help),
(g_option_context_parse):
Handle option contexts without a main group.
* tests/option-test.c: (empty_test2), (main):
Add test case for that.
2004-08-30 Anders Carlsson <andersca@gnome.org>
* glib/goption.c: (g_option_context_parse):
......
......@@ -133,7 +133,8 @@ g_option_context_free (GOptionContext *context)
g_list_foreach (context->groups, (GFunc)g_option_group_free, NULL);
g_list_free (context->groups);
g_option_group_free (context->main_group);
if (context->main_group)
g_option_group_free (context->main_group);
free_changes_list (context, FALSE);
free_pending_nulls (context, FALSE);
......@@ -357,8 +358,9 @@ print_help (GOptionContext *context,
g_print ("%s\n", _("Application Options:"));
for (i = 0; i < context->main_group->n_entries; i++)
print_entry (context->main_group, max_length, &context->main_group->entries[i]);
if (context->main_group)
for (i = 0; i < context->main_group->n_entries; i++)
print_entry (context->main_group, max_length, &context->main_group->entries[i]);
while (list != NULL)
{
......@@ -836,7 +838,7 @@ g_option_context_parse (GOptionContext *context,
list = list->next;
}
if (context->main_group->pre_parse_func)
if (context->main_group && context->main_group->pre_parse_func)
{
if (!(* context->main_group->pre_parse_func) (context, context->main_group,
context->main_group->user_data, error))
......@@ -900,7 +902,8 @@ g_option_context_parse (GOptionContext *context,
}
}
if (!parse_long_option (context, context->main_group, &i, arg,
if (context->main_group &&
!parse_long_option (context, context->main_group, &i, arg,
argc, argv, error, &parsed))
goto fail;
......@@ -942,7 +945,8 @@ g_option_context_parse (GOptionContext *context,
{
parsed = FALSE;
if (!parse_short_option (context, context->main_group,
if (context->main_group &&
!parse_short_option (context, context->main_group,
i, &new_i, arg[j],
argc, argv, error, &parsed))
{
......@@ -1034,7 +1038,7 @@ g_option_context_parse (GOptionContext *context,
list = list->next;
}
if (context->main_group->post_parse_func)
if (context->main_group && context->main_group->post_parse_func)
{
if (!(* context->main_group->post_parse_func) (context, context->main_group,
context->main_group->user_data, error))
......@@ -1080,7 +1084,7 @@ g_option_context_parse (GOptionContext *context,
list = list->next;
}
if (context->main_group->error_func)
if (context->main_group && context->main_group->error_func)
(* context->main_group->error_func) (context, context->main_group,
context->main_group->user_data, error);
......
......@@ -428,6 +428,17 @@ empty_test1 (void)
g_option_context_free (context);
}
void
empty_test2 (void)
{
GOptionContext *context;
context = g_option_context_new (NULL);
g_option_context_parse (context, NULL, NULL, NULL);
g_option_context_free (context);
}
int
main (int argc, char **argv)
{
......@@ -454,6 +465,7 @@ main (int argc, char **argv)
/* Test parsing empty args */
empty_test1 ();
empty_test2 ();
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment