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.
---
v1: Initial submission.
v2: Incorporated feedback from Marcel about not propagating the
fully-qualified default configuration file path on the compiler
command line.
v3: Incorporated stylistic feedback from Patrik Flykt.
src/main.c | 28 +++++++++++++++++++++++-----
1 file changed, 23 insertions(+), 5 deletions(-)
diff --git a/src/main.c b/src/main.c
index 5c206e7..3baf61b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -42,6 +42,8 @@
#define DEFAULT_INPUT_REQUEST_TIMEOUT 120 * 1000
#define DEFAULT_BROWSER_LAUNCH_TIMEOUT 300 * 1000
+#define CONFIGMAINFILE CONFIGDIR "/main.conf"
+
static char *default_auto_connect[] = {
"wifi",
"ethernet",
@@ -243,6 +245,18 @@ static void parse_config(GKeyFile *config)
g_clear_error(&error);
}
+static int config_init(const char *file)
+{
+ GKeyFile *config;
+
+ config = load_config(file);
+ parse_config(config);
+ if (config != NULL)
+ g_key_file_free(config);
+
+ return 0;
+}
+
static GMainLoop *main_loop = NULL;
static unsigned int __terminated = 0;
@@ -324,6 +338,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;
@@ -350,6 +365,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 +448,6 @@ int main(int argc, char *argv[])
GError *error = NULL;
DBusConnection *conn;
DBusError err;
- GKeyFile *config;
guint signal;
#ifdef NEED_THREADS
@@ -507,10 +524,10 @@ 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);
+ if (option_file == NULL)
+ config_init(CONFIGMAINFILE);
+ else
+ config_init(option_file);
__connman_storage_migrate();
__connman_technology_init();
@@ -551,6 +568,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