mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-09 07:08:02 +02:00
keyfile: add NMKeyfileHandlerFlags
nm_keyfile_read() and nm_keyfile_write() will be public API. As such, it must be flexible and extendible for future needs. There is already the handler callback that fully solves this (e.g. a future handler event could request whether a certain behavior is enabled or not). As additional possibility for future extension, add a flags argument. Currently no flags are implemented.
This commit is contained in:
parent
00b3a3505a
commit
e2f83d4e92
8 changed files with 29 additions and 14 deletions
|
|
@ -143,7 +143,7 @@ _nm_keyfile_write (NMConnection *connection,
|
||||||
|
|
||||||
g_assert (NM_IS_CONNECTION (connection));
|
g_assert (NM_IS_CONNECTION (connection));
|
||||||
|
|
||||||
kf = nm_keyfile_write (connection, handler, user_data, &error);
|
kf = nm_keyfile_write (connection, NM_KEYFILE_HANDLER_FLAGS_NONE, handler, user_data, &error);
|
||||||
g_assert_no_error (error);
|
g_assert_no_error (error);
|
||||||
g_assert (kf);
|
g_assert (kf);
|
||||||
return kf;
|
return kf;
|
||||||
|
|
@ -167,7 +167,7 @@ _nm_keyfile_read (GKeyFile *keyfile,
|
||||||
base_dir = g_path_get_dirname (keyfile_name);
|
base_dir = g_path_get_dirname (keyfile_name);
|
||||||
filename = g_path_get_basename (keyfile_name);
|
filename = g_path_get_basename (keyfile_name);
|
||||||
|
|
||||||
con = nm_keyfile_read (keyfile, base_dir, read_handler, read_data, &error);
|
con = nm_keyfile_read (keyfile, base_dir, NM_KEYFILE_HANDLER_FLAGS_NONE, read_handler, read_data, &error);
|
||||||
g_assert_no_error (error);
|
g_assert_no_error (error);
|
||||||
g_assert (NM_IS_CONNECTION (con));
|
g_assert (NM_IS_CONNECTION (con));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1593,11 +1593,12 @@ test_ethtool_features (void)
|
||||||
|
|
||||||
nmtst_assert_connection_equals (con, FALSE, con2, FALSE);
|
nmtst_assert_connection_equals (con, FALSE, con2, FALSE);
|
||||||
|
|
||||||
keyfile = nm_keyfile_write (con, NULL, NULL, &error);
|
keyfile = nm_keyfile_write (con, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, &error);
|
||||||
nmtst_assert_success (keyfile, error);
|
nmtst_assert_success (keyfile, error);
|
||||||
|
|
||||||
con3 = nm_keyfile_read (keyfile,
|
con3 = nm_keyfile_read (keyfile,
|
||||||
"/ignored/current/working/directory/for/loading/relative/paths",
|
"/ignored/current/working/directory/for/loading/relative/paths",
|
||||||
|
NM_KEYFILE_HANDLER_FLAGS_NONE,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
&error);
|
&error);
|
||||||
|
|
@ -1662,11 +1663,12 @@ test_ethtool_coalesce (void)
|
||||||
|
|
||||||
nmtst_assert_connection_equals (con, FALSE, con2, FALSE);
|
nmtst_assert_connection_equals (con, FALSE, con2, FALSE);
|
||||||
|
|
||||||
keyfile = nm_keyfile_write (con, NULL, NULL, &error);
|
keyfile = nm_keyfile_write (con, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, &error);
|
||||||
nmtst_assert_success (keyfile, error);
|
nmtst_assert_success (keyfile, error);
|
||||||
|
|
||||||
con3 = nm_keyfile_read (keyfile,
|
con3 = nm_keyfile_read (keyfile,
|
||||||
"/ignored/current/working/directory/for/loading/relative/paths",
|
"/ignored/current/working/directory/for/loading/relative/paths",
|
||||||
|
NM_KEYFILE_HANDLER_FLAGS_NONE,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
&error);
|
&error);
|
||||||
|
|
@ -1746,11 +1748,12 @@ test_ethtool_ring (void)
|
||||||
|
|
||||||
nmtst_assert_connection_equals (con, FALSE, con2, FALSE);
|
nmtst_assert_connection_equals (con, FALSE, con2, FALSE);
|
||||||
|
|
||||||
keyfile = nm_keyfile_write (con, NULL, NULL, &error);
|
keyfile = nm_keyfile_write (con, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, &error);
|
||||||
nmtst_assert_success (keyfile, error);
|
nmtst_assert_success (keyfile, error);
|
||||||
|
|
||||||
con3 = nm_keyfile_read (keyfile,
|
con3 = nm_keyfile_read (keyfile,
|
||||||
"/ignored/current/working/directory/for/loading/relative/paths",
|
"/ignored/current/working/directory/for/loading/relative/paths",
|
||||||
|
NM_KEYFILE_HANDLER_FLAGS_NONE,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
&error);
|
&error);
|
||||||
|
|
@ -3266,7 +3269,7 @@ test_roundtrip_conversion (gconstpointer test_data)
|
||||||
{
|
{
|
||||||
gs_unref_keyfile GKeyFile *kf = NULL;
|
gs_unref_keyfile GKeyFile *kf = NULL;
|
||||||
|
|
||||||
kf = nm_keyfile_write (con, NULL, NULL, &error);
|
kf = nm_keyfile_write (con, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, &error);
|
||||||
nmtst_assert_success (kf, error);
|
nmtst_assert_success (kf, error);
|
||||||
|
|
||||||
/* the first kf_data_arr entry is special: it must be what the writer would
|
/* the first kf_data_arr entry is special: it must be what the writer would
|
||||||
|
|
@ -3361,7 +3364,7 @@ test_roundtrip_conversion (gconstpointer test_data)
|
||||||
{
|
{
|
||||||
gs_unref_keyfile GKeyFile *kf = NULL;
|
gs_unref_keyfile GKeyFile *kf = NULL;
|
||||||
|
|
||||||
kf = nm_keyfile_write (con2, NULL, NULL, &error);
|
kf = nm_keyfile_write (con2, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, &error);
|
||||||
nmtst_assert_success (kf, error);
|
nmtst_assert_success (kf, error);
|
||||||
nmtst_keyfile_assert_data (kf, kf_data_arr->pdata[0], -1);
|
nmtst_keyfile_assert_data (kf, kf_data_arr->pdata[0], -1);
|
||||||
}
|
}
|
||||||
|
|
@ -3665,7 +3668,7 @@ test_empty_setting (void)
|
||||||
|
|
||||||
nmtst_assert_connection_verifies_without_normalization (con);
|
nmtst_assert_connection_verifies_without_normalization (con);
|
||||||
|
|
||||||
kf = nm_keyfile_write (con, NULL, NULL, &error);
|
kf = nm_keyfile_write (con, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, &error);
|
||||||
nmtst_assert_success (kf, error);
|
nmtst_assert_success (kf, error);
|
||||||
|
|
||||||
g_assert (g_key_file_has_group (kf, "gsm"));
|
g_assert (g_key_file_has_group (kf, "gsm"));
|
||||||
|
|
@ -3673,6 +3676,7 @@ test_empty_setting (void)
|
||||||
|
|
||||||
con2 = nm_keyfile_read (kf,
|
con2 = nm_keyfile_read (kf,
|
||||||
"/ignored/current/working/directory/for/loading/relative/paths",
|
"/ignored/current/working/directory/for/loading/relative/paths",
|
||||||
|
NM_KEYFILE_HANDLER_FLAGS_NONE,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
&error);
|
&error);
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,10 @@ char *nm_keyfile_detect_unqualified_path_scheme (const char *base_dir,
|
||||||
gboolean consider_exists,
|
gboolean consider_exists,
|
||||||
gboolean *out_exists);
|
gboolean *out_exists);
|
||||||
|
|
||||||
|
typedef enum { /*< flags >*/
|
||||||
|
NM_KEYFILE_HANDLER_FLAGS_NONE = 0,
|
||||||
|
} NMKeyfileHandlerFlags;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
NM_KEYFILE_HANDLER_TYPE_WARN = 1,
|
NM_KEYFILE_HANDLER_TYPE_WARN = 1,
|
||||||
NM_KEYFILE_HANDLER_TYPE_WRITE_CERT = 2,
|
NM_KEYFILE_HANDLER_TYPE_WRITE_CERT = 2,
|
||||||
|
|
@ -63,6 +67,7 @@ typedef enum {
|
||||||
|
|
||||||
NMConnection *nm_keyfile_read (GKeyFile *keyfile,
|
NMConnection *nm_keyfile_read (GKeyFile *keyfile,
|
||||||
const char *base_dir,
|
const char *base_dir,
|
||||||
|
NMKeyfileHandlerFlags handler_flags,
|
||||||
NMKeyfileReadHandler handler,
|
NMKeyfileReadHandler handler,
|
||||||
void *user_data,
|
void *user_data,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
@ -105,6 +110,7 @@ typedef gboolean (*NMKeyfileWriteHandler) (NMConnection *connection,
|
||||||
void *user_data);
|
void *user_data);
|
||||||
|
|
||||||
GKeyFile *nm_keyfile_write (NMConnection *connection,
|
GKeyFile *nm_keyfile_write (NMConnection *connection,
|
||||||
|
NMKeyfileHandlerFlags handler_flags,
|
||||||
NMKeyfileWriteHandler handler,
|
NMKeyfileWriteHandler handler,
|
||||||
void *user_data,
|
void *user_data,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
|
||||||
|
|
@ -3758,6 +3758,7 @@ nm_keyfile_read_ensure_uuid (NMConnection *connection,
|
||||||
* @base_dir: when reading certificates from files with relative name,
|
* @base_dir: when reading certificates from files with relative name,
|
||||||
* the relative path is made absolute using @base_dir. This must
|
* the relative path is made absolute using @base_dir. This must
|
||||||
* be an absolute path.
|
* be an absolute path.
|
||||||
|
* @handler_flags: the #NMKeyfileHandlerFlags.
|
||||||
* @handler: read handler
|
* @handler: read handler
|
||||||
* @user_data: user data for read handler
|
* @user_data: user data for read handler
|
||||||
* @error: error
|
* @error: error
|
||||||
|
|
@ -3770,6 +3771,7 @@ nm_keyfile_read_ensure_uuid (NMConnection *connection,
|
||||||
NMConnection *
|
NMConnection *
|
||||||
nm_keyfile_read (GKeyFile *keyfile,
|
nm_keyfile_read (GKeyFile *keyfile,
|
||||||
const char *base_dir,
|
const char *base_dir,
|
||||||
|
NMKeyfileHandlerFlags handler_flags,
|
||||||
NMKeyfileReadHandler handler,
|
NMKeyfileReadHandler handler,
|
||||||
void *user_data,
|
void *user_data,
|
||||||
GError **error)
|
GError **error)
|
||||||
|
|
@ -3785,6 +3787,7 @@ nm_keyfile_read (GKeyFile *keyfile,
|
||||||
g_return_val_if_fail (keyfile, NULL);
|
g_return_val_if_fail (keyfile, NULL);
|
||||||
g_return_val_if_fail (!error || !*error, NULL);
|
g_return_val_if_fail (!error || !*error, NULL);
|
||||||
g_return_val_if_fail (base_dir && base_dir[0] == '/', NULL);
|
g_return_val_if_fail (base_dir && base_dir[0] == '/', NULL);
|
||||||
|
g_return_val_if_fail (handler_flags == NM_KEYFILE_HANDLER_FLAGS_NONE, NULL);
|
||||||
|
|
||||||
connection = nm_simple_connection_new ();
|
connection = nm_simple_connection_new ();
|
||||||
|
|
||||||
|
|
@ -4085,6 +4088,7 @@ _write_setting_wireguard (NMSetting *setting, KeyfileWriterInfo *info)
|
||||||
|
|
||||||
GKeyFile *
|
GKeyFile *
|
||||||
nm_keyfile_write (NMConnection *connection,
|
nm_keyfile_write (NMConnection *connection,
|
||||||
|
NMKeyfileHandlerFlags handler_flags,
|
||||||
NMKeyfileWriteHandler handler,
|
NMKeyfileWriteHandler handler,
|
||||||
void *user_data,
|
void *user_data,
|
||||||
GError **error)
|
GError **error)
|
||||||
|
|
@ -4096,6 +4100,7 @@ nm_keyfile_write (NMConnection *connection,
|
||||||
|
|
||||||
g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL);
|
g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL);
|
||||||
g_return_val_if_fail (!error || !*error, NULL);
|
g_return_val_if_fail (!error || !*error, NULL);
|
||||||
|
g_return_val_if_fail (handler_flags == NM_KEYFILE_HANDLER_FLAGS_NONE, NULL);
|
||||||
|
|
||||||
if (!nm_connection_verify (connection, error))
|
if (!nm_connection_verify (connection, error))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
||||||
|
|
@ -1924,8 +1924,8 @@ nmtst_assert_connection_equals (NMConnection *a, gboolean normalize_a, NMConnect
|
||||||
gs_unref_keyfile GKeyFile *kf_a = NULL, *kf_b = NULL;
|
gs_unref_keyfile GKeyFile *kf_a = NULL, *kf_b = NULL;
|
||||||
gs_free char *str_a = NULL, *str_b = NULL;
|
gs_free char *str_a = NULL, *str_b = NULL;
|
||||||
|
|
||||||
kf_a = nm_keyfile_write (a, NULL, NULL, NULL);
|
kf_a = nm_keyfile_write (a, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, NULL);
|
||||||
kf_b = nm_keyfile_write (b, NULL, NULL, NULL);
|
kf_b = nm_keyfile_write (b, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, NULL);
|
||||||
|
|
||||||
if (kf_a)
|
if (kf_a)
|
||||||
str_a = g_key_file_to_data (kf_a, NULL, NULL);
|
str_a = g_key_file_to_data (kf_a, NULL, NULL);
|
||||||
|
|
@ -2262,7 +2262,7 @@ nmtst_create_connection_from_keyfile (const char *keyfile_str, const char *full_
|
||||||
success = g_key_file_load_from_data (keyfile, keyfile_str, strlen (keyfile_str), G_KEY_FILE_NONE, &error);
|
success = g_key_file_load_from_data (keyfile, keyfile_str, strlen (keyfile_str), G_KEY_FILE_NONE, &error);
|
||||||
nmtst_assert_success (success, error);
|
nmtst_assert_success (success, error);
|
||||||
|
|
||||||
con = nm_keyfile_read (keyfile, base_dir, NULL, NULL, &error);
|
con = nm_keyfile_read (keyfile, base_dir, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, &error);
|
||||||
nmtst_assert_success (NM_IS_CONNECTION (con), error);
|
nmtst_assert_success (NM_IS_CONNECTION (con), error);
|
||||||
|
|
||||||
nm_keyfile_read_ensure_id (con, filename);
|
nm_keyfile_read_ensure_id (con, filename);
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ output_conn (gpointer key, gpointer value, gpointer user_data)
|
||||||
if (!nm_connection_normalize (connection, NULL, NULL, &error))
|
if (!nm_connection_normalize (connection, NULL, NULL, &error))
|
||||||
goto err_out;
|
goto err_out;
|
||||||
|
|
||||||
file = nm_keyfile_write (connection, NULL, NULL, &error);
|
file = nm_keyfile_write (connection, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, &error);
|
||||||
if (file == NULL)
|
if (file == NULL)
|
||||||
goto err_out;
|
goto err_out;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ nms_keyfile_reader_from_keyfile (GKeyFile *key_file,
|
||||||
filename = &s[1];
|
filename = &s[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
connection = nm_keyfile_read (key_file, base_dir, _handler_read, &read_info, error);
|
connection = nm_keyfile_read (key_file, base_dir, NM_KEYFILE_HANDLER_FLAGS_NONE, _handler_read, &read_info, error);
|
||||||
if (!connection)
|
if (!connection)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -214,7 +214,7 @@ _internal_write_connection (NMConnection *connection,
|
||||||
|
|
||||||
info.keyfile_dir = keyfile_dir;
|
info.keyfile_dir = keyfile_dir;
|
||||||
|
|
||||||
kf_file = nm_keyfile_write (connection, _handler_write, &info, error);
|
kf_file = nm_keyfile_write (connection, NM_KEYFILE_HANDLER_FLAGS_NONE, _handler_write, &info, error);
|
||||||
if (!kf_file)
|
if (!kf_file)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue