This patch adds support for specifying a main configuration file
different from the default value of /etc/connman/main.conf. This
is valuable during debug to specify alternate debug-only
configurations.
---
 Makefile.am |    3 ++-
 src/main.c  |   23 ++++++++++++++++++-----
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index ca0cf0b..ce505b6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -119,7 +119,8 @@ AM_CFLAGS = @DBUS_CFLAGS@ @GLIB_CFLAGS@ @XTABLES_CFLAGS@ \
                                -DPLUGINDIR=\""$(build_plugindir)"\" \
                                -DSCRIPTDIR=\""$(build_scriptdir)"\" \
                                -DSTORAGEDIR=\""$(storagedir)\"" \
-                               -DCONFIGDIR=\""$(configdir)\""
+                               -DCONFIGDIR=\""$(configdir)\"" \
+                               -DCONFIGMAINFILE=\""$(configdir)/main.conf"\"
 
 INCLUDES = -I$(builddir)/include -I$(builddir)/src -I$(srcdir)/gdbus
 
diff --git a/src/main.c b/src/main.c
index 5c206e7..b0045d7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -324,6 +324,7 @@ static void disconnect_callback(DBusConnection *conn, void 
*user_data)
 
 static gchar *option_debug = NULL;
 static gchar *option_device = NULL;
+static gchar *option_file = NULL;
 static gchar *option_plugin = NULL;
 static gchar *option_nodevice = NULL;
 static gchar *option_noplugin = NULL;
@@ -333,6 +334,18 @@ static gboolean option_dnsproxy = TRUE;
 static gboolean option_compat = FALSE;
 static gboolean option_version = FALSE;
 
+static int conf_init(const char *file)
+{
+       GKeyFile *config;
+
+       config = load_config(file);
+       parse_config(config);
+       if (config != NULL)
+               g_key_file_free(config);
+
+       return 0;
+}
+
 static gboolean parse_debug(const char *key, const char *value,
                                        gpointer user_data, GError **error)
 {
@@ -350,6 +363,9 @@ static GOptionEntry options[] = {
                                "Specify debug options to enable", "DEBUG" },
        { "device", 'i', 0, G_OPTION_ARG_STRING, &option_device,
                        "Specify networking device or interface", "DEV" },
+       { "file", 'f', 0, G_OPTION_ARG_STRING, &option_file,
+                               "Load the specified configuration file "
+                               "instead of " CONFIGMAINFILE, "FILE" },
        { "nodevice", 'I', 0, G_OPTION_ARG_STRING, &option_nodevice,
                        "Specify networking interface to ignore", "DEV" },
        { "plugin", 'p', 0, G_OPTION_ARG_STRING, &option_plugin,
@@ -430,7 +446,6 @@ int main(int argc, char *argv[])
        GError *error = NULL;
        DBusConnection *conn;
        DBusError err;
-       GKeyFile *config;
        guint signal;
 
 #ifdef NEED_THREADS
@@ -507,10 +522,7 @@ int main(int argc, char *argv[])
 
        __connman_dbus_init(conn);
 
-       config = load_config(CONFIGDIR "/main.conf");
-       parse_config(config);
-       if (config != NULL)
-               g_key_file_free(config);
+       conf_init(option_file ? option_file : CONFIGMAINFILE);
 
        __connman_storage_migrate();
        __connman_technology_init();
@@ -551,6 +563,7 @@ int main(int argc, char *argv[])
        __connman_rfkill_init();
 
        g_free(option_device);
+       g_free(option_file);
        g_free(option_plugin);
        g_free(option_nodevice);
        g_free(option_noplugin);
-- 
1.7.10

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to