Warn if a short name is not acceptable.
authorMatthias Clasen <mclasen@redhat.com>
Wed, 13 Jul 2005 13:31:30 +0000 (13:31 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Wed, 13 Jul 2005 13:31:30 +0000 (13:31 +0000)
2005-07-13  Matthias Clasen  <mclasen@redhat.com>

* glib/goption.c (g_option_group_add_entries): Warn if a
short name is not acceptable.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-8
docs/reference/ChangeLog
docs/reference/glib/tmpl/option.sgml
glib/goption.c

index 59b77ae..ab584bd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-07-13  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/goption.c (g_option_group_add_entries): Warn if a
+       short name is not acceptable.
+
 2005-07-12  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/goption.h (G_OPTION_FLAG_NOALIAS): 
index 59b77ae..ab584bd 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-13  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/goption.c (g_option_group_add_entries): Warn if a
+       short name is not acceptable.
+
 2005-07-12  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/goption.h (G_OPTION_FLAG_NOALIAS): 
index 59b77ae..ab584bd 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-13  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/goption.c (g_option_group_add_entries): Warn if a
+       short name is not acceptable.
+
 2005-07-12  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/goption.h (G_OPTION_FLAG_NOALIAS): 
index 59b77ae..ab584bd 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-13  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/goption.c (g_option_group_add_entries): Warn if a
+       short name is not acceptable.
+
 2005-07-12  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/goption.h (G_OPTION_FLAG_NOALIAS): 
index f89f4dc..283591a 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-13  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/tmpl/option.sgml: Document that short names must
+       be printable ASCII characters != '-'.
+
 2005-07-08  Matthias Clasen  <mclasen@redhat.com>
        
        * === Released 2.7.2 ===
index 3014b3a..b48dc58 100644 (file)
@@ -316,7 +316,9 @@ g_option_context_add_main_entries() or g_option_group_add_entries().
   specify the option as 
   --<replaceable>groupname</replaceable>-<replaceable>long_name</replaceable>.
 @short_name: If an option has a short name, it can be specified
-  -<replaceable>short_name</replaceable> in a commandline.
+  -<replaceable>short_name</replaceable> in a commandline. @short_name must be 
+  a printable ASCII character different from '-', or zero if the option has no
+  short name.
 @flags: Flags from #GOptionFlags.
 @arg: The type of the option, as a #GOptionArg.
 @arg_data:  If the @arg type is %G_OPTION_ARG_CALLBACK, then @arg_data must 
index b0536e2..378e7a1 100644 (file)
@@ -1649,16 +1649,30 @@ void
 g_option_group_add_entries (GOptionGroup       *group,
                            const GOptionEntry *entries)
 {
-  gint n_entries;
+  gint i, n_entries;
   
   g_return_if_fail (entries != NULL);
 
-  for (n_entries = 0; entries[n_entries].long_name != NULL; n_entries++);
+  for (n_entries = 0; entries[n_entries].long_name != NULL; n_entries++) ;
 
   group->entries = g_renew (GOptionEntry, group->entries, group->n_entries + n_entries);
 
   memcpy (group->entries + group->n_entries, entries, sizeof (GOptionEntry) * n_entries);
 
+  for (i = group->n_entries; i < group->n_entries + n_entries; i++)
+    {
+      gchar c = group->entries[i].short_name;
+
+      if (c)
+       {
+         if (c == '-' || !g_ascii_isprint (c))
+           {
+             g_warning (G_STRLOC": ignoring invalid short option '%c' (%d)", c, c);
+             group->entries[i].short_name = 0;
+           }
+       }
+    }
+
   group->n_entries += n_entries;
 }