From: Anders Carlsson Date: Sun, 3 Oct 2004 19:34:19 +0000 (+0000) Subject: Set arg_data on filenames. (Discovered by Mats-Ola Persson). X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=a515025deeab11eb9cc8c419df19b786752aa590;p=dana%2Fcg-glib.git Set arg_data on filenames. (Discovered by Mats-Ola Persson). 2004-10-03 Anders Carlsson * glib/goption.c: (parse_arg): Set arg_data on filenames. (Discovered by Mats-Ola Persson). * tests/option-test.c: (arg_test3), (ignore_test3), (main): Add test for filename args. --- diff --git a/ChangeLog b/ChangeLog index 07720e9e..9a1078b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-10-03 Anders Carlsson + + * glib/goption.c: (parse_arg): + Set arg_data on filenames. (Discovered by Mats-Ola Persson). + + * tests/option-test.c: (arg_test3), (ignore_test3), (main): + Add test for filename args. + 2004-10-01 Tor Lillqvist * glib/goption.c (g_option_context_parse): Use diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 07720e9e..9a1078b7 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,11 @@ +2004-10-03 Anders Carlsson + + * glib/goption.c: (parse_arg): + Set arg_data on filenames. (Discovered by Mats-Ola Persson). + + * tests/option-test.c: (arg_test3), (ignore_test3), (main): + Add test for filename args. + 2004-10-01 Tor Lillqvist * glib/goption.c (g_option_context_parse): Use diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 07720e9e..9a1078b7 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,11 @@ +2004-10-03 Anders Carlsson + + * glib/goption.c: (parse_arg): + Set arg_data on filenames. (Discovered by Mats-Ola Persson). + + * tests/option-test.c: (arg_test3), (ignore_test3), (main): + Add test for filename args. + 2004-10-01 Tor Lillqvist * glib/goption.c (g_option_context_parse): Use diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 07720e9e..9a1078b7 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,11 @@ +2004-10-03 Anders Carlsson + + * glib/goption.c: (parse_arg): + Set arg_data on filenames. (Discovered by Mats-Ola Persson). + + * tests/option-test.c: (arg_test3), (ignore_test3), (main): + Add test for filename args. + 2004-10-01 Tor Lillqvist * glib/goption.c (g_option_context_parse): Use diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 07720e9e..9a1078b7 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,11 @@ +2004-10-03 Anders Carlsson + + * glib/goption.c: (parse_arg): + Set arg_data on filenames. (Discovered by Mats-Ola Persson). + + * tests/option-test.c: (arg_test3), (ignore_test3), (main): + Add test for filename args. + 2004-10-01 Tor Lillqvist * glib/goption.c (g_option_context_parse): Use diff --git a/glib/goption.c b/glib/goption.c index 3682b019..18685058 100644 --- a/glib/goption.c +++ b/glib/goption.c @@ -542,6 +542,7 @@ parse_arg (GOptionContext *context, change->prev.str = *(gchar **)entry->arg_data; change->allocated.str = data; + *(gchar **)entry->arg_data = data; break; } diff --git a/tests/option-test.c b/tests/option-test.c index 08a4f92c..d08b2238 100644 --- a/tests/option-test.c +++ b/tests/option-test.c @@ -8,6 +8,7 @@ gboolean error_test3_boolean; int arg_test1_int; gchar *arg_test2_string; +gchar *arg_test3_filename; gchar **array_test1_array; @@ -294,6 +295,36 @@ arg_test2 (void) g_option_context_free (context); } +void +arg_test3 (void) +{ + GOptionContext *context; + gboolean retval; + GError *error = NULL; + gchar **argv; + int argc; + GOptionEntry entries [] = + { { "test", 0, 0, G_OPTION_ARG_FILENAME, &arg_test3_filename, 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 foo.txt", &argc); + + retval = g_option_context_parse (context, &argc, &argv, &error); + g_assert (retval); + + /* Last arg specified is the one that should be stored */ + g_assert (strcmp (arg_test3_filename, "foo.txt") == 0); + + g_free (arg_test3_filename); + + g_strfreev (argv); + g_option_context_free (context); +} + void ignore_test1 (void) { @@ -391,24 +422,6 @@ ignore_test3 (void) 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); @@ -509,6 +522,7 @@ main (int argc, char **argv) /* Test that special argument parsing works */ arg_test1 (); arg_test2 (); + arg_test3 (); /* Test string arrays */ array_test1 ();