diff -urN glib-2.30.3-orig/glib/goption.c glib-2.30.3/glib/goption.c
--- glib-2.30.3-orig/glib/goption.c	2012-03-12 07:19:29 +0900
+++ glib-2.30.3/glib/goption.c	2012-03-15 02:06:02 +0900
@@ -2196,8 +2196,12 @@
       if (group->entries[i].arg != G_OPTION_ARG_CALLBACK &&
           (group->entries[i].flags & (G_OPTION_FLAG_NO_ARG|G_OPTION_FLAG_OPTIONAL_ARG|G_OPTION_FLAG_FILENAME)) != 0)
         {
-          g_warning (G_STRLOC ": ignoring no-arg, optional-arg or filename flags (%d) on option of arg-type %d in entry %s:%s",
-              group->entries[i].flags, group->entries[i].arg, group->name, group->entries[i].long_name);
+          if (!(group->entries[i].arg == G_OPTION_ARG_NONE &&
+                (group->entries[i].flags & (G_OPTION_FLAG_NO_ARG|G_OPTION_FLAG_OPTIONAL_ARG|G_OPTION_FLAG_FILENAME)) == G_OPTION_FLAG_NO_ARG))
+            {
+              g_warning (G_STRLOC ": ignoring no-arg, optional-arg or filename flags (%d) on option of arg-type %d in entry %s:%s",
+                  group->entries[i].flags, group->entries[i].arg, group->name, group->entries[i].long_name);
+            }
 
           group->entries[i].flags &= ~(G_OPTION_FLAG_NO_ARG|G_OPTION_FLAG_OPTIONAL_ARG|G_OPTION_FLAG_FILENAME);
         }
