+2005-05-27 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/goption.c (parse_short_option, parse_long_option):
+ Return an error if an option is missing its argument. (#305576,
+ Björn Lindqvist)
+
+ * tests/option-test.c (missing_arg_test): Add a testcase.
+
Wed May 25 15:33:51 2005 Manish Singh <yosh@gimp.org>
* glib/goption.c (print_help): rest_description should be const.
+2005-05-27 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/goption.c (parse_short_option, parse_long_option):
+ Return an error if an option is missing its argument. (#305576,
+ Björn Lindqvist)
+
+ * tests/option-test.c (missing_arg_test): Add a testcase.
+
Wed May 25 15:33:51 2005 Manish Singh <yosh@gimp.org>
* glib/goption.c (print_help): rest_description should be const.
+2005-05-27 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/goption.c (parse_short_option, parse_long_option):
+ Return an error if an option is missing its argument. (#305576,
+ Björn Lindqvist)
+
+ * tests/option-test.c (missing_arg_test): Add a testcase.
+
Wed May 25 15:33:51 2005 Manish Singh <yosh@gimp.org>
* glib/goption.c (print_help): rest_description should be const.
+2005-05-27 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/goption.c (parse_short_option, parse_long_option):
+ Return an error if an option is missing its argument. (#305576,
+ Björn Lindqvist)
+
+ * tests/option-test.c (missing_arg_test): Add a testcase.
+
Wed May 25 15:33:51 2005 Manish Singh <yosh@gimp.org>
* glib/goption.c (print_help): rest_description should be const.
*new_index = index + 1;
}
else
- value = "";
-
+ {
+ g_set_error (error,
+ G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE,
+ _("Missing argument for %s"), option_name);
+ g_free (option_name);
+ return FALSE;
+ }
option_name = g_strdup_printf ("-%c", group->entries[j].short_name);
gchar *option_name;
add_pending_null (context, &((*argv)[*index]), NULL);
-
+ option_name = g_strconcat ("--", group->entries[j].long_name, NULL);
+
if (arg[len] == '=')
value = arg + len + 1;
else if (*index < *argc - 1)
(*index)++;
}
else
- value = "";
+ {
+ g_set_error (error,
+ G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE,
+ _("Missing argument for %s"), option_name);
+ g_free (option_name);
+ return FALSE;
+ }
- option_name = g_strconcat ("--", group->entries[j].long_name, NULL);
-
if (!parse_arg (context, group, &group->entries[j], value, option_name, error))
{
g_free (option_name);
g_option_context_free (context);
}
+void
+missing_arg_test (void)
+{
+ GOptionContext *context;
+ gboolean retval;
+ GError *error = NULL;
+ gchar **argv;
+ int argc;
+ gchar *arg = NULL;
+ GOptionEntry entries [] =
+ { { "test", 't', 0, G_OPTION_ARG_STRING, &arg, NULL, NULL },
+ { NULL } };
+
+ context = g_option_context_new (NULL);
+ g_option_context_add_main_entries (context, entries, NULL);
+
+ /* Now try parsing */
+ argv = split_string ("program --test", &argc);
+
+ retval = g_option_context_parse (context, &argc, &argv, &error);
+ g_assert (retval == FALSE);
+ g_clear_error (&error);
+
+ g_strfreev (argv);
+
+ /* Try parsing again */
+ argv = split_string ("program --t", &argc);
+
+ retval = g_option_context_parse (context, &argc, &argv, &error);
+ g_assert (retval == FALSE);
+
+ g_strfreev (argv);
+ g_option_context_free (context);
+}
+
int
main (int argc, char **argv)
{
/* test for bug 168008 */
lonely_dash_test ();
+ /* test for bug 305576 */
+ missing_arg_test ();
+
return 0;
}