mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-03-22 01:00:38 +01:00
libnm: use nm_strvarray_*() helpers for strv properties
We have many properties, and we aim that they have a small set of "types". The purpose is that we can treat similar properties (with the same type) alike. One type are "direct" strv properties. Those still require some C functions, like get-length(), clear(), add(), get-at-index(). The implementation of those functions should also be similar, so that strv properties behave similar. For that, make use of helper functions, so that little duplicate logic is there. Use some new nm_strvarray_*() functions, and unify/cleanup some code. All related to strv properties in NMSetting classes.
This commit is contained in:
parent
3435bc3011
commit
eed4a21fa3
3 changed files with 36 additions and 49 deletions
|
|
@ -881,10 +881,9 @@ nm_setting_connection_add_secondary(NMSettingConnection *setting, const char *se
|
|||
|
||||
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
||||
|
||||
if (nm_strvarray_find_first(priv->secondaries.arr, sec_uuid) >= 0)
|
||||
if (!nm_strvarray_ensure_and_add_unique(&priv->secondaries.arr, sec_uuid))
|
||||
return FALSE;
|
||||
|
||||
nm_strvarray_add(nm_strvarray_ensure(&priv->secondaries.arr), sec_uuid);
|
||||
_notify(setting, PROP_SECONDARIES);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -907,7 +906,7 @@ nm_setting_connection_remove_secondary(NMSettingConnection *setting, guint32 idx
|
|||
|
||||
g_return_if_fail(idx < nm_g_array_len(priv->secondaries.arr));
|
||||
|
||||
g_array_remove_index(priv->secondaries.arr, idx);
|
||||
nm_strvarray_remove_index(priv->secondaries.arr, idx);
|
||||
_notify(setting, PROP_SECONDARIES);
|
||||
}
|
||||
|
||||
|
|
@ -930,11 +929,11 @@ nm_setting_connection_remove_secondary_by_value(NMSettingConnection *setting, co
|
|||
|
||||
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
||||
|
||||
if (nm_strvarray_remove_first(priv->secondaries.arr, sec_uuid)) {
|
||||
_notify(setting, PROP_SECONDARIES);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
if (!nm_strvarray_remove_first(priv->secondaries.arr, sec_uuid))
|
||||
return FALSE;
|
||||
|
||||
_notify(setting, PROP_SECONDARIES);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -5385,7 +5385,7 @@ nm_setting_ip_config_add_dhcp_reject_server(NMSettingIPConfig *setting, const ch
|
|||
g_return_if_fail(server != NULL);
|
||||
priv = NM_SETTING_IP_CONFIG_GET_PRIVATE(setting);
|
||||
|
||||
nm_strvarray_add(nm_strvarray_ensure(&priv->dhcp_reject_servers), server);
|
||||
nm_strvarray_ensure_and_add(&priv->dhcp_reject_servers, server);
|
||||
_notify(setting, PROP_DHCP_REJECT_SERVERS);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ nm_setting_match_add_interface_name(NMSettingMatch *setting, const char *interfa
|
|||
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
|
||||
g_return_if_fail(interface_name);
|
||||
|
||||
nm_strvarray_add(nm_strvarray_ensure(&setting->interface_name.arr), interface_name);
|
||||
nm_strvarray_ensure_and_add(&setting->interface_name.arr, interface_name);
|
||||
_notify(setting, PROP_INTERFACE_NAME);
|
||||
}
|
||||
|
||||
|
|
@ -118,7 +118,7 @@ nm_setting_match_remove_interface_name(NMSettingMatch *setting, int idx)
|
|||
g_return_if_fail(setting->interface_name.arr && idx >= 0
|
||||
&& idx < setting->interface_name.arr->len);
|
||||
|
||||
g_array_remove_index(setting->interface_name.arr, idx);
|
||||
nm_strvarray_remove_index(setting->interface_name.arr, idx);
|
||||
_notify(setting, PROP_INTERFACE_NAME);
|
||||
}
|
||||
|
||||
|
|
@ -139,12 +139,11 @@ nm_setting_match_remove_interface_name_by_value(NMSettingMatch *setting, const c
|
|||
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
|
||||
g_return_val_if_fail(interface_name, FALSE);
|
||||
|
||||
if (nm_strvarray_remove_first(setting->interface_name.arr, interface_name)) {
|
||||
_notify(setting, PROP_INTERFACE_NAME);
|
||||
return TRUE;
|
||||
}
|
||||
if (!nm_strvarray_remove_first(setting->interface_name.arr, interface_name))
|
||||
return FALSE;
|
||||
|
||||
return FALSE;
|
||||
_notify(setting, PROP_INTERFACE_NAME);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -160,10 +159,8 @@ nm_setting_match_clear_interface_names(NMSettingMatch *setting)
|
|||
{
|
||||
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
|
||||
|
||||
if (nm_g_array_len(setting->interface_name.arr) != 0) {
|
||||
nm_clear_pointer(&setting->interface_name.arr, g_array_unref);
|
||||
if (nm_strvarray_clear(&setting->interface_name.arr))
|
||||
_notify(setting, PROP_INTERFACE_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -240,7 +237,7 @@ nm_setting_match_add_kernel_command_line(NMSettingMatch *setting, const char *ke
|
|||
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
|
||||
g_return_if_fail(kernel_command_line);
|
||||
|
||||
nm_strvarray_add(nm_strvarray_ensure(&setting->kernel_command_line.arr), kernel_command_line);
|
||||
nm_strvarray_ensure_and_add(&setting->kernel_command_line.arr, kernel_command_line);
|
||||
_notify(setting, PROP_KERNEL_COMMAND_LINE);
|
||||
}
|
||||
|
||||
|
|
@ -261,7 +258,7 @@ nm_setting_match_remove_kernel_command_line(NMSettingMatch *setting, guint idx)
|
|||
g_return_if_fail(setting->kernel_command_line.arr
|
||||
&& idx < setting->kernel_command_line.arr->len);
|
||||
|
||||
g_array_remove_index(setting->kernel_command_line.arr, idx);
|
||||
nm_strvarray_remove_index(setting->kernel_command_line.arr, idx);
|
||||
_notify(setting, PROP_KERNEL_COMMAND_LINE);
|
||||
}
|
||||
|
||||
|
|
@ -283,12 +280,11 @@ nm_setting_match_remove_kernel_command_line_by_value(NMSettingMatch *setting,
|
|||
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
|
||||
g_return_val_if_fail(kernel_command_line, FALSE);
|
||||
|
||||
if (nm_strvarray_remove_first(setting->kernel_command_line.arr, kernel_command_line)) {
|
||||
_notify(setting, PROP_KERNEL_COMMAND_LINE);
|
||||
return TRUE;
|
||||
}
|
||||
if (!nm_strvarray_remove_first(setting->kernel_command_line.arr, kernel_command_line))
|
||||
return FALSE;
|
||||
|
||||
return FALSE;
|
||||
_notify(setting, PROP_KERNEL_COMMAND_LINE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -304,10 +300,8 @@ nm_setting_match_clear_kernel_command_lines(NMSettingMatch *setting)
|
|||
{
|
||||
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
|
||||
|
||||
if (nm_g_array_len(setting->kernel_command_line.arr) != 0) {
|
||||
nm_clear_pointer(&setting->kernel_command_line.arr, g_array_unref);
|
||||
if (nm_strvarray_clear(&setting->kernel_command_line.arr))
|
||||
_notify(setting, PROP_KERNEL_COMMAND_LINE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -381,7 +375,7 @@ nm_setting_match_add_driver(NMSettingMatch *setting, const char *driver)
|
|||
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
|
||||
g_return_if_fail(driver);
|
||||
|
||||
nm_strvarray_add(nm_strvarray_ensure(&setting->driver.arr), driver);
|
||||
nm_strvarray_ensure_and_add(&setting->driver.arr, driver);
|
||||
_notify(setting, PROP_DRIVER);
|
||||
}
|
||||
|
||||
|
|
@ -401,7 +395,7 @@ nm_setting_match_remove_driver(NMSettingMatch *setting, guint idx)
|
|||
|
||||
g_return_if_fail(setting->driver.arr && idx < setting->driver.arr->len);
|
||||
|
||||
g_array_remove_index(setting->driver.arr, idx);
|
||||
nm_strvarray_remove_index(setting->driver.arr, idx);
|
||||
_notify(setting, PROP_DRIVER);
|
||||
}
|
||||
|
||||
|
|
@ -422,12 +416,11 @@ nm_setting_match_remove_driver_by_value(NMSettingMatch *setting, const char *dri
|
|||
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
|
||||
g_return_val_if_fail(driver, FALSE);
|
||||
|
||||
if (nm_strvarray_remove_first(setting->driver.arr, driver)) {
|
||||
_notify(setting, PROP_DRIVER);
|
||||
return TRUE;
|
||||
}
|
||||
if (!nm_strvarray_remove_first(setting->driver.arr, driver))
|
||||
return FALSE;
|
||||
|
||||
return FALSE;
|
||||
_notify(setting, PROP_DRIVER);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -443,10 +436,8 @@ nm_setting_match_clear_drivers(NMSettingMatch *setting)
|
|||
{
|
||||
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
|
||||
|
||||
if (nm_g_array_len(setting->driver.arr) != 0) {
|
||||
nm_clear_pointer(&setting->driver.arr, g_array_unref);
|
||||
if (nm_strvarray_clear(&setting->driver.arr))
|
||||
_notify(setting, PROP_DRIVER);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -520,7 +511,7 @@ nm_setting_match_add_path(NMSettingMatch *setting, const char *path)
|
|||
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
|
||||
g_return_if_fail(path);
|
||||
|
||||
nm_strvarray_add(nm_strvarray_ensure(&setting->path.arr), path);
|
||||
nm_strvarray_ensure_and_add(&setting->path.arr, path);
|
||||
_notify(setting, PROP_PATH);
|
||||
}
|
||||
|
||||
|
|
@ -540,7 +531,7 @@ nm_setting_match_remove_path(NMSettingMatch *setting, guint idx)
|
|||
|
||||
g_return_if_fail(setting->path.arr && idx < setting->path.arr->len);
|
||||
|
||||
g_array_remove_index(setting->path.arr, idx);
|
||||
nm_strvarray_remove_index(setting->path.arr, idx);
|
||||
_notify(setting, PROP_PATH);
|
||||
}
|
||||
|
||||
|
|
@ -561,12 +552,11 @@ nm_setting_match_remove_path_by_value(NMSettingMatch *setting, const char *path)
|
|||
g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
|
||||
g_return_val_if_fail(path, FALSE);
|
||||
|
||||
if (nm_strvarray_remove_first(setting->path.arr, path)) {
|
||||
_notify(setting, PROP_PATH);
|
||||
return TRUE;
|
||||
}
|
||||
if (!nm_strvarray_remove_first(setting->path.arr, path))
|
||||
return FALSE;
|
||||
|
||||
return FALSE;
|
||||
_notify(setting, PROP_PATH);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -582,10 +572,8 @@ nm_setting_match_clear_paths(NMSettingMatch *setting)
|
|||
{
|
||||
g_return_if_fail(NM_IS_SETTING_MATCH(setting));
|
||||
|
||||
if (nm_g_array_len(setting->path.arr) != 0) {
|
||||
nm_clear_pointer(&setting->path.arr, g_array_unref);
|
||||
if (nm_strvarray_clear(&setting->path.arr))
|
||||
_notify(setting, PROP_PATH);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue