[Glib] parser plusieurs arguments
Bonjour à toutes et à tous.
Je viens vers vous pour un petit souci d'utilisation de GOptionContext*.
Je désire parser la ligne de commande dont certaines options attentent plusieurs arguments. J'ai donc déclaré entre autres options ceci :
Code:
1 2 3
| ...
static gchar **context_viewport = NULL;
... |
Puis, dans le GOption Entry :
Code:
1 2 3 4 5 6
| static GOptionEntry entries[] =
{
...
{"viewport", 0, 0, G_OPTION_ARG_CALLBACK, (GOptionArgFunc*)callback_viewport, "Set the viewport for the current graph", "xmin ymin xmax ymax"},
{NULL}
}; |
J'ai initialisé tout ce petit monde comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #ifdef G_OS_WIN32
args = g_win32_get_command_line ();
#else
args = g_strdupv (argv);
#endif
context = g_option_context_new ("");
g_option_context_add_main_entries (context, entries, NULL);
g_option_context_add_group (context, gtk_get_option_group (TRUE));
if (!g_option_context_parse_strv (context, &args, &error))
{
g_printerr ("option parsing failed: %s\n", error->message);
g_error_free (error);
g_strfreev (args);
exit (1);
}
g_strfreev (args); |
Pour finir voici le callback associé à "--viewport" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| static gboolean
callback_viewport (const gchar *option_name, const gchar *value, gpointer data, GError **error)
{
if (*error)
{
g_printerr ("callback viewport error : %s\n", (*error)->message);
g_error_free (*error);
return FALSE;
}
g_printerr ("callback viewport : %s, %s\n", option_name, value);
return TRUE;
} |
Tout fonctionne correctement sauf que je désire, comme vous pouvez le voir dans la description des arguments à transmettre à "--viewport" quatre arguments. Si j'écris ceci en ligne de commande je n'obtiens que le premier argument.
Code:
1 2 3
| ./test --viewport 12 34 56 78
callback viewport : --viewport, 12 |
Comment faire pour récupérer tout ce petit monde ?
En vous remerciant par avance,
Gérald