aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2024-03-21 13:59:19 -0500
committerDenis Kenzior <denkenz@gmail.com>2024-03-21 16:59:57 -0500
commit1f65007294acb0efda9fbaea0ce6568c5f6cc7c1 (patch)
treeddcd1817fd15b7faa0ae9296ebf820516eef1b4c
parent7670bc2b6bdbb4fef4eb61c34a70e221623d03f6 (diff)
downloadofono-1f65007294acb0efda9fbaea0ce6568c5f6cc7c1.tar.gz
modem: commonize feature string list generation
This code was repeated in multiple places, factor it out into a common function.
-rw-r--r--src/modem.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/modem.c b/src/modem.c
index 788e86fba..37d9bd57f 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -137,6 +137,18 @@ static const char *modem_type_to_string(enum ofono_modem_type type)
return "unknown";
}
+static char **get_features(struct ofono_modem *modem)
+{
+ char **features = l_new(char *, g_slist_length(modem->feature_list) + 1);
+ unsigned int i;
+ GSList *l;
+
+ for (i = 0, l = modem->feature_list; l; l = l->next, i++)
+ features[i] = l->data;
+
+ return features;
+}
+
unsigned int __ofono_modem_callid_next(struct ofono_modem *modem)
{
unsigned int i;
@@ -878,12 +890,10 @@ void __ofono_modem_append_properties(struct ofono_modem *modem,
&interfaces);
g_free(interfaces);
- features = g_new0(char *, g_slist_length(modem->feature_list) + 1);
- for (i = 0, l = modem->feature_list; l; l = l->next, i++)
- features[i] = l->data;
+ features = get_features(modem);
ofono_dbus_dict_append_array(dict, "Features", DBUS_TYPE_STRING,
&features);
- g_free(features);
+ l_free(features);
if (modem->name)
ofono_dbus_dict_append(dict, "Name", DBUS_TYPE_STRING,
@@ -1303,14 +1313,12 @@ static gboolean trigger_interface_update(void *data)
&interfaces);
g_free(interfaces);
- features = g_new0(char *, g_slist_length(modem->feature_list) + 1);
- for (i = 0, l = modem->feature_list; l; l = l->next, i++)
- features[i] = l->data;
+ features = get_features(modem);
ofono_dbus_signal_array_property_changed(conn, modem->path,
OFONO_MODEM_INTERFACE,
"Features", DBUS_TYPE_STRING,
&features);
- g_free(features);
+ l_free(features);
modem->interface_update = 0;