diff -urN glib-2.28.8-orig/glib/goption.c glib-2.28.8/glib/goption.c --- glib-2.28.8-orig/glib/goption.c 2011-06-06 08:18:49 +0900 +++ glib-2.28.8/glib/goption.c 2011-06-29 22:00:34 +0900 @@ -2129,7 +2129,11 @@ 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 type %d", group->entries[i].flags, group->entries[i].arg); + 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 type %d", group->entries[i].flags, group->entries[i].arg); + } group->entries[i].flags &= ~(G_OPTION_FLAG_NO_ARG|G_OPTION_FLAG_OPTIONAL_ARG|G_OPTION_FLAG_FILENAME); }