summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-10-26 13:37:34 +0200
committerThomas Haller <thaller@redhat.com>2023-11-15 17:59:27 +0100
commiteed4a21fa3fa8dd9239c2a0598cfb51370aa9283 (patch)
tree81c04381ad1bbb49e2be7c322487f7a0ba6b0b71
parent3435bc3011d5c6c4643ce71531de0c28c79f165a (diff)
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.
-rw-r--r--src/libnm-core-impl/nm-setting-connection.c15
-rw-r--r--src/libnm-core-impl/nm-setting-ip-config.c2
-rw-r--r--src/libnm-core-impl/nm-setting-match.c68
3 files changed, 36 insertions, 49 deletions
diff --git a/src/libnm-core-impl/nm-setting-connection.c b/src/libnm-core-impl/nm-setting-connection.c
index 98870c7313..a228ecf0c5 100644
--- a/src/libnm-core-impl/nm-setting-connection.c
+++ b/src/libnm-core-impl/nm-setting-connection.c
@@ -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;
}
/**
diff --git a/src/libnm-core-impl/nm-setting-ip-config.c b/src/libnm-core-impl/nm-setting-ip-config.c
index c305e48e9d..3f57213a21 100644
--- a/src/libnm-core-impl/nm-setting-ip-config.c
+++ b/src/libnm-core-impl/nm-setting-ip-config.c
@@ -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);
}
diff --git a/src/libnm-core-impl/nm-setting-match.c b/src/libnm-core-impl/nm-setting-match.c
index c35e38712b..4cad4f68a1 100644
--- a/src/libnm-core-impl/nm-setting-match.c
+++ b/src/libnm-core-impl/nm-setting-match.c
@@ -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);
- }
}
/**