mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-05 19:18:00 +02:00
config: refactor read_entire_config() to merge command line options
This commit is contained in:
parent
4429f8aea5
commit
64520b7ba4
1 changed files with 34 additions and 27 deletions
|
|
@ -646,6 +646,7 @@ read_entire_config (const NMConfigCmdLineOptions *cli,
|
||||||
guint i;
|
guint i;
|
||||||
char *o_config_main_file = NULL;
|
char *o_config_main_file = NULL;
|
||||||
char *o_config_description = NULL;
|
char *o_config_description = NULL;
|
||||||
|
char **plugins_tmp;
|
||||||
|
|
||||||
g_return_val_if_fail (config_dir, NULL);
|
g_return_val_if_fail (config_dir, NULL);
|
||||||
g_return_val_if_fail (out_config_main_file && !*out_config_main_file, FALSE);
|
g_return_val_if_fail (out_config_main_file && !*out_config_main_file, FALSE);
|
||||||
|
|
@ -665,19 +666,35 @@ read_entire_config (const NMConfigCmdLineOptions *cli,
|
||||||
for (i = 0; i < confs->len; i++) {
|
for (i = 0; i < confs->len; i++) {
|
||||||
if (!read_config (keyfile, confs->pdata[i], error)) {
|
if (!read_config (keyfile, confs->pdata[i], error)) {
|
||||||
g_key_file_free (keyfile);
|
g_key_file_free (keyfile);
|
||||||
keyfile = NULL;
|
g_free (o_config_main_file);
|
||||||
break;
|
g_free (o_config_description);
|
||||||
|
g_ptr_array_unref (confs);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_ptr_array_unref (confs);
|
g_ptr_array_unref (confs);
|
||||||
|
|
||||||
if (keyfile) {
|
/* Merge settings from command line. They overwrite everything read from
|
||||||
*out_config_main_file = o_config_main_file;
|
* config files. */
|
||||||
*out_config_description = o_config_description;
|
|
||||||
} else {
|
if (cli && cli->plugins && cli->plugins[0])
|
||||||
g_free (o_config_main_file);
|
g_key_file_set_value (keyfile, "main", "plugins", cli->plugins);
|
||||||
g_free (o_config_description);
|
plugins_tmp = g_key_file_get_string_list (keyfile, "main", "plugins", NULL, NULL);
|
||||||
}
|
if (!plugins_tmp) {
|
||||||
|
if (STRLEN (CONFIG_PLUGINS_DEFAULT) > 0)
|
||||||
|
g_key_file_set_value (keyfile, "main", "plugins", CONFIG_PLUGINS_DEFAULT);
|
||||||
|
} else
|
||||||
|
g_strfreev (plugins_tmp);
|
||||||
|
|
||||||
|
if (cli && cli->connectivity_uri && cli->connectivity_uri[0])
|
||||||
|
g_key_file_set_value (keyfile, "connectivity", "uri", cli->connectivity_uri);
|
||||||
|
if (cli && cli->connectivity_interval >= 0)
|
||||||
|
g_key_file_set_integer (keyfile, "connectivity", "interval", cli->connectivity_interval);
|
||||||
|
if (cli && cli->connectivity_response && cli->connectivity_response[0])
|
||||||
|
g_key_file_set_value (keyfile, "connectivity", "response", cli->connectivity_response);
|
||||||
|
|
||||||
|
*out_config_main_file = o_config_main_file;
|
||||||
|
*out_config_description = o_config_description;
|
||||||
return keyfile;
|
return keyfile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -793,7 +810,8 @@ nm_config_new (const NMConfigCmdLineOptions *cli, GError **error)
|
||||||
g_key_file_free (priv->keyfile);
|
g_key_file_free (priv->keyfile);
|
||||||
priv->keyfile = keyfile;
|
priv->keyfile = keyfile;
|
||||||
|
|
||||||
/* Handle no-auto-default key and state file */
|
/* Initialize read only private members */
|
||||||
|
|
||||||
priv->no_auto_default = g_key_file_get_string_list (priv->keyfile, "main", "no-auto-default", NULL, NULL);
|
priv->no_auto_default = g_key_file_get_string_list (priv->keyfile, "main", "no-auto-default", NULL, NULL);
|
||||||
if (priv->cli.no_auto_default_file)
|
if (priv->cli.no_auto_default_file)
|
||||||
priv->no_auto_default_file = g_strdup (priv->cli.no_auto_default_file);
|
priv->no_auto_default_file = g_strdup (priv->cli.no_auto_default_file);
|
||||||
|
|
@ -801,12 +819,9 @@ nm_config_new (const NMConfigCmdLineOptions *cli, GError **error)
|
||||||
priv->no_auto_default_file = g_strdup (NM_NO_AUTO_DEFAULT_STATE_FILE);
|
priv->no_auto_default_file = g_strdup (NM_NO_AUTO_DEFAULT_STATE_FILE);
|
||||||
merge_no_auto_default_state (self);
|
merge_no_auto_default_state (self);
|
||||||
|
|
||||||
/* Now let command-line options override the config files, and fill in priv. */
|
|
||||||
if (priv->cli.plugins && priv->cli.plugins[0])
|
|
||||||
g_key_file_set_value (priv->keyfile, "main", "plugins", priv->cli.plugins);
|
|
||||||
priv->plugins = g_key_file_get_string_list (priv->keyfile, "main", "plugins", NULL, NULL);
|
priv->plugins = g_key_file_get_string_list (priv->keyfile, "main", "plugins", NULL, NULL);
|
||||||
if (!priv->plugins && STRLEN (CONFIG_PLUGINS_DEFAULT) > 0)
|
if (!priv->plugins)
|
||||||
priv->plugins = g_strsplit (CONFIG_PLUGINS_DEFAULT, ",", -1);
|
priv->plugins = g_new0 (char *, 1);
|
||||||
|
|
||||||
priv->monitor_connection_files = _get_bool_value (priv->keyfile, "main", "monitor-connection-files", FALSE);
|
priv->monitor_connection_files = _get_bool_value (priv->keyfile, "main", "monitor-connection-files", FALSE);
|
||||||
|
|
||||||
|
|
@ -820,22 +835,14 @@ nm_config_new (const NMConfigCmdLineOptions *cli, GError **error)
|
||||||
|
|
||||||
priv->debug = g_key_file_get_value (priv->keyfile, "main", "debug", NULL);
|
priv->debug = g_key_file_get_value (priv->keyfile, "main", "debug", NULL);
|
||||||
|
|
||||||
if (priv->cli.connectivity_uri && priv->cli.connectivity_uri[0])
|
|
||||||
g_key_file_set_value (priv->keyfile, "connectivity", "uri", priv->cli.connectivity_uri);
|
|
||||||
connectivity_uri = g_key_file_get_value (priv->keyfile, "connectivity", "uri", NULL);
|
|
||||||
|
|
||||||
if (priv->cli.connectivity_interval >= 0)
|
|
||||||
g_key_file_set_integer (priv->keyfile, "connectivity", "interval", priv->cli.connectivity_interval);
|
|
||||||
connectivity_interval = g_key_file_get_integer (priv->keyfile, "connectivity", "interval", NULL);
|
|
||||||
|
|
||||||
if (priv->cli.connectivity_response && priv->cli.connectivity_response[0])
|
|
||||||
g_key_file_set_value (priv->keyfile, "connectivity", "response", priv->cli.connectivity_response);
|
|
||||||
connectivity_response = g_key_file_get_value (priv->keyfile, "connectivity", "response", NULL);
|
|
||||||
|
|
||||||
priv->ignore_carrier = g_key_file_get_string_list (priv->keyfile, "main", "ignore-carrier", NULL, NULL);
|
priv->ignore_carrier = g_key_file_get_string_list (priv->keyfile, "main", "ignore-carrier", NULL, NULL);
|
||||||
|
|
||||||
priv->configure_and_quit = _get_bool_value (priv->keyfile, "main", "configure-and-quit", FALSE);
|
priv->configure_and_quit = _get_bool_value (priv->keyfile, "main", "configure-and-quit", FALSE);
|
||||||
|
|
||||||
|
connectivity_uri = g_key_file_get_value (priv->keyfile, "connectivity", "uri", NULL);
|
||||||
|
connectivity_interval = g_key_file_get_integer (priv->keyfile, "connectivity", "interval", NULL);
|
||||||
|
connectivity_response = g_key_file_get_value (priv->keyfile, "connectivity", "response", NULL);
|
||||||
|
|
||||||
priv->config_data = g_object_new (NM_TYPE_CONFIG_DATA,
|
priv->config_data = g_object_new (NM_TYPE_CONFIG_DATA,
|
||||||
NM_CONFIG_DATA_CONNECTIVITY_URI, connectivity_uri,
|
NM_CONFIG_DATA_CONNECTIVITY_URI, connectivity_uri,
|
||||||
NM_CONFIG_DATA_CONNECTIVITY_INTERVAL, connectivity_interval,
|
NM_CONFIG_DATA_CONNECTIVITY_INTERVAL, connectivity_interval,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue