cli: add NMMetaAccessorModifier enum instead of using "char" type
The enum values are unique throughout the source code so they can easier be searched (e.g. with grep), compared to '\0'. It is often interesting where a certain modifier is used, so searching the source code is important to give relevant results. Also, the modifier is really an enum and we shouldn't misuse char type. If that would be a good idea in general, we wouldn't need any enums at all. But we use them for good reasons.
This commit is contained in:
@@ -3321,6 +3321,21 @@ get_valid_settings_array (const char *con_type)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
_construct_property_name (const char *setting_name,
|
||||||
|
const char *property_name,
|
||||||
|
NMMetaAccessorModifier modifier)
|
||||||
|
{
|
||||||
|
return g_strdup_printf ("%s%s.%s\n",
|
||||||
|
( modifier == NM_META_ACCESSOR_MODIFIER_ADD
|
||||||
|
? "+"
|
||||||
|
: ( modifier == NM_META_ACCESSOR_MODIFIER_DEL
|
||||||
|
? "-"
|
||||||
|
: "")),
|
||||||
|
setting_name,
|
||||||
|
property_name);
|
||||||
|
}
|
||||||
|
|
||||||
/* get_valid_properties_string:
|
/* get_valid_properties_string:
|
||||||
* @array: base properties for the current connection type
|
* @array: base properties for the current connection type
|
||||||
* @array_slv: slave properties (or ipv4/ipv6 ones) for the current connection type
|
* @array_slv: slave properties (or ipv4/ipv6 ones) for the current connection type
|
||||||
@@ -3338,7 +3353,7 @@ get_valid_settings_array (const char *con_type)
|
|||||||
static char *
|
static char *
|
||||||
get_valid_properties_string (const NMMetaSettingValidPartItem *const*array,
|
get_valid_properties_string (const NMMetaSettingValidPartItem *const*array,
|
||||||
const NMMetaSettingValidPartItem *const*array_slv,
|
const NMMetaSettingValidPartItem *const*array_slv,
|
||||||
char modifier,
|
NMMetaAccessorModifier modifier,
|
||||||
const char *prefix,
|
const char *prefix,
|
||||||
const char *postfix)
|
const char *postfix)
|
||||||
{
|
{
|
||||||
@@ -3380,32 +3395,26 @@ get_valid_properties_string (const NMMetaSettingValidPartItem *const*array,
|
|||||||
|
|
||||||
/* Search the array with the arguments of the current property */
|
/* Search the array with the arguments of the current property */
|
||||||
for (j = 0; j < setting_info->properties_num; j++) {
|
for (j = 0; j < setting_info->properties_num; j++) {
|
||||||
char *new;
|
gs_free char *ss1 = NULL;
|
||||||
const char *arg_name;
|
const char *arg_name;
|
||||||
|
|
||||||
arg_name = setting_info->properties[j]->property_name;
|
arg_name = setting_info->properties[j]->property_name;
|
||||||
|
|
||||||
/* If required, expand the alias too */
|
/* If required, expand the alias too */
|
||||||
if (!postfix && setting_info->alias) {
|
if ( !postfix
|
||||||
if (modifier)
|
&& setting_info->alias) {
|
||||||
g_string_append_c (str, modifier);
|
gs_free char *ss2 = NULL;
|
||||||
new = g_strdup_printf ("%s.%s\n",
|
|
||||||
setting_info->alias,
|
ss2 = _construct_property_name (setting_info->alias, arg_name, modifier);
|
||||||
arg_name);
|
g_string_append (str, ss2);
|
||||||
g_string_append (str, new);
|
|
||||||
g_free (new);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (postfix && !g_str_has_prefix (arg_name, postfix))
|
if ( postfix
|
||||||
|
&& !g_str_has_prefix (arg_name, postfix))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (modifier)
|
ss1 = _construct_property_name (prop_name, arg_name, modifier);
|
||||||
g_string_append_c (str, modifier);
|
g_string_append (str, ss1);
|
||||||
new = g_strdup_printf ("%s.%s\n",
|
|
||||||
prop_name,
|
|
||||||
arg_name);
|
|
||||||
g_string_append (str, new);
|
|
||||||
g_free (new);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4005,7 +4014,7 @@ set_property (NMClient *client,
|
|||||||
const char *setting_name,
|
const char *setting_name,
|
||||||
const char *property,
|
const char *property,
|
||||||
const char *value,
|
const char *value,
|
||||||
char modifier,
|
NMMetaAccessorModifier modifier,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
gs_free char *property_name = NULL;
|
gs_free char *property_name = NULL;
|
||||||
@@ -4013,7 +4022,9 @@ set_property (NMClient *client,
|
|||||||
NMSetting *setting;
|
NMSetting *setting;
|
||||||
|
|
||||||
nm_assert (setting_name && setting_name[0]);
|
nm_assert (setting_name && setting_name[0]);
|
||||||
nm_assert (NM_IN_SET (modifier, '\0', '+', '-'));
|
nm_assert (NM_IN_SET (modifier, NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_ADD,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_DEL));
|
||||||
|
|
||||||
setting = nm_connection_get_setting_by_name (connection, setting_name);
|
setting = nm_connection_get_setting_by_name (connection, setting_name);
|
||||||
if (!setting) {
|
if (!setting) {
|
||||||
@@ -4033,14 +4044,15 @@ set_property (NMClient *client,
|
|||||||
if (!nmc_setting_set_property (client,
|
if (!nmc_setting_set_property (client,
|
||||||
setting,
|
setting,
|
||||||
property_name,
|
property_name,
|
||||||
( (modifier == '-' && !value)
|
( ( modifier == NM_META_ACCESSOR_MODIFIER_DEL
|
||||||
? '\0'
|
&& !value)
|
||||||
|
? NM_META_ACCESSOR_MODIFIER_SET
|
||||||
: modifier),
|
: modifier),
|
||||||
value,
|
value,
|
||||||
&local)) {
|
&local)) {
|
||||||
g_set_error (error, NMCLI_ERROR, NMC_RESULT_ERROR_USER_INPUT,
|
g_set_error (error, NMCLI_ERROR, NMC_RESULT_ERROR_USER_INPUT,
|
||||||
_("Error: failed to %s %s.%s: %s."),
|
_("Error: failed to %s %s.%s: %s."),
|
||||||
( modifier != '-'
|
( modifier != NM_META_ACCESSOR_MODIFIER_DEL
|
||||||
? "modify"
|
? "modify"
|
||||||
: "remove a value from"),
|
: "remove a value from"),
|
||||||
setting_name,
|
setting_name,
|
||||||
@@ -4070,8 +4082,15 @@ set_option (NmCli *nmc, NMConnection *connection, const NMMetaAbstractInfo *abst
|
|||||||
if (option && option->check_and_set) {
|
if (option && option->check_and_set) {
|
||||||
return option->check_and_set (nmc, connection, option, value, error);
|
return option->check_and_set (nmc, connection, option, value, error);
|
||||||
} else if (value) {
|
} else if (value) {
|
||||||
return set_property (nmc->client, connection, setting_name, property_name,
|
return set_property (nmc->client,
|
||||||
value, inf_flags & NM_META_PROPERTY_INF_FLAG_MULTI ? '+' : '\0', error);
|
connection,
|
||||||
|
setting_name,
|
||||||
|
property_name,
|
||||||
|
value,
|
||||||
|
inf_flags & NM_META_PROPERTY_INF_FLAG_MULTI
|
||||||
|
? NM_META_ACCESSOR_MODIFIER_ADD
|
||||||
|
: NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
error);
|
||||||
} else if (inf_flags & NM_META_PROPERTY_INF_FLAG_REQD) {
|
} else if (inf_flags & NM_META_PROPERTY_INF_FLAG_REQD) {
|
||||||
g_set_error (error, NMCLI_ERROR, NMC_RESULT_ERROR_USER_INPUT,
|
g_set_error (error, NMCLI_ERROR, NMC_RESULT_ERROR_USER_INPUT,
|
||||||
_("Error: '%s' is mandatory."), option_name);
|
_("Error: '%s' is mandatory."), option_name);
|
||||||
@@ -4192,9 +4211,13 @@ set_connection_type (NmCli *nmc, NMConnection *con, const OptionInfo *option, co
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (slave_type) {
|
if (slave_type) {
|
||||||
if (!set_property (nmc->client, con, NM_SETTING_CONNECTION_SETTING_NAME,
|
if (!set_property (nmc->client,
|
||||||
NM_SETTING_CONNECTION_SLAVE_TYPE, slave_type,
|
con,
|
||||||
'\0', error)) {
|
NM_SETTING_CONNECTION_SETTING_NAME,
|
||||||
|
NM_SETTING_CONNECTION_SLAVE_TYPE,
|
||||||
|
slave_type,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
error)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
enable_options (NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_MASTER, master);
|
enable_options (NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_MASTER, master);
|
||||||
@@ -4209,7 +4232,13 @@ set_connection_type (NmCli *nmc, NMConnection *con, const OptionInfo *option, co
|
|||||||
NM_SETTING_CONNECTION_INTERFACE_NAME);
|
NM_SETTING_CONNECTION_INTERFACE_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!set_property (nmc->client, con, option->setting_info->general->setting_name, option->property, value, '\0', error))
|
if (!set_property (nmc->client,
|
||||||
|
con,
|
||||||
|
option->setting_info->general->setting_name,
|
||||||
|
option->property,
|
||||||
|
value,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (!con_settings (con, &type_settings, &slv_settings, error))
|
if (!con_settings (con, &type_settings, &slv_settings, error))
|
||||||
@@ -4238,7 +4267,13 @@ set_connection_iface (NmCli *nmc, NMConnection *con, const OptionInfo *option, c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return set_property (nmc->client, con, option->setting_info->general->setting_name, option->property, value, '\0', error);
|
return set_property (nmc->client,
|
||||||
|
con,
|
||||||
|
option->setting_info->general->setting_name,
|
||||||
|
option->property,
|
||||||
|
value,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
error);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -4261,13 +4296,23 @@ set_connection_master (NmCli *nmc, NMConnection *con, const OptionInfo *option,
|
|||||||
connections = nm_client_get_connections (nmc->client);
|
connections = nm_client_get_connections (nmc->client);
|
||||||
value = normalized_master_for_slave (connections, value, slave_type, &slave_type);
|
value = normalized_master_for_slave (connections, value, slave_type, &slave_type);
|
||||||
|
|
||||||
if (!set_property (nmc->client, con, NM_SETTING_CONNECTION_SETTING_NAME,
|
if (!set_property (nmc->client,
|
||||||
NM_SETTING_CONNECTION_SLAVE_TYPE, slave_type,
|
con,
|
||||||
'\0', error)) {
|
NM_SETTING_CONNECTION_SETTING_NAME,
|
||||||
|
NM_SETTING_CONNECTION_SLAVE_TYPE,
|
||||||
|
slave_type,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
error)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return set_property (nmc->client, con, option->setting_info->general->setting_name, option->property, value, '\0', error);
|
return set_property (nmc->client,
|
||||||
|
con,
|
||||||
|
option->setting_info->general->setting_name,
|
||||||
|
option->property,
|
||||||
|
value,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
error);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -4381,7 +4426,13 @@ set_bluetooth_type (NmCli *nmc, NMConnection *con, const OptionInfo *option, con
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return set_property (nmc->client, con, option->setting_info->general->setting_name, option->property, value, '\0', error);
|
return set_property (nmc->client,
|
||||||
|
con,
|
||||||
|
option->setting_info->general->setting_name,
|
||||||
|
option->property,
|
||||||
|
value,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
error);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -4400,8 +4451,13 @@ set_ip4_address (NmCli *nmc, NMConnection *con, const OptionInfo *option, const
|
|||||||
NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL,
|
NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
return set_property (nmc->client, con, option->setting_info->general->setting_name, option->property, value,
|
return set_property (nmc->client,
|
||||||
'+', error);
|
con,
|
||||||
|
option->setting_info->general->setting_name,
|
||||||
|
option->property,
|
||||||
|
value,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_ADD,
|
||||||
|
error);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -4420,8 +4476,13 @@ set_ip6_address (NmCli *nmc, NMConnection *con, const OptionInfo *option, const
|
|||||||
NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_MANUAL,
|
NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_MANUAL,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
return set_property (nmc->client, con, option->setting_info->general->setting_name, option->property, value,
|
return set_property (nmc->client,
|
||||||
'+', error);
|
con,
|
||||||
|
option->setting_info->general->setting_name,
|
||||||
|
option->property,
|
||||||
|
value,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_ADD,
|
||||||
|
error);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
@@ -4493,7 +4554,7 @@ option_relevant (NMConnection *connection, const NMMetaAbstractInfo *abstract_in
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
complete_property_name (NmCli *nmc, NMConnection *connection,
|
complete_property_name (NmCli *nmc, NMConnection *connection,
|
||||||
char modifier,
|
NMMetaAccessorModifier modifier,
|
||||||
const char *prefix,
|
const char *prefix,
|
||||||
const char *postfix)
|
const char *postfix)
|
||||||
{
|
{
|
||||||
@@ -4516,7 +4577,7 @@ complete_property_name (NmCli *nmc, NMConnection *connection,
|
|||||||
if (word_list)
|
if (word_list)
|
||||||
g_print ("%s", word_list);
|
g_print ("%s", word_list);
|
||||||
|
|
||||||
if (modifier != '\0')
|
if (modifier != NM_META_ACCESSOR_MODIFIER_SET)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (s = 0; s < _NM_META_SETTING_TYPE_NUM; s++) {
|
for (s = 0; s < _NM_META_SETTING_TYPE_NUM; s++) {
|
||||||
@@ -4658,7 +4719,7 @@ nmc_read_connection_properties (NmCli *nmc,
|
|||||||
gs_strfreev char **strv = NULL;
|
gs_strfreev char **strv = NULL;
|
||||||
const NMMetaSettingValidPartItem *const*type_settings;
|
const NMMetaSettingValidPartItem *const*type_settings;
|
||||||
const NMMetaSettingValidPartItem *const*slv_settings;
|
const NMMetaSettingValidPartItem *const*slv_settings;
|
||||||
char modifier = '\0';
|
NMMetaAccessorModifier modifier;
|
||||||
|
|
||||||
if (!con_settings (connection, &type_settings, &slv_settings, error))
|
if (!con_settings (connection, &type_settings, &slv_settings, error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -4673,8 +4734,11 @@ nmc_read_connection_properties (NmCli *nmc,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (option[0] == '+' || option[0] == '-')
|
switch (option[0]) {
|
||||||
modifier = *option;
|
case '+': modifier = NM_META_ACCESSOR_MODIFIER_ADD; break;
|
||||||
|
case '-': modifier = NM_META_ACCESSOR_MODIFIER_DEL; break;
|
||||||
|
default: modifier = NM_META_ACCESSOR_MODIFIER_SET; break;
|
||||||
|
}
|
||||||
|
|
||||||
strv = g_strsplit (option, ".", 2);
|
strv = g_strsplit (option, ".", 2);
|
||||||
if (g_strv_length (strv) == 2) {
|
if (g_strv_length (strv) == 2) {
|
||||||
@@ -4683,7 +4747,7 @@ nmc_read_connection_properties (NmCli *nmc,
|
|||||||
char *setting = strv[0];
|
char *setting = strv[0];
|
||||||
const char *setting_name;
|
const char *setting_name;
|
||||||
|
|
||||||
if (modifier)
|
if (modifier != NM_META_ACCESSOR_MODIFIER_SET)
|
||||||
setting++;
|
setting++;
|
||||||
|
|
||||||
if (*argc == 1 && nmc->complete)
|
if (*argc == 1 && nmc->complete)
|
||||||
@@ -4769,7 +4833,7 @@ nmc_read_connection_properties (NmCli *nmc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!chosen) {
|
if (!chosen) {
|
||||||
if (modifier)
|
if (modifier != NM_META_ACCESSOR_MODIFIER_SET)
|
||||||
option++;
|
option++;
|
||||||
if (*argc == 1 && nmc->complete)
|
if (*argc == 1 && nmc->complete)
|
||||||
complete_property_name (nmc, connection, modifier, option, NULL);
|
complete_property_name (nmc, connection, modifier, option, NULL);
|
||||||
@@ -6981,8 +7045,8 @@ property_edit_submenu (NmCli *nmc,
|
|||||||
curr_setting,
|
curr_setting,
|
||||||
prop_name,
|
prop_name,
|
||||||
(cmdsub == NMC_EDITOR_SUB_CMD_SET)
|
(cmdsub == NMC_EDITOR_SUB_CMD_SET)
|
||||||
? '\0'
|
? NM_META_ACCESSOR_MODIFIER_SET
|
||||||
: '+',
|
: NM_META_ACCESSOR_MODIFIER_ADD,
|
||||||
prop_val_user,
|
prop_val_user,
|
||||||
&tmp_err);
|
&tmp_err);
|
||||||
if (!set_result) {
|
if (!set_result) {
|
||||||
@@ -6998,7 +7062,12 @@ property_edit_submenu (NmCli *nmc,
|
|||||||
_("Edit '%s' value: "),
|
_("Edit '%s' value: "),
|
||||||
prop_name);
|
prop_name);
|
||||||
|
|
||||||
if (!nmc_setting_set_property (nmc->client, curr_setting, prop_name, '\0', prop_val_user, &tmp_err)) {
|
if (!nmc_setting_set_property (nmc->client,
|
||||||
|
curr_setting,
|
||||||
|
prop_name,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
prop_val_user,
|
||||||
|
&tmp_err)) {
|
||||||
g_print (_("Error: failed to set '%s' property: %s\n"), prop_name, tmp_err->message);
|
g_print (_("Error: failed to set '%s' property: %s\n"), prop_name, tmp_err->message);
|
||||||
g_clear_error (&tmp_err);
|
g_clear_error (&tmp_err);
|
||||||
}
|
}
|
||||||
@@ -7009,8 +7078,8 @@ property_edit_submenu (NmCli *nmc,
|
|||||||
curr_setting,
|
curr_setting,
|
||||||
prop_name,
|
prop_name,
|
||||||
( cmd_property_arg
|
( cmd_property_arg
|
||||||
? '-'
|
? NM_META_ACCESSOR_MODIFIER_DEL
|
||||||
: '\0'),
|
: NM_META_ACCESSOR_MODIFIER_SET),
|
||||||
cmd_property_arg,
|
cmd_property_arg,
|
||||||
&tmp_err)) {
|
&tmp_err)) {
|
||||||
g_print (_("Error: %s\n"), tmp_err->message);
|
g_print (_("Error: %s\n"), tmp_err->message);
|
||||||
@@ -7364,7 +7433,12 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t
|
|||||||
_("Enter '%s' value: "),
|
_("Enter '%s' value: "),
|
||||||
prop_name);
|
prop_name);
|
||||||
|
|
||||||
if (!nmc_setting_set_property (nmc->client, menu_ctx.curr_setting, prop_name, '+', prop_val_user, &tmp_err)) {
|
if (!nmc_setting_set_property (nmc->client,
|
||||||
|
menu_ctx.curr_setting,
|
||||||
|
prop_name,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_ADD,
|
||||||
|
prop_val_user,
|
||||||
|
&tmp_err)) {
|
||||||
g_print (_("Error: failed to set '%s' property: %s\n"), prop_name, tmp_err->message);
|
g_print (_("Error: failed to set '%s' property: %s\n"), prop_name, tmp_err->message);
|
||||||
g_clear_error (&tmp_err);
|
g_clear_error (&tmp_err);
|
||||||
}
|
}
|
||||||
@@ -7428,7 +7502,9 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t
|
|||||||
if (!nmc_setting_set_property (nmc->client,
|
if (!nmc_setting_set_property (nmc->client,
|
||||||
ss,
|
ss,
|
||||||
prop_name,
|
prop_name,
|
||||||
cmd_arg_v ? '+' : '\0',
|
cmd_arg_v
|
||||||
|
? NM_META_ACCESSOR_MODIFIER_ADD
|
||||||
|
: NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
cmd_arg_v,
|
cmd_arg_v,
|
||||||
&tmp_err)) {
|
&tmp_err)) {
|
||||||
g_print (_("Error: failed to set '%s' property: %s\n"),
|
g_print (_("Error: failed to set '%s' property: %s\n"),
|
||||||
@@ -7527,7 +7603,12 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t
|
|||||||
if (!prop_name)
|
if (!prop_name)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (!nmc_setting_set_property (nmc->client, menu_ctx.curr_setting, prop_name, '\0', NULL, &tmp_err)) {
|
if (!nmc_setting_set_property (nmc->client,
|
||||||
|
menu_ctx.curr_setting,
|
||||||
|
prop_name,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
NULL,
|
||||||
|
&tmp_err)) {
|
||||||
g_print (_("Error: failed to remove value of '%s': %s\n"), prop_name,
|
g_print (_("Error: failed to remove value of '%s': %s\n"), prop_name,
|
||||||
tmp_err->message);
|
tmp_err->message);
|
||||||
g_clear_error (&tmp_err);
|
g_clear_error (&tmp_err);
|
||||||
@@ -7577,7 +7658,12 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t
|
|||||||
|
|
||||||
prop_name = is_property_valid (ss, cmd_arg_p, &tmp_err);
|
prop_name = is_property_valid (ss, cmd_arg_p, &tmp_err);
|
||||||
if (prop_name) {
|
if (prop_name) {
|
||||||
if (!nmc_setting_set_property (nmc->client, ss, prop_name, '\0', NULL, &tmp_err)) {
|
if (!nmc_setting_set_property (nmc->client,
|
||||||
|
ss,
|
||||||
|
prop_name,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
NULL,
|
||||||
|
&tmp_err)) {
|
||||||
g_print (_("Error: failed to remove value of '%s': %s\n"),
|
g_print (_("Error: failed to remove value of '%s': %s\n"),
|
||||||
prop_name,
|
prop_name,
|
||||||
tmp_err->message);
|
tmp_err->message);
|
||||||
|
@@ -532,7 +532,7 @@ gboolean
|
|||||||
nmc_setting_set_property (NMClient *client,
|
nmc_setting_set_property (NMClient *client,
|
||||||
NMSetting *setting,
|
NMSetting *setting,
|
||||||
const char *prop,
|
const char *prop,
|
||||||
char modifier,
|
NMMetaAccessorModifier modifier,
|
||||||
const char *value,
|
const char *value,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
@@ -542,14 +542,14 @@ nmc_setting_set_property (NMClient *client,
|
|||||||
|
|
||||||
g_return_val_if_fail (NM_IS_SETTING (setting), FALSE);
|
g_return_val_if_fail (NM_IS_SETTING (setting), FALSE);
|
||||||
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
||||||
g_return_val_if_fail (NM_IN_SET (modifier, '\0', '-', '+'), FALSE);
|
g_return_val_if_fail (NM_IN_SET (modifier, NM_META_ACCESSOR_MODIFIER_SET, NM_META_ACCESSOR_MODIFIER_DEL, NM_META_ACCESSOR_MODIFIER_ADD), FALSE);
|
||||||
|
|
||||||
if (!(property_info = nm_meta_property_info_find_by_setting (setting, prop)))
|
if (!(property_info = nm_meta_property_info_find_by_setting (setting, prop)))
|
||||||
goto out_fail_read_only;
|
goto out_fail_read_only;
|
||||||
if (!property_info->property_type->set_fcn)
|
if (!property_info->property_type->set_fcn)
|
||||||
goto out_fail_read_only;
|
goto out_fail_read_only;
|
||||||
|
|
||||||
if ( modifier == '-'
|
if ( modifier == NM_META_ACCESSOR_MODIFIER_DEL
|
||||||
&& !property_info->property_type->set_supports_remove) {
|
&& !property_info->property_type->set_supports_remove) {
|
||||||
/* The property is a plain property. It does not support '-'.
|
/* The property is a plain property. It does not support '-'.
|
||||||
*
|
*
|
||||||
@@ -572,7 +572,7 @@ nmc_setting_set_property (NMClient *client,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( NM_IN_SET (modifier, '+', '-')
|
if ( NM_IN_SET (modifier, NM_META_ACCESSOR_MODIFIER_ADD, NM_META_ACCESSOR_MODIFIER_DEL)
|
||||||
&& ( !value
|
&& ( !value
|
||||||
|| !value[0])) {
|
|| !value[0])) {
|
||||||
/* nothing to do. */
|
/* nothing to do. */
|
||||||
|
@@ -45,7 +45,7 @@ char *nmc_setting_get_property_parsable (NMSetting *setting,
|
|||||||
gboolean nmc_setting_set_property (NMClient *client,
|
gboolean nmc_setting_set_property (NMClient *client,
|
||||||
NMSetting *setting,
|
NMSetting *setting,
|
||||||
const char *prop,
|
const char *prop,
|
||||||
char modifier,
|
NMMetaAccessorModifier modifier,
|
||||||
const char *val,
|
const char *val,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
@@ -638,7 +638,7 @@ _env_warn_fcn (const NMMetaEnvironment *environment,
|
|||||||
const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, NMSetting *setting, NMMetaAccessorGetType get_type, NMMetaAccessorGetFlags get_flags, NMMetaAccessorGetOutFlags *out_flags, gboolean *out_is_default, gpointer *out_to_free
|
const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, NMSetting *setting, NMMetaAccessorGetType get_type, NMMetaAccessorGetFlags get_flags, NMMetaAccessorGetOutFlags *out_flags, gboolean *out_is_default, gpointer *out_to_free
|
||||||
|
|
||||||
#define ARGS_SET_FCN \
|
#define ARGS_SET_FCN \
|
||||||
const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, NMSetting *setting, char modifier, const char *value, GError **error
|
const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, NMSetting *setting, NMMetaAccessorModifier modifier, const char *value, GError **error
|
||||||
|
|
||||||
#define ARGS_REMOVE_FCN \
|
#define ARGS_REMOVE_FCN \
|
||||||
const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, NMSetting *setting, const char *value, GError **error
|
const NMMetaPropertyInfo *property_info, const NMMetaEnvironment *environment, gpointer environment_user_data, NMSetting *setting, const char *value, GError **error
|
||||||
@@ -653,43 +653,52 @@ _env_warn_fcn (const NMMetaEnvironment *environment,
|
|||||||
const NMMetaSettingInfoEditor *setting_info, NMSetting *setting, NMMetaAccessorSettingInitType init_type
|
const NMMetaSettingInfoEditor *setting_info, NMSetting *setting, NMMetaAccessorSettingInitType init_type
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
_SET_FCN_DO_RESET_DEFAULT (const NMMetaPropertyInfo *property_info, char modifier, const char *value)
|
_SET_FCN_DO_RESET_DEFAULT (const NMMetaPropertyInfo *property_info, NMMetaAccessorModifier modifier, const char *value)
|
||||||
{
|
{
|
||||||
nm_assert (property_info);
|
nm_assert (property_info);
|
||||||
nm_assert (!property_info->property_type->set_supports_remove);
|
nm_assert (!property_info->property_type->set_supports_remove);
|
||||||
nm_assert (NM_IN_SET (modifier, '\0', '+'));
|
nm_assert (NM_IN_SET (modifier, NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
nm_assert (value || modifier == '\0');
|
NM_META_ACCESSOR_MODIFIER_ADD));
|
||||||
|
nm_assert ( value
|
||||||
|
|| modifier == NM_META_ACCESSOR_MODIFIER_SET);
|
||||||
|
|
||||||
return value == NULL;
|
return value == NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE (const NMMetaPropertyInfo *property_info, char modifier, const char *value)
|
_SET_FCN_DO_RESET_DEFAULT_WITH_SUPPORTS_REMOVE (const NMMetaPropertyInfo *property_info, NMMetaAccessorModifier modifier, const char *value)
|
||||||
{
|
{
|
||||||
nm_assert (property_info);
|
nm_assert (property_info);
|
||||||
nm_assert (property_info->property_type->set_supports_remove);
|
nm_assert (property_info->property_type->set_supports_remove);
|
||||||
nm_assert (NM_IN_SET (modifier, '\0', '+', '-'));
|
nm_assert (NM_IN_SET (modifier, NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
nm_assert (value || modifier == '\0');
|
NM_META_ACCESSOR_MODIFIER_ADD,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_DEL));
|
||||||
|
nm_assert ( value
|
||||||
|
|| modifier == NM_META_ACCESSOR_MODIFIER_SET);
|
||||||
|
|
||||||
return value == NULL;
|
return value == NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
_SET_FCN_DO_SET_ALL (char modifier, const char *value)
|
_SET_FCN_DO_SET_ALL (NMMetaAccessorModifier modifier, const char *value)
|
||||||
{
|
{
|
||||||
nm_assert (NM_IN_SET (modifier, '\0', '+', '-'));
|
nm_assert (NM_IN_SET (modifier, NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_ADD,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_DEL));
|
||||||
nm_assert (value);
|
nm_assert (value);
|
||||||
|
|
||||||
return modifier == '\0';
|
return modifier == NM_META_ACCESSOR_MODIFIER_SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
_SET_FCN_DO_REMOVE (char modifier, const char *value)
|
_SET_FCN_DO_REMOVE (NMMetaAccessorModifier modifier, const char *value)
|
||||||
{
|
{
|
||||||
nm_assert (NM_IN_SET (modifier, '\0', '+', '-'));
|
nm_assert (NM_IN_SET (modifier, NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_ADD,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_DEL));
|
||||||
nm_assert (value);
|
nm_assert (value);
|
||||||
|
|
||||||
return modifier == '-';
|
return modifier == NM_META_ACCESSOR_MODIFIER_DEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define RETURN_UNSUPPORTED_GET_TYPE() \
|
#define RETURN_UNSUPPORTED_GET_TYPE() \
|
||||||
|
@@ -129,6 +129,12 @@ typedef enum {
|
|||||||
_NM_META_COLOR_NUM
|
_NM_META_COLOR_NUM
|
||||||
} NMMetaColor;
|
} NMMetaColor;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
NM_META_ACCESSOR_MODIFIER_SET,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_ADD,
|
||||||
|
NM_META_ACCESSOR_MODIFIER_DEL,
|
||||||
|
} NMMetaAccessorModifier;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
NM_META_ACCESSOR_GET_TYPE_PRETTY,
|
NM_META_ACCESSOR_GET_TYPE_PRETTY,
|
||||||
NM_META_ACCESSOR_GET_TYPE_PARSABLE,
|
NM_META_ACCESSOR_GET_TYPE_PARSABLE,
|
||||||
@@ -210,7 +216,7 @@ struct _NMMetaPropertyType {
|
|||||||
const NMMetaEnvironment *environment,
|
const NMMetaEnvironment *environment,
|
||||||
gpointer environment_user_data,
|
gpointer environment_user_data,
|
||||||
NMSetting *setting,
|
NMSetting *setting,
|
||||||
char modifier,
|
NMMetaAccessorModifier modifier,
|
||||||
const char *value,
|
const char *value,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user