Handle option contexts without a main group.
authorAnders Carlsson <andersca@gnome.org>
Wed, 1 Sep 2004 17:31:43 +0000 (17:31 +0000)
committerAnders Carlsson <andersca@src.gnome.org>
Wed, 1 Sep 2004 17:31:43 +0000 (17:31 +0000)
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.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-6
ChangeLog.pre-2-8
glib/goption.c
tests/option-test.c

index a964df5..82f1b83 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+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):
index a964df5..82f1b83 100644 (file)
@@ -1,3 +1,12 @@
+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):
index a964df5..82f1b83 100644 (file)
@@ -1,3 +1,12 @@
+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):
index a964df5..82f1b83 100644 (file)
@@ -1,3 +1,12 @@
+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):
index a964df5..82f1b83 100644 (file)
@@ -1,3 +1,12 @@
+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):
index 85c08d5..b619546 100644 (file)
@@ -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);
   
index 4dff3dd..847119f 100644 (file)
@@ -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;
 }