+Mon Sep 20 00:13:48 2004 Matthias Clasen <maclas@gmx.de>
+
+ Make GOption remove long options completely. (#153113, Robert Ögren)
+
+ * glib/goption.c (parse_long_option): Fix a wrong index.
+
+ * tests/option-test.c (ignore_test3): Test handling of unknown
+ options some more.
+
Sun Sep 19 23:56:15 2004 Matthias Clasen <maclas@gmx.de>
* glib/goption.c (g_option_context_parse): Call error_func
gboolean ignore_test1_boolean;
gboolean ignore_test2_boolean;
+gchar *ignore_test3_string;
gchar **
split_string (const char *str, int *argc)
}
void
+ignore_test3 (void)
+{
+ GOptionContext *context;
+ gboolean retval;
+ GError *error = NULL;
+ gchar **argv, **argv_copy;
+ int argc;
+ gchar *arg;
+ GOptionEntry entries [] =
+ { { "test", 0, 0, G_OPTION_ARG_STRING, &ignore_test3_string, NULL, NULL },
+ { NULL } };
+
+ context = g_option_context_new (NULL);
+ g_option_context_set_ignore_unknown_options (context, TRUE);
+ g_option_context_add_main_entries (context, entries, NULL);
+
+ /* Now try parsing */
+ argv = split_string ("program --test foo --hello", &argc);
+ argv_copy = copy_stringv (argv, argc);
+
+ retval = g_option_context_parse (context, &argc, &argv, &error);
+ g_assert (retval);
+
+ /* Check array */
+ arg = join_stringv (argc, argv);
+ g_assert (strcmp (arg, "program --hello") == 0);
+
+ g_assert (strcmp (ignore_test3_string, "foo") == 0);
+ g_free (ignore_test3_string);
+
+ g_free (arg);
+ g_strfreev (argv_copy);
+ g_free (argv);
+
+ /* Try again */
+ argv = split_string ("program --test=foo --hello", &argc);
+ argv_copy = copy_stringv (argv, argc);
+
+ retval = g_option_context_parse (context, &argc, &argv, &error);
+ g_assert (retval);
+
+ /* Check array */
+ arg = join_stringv (argc, argv);
+ g_assert (strcmp (arg, "program --hello") == 0);
+
+ g_assert (strcmp (ignore_test3_string, "foo") == 0);
+ g_free (ignore_test3_string);
+
+ g_free (arg);
+ g_strfreev (argv_copy);
+ g_free (argv);
+ g_option_context_free (context);
+}
+
+void
array_test1 (void)
{
GOptionContext *context;
/* Test ignoring options */
ignore_test1 ();
ignore_test2 ();
+ ignore_test3 ();
add_test1 ();