mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-09-20 01:06:15 +02:00
Make GOption remove long options completely. (#153113, Robert Ögren)
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.
This commit is contained in:
parent
2022eaf0ab
commit
08fe920a50
@ -1,3 +1,12 @@
|
||||
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
|
||||
|
@ -1,3 +1,12 @@
|
||||
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
|
||||
|
@ -1,3 +1,12 @@
|
||||
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
|
||||
|
@ -1,3 +1,12 @@
|
||||
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
|
||||
|
@ -1,3 +1,12 @@
|
||||
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
|
||||
|
@ -711,7 +711,7 @@ parse_long_option (GOptionContext *context,
|
||||
gchar *value = NULL;
|
||||
gchar *option_name;
|
||||
|
||||
add_pending_null (context, &((*argv)[*index + 1]), NULL);
|
||||
add_pending_null (context, &((*argv)[*index]), NULL);
|
||||
|
||||
if (arg[len] == '=')
|
||||
value = arg + len + 1;
|
||||
|
@ -13,6 +13,7 @@ gchar **array_test1_array;
|
||||
|
||||
gboolean ignore_test1_boolean;
|
||||
gboolean ignore_test2_boolean;
|
||||
gchar *ignore_test3_string;
|
||||
|
||||
gchar **
|
||||
split_string (const char *str, int *argc)
|
||||
@ -359,6 +360,61 @@ ignore_test2 (void)
|
||||
g_option_context_free (context);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
@ -460,6 +516,7 @@ main (int argc, char **argv)
|
||||
/* Test ignoring options */
|
||||
ignore_test1 ();
|
||||
ignore_test2 ();
|
||||
ignore_test3 ();
|
||||
|
||||
add_test1 ();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user