2015-05-26 13:33:36

by Szymon Janc

[permalink] [raw]
Subject: [RFC] shared/tester: Allow to pass extra options

This allows to pass custom GOptionEntry from tester. Will be useful
if tester takes non-standard arguments. void* is used to not leak
Glib API to tester API if extra options are not used.
---
src/shared/tester.c | 8 ++++++++
src/shared/tester.h | 1 +
2 files changed, 9 insertions(+)

diff --git a/src/shared/tester.c b/src/shared/tester.c
index 30857e0..6922195 100644
--- a/src/shared/tester.c
+++ b/src/shared/tester.c
@@ -784,12 +784,20 @@ static GOptionEntry options[] = {

void tester_init(int *argc, char ***argv)
{
+ tester_init_extra(argc, argv, NULL);
+}
+
+void tester_init_extra(int *argc, char ***argv, void *extra)
+{
GOptionContext *context;
GError *error = NULL;

context = g_option_context_new(NULL);
g_option_context_add_main_entries(context, options, NULL);

+ if (extra)
+ g_option_context_add_main_entries(context, extra, NULL);
+
if (g_option_context_parse(context, argc, argv, &error) == FALSE) {
if (error != NULL) {
g_printerr("%s\n", error->message);
diff --git a/src/shared/tester.h b/src/shared/tester.h
index 83ef5de..89a04a2 100644
--- a/src/shared/tester.h
+++ b/src/shared/tester.h
@@ -23,6 +23,7 @@

#include <stdbool.h>

+void tester_init_extra(int *argc, char ***argv, void *extra);
void tester_init(int *argc, char ***argv);
int tester_run(void);

--
1.9.3