aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/anydata/mm-broadband-modem-anydata.c82
-rw-r--r--plugins/cinterion/mm-modem-helpers-cinterion.c62
-rw-r--r--plugins/cinterion/tests/test-modem-helpers-cinterion.c42
-rw-r--r--plugins/huawei/mm-broadband-modem-huawei.c19
-rw-r--r--plugins/huawei/mm-modem-helpers-huawei.c329
-rw-r--r--plugins/icera/mm-broadband-modem-icera.c32
-rw-r--r--plugins/mbm/mm-modem-helpers-mbm.c37
-rw-r--r--plugins/mtk/mm-broadband-modem-mtk.c104
-rw-r--r--plugins/novatel/mm-broadband-modem-novatel.c45
-rw-r--r--plugins/option/mm-broadband-modem-option.c42
-rw-r--r--plugins/quectel/mm-shared-quectel.c3
-rw-r--r--plugins/sierra/mm-broadband-modem-sierra.c41
-rw-r--r--plugins/sierra/mm-common-sierra.c4
-rw-r--r--plugins/sierra/mm-modem-helpers-sierra.c16
-rw-r--r--plugins/simtech/tests/test-modem-helpers-simtech.c75
-rw-r--r--plugins/telit/mm-broadband-modem-telit.c9
-rw-r--r--plugins/telit/mm-common-telit.c16
-rw-r--r--plugins/telit/mm-modem-helpers-telit.c13
-rw-r--r--plugins/ublox/mm-broadband-modem-ublox.c11
-rw-r--r--plugins/ublox/mm-modem-helpers-ublox.c152
-rw-r--r--plugins/via/mm-broadband-modem-via.c22
-rw-r--r--plugins/wavecom/mm-broadband-modem-wavecom.c7
-rw-r--r--plugins/x22x/mm-broadband-modem-x22x.c17
-rw-r--r--plugins/xmm/mm-modem-helpers-xmm.c51
-rw-r--r--plugins/zte/mm-broadband-modem-zte.c28
25 files changed, 520 insertions, 739 deletions
diff --git a/plugins/anydata/mm-broadband-modem-anydata.c b/plugins/anydata/mm-broadband-modem-anydata.c
index 95f8cbd2..36d72e56 100644
--- a/plugins/anydata/mm-broadband-modem-anydata.c
+++ b/plugins/anydata/mm-broadband-modem-anydata.c
@@ -72,10 +72,10 @@ hstate_ready (MMIfaceModemCdma *self,
GTask *task)
{
DetailedRegistrationStateResults *results;
- GError *error = NULL;
- const gchar *response;
- GRegex *r;
- GMatchInfo *match_info;
+ GError *error = NULL;
+ const gchar *response;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
results = g_task_get_task_data (task);
@@ -129,9 +129,6 @@ hstate_ready (MMIfaceModemCdma *self,
}
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
g_task_return_pointer (task, g_memdup (results, sizeof (*results)), g_free);
g_object_unref (task);
}
@@ -142,10 +139,10 @@ state_ready (MMIfaceModemCdma *self,
GTask *task)
{
DetailedRegistrationStateResults *results;
- GError *error = NULL;
- const gchar *response;
- GRegex *r;
- GMatchInfo *match_info;
+ GError *error = NULL;
+ const gchar *response;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error);
if (error) {
@@ -194,9 +191,6 @@ state_ready (MMIfaceModemCdma *self,
}
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
/* Try for EVDO state too */
mm_base_modem_at_command (MM_BASE_MODEM (self),
"*HSTATE?",
@@ -261,9 +255,14 @@ reset (MMIfaceModem *self,
static void
setup_ports (MMBroadbandModem *self)
{
- MMPortSerialAt *ports[2];
- GRegex *regex;
- guint i;
+ MMPortSerialAt *ports[2];
+ g_autoptr(GRegex) active_regex = NULL;
+ g_autoptr(GRegex) inactive_regex = NULL;
+ g_autoptr(GRegex) dormant_regex = NULL;
+ g_autoptr(GRegex) offline_regex = NULL;
+ g_autoptr(GRegex) regreq_regex = NULL;
+ g_autoptr(GRegex) authreq_regex = NULL;
+ guint i;
/* Call parent's setup ports first always */
MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_anydata_parent_class)->setup_ports (self);
@@ -271,48 +270,37 @@ setup_ports (MMBroadbandModem *self)
ports[0] = mm_base_modem_peek_port_primary (MM_BASE_MODEM (self));
ports[1] = mm_base_modem_peek_port_secondary (MM_BASE_MODEM (self));
+ /* Data call has connected */
+ active_regex = g_regex_new ("\\r\\n\\*ACTIVE:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
+ /* Data call disconnected */
+ inactive_regex = g_regex_new ("\\r\\n\\*INACTIVE:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
+ /* Modem is now dormant */
+ dormant_regex = g_regex_new ("\\r\\n\\*DORMANT:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
+ /* Network acquisition fail */
+ offline_regex = g_regex_new ("\\r\\n\\*OFFLINE:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
+ /* Registration fail */
+ regreq_regex = g_regex_new ("\\r\\n\\*REGREQ:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
+ /* Authentication fail */
+ authreq_regex = g_regex_new ("\\r\\n\\*AUTHREQ:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
+
/* Now reset the unsolicited messages */
for (i = 0; i < G_N_ELEMENTS (ports); i++) {
if (!ports[i])
continue;
/* Data state notifications */
-
- /* Data call has connected */
- regex = g_regex_new ("\\r\\n\\*ACTIVE:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
- mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), regex, NULL, NULL, NULL);
- g_regex_unref (regex);
-
- /* Data call disconnected */
- regex = g_regex_new ("\\r\\n\\*INACTIVE:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
- mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), regex, NULL, NULL, NULL);
- g_regex_unref (regex);
-
- /* Modem is now dormant */
- regex = g_regex_new ("\\r\\n\\*DORMANT:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
- mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), regex, NULL, NULL, NULL);
- g_regex_unref (regex);
+ mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), active_regex, NULL, NULL, NULL);
+ mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), inactive_regex, NULL, NULL, NULL);
+ mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), dormant_regex, NULL, NULL, NULL);
/* Abnormal state notifications
*
* FIXME: set 1X/EVDO registration state to UNKNOWN when these
* notifications are received?
*/
-
- /* Network acquisition fail */
- regex = g_regex_new ("\\r\\n\\*OFFLINE:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
- mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), regex, NULL, NULL, NULL);
- g_regex_unref (regex);
-
- /* Registration fail */
- regex = g_regex_new ("\\r\\n\\*REGREQ:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
- mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), regex, NULL, NULL, NULL);
- g_regex_unref (regex);
-
- /* Authentication fail */
- regex = g_regex_new ("\\r\\n\\*AUTHREQ:(.*)\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
- mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), regex, NULL, NULL, NULL);
- g_regex_unref (regex);
+ mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), offline_regex, NULL, NULL, NULL);
+ mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), regreq_regex, NULL, NULL, NULL);
+ mm_port_serial_at_add_unsolicited_msg_handler (MM_PORT_SERIAL_AT (ports[i]), authreq_regex, NULL, NULL, NULL);
}
}
diff --git a/plugins/cinterion/mm-modem-helpers-cinterion.c b/plugins/cinterion/mm-modem-helpers-cinterion.c
index a75eb530..0bf3a078 100644
--- a/plugins/cinterion/mm-modem-helpers-cinterion.c
+++ b/plugins/cinterion/mm-modem-helpers-cinterion.c
@@ -554,14 +554,14 @@ mm_cinterion_parse_cnmi_test (const gchar *response,
GArray **supported_bfr,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- GError *inner_error = NULL;
- GArray *tmp_supported_mode = NULL;
- GArray *tmp_supported_mt = NULL;
- GArray *tmp_supported_bm = NULL;
- GArray *tmp_supported_ds = NULL;
- GArray *tmp_supported_bfr = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ GArray *tmp_supported_mode = NULL;
+ GArray *tmp_supported_mt = NULL;
+ GArray *tmp_supported_bm = NULL;
+ GArray *tmp_supported_ds = NULL;
+ GArray *tmp_supported_bfr = NULL;
if (!response) {
g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Missing response");
@@ -576,57 +576,48 @@ mm_cinterion_parse_cnmi_test (const gchar *response,
g_regex_match_full (r, response, strlen (response), 0, 0, &match_info, &inner_error);
if (!inner_error && g_match_info_matches (match_info)) {
if (supported_mode) {
- gchar *str;
+ g_autofree gchar *str = NULL;
str = mm_get_string_unquoted_from_match_info (match_info, 1);
tmp_supported_mode = mm_parse_uint_list (str, &inner_error);
- g_free (str);
if (inner_error)
goto out;
}
if (supported_mt) {
- gchar *str;
+ g_autofree gchar *str = NULL;
str = mm_get_string_unquoted_from_match_info (match_info, 2);
tmp_supported_mt = mm_parse_uint_list (str, &inner_error);
- g_free (str);
if (inner_error)
goto out;
}
if (supported_bm) {
- gchar *str;
+ g_autofree gchar *str = NULL;
str = mm_get_string_unquoted_from_match_info (match_info, 3);
tmp_supported_bm = mm_parse_uint_list (str, &inner_error);
- g_free (str);
if (inner_error)
goto out;
}
if (supported_ds) {
- gchar *str;
+ g_autofree gchar *str = NULL;
str = mm_get_string_unquoted_from_match_info (match_info, 4);
tmp_supported_ds = mm_parse_uint_list (str, &inner_error);
- g_free (str);
if (inner_error)
goto out;
}
if (supported_bfr) {
- gchar *str;
+ g_autofree gchar *str = NULL;
str = mm_get_string_unquoted_from_match_info (match_info, 5);
tmp_supported_bfr = mm_parse_uint_list (str, &inner_error);
- g_free (str);
if (inner_error)
goto out;
}
}
out:
-
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
g_clear_pointer (&tmp_supported_mode, g_array_unref);
g_clear_pointer (&tmp_supported_mt, g_array_unref);
@@ -763,9 +754,9 @@ mm_cinterion_parse_sind_response (const gchar *response,
guint *value,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- guint errors = 0;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ guint errors = 0;
if (!response) {
g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Missing response");
@@ -788,9 +779,6 @@ mm_cinterion_parse_sind_response (const gchar *response,
} else
errors++;
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (errors > 0) {
g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Failed parsing ^SIND response");
return FALSE;
@@ -836,8 +824,8 @@ mm_cinterion_parse_swwan_response (const gchar *response,
gpointer log_object,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
GError *inner_error = NULL;
MMBearerConnectionStatus status;
@@ -883,9 +871,6 @@ mm_cinterion_parse_swwan_response (const gchar *response,
g_match_info_next (match_info, &inner_error);
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (status == MM_BEARER_CONNECTION_STATUS_UNKNOWN)
g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
"No state returned for CID %u", cid);
@@ -1078,10 +1063,10 @@ mm_cinterion_parse_slcc_list (const gchar *str,
GList **out_list,
GError **error)
{
- GRegex *r;
- GList *list = NULL;
- GError *inner_error = NULL;
- GMatchInfo *match_info = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GList *list = NULL;
+ GError *inner_error = NULL;
static const MMCallDirection cinterion_call_direction[] = {
[0] = MM_CALL_DIRECTION_OUTGOING,
@@ -1158,9 +1143,6 @@ mm_cinterion_parse_slcc_list (const gchar *str,
}
out:
- g_clear_pointer (&match_info, g_match_info_free);
- g_regex_unref (r);
-
if (inner_error) {
mm_cinterion_call_info_list_free (list);
g_propagate_error (error, inner_error);
diff --git a/plugins/cinterion/tests/test-modem-helpers-cinterion.c b/plugins/cinterion/tests/test-modem-helpers-cinterion.c
index c3e7e9e5..8332700b 100644
--- a/plugins/cinterion/tests/test-modem-helpers-cinterion.c
+++ b/plugins/cinterion/tests/test-modem-helpers-cinterion.c
@@ -1192,18 +1192,17 @@ test_smong_response_no_match (void)
/* Test ^SLCC URCs */
static void
-common_test_slcc_urc (const gchar *urc,
+common_test_slcc_urc (const gchar *urc,
const MMCallInfo *expected_call_info_list,
- guint expected_call_info_list_size)
+ guint expected_call_info_list_size)
{
- GError *error = NULL;
- GRegex *slcc_regex = NULL;
- gboolean result;
- GMatchInfo *match_info = NULL;
- gchar *str;
- GList *call_info_list = NULL;
- GList *l;
-
+ g_autoptr(GRegex) slcc_regex = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autofree gchar *str = NULL;
+ GError *error = NULL;
+ GList *call_info_list = NULL;
+ GList *l;
+ gboolean result;
slcc_regex = mm_cinterion_get_slcc_regex ();
@@ -1230,8 +1229,8 @@ common_test_slcc_urc (const gchar *urc,
for (l = call_info_list; l; l = g_list_next (l)) {
const MMCallInfo *call_info = (const MMCallInfo *)(l->data);
- gboolean found = FALSE;
- guint i;
+ gboolean found = FALSE;
+ guint i;
g_debug ("call at index %u: direction %s, state %s, number %s",
call_info->index,
@@ -1248,10 +1247,6 @@ common_test_slcc_urc (const gchar *urc,
g_assert (found);
}
- g_match_info_free (match_info);
- g_regex_unref (slcc_regex);
- g_free (str);
-
mm_cinterion_call_info_list_free (call_info_list);
}
@@ -1322,12 +1317,12 @@ common_test_ctzu_urc (const gchar *urc,
gint expected_offset,
gint expected_dst_offset)
{
- GError *error = NULL;
- GRegex *ctzu_regex = NULL;
- gboolean result;
- GMatchInfo *match_info = NULL;
- gchar *iso8601;
- MMNetworkTimezone *tz = NULL;
+ g_autoptr(GRegex) ctzu_regex = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autofree gchar *iso8601 = NULL;
+ GError *error = NULL;
+ gboolean result;
+ MMNetworkTimezone *tz = NULL;
ctzu_regex = mm_cinterion_get_ctzu_regex ();
@@ -1342,7 +1337,6 @@ common_test_ctzu_urc (const gchar *urc,
g_assert (iso8601);
g_assert_cmpstr (expected_iso8601, ==, iso8601);
- g_free (iso8601);
g_assert (tz);
g_assert_cmpint (expected_offset, ==, mm_network_timezone_get_offset (tz));
@@ -1351,8 +1345,6 @@ common_test_ctzu_urc (const gchar *urc,
g_assert_cmpuint ((guint)expected_dst_offset, ==, mm_network_timezone_get_dst_offset (tz));
g_object_unref (tz);
- g_match_info_free (match_info);
- g_regex_unref (ctzu_regex);
}
static void
diff --git a/plugins/huawei/mm-broadband-modem-huawei.c b/plugins/huawei/mm-broadband-modem-huawei.c
index 866707d6..c7c68b9f 100644
--- a/plugins/huawei/mm-broadband-modem-huawei.c
+++ b/plugins/huawei/mm-broadband-modem-huawei.c
@@ -627,12 +627,13 @@ load_unlock_retries_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
- MMUnlockRetries *unlock_retries;
- const gchar *result;
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
- guint i;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ MMUnlockRetries *unlock_retries;
+ const gchar *result;
+ GError *match_error = NULL;
+ guint i;
+
MMModemLock locks[4] = {
MM_MODEM_LOCK_SIM_PUK,
MM_MODEM_LOCK_SIM_PIN,
@@ -657,9 +658,6 @@ load_unlock_retries_finish (MMIfaceModem *self,
MM_CORE_ERROR_FAILED,
"Could not parse ^CPIN results: Response didn't match (%s)",
result);
-
- g_match_info_free (match_info);
- g_regex_unref (r);
return NULL;
}
@@ -683,9 +681,6 @@ load_unlock_retries_finish (MMIfaceModem *self,
mm_unlock_retries_set (unlock_retries, locks[i], num);
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
return unlock_retries;
}
diff --git a/plugins/huawei/mm-modem-helpers-huawei.c b/plugins/huawei/mm-modem-helpers-huawei.c
index 3ded6237..67bb7089 100644
--- a/plugins/huawei/mm-modem-helpers-huawei.c
+++ b/plugins/huawei/mm-modem-helpers-huawei.c
@@ -39,8 +39,6 @@ mm_huawei_parse_ndisstatqry_response (const gchar *response,
gboolean *ipv6_connected,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
GError *inner_error = NULL;
if (!response ||
@@ -71,6 +69,9 @@ mm_huawei_parse_ndisstatqry_response (const gchar *response,
/* If multiple fields available, try first parsing method */
if (strchr (response, ',')) {
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+
r = g_regex_new ("\\^NDISSTAT(?:QRY)?(?:Qry)?:\\s*(\\d),([^,]*),([^,]*),([^,\\r\\n]*)(?:\\r\\n)?"
"(?:\\^NDISSTAT:|\\^NDISSTATQRY:)?\\s*,?(\\d)?,?([^,]*)?,?([^,]*)?,?([^,\\r\\n]*)?(?:\\r\\n)?",
G_REGEX_DOLLAR_ENDONLY | G_REGEX_RAW,
@@ -108,12 +109,12 @@ mm_huawei_parse_ndisstatqry_response (const gchar *response,
ip_type_field += 4;
}
}
-
- g_match_info_free (match_info);
- g_regex_unref (r);
}
/* No separate IPv4/IPv6 info given just connected/not connected */
else {
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+
r = g_regex_new ("\\^NDISSTAT(?:QRY)?(?:Qry)?:\\s*(\\d)(?:\\r\\n)?",
G_REGEX_DOLLAR_ENDONLY | G_REGEX_RAW,
0, NULL);
@@ -134,9 +135,6 @@ mm_huawei_parse_ndisstatqry_response (const gchar *response,
*ipv4_connected = (gboolean)connected;
}
}
-
- g_match_info_free (match_info);
- g_regex_unref (r);
}
if (!ipv4_available && !ipv6_available) {
@@ -208,10 +206,10 @@ mm_huawei_parse_dhcp_response (const char *reply,
guint *out_dns2,
GError **error)
{
- gboolean matched;
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ gboolean matched;
+ GError *match_error = NULL;
g_assert (reply != NULL);
g_assert (out_address != NULL);
@@ -257,8 +255,6 @@ mm_huawei_parse_dhcp_response (const char *reply,
}
}
- g_match_info_free (match_info);
- g_regex_unref (r);
return matched;
}
@@ -276,10 +272,10 @@ mm_huawei_parse_sysinfo_response (const char *reply,
guint *out_sys_submode,
GError **error)
{
- gboolean matched;
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ gboolean matched;
+ GError *match_error = NULL;
g_assert (out_srv_status != NULL);
g_assert (out_srv_domain != NULL);
@@ -323,8 +319,6 @@ mm_huawei_parse_sysinfo_response (const char *reply,
}
}
- g_match_info_free (match_info);
- g_regex_unref (r);
return matched;
}
@@ -341,10 +335,10 @@ mm_huawei_parse_sysinfoex_response (const char *reply,
guint *out_sys_submode,
GError **error)
{
- gboolean matched;
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ gboolean matched;
+ GError *match_error = NULL;
g_assert (out_srv_status != NULL);
g_assert (out_srv_domain != NULL);
@@ -387,8 +381,6 @@ mm_huawei_parse_sysinfoex_response (const char *reply,
mm_get_uint_from_match_info (match_info, 8, out_sys_submode);
}
- g_match_info_free (match_info);
- g_regex_unref (r);
return matched;
}
@@ -1189,17 +1181,23 @@ mm_huawei_parse_syscfgex_response (const gchar *response,
/*****************************************************************************/
/* ^NWTIME response parser */
-gboolean mm_huawei_parse_nwtime_response (const gchar *response,
- gchar **iso8601p,
- MMNetworkTimezone **tzp,
- GError **error)
+gboolean
+mm_huawei_parse_nwtime_response (const gchar *response,
+ gchar **iso8601p,
+ MMNetworkTimezone **tzp,
+ GError **error)
{
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
- guint year = 0, month = 0, day = 0, hour = 0, minute = 0, second = 0, dt = 0;
- gint tz = 0;
- gboolean ret = FALSE;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *match_error = NULL;
+ guint year = 0;
+ guint month = 0;
+ guint day = 0;
+ guint hour = 0;
+ guint minute = 0;
+ guint second = 0;
+ guint dt = 0;
+ gint tz = 0;
g_assert (iso8601p || tzp); /* at least one */
@@ -1211,75 +1209,72 @@ gboolean mm_huawei_parse_nwtime_response (const gchar *response,
g_propagate_error (error, match_error);
g_prefix_error (error, "Could not parse ^NWTIME results: ");
} else {
- g_set_error_literal (error,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
+ g_set_error_literal (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
"Couldn't match ^NWTIME reply");
}
- } else {
- /* Remember that g_match_info_get_match_count() includes match #0 */
- g_assert (g_match_info_get_match_count (match_info) >= 9);
-
- if (mm_get_uint_from_match_info (match_info, 1, &year) &&
- mm_get_uint_from_match_info (match_info, 2, &month) &&
- mm_get_uint_from_match_info (match_info, 3, &day) &&
- mm_get_uint_from_match_info (match_info, 4, &hour) &&
- mm_get_uint_from_match_info (match_info, 5, &minute) &&
- mm_get_uint_from_match_info (match_info, 6, &second) &&
- mm_get_int_from_match_info (match_info, 7, &tz) &&
- mm_get_uint_from_match_info (match_info, 8, &dt)) {
-
- ret = TRUE;
-
- /* adjust year */
- if (year < 100)
- year += 2000;
- /*
- * tz = timezone offset in 15 minute intervals
- * dt = daylight adjustment, 0 = none, 1 = 1 hour, 2 = 2 hours
- * other values are marked reserved.
- */
- if (iso8601p) {
- /* Return ISO-8601 format date/time string */
- *iso8601p = mm_new_iso8601_time (year, month, day, hour,
- minute, second,
- TRUE, (tz * 15) + (dt * 60),
- error);
- ret = (*iso8601p != NULL);
- }
- if (tzp) {
- *tzp = mm_network_timezone_new ();
- mm_network_timezone_set_offset (*tzp, tz * 15);
- mm_network_timezone_set_dst_offset (*tzp, dt * 60);
- }
+ return FALSE;
+ }
- } else {
- g_set_error_literal (error,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
- "Failed to parse ^NWTIME reply");
+ /* Remember that g_match_info_get_match_count() includes match #0 */
+ g_assert (g_match_info_get_match_count (match_info) >= 9);
+
+ if (mm_get_uint_from_match_info (match_info, 1, &year) &&
+ mm_get_uint_from_match_info (match_info, 2, &month) &&
+ mm_get_uint_from_match_info (match_info, 3, &day) &&
+ mm_get_uint_from_match_info (match_info, 4, &hour) &&
+ mm_get_uint_from_match_info (match_info, 5, &minute) &&
+ mm_get_uint_from_match_info (match_info, 6, &second) &&
+ mm_get_int_from_match_info (match_info, 7, &tz) &&
+ mm_get_uint_from_match_info (match_info, 8, &dt)) {
+
+ /* adjust year */
+ if (year < 100)
+ year += 2000;
+ /*
+ * tz = timezone offset in 15 minute intervals
+ * dt = daylight adjustment, 0 = none, 1 = 1 hour, 2 = 2 hours
+ * other values are marked reserved.
+ */
+ if (tzp) {
+ *tzp = mm_network_timezone_new ();
+ mm_network_timezone_set_offset (*tzp, tz * 15);
+ mm_network_timezone_set_dst_offset (*tzp, dt * 60);
+ }
+ if (iso8601p) {
+ /* Return ISO-8601 format date/time string */
+ *iso8601p = mm_new_iso8601_time (year, month, day, hour,
+ minute, second,
+ TRUE, (tz * 15) + (dt * 60),
+ error);
+ return (*iso8601p != NULL);
}
- }
- g_match_info_free (match_info);
- g_regex_unref (r);
+ return TRUE;
+ }
- return ret;
+ g_set_error_literal (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
+ "Failed to parse ^NWTIME reply");
+ return FALSE;
}
/*****************************************************************************/
/* ^TIME response parser */
-gboolean mm_huawei_parse_time_response (const gchar *response,
- gchar **iso8601p,
- MMNetworkTimezone **tzp,
- GError **error)
+gboolean
+mm_huawei_parse_time_response (const gchar *response,
+ gchar **iso8601p,
+ MMNetworkTimezone **tzp,
+ GError **error)
{
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
- guint year, month, day, hour, minute, second;
- gboolean ret = FALSE;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *match_error = NULL;
+ guint year = 0;
+ guint month = 0;
+ guint day = 0;
+ guint hour = 0;
+ guint minute = 0;
+ guint second = 0;
g_assert (iso8601p || tzp); /* at least one */
@@ -1306,41 +1301,35 @@ gboolean mm_huawei_parse_time_response (const gchar *response,
MM_CORE_ERROR_FAILED,
"Couldn't match ^TIME reply");
}
- } else {
- /* Remember that g_match_info_get_match_count() includes match #0 */
- g_assert (g_match_info_get_match_count (match_info) >= 7);
-
- if (mm_get_uint_from_match_info (match_info, 1, &year) &&
- mm_get_uint_from_match_info (match_info, 2, &month) &&
- mm_get_uint_from_match_info (match_info, 3, &day) &&
- mm_get_uint_from_match_info (match_info, 4, &hour) &&
- mm_get_uint_from_match_info (match_info, 5, &minute) &&
- mm_get_uint_from_match_info (match_info, 6, &second)) {
- ret = TRUE;
-
- /* adjust year */
- if (year < 100)
- year += 2000;
+ return FALSE;
+ }
- /* Return ISO-8601 format date/time string */
- if (iso8601p) {
- *iso8601p = mm_new_iso8601_time (year, month, day, hour,
- minute, second, FALSE, 0,
- error);
- ret = (*iso8601p != NULL);
- }
- } else {
- g_set_error_literal (error,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
- "Failed to parse ^TIME reply");
+ /* Remember that g_match_info_get_match_count() includes match #0 */
+ g_assert (g_match_info_get_match_count (match_info) >= 7);
+
+ if (mm_get_uint_from_match_info (match_info, 1, &year) &&
+ mm_get_uint_from_match_info (match_info, 2, &month) &&
+ mm_get_uint_from_match_info (match_info, 3, &day) &&
+ mm_get_uint_from_match_info (match_info, 4, &hour) &&
+ mm_get_uint_from_match_info (match_info, 5, &minute) &&
+ mm_get_uint_from_match_info (match_info, 6, &second)) {
+ /* adjust year */
+ if (year < 100)
+ year += 2000;
+
+ /* Return ISO-8601 format date/time string */
+ if (iso8601p) {
+ *iso8601p = mm_new_iso8601_time (year, month, day, hour,
+ minute, second, FALSE, 0,
+ error);
+ return (*iso8601p != NULL);
}
+ return TRUE;
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
- return ret;
+ g_set_error_literal (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
+ "Failed to parse ^TIME reply");
+ return FALSE;
}
/*****************************************************************************/
@@ -1356,11 +1345,9 @@ mm_huawei_parse_hcsq_response (const gchar *response,
guint *out_value5,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
- gboolean ret = FALSE;
- char *s;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *match_error = NULL;
r = g_regex_new ("\\^HCSQ:\\s*\"?([a-zA-Z]*)\"?,(\\d+),?(\\d+)?,?(\\d+)?,?(\\d+)?,?(\\d+)?$", 0, 0, NULL);
g_assert (r != NULL);
@@ -1370,27 +1357,24 @@ mm_huawei_parse_hcsq_response (const gchar *response,
g_propagate_error (error, match_error);
g_prefix_error (error, "Could not parse ^HCSQ results: ");
} else {
- g_set_error_literal (error,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
+ g_set_error_literal (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
"Couldn't match ^HCSQ reply");
}
- goto done;
+ return FALSE;
}
/* Remember that g_match_info_get_match_count() includes match #0 */
if (g_match_info_get_match_count (match_info) < 3) {
- g_set_error_literal (error,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
+ g_set_error_literal (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
"Not enough elements in ^HCSQ reply");
- goto done;
+ return FALSE;
}
if (out_act) {
+ g_autofree gchar *s = NULL;
+
s = g_match_info_fetch (match_info, 1);
*out_act = mm_string_to_access_tech (s);
- g_free (s);
}
if (out_value1)
@@ -1404,13 +1388,7 @@ mm_huawei_parse_hcsq_response (const gchar *response,
if (out_value5)
mm_get_uint_from_match_info (match_info, 6, out_value5);
- ret = TRUE;
-
-done:
- g_match_info_free (match_info);
- g_regex_unref (r);
-
- return ret;
+ return TRUE;
}
/*****************************************************************************/
@@ -1422,11 +1400,12 @@ mm_huawei_parse_cvoice_response (const gchar *response,
guint *out_bits,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
- guint supported = 0, hz = 0, bits = 0;
- gboolean ret = FALSE;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *match_error = NULL;
+ guint supported = 0;
+ guint hz = 0;
+ guint bits = 0;
/* ^CVOICE: <0=supported,1=unsupported>,<hz>,<bits>,<unknown> */
r = g_regex_new ("\\^CVOICE:\\s*(\\d)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)$", 0, 0, NULL);
@@ -1442,37 +1421,31 @@ mm_huawei_parse_cvoice_response (const gchar *response,
MM_CORE_ERROR_FAILED,
"Couldn't match ^CVOICE reply");
}
- } else {
- /* Remember that g_match_info_get_match_count() includes match #0 */
- g_assert (g_match_info_get_match_count (match_info) >= 5);
-
- if (mm_get_uint_from_match_info (match_info, 1, &supported) &&
- mm_get_uint_from_match_info (match_info, 2, &hz) &&
- mm_get_uint_from_match_info (match_info, 3, &bits)) {
- if (supported == 0) {
- if (out_hz)
- *out_hz = hz;
- if (out_bits)
- *out_bits = bits;
- ret = TRUE;
- } else {
- g_set_error_literal (error,
- MM_CORE_ERROR,
- MM_CORE_ERROR_UNSUPPORTED,
- "^CVOICE not supported by this device");
- }
- } else {
- g_set_error_literal (error,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
- "Failed to parse ^CVOICE reply");
- }
+ return FALSE;
}
- g_match_info_free (match_info);
- g_regex_unref (r);
+ /* Remember that g_match_info_get_match_count() includes match #0 */
+ g_assert (g_match_info_get_match_count (match_info) >= 5);
+
+ if (mm_get_uint_from_match_info (match_info, 1, &supported) &&
+ mm_get_uint_from_match_info (match_info, 2, &hz) &&
+ mm_get_uint_from_match_info (match_info, 3, &bits)) {
+ if (supported == 0) {
+ if (out_hz)
+ *out_hz = hz;
+ if (out_bits)
+ *out_bits = bits;
+ return TRUE;
+ }
+
+ g_set_error_literal (error, MM_CORE_ERROR, MM_CORE_ERROR_UNSUPPORTED,
+ "^CVOICE not supported by this device");
+ return FALSE;
+ }
- return ret;
+ g_set_error_literal (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
+ "Failed to parse ^CVOICE reply");
+ return FALSE;
}
/*****************************************************************************/
diff --git a/plugins/icera/mm-broadband-modem-icera.c b/plugins/icera/mm-broadband-modem-icera.c
index 897d2562..759985e0 100644
--- a/plugins/icera/mm-broadband-modem-icera.c
+++ b/plugins/icera/mm-broadband-modem-icera.c
@@ -123,12 +123,12 @@ load_supported_modes_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
- GArray *combinations = NULL;
- const gchar *response;
- gchar **split = NULL;
- GMatchInfo *match_info;
- GRegex *r;
- guint i;
+ GArray *combinations = NULL;
+ const gchar *response;
+ gchar **split = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autoptr(GRegex) r = NULL;
+ guint i;
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, error);
if (!response)
@@ -145,18 +145,13 @@ load_supported_modes_finish (MMIfaceModem *self,
g_regex_match (r, response, 0, &match_info);
if (g_match_info_matches (match_info)) {
- gchar *aux;
+ g_autofree gchar *aux = NULL;
aux = mm_get_string_unquoted_from_match_info (match_info, 1);
- if (aux) {
+ if (aux)
split = g_strsplit (aux, ",", -1);
- g_free (aux);
- }
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (!split) {
g_set_error (error,
MM_CORE_ERROR,
@@ -1122,11 +1117,12 @@ icera_band_to_mm (const char *icera)
}
static GSList *
-parse_bands (const gchar *response, guint32 *out_len)
+parse_bands (const gchar *response,
+ guint32 *out_len)
{
- GRegex *r;
- GMatchInfo *info;
- GSList *bands = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) info = NULL;
+ GSList *bands = NULL;
g_return_val_if_fail (out_len != NULL, NULL);
@@ -1163,8 +1159,6 @@ parse_bands (const gchar *response, guint32 *out_len)
g_free (enabled);
g_match_info_next (info, NULL);
}
- g_match_info_free (info);
- g_regex_unref (r);
return bands;
}
diff --git a/plugins/mbm/mm-modem-helpers-mbm.c b/plugins/mbm/mm-modem-helpers-mbm.c
index 31fbb376..846cc4d6 100644
--- a/plugins/mbm/mm-modem-helpers-mbm.c
+++ b/plugins/mbm/mm-modem-helpers-mbm.c
@@ -55,15 +55,17 @@ mm_mbm_parse_e2ipcfg_response (const gchar *response,
MMBearerIpConfig **out_ip6_config,
GError **error)
{
- MMBearerIpConfig **ip_config = NULL;
- gboolean got_address = FALSE, got_gw = FALSE, got_dns = FALSE;
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
- gchar *dns[3] = { 0 };
- guint dns_idx = 0;
- int family = AF_INET;
- MMBearerIpMethod method = MM_BEARER_IP_METHOD_STATIC;
+ MMBearerIpConfig **ip_config = NULL;
+ gboolean got_address = FALSE;
+ gboolean got_gw = FALSE;
+ gboolean got_dns = FALSE;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *match_error = NULL;
+ gchar *dns[3] = { 0 };
+ guint dns_idx = 0;
+ int family = AF_INET;
+ MMBearerIpMethod method = MM_BEARER_IP_METHOD_STATIC;
g_return_val_if_fail (out_ip4_config, FALSE);
g_return_val_if_fail (out_ip6_config, FALSE);
@@ -108,14 +110,17 @@ mm_mbm_parse_e2ipcfg_response (const gchar *response,
MM_CORE_ERROR_FAILED,
"Couldn't match " E2IPCFG_TAG " reply");
}
- goto done;
+ return FALSE;
}
*ip_config = mm_bearer_ip_config_new ();
mm_bearer_ip_config_set_method (*ip_config, method);
while (g_match_info_matches (match_info)) {
- char *id = g_match_info_fetch (match_info, 1);
- char *str = g_match_info_fetch (match_info, 2);
+ g_autofree gchar *id = NULL;
+ g_autofree gchar *str = NULL;
+
+ id = g_match_info_fetch (match_info, 1);
+ str = g_match_info_fetch (match_info, 2);
switch (atoi (id)) {
case 1:
@@ -140,8 +145,6 @@ mm_mbm_parse_e2ipcfg_response (const gchar *response,
default:
break;
}
- g_free (id);
- g_free (str);
g_match_info_next (match_info, NULL);
}
@@ -156,12 +159,10 @@ mm_mbm_parse_e2ipcfg_response (const gchar *response,
*ip_config = NULL;
g_set_error_literal (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
"Got incomplete IP configuration from " E2IPCFG_TAG);
+ return FALSE;
}
-done:
- g_match_info_free (match_info);
- g_regex_unref (r);
- return !!*ip_config;
+ return TRUE;
}
/*****************************************************************************/
diff --git a/plugins/mtk/mm-broadband-modem-mtk.c b/plugins/mtk/mm-broadband-modem-mtk.c
index 0ceca795..869784f3 100644
--- a/plugins/mtk/mm-broadband-modem-mtk.c
+++ b/plugins/mtk/mm-broadband-modem-mtk.c
@@ -67,13 +67,16 @@ load_unlock_retries_ready (MMBaseModem *self,
GAsyncResult *res,
GTask *task)
{
- const gchar *response;
- GError *error = NULL;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
- GRegex *r = NULL;
- gint pin1, puk1, pin2, puk2;
- MMUnlockRetries *retries;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autoptr(GRegex) r = NULL;
+ const gchar *response;
+ GError *error = NULL;
+ GError *match_error = NULL;
+ gint pin1;
+ gint puk1;
+ gint pin2;
+ gint puk2;
+ MMUnlockRetries *retries;
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error);
if (!response) {
@@ -91,14 +94,11 @@ load_unlock_retries_ready (MMBaseModem *self,
g_assert (r != NULL);
if (!g_regex_match_full (r, response, strlen (response), 0, 0, &match_info, &match_error)){
- if (match_error) {
- g_propagate_error (&error, match_error);
- } else {
- g_set_error (&error,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
- "Failed to match EPINC response: %s", response);
- }
+ if (match_error)
+ g_task_return_error (task, match_error);
+ else
+ g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
+ "Failed to match EPINC response: %s", response);
g_task_return_error (task, error);
} else if (!mm_get_int_from_match_info (match_info, 1, &pin1) ||
!mm_get_int_from_match_info (match_info, 2, &pin2) ||
@@ -120,9 +120,6 @@ load_unlock_retries_ready (MMBaseModem *self,
g_task_return_pointer (task, retries, g_object_unref);
}
g_object_unref (task);
-
- g_match_info_free (match_info);
- g_regex_unref (r);
}
static void
@@ -178,14 +175,14 @@ get_supported_modes_ready (MMBaseModem *self,
GTask *task)
{
- const gchar *response;
- GError *error = NULL;
- GMatchInfo *match_info = NULL;
- MMModemModeCombination mode;
- GArray *combinations;
- GRegex *r;
- GError *match_error = NULL;
- gint device_type;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autoptr(GRegex) r = NULL;
+ const gchar *response;
+ GError *error = NULL;
+ MMModemModeCombination mode;
+ GArray *combinations;
+ GError *match_error = NULL;
+ gint device_type;
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error);
if (!response) {
@@ -205,9 +202,6 @@ get_supported_modes_ready (MMBaseModem *self,
g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
"Failed to match EGMR response: %s", response);
g_object_unref (task);
-
- g_match_info_free (match_info);
- g_regex_unref (r);
return;
}
@@ -216,9 +210,6 @@ get_supported_modes_ready (MMBaseModem *self,
"Failed to parse the allowed mode response: '%s'",
response);
g_object_unref (task);
-
- g_regex_unref (r);
- g_match_info_free (match_info);
return;
}
@@ -271,9 +262,6 @@ get_supported_modes_ready (MMBaseModem *self,
*/
g_task_return_pointer (task, combinations, (GDestroyNotify)g_array_unref);
g_object_unref (task);
-
- g_regex_unref (r);
- g_match_info_free (match_info);
}
static void
@@ -307,17 +295,16 @@ load_current_modes_finish (MMIfaceModem *self,
MMModemMode *preferred,
GError **error)
{
- const gchar *response;
- GMatchInfo *match_info = NULL;
- GRegex *r;
- gint erat_mode = -1;
- gint erat_pref = -1;
- GError *match_error = NULL;
- gboolean result = FALSE;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autoptr(GRegex) r = NULL;
+ const gchar *response;
+ gint erat_mode = -1;
+ gint erat_pref = -1;
+ GError *match_error = NULL;
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, error);
if (!response)
- return result;
+ return FALSE;
r = g_regex_new (
"\\+ERAT:\\s*[0-9]+,\\s*[0-9]+,\\s*([0-9]+),\\s*([0-9]+)",
@@ -329,30 +316,22 @@ load_current_modes_finish (MMIfaceModem *self,
if (!g_regex_match_full (r, response, strlen (response), 0, 0, &match_info, &match_error)) {
if (match_error)
g_propagate_error (error, match_error);
- else {
- g_set_error (error,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
+ else
+ g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
"Couldn't parse +ERAT response: '%s'",
response);
-
- }
- goto done;
+ return FALSE;
}
if (!mm_get_int_from_match_info (match_info, 1, &erat_mode) ||
!mm_get_int_from_match_info (match_info, 2, &erat_pref)) {
- g_set_error (error,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
+ g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
"Failed to parse the ERAT response: m=%d p=%d",
erat_mode, erat_pref);
- goto done;
+ return FALSE;
}
/* Correctly parsed! */
- result = TRUE;
-
switch (erat_mode) {
case 0:
*allowed = MM_MODEM_MODE_2G;
@@ -376,9 +355,8 @@ load_current_modes_finish (MMIfaceModem *self,
*allowed = MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G;
break;
default:
- result = FALSE;
mm_obj_dbg (self, "unsupported allowed mode reported in +ERAT: %d", erat_mode);
- goto done;
+ return FALSE;
}
switch (erat_pref) {
@@ -395,17 +373,11 @@ load_current_modes_finish (MMIfaceModem *self,
*preferred = MM_MODEM_MODE_4G;
break;
default:
- result = FALSE;
mm_obj_dbg (self, "unsupported preferred mode %d", erat_pref);
- goto done;
+ return FALSE;
}
-done:
- if (r)
- g_regex_unref (r);
- g_match_info_free (match_info);
-
- return result;
+ return TRUE;
}
static void
diff --git a/plugins/novatel/mm-broadband-modem-novatel.c b/plugins/novatel/mm-broadband-modem-novatel.c
index 1cc88e90..46bf438a 100644
--- a/plugins/novatel/mm-broadband-modem-novatel.c
+++ b/plugins/novatel/mm-broadband-modem-novatel.c
@@ -159,12 +159,12 @@ nwrat_query_ready (MMBaseModem *self,
GTask *task)
{
LoadCurrentModesResult *result;
- GError *error = NULL;
- const gchar *response;
- GRegex *r;
- GMatchInfo *match_info = NULL;
- gint a = -1;
- gint b = -1;
+ GError *error = NULL;
+ const gchar *response;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ gint a = -1;
+ gint b = -1;
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error);
if (!response) {
@@ -187,8 +187,6 @@ nwrat_query_ready (MMBaseModem *self,
"Couldn't match NWRAT reply: %s",
response);
g_object_unref (task);
- g_match_info_free (match_info);
- g_regex_unref (r);
return;
}
@@ -203,8 +201,6 @@ nwrat_query_ready (MMBaseModem *self,
"Failed to parse mode/tech response '%s': invalid modes reported",
response);
g_object_unref (task);
- g_match_info_free (match_info);
- g_regex_unref (r);
return;
}
@@ -239,9 +235,6 @@ nwrat_query_ready (MMBaseModem *self,
break;
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
g_task_return_pointer (task, result, g_free);
g_object_unref (task);
}
@@ -1396,13 +1389,18 @@ parse_nwltime_reply (const char *response,
MMNetworkTimezone **out_tz,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
- guint year, month, day, hour, minute, second;
- gchar *result = NULL;
- gint utc_offset = 0;
- gboolean success = FALSE;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *match_error = NULL;
+ guint year;
+ guint month;
+ guint day;
+ guint hour;
+ guint minute;
+ guint second;
+ g_autofree gchar *result = NULL;
+ gint utc_offset = 0;
+ gboolean success = FALSE;
/* Sample reply: 2013.3.27.15.47.19.2.-5 */
r = g_regex_new ("(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)\\.([\\-\\+\\d]+)$", 0, 0, NULL);
@@ -1429,7 +1427,6 @@ parse_nwltime_reply (const char *response,
mm_get_uint_from_match_info (match_info, 5, &minute) &&
mm_get_uint_from_match_info (match_info, 6, &second) &&
mm_get_int_from_match_info (match_info, 8, &utc_offset)) {
-
result = mm_new_iso8601_time (year, month, day, hour, minute, second,
TRUE, utc_offset * 60, error);
if (out_tz) {
@@ -1447,12 +1444,8 @@ parse_nwltime_reply (const char *response,
}
if (out_iso_8601)
- *out_iso_8601 = result;
- else
- g_free (result);
+ *out_iso_8601 = g_steal_pointer (&result);
- g_match_info_free (match_info);
- g_regex_unref (r);
return success;
}
diff --git a/plugins/option/mm-broadband-modem-option.c b/plugins/option/mm-broadband-modem-option.c
index 5919364d..dcecd5b0 100644
--- a/plugins/option/mm-broadband-modem-option.c
+++ b/plugins/option/mm-broadband-modem-option.c
@@ -362,12 +362,10 @@ static gboolean
parse_ossys_response (const gchar *response,
MMModemAccessTechnology *access_technology)
{
- MMModemAccessTechnology current = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN;
- const gchar *p;
- GRegex *r;
- GMatchInfo *match_info;
- gchar *str;
- gboolean success = FALSE;
+ MMModemAccessTechnology current = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN;
+ const gchar *p;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
p = mm_strip_tag (response, "_OSSYS:");
r = g_regex_new ("(\\d),(\\d)", G_REGEX_UNGREEDY, 0, NULL);
@@ -375,17 +373,15 @@ parse_ossys_response (const gchar *response,
g_regex_match (r, p, 0, &match_info);
if (g_match_info_matches (match_info)) {
+ g_autofree gchar *str = NULL;
+
str = g_match_info_fetch (match_info, 2);
if (str && ossys_to_mm (str[0], &current)) {
*access_technology = current;
- success = TRUE;
- }
- g_free (str);
+ return TRUE;
+ }
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
- return success;
+ return FALSE;
}
static void
@@ -445,12 +441,10 @@ static gboolean
parse_octi_response (const gchar *response,
MMModemAccessTechnology *access_technology)
{
- MMModemAccessTechnology current = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN;
- const gchar *p;
- GRegex *r;
- GMatchInfo *match_info;
- gchar *str;
- gboolean success = FALSE;
+ MMModemAccessTechnology current = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN;
+ const gchar *p;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
p = mm_strip_tag (response, "_OCTI:");
r = g_regex_new ("(\\d),(\\d)", G_REGEX_UNGREEDY, 0, NULL);
@@ -458,17 +452,15 @@ parse_octi_response (const gchar *response,
g_regex_match (r, p, 0, &match_info);
if (g_match_info_matches (match_info)) {
+ g_autofree gchar *str = NULL;
+
str = g_match_info_fetch (match_info, 2);
if (str && octi_to_mm (str[0], &current)) {
*access_technology = current;
- success = TRUE;
+ return TRUE;
}
- g_free (str);
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
- return success;
+ return FALSE;
}
static void
diff --git a/plugins/quectel/mm-shared-quectel.c b/plugins/quectel/mm-shared-quectel.c
index ab079436..c383dc05 100644
--- a/plugins/quectel/mm-shared-quectel.c
+++ b/plugins/quectel/mm-shared-quectel.c
@@ -440,8 +440,8 @@ mm_shared_quectel_setup_sim_hot_swap (MMIfaceModem *self,
Private *priv;
MMPortSerialAt *ports[2];
GTask *task;
- GRegex *pattern;
guint i;
+ g_autoptr(GRegex) pattern = NULL;
g_autoptr(GError) error = NULL;
priv = get_private (MM_SHARED_QUECTEL (self));
@@ -464,7 +464,6 @@ mm_shared_quectel_setup_sim_hot_swap (MMIfaceModem *self,
NULL);
}
- g_regex_unref (pattern);
mm_obj_dbg (self, "+QUSIM detection set up");
if (!mm_broadband_modem_sim_hot_swap_ports_context_init (MM_BROADBAND_MODEM (self), &error))
diff --git a/plugins/sierra/mm-broadband-modem-sierra.c b/plugins/sierra/mm-broadband-modem-sierra.c
index 3ac20808..bae8e344 100644
--- a/plugins/sierra/mm-broadband-modem-sierra.c
+++ b/plugins/sierra/mm-broadband-modem-sierra.c
@@ -624,7 +624,7 @@ load_current_modes_finish (MMIfaceModem *self,
MMModemMode *preferred,
GError **error)
{
- LoadCurrentModesResult *result;
+ g_autofree LoadCurrentModesResult *result = NULL;
result = g_task_propagate_pointer (G_TASK (res), error);
if (!result)
@@ -632,7 +632,6 @@ load_current_modes_finish (MMIfaceModem *self,
*allowed = result->allowed;
*preferred = result->preferred;
- g_free (result);
return TRUE;
}
@@ -641,11 +640,11 @@ selrat_query_ready (MMBaseModem *self,
GAsyncResult *res,
GTask *task)
{
- LoadCurrentModesResult *result;
- const gchar *response;
- GError *error = NULL;
- GRegex *r = NULL;
- GMatchInfo *match_info = NULL;
+ g_autofree LoadCurrentModesResult *result = NULL;
+ const gchar *response;
+ GError *error = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
response = mm_base_modem_at_command_full_finish (self, res, &error);
if (!response) {
@@ -727,15 +726,10 @@ selrat_query_ready (MMBaseModem *self,
"Could not parse allowed mode response: Response didn't match: '%s'",
response);
- g_match_info_free (match_info);
- g_regex_unref (r);
-
- if (error) {
- g_free (result);
+ if (error)
g_task_return_error (task, error);
- } else
- g_task_return_pointer (task, result, g_free);
-
+ else
+ g_task_return_pointer (task, g_steal_pointer (&result), g_free);
g_object_unref (task);
}
@@ -1630,11 +1624,16 @@ parse_time (const gchar *response,
const gchar *tag,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *match_error = NULL;
- guint year, month, day, hour, minute, second;
- gchar *result = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *match_error = NULL;
+ guint year;
+ guint month;
+ guint day;
+ guint hour;
+ guint minute;
+ guint second;
+ gchar *result = NULL;
r = g_regex_new (regex, 0, 0, NULL);
g_assert (r != NULL);
@@ -1665,8 +1664,6 @@ parse_time (const gchar *response,
}
}
- g_match_info_free (match_info);
- g_regex_unref (r);
return result;
}
diff --git a/plugins/sierra/mm-common-sierra.c b/plugins/sierra/mm-common-sierra.c
index 341006d6..72cbc34f 100644
--- a/plugins/sierra/mm-common-sierra.c
+++ b/plugins/sierra/mm-common-sierra.c
@@ -480,7 +480,7 @@ mm_common_sierra_setup_ports (MMBroadbandModem *self)
{
MMPortSerialAt *ports[2];
guint i;
- GRegex *pacsp_regex;
+ g_autoptr(GRegex) pacsp_regex = NULL;
pacsp_regex = g_regex_new ("\\r\\n\\+PACSP.*\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
@@ -505,8 +505,6 @@ mm_common_sierra_setup_ports (MMBroadbandModem *self)
pacsp_regex,
NULL, NULL, NULL);
}
-
- g_regex_unref (pacsp_regex);
}
/*****************************************************************************/
diff --git a/plugins/sierra/mm-modem-helpers-sierra.c b/plugins/sierra/mm-modem-helpers-sierra.c
index ac07c9ee..821be199 100644
--- a/plugins/sierra/mm-modem-helpers-sierra.c
+++ b/plugins/sierra/mm-modem-helpers-sierra.c
@@ -23,16 +23,15 @@ GList *
mm_sierra_parse_scact_read_response (const gchar *reply,
GError **error)
{
- GError *inner_error = NULL;
- GRegex *r;
- GMatchInfo *match_info;
- GList *list;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ GList *list = NULL;
if (!reply || !reply[0])
/* Nothing configured, all done */
return NULL;
- list = NULL;
r = g_regex_new ("!SCACT:\\s*(\\d+),(\\d+)",
G_REGEX_DOLLAR_ENDONLY | G_REGEX_RAW, 0, &inner_error);
g_assert (r);
@@ -66,9 +65,6 @@ mm_sierra_parse_scact_read_response (const gchar *reply,
g_match_info_next (match_info, &inner_error);
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
mm_3gpp_pdp_context_active_list_free (list);
g_propagate_error (error, inner_error);
@@ -76,7 +72,5 @@ mm_sierra_parse_scact_read_response (const gchar *reply,
return NULL;
}
- list = g_list_sort (list, (GCompareFunc) mm_3gpp_pdp_context_active_cmp);
-
- return list;
+ return g_list_sort (list, (GCompareFunc) mm_3gpp_pdp_context_active_cmp);
}
diff --git a/plugins/simtech/tests/test-modem-helpers-simtech.c b/plugins/simtech/tests/test-modem-helpers-simtech.c
index d5d774f2..ba6532cc 100644
--- a/plugins/simtech/tests/test-modem-helpers-simtech.c
+++ b/plugins/simtech/tests/test-modem-helpers-simtech.c
@@ -33,13 +33,13 @@ common_test_clcc_urc (const gchar *urc,
const MMCallInfo *expected_call_info_list,
guint expected_call_info_list_size)
{
- GError *error = NULL;
- GRegex *clcc_regex = NULL;
- gboolean result;
- GMatchInfo *match_info = NULL;
- gchar *str;
- GList *call_info_list = NULL;
- GList *l;
+ g_autoptr(GRegex) clcc_regex = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autofree gchar *str = NULL;
+ GError *error = NULL;
+ GList *call_info_list = NULL;
+ GList *l;
+ gboolean result;
clcc_regex = mm_simtech_get_clcc_urc_regex ();
@@ -84,10 +84,6 @@ common_test_clcc_urc (const gchar *urc,
g_assert (found);
}
- g_match_info_free (match_info);
- g_regex_unref (clcc_regex);
- g_free (str);
-
mm_simtech_call_info_list_free (call_info_list);
}
@@ -148,12 +144,12 @@ common_test_voice_call_urc (const gchar *urc,
gboolean expected_start_or_stop,
guint expected_duration)
{
- GError *error = NULL;
- gboolean start_or_stop = FALSE; /* start = TRUE, stop = FALSE */
- guint duration = 0;
- GRegex *voice_call_regex = NULL;
- gboolean result;
- GMatchInfo *match_info = NULL;
+ g_autoptr(GRegex) voice_call_regex = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *error = NULL;
+ gboolean start_or_stop = FALSE; /* start = TRUE, stop = FALSE */
+ guint duration = 0;
+ gboolean result;
voice_call_regex = mm_simtech_get_voice_call_urc_regex ();
@@ -168,9 +164,6 @@ common_test_voice_call_urc (const gchar *urc,
g_assert_cmpuint (expected_start_or_stop, ==, start_or_stop);
g_assert_cmpuint (expected_duration, ==, duration);
-
- g_match_info_free (match_info);
- g_regex_unref (voice_call_regex);
}
static void
@@ -197,11 +190,11 @@ static void
common_test_missed_call_urc (const gchar *urc,
const gchar *expected_details)
{
- GError *error = NULL;
- gchar *details = NULL;
- GRegex *missed_call_regex = NULL;
- gboolean result;
- GMatchInfo *match_info = NULL;
+ g_autoptr(GRegex) missed_call_regex = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autofree gchar *details = NULL;
+ GError *error = NULL;
+ gboolean result;
missed_call_regex = mm_simtech_get_missed_call_urc_regex ();
@@ -215,10 +208,6 @@ common_test_missed_call_urc (const gchar *urc,
g_assert (result);
g_assert_cmpstr (expected_details, ==, details);
- g_free (details);
-
- g_match_info_free (match_info);
- g_regex_unref (missed_call_regex);
}
static void
@@ -233,11 +222,11 @@ static void
common_test_cring_urc (const gchar *urc,
const gchar *expected_type)
{
- GError *error = NULL;
- GRegex *cring_regex = NULL;
- GMatchInfo *match_info = NULL;
- gchar *type;
- gboolean result;
+ g_autoptr(GRegex) cring_regex = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autofree gchar *type = NULL;
+ GError *error = NULL;
+ gboolean result;
cring_regex = mm_simtech_get_cring_urc_regex ();
@@ -250,10 +239,6 @@ common_test_cring_urc (const gchar *urc,
g_assert (type);
g_assert_cmpstr (type, ==, expected_type);
-
- g_match_info_free (match_info);
- g_regex_unref (cring_regex);
- g_free (type);
}
static void
@@ -274,11 +259,11 @@ static void
common_test_rxdtmf_urc (const gchar *urc,
const gchar *expected_str)
{
- GError *error = NULL;
- GRegex *rxdtmf_regex = NULL;
- GMatchInfo *match_info = NULL;
- gchar *type;
- gboolean result;
+ g_autoptr(GRegex) rxdtmf_regex = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autofree gchar *type = NULL;
+ GError *error = NULL;
+ gboolean result;
rxdtmf_regex = mm_simtech_get_rxdtmf_urc_regex ();
@@ -291,10 +276,6 @@ common_test_rxdtmf_urc (const gchar *urc,
g_assert (type);
g_assert_cmpstr (type, ==, expected_str);
-
- g_match_info_free (match_info);
- g_regex_unref (rxdtmf_regex);
- g_free (type);
}
static void
diff --git a/plugins/telit/mm-broadband-modem-telit.c b/plugins/telit/mm-broadband-modem-telit.c
index 49e48247..bbf3f760 100644
--- a/plugins/telit/mm-broadband-modem-telit.c
+++ b/plugins/telit/mm-broadband-modem-telit.c
@@ -501,10 +501,10 @@ telit_qss_enable_ready (MMBaseModem *self,
GAsyncResult *res,
GTask *task)
{
- QssSetupContext *ctx;
- MMPortSerialAt *port;
- GError **error;
- GRegex *pattern;
+ QssSetupContext *ctx;
+ MMPortSerialAt *port;
+ GError **error;
+ g_autoptr(GRegex) pattern = NULL;
ctx = g_task_get_task_data (task);
@@ -530,7 +530,6 @@ telit_qss_enable_ready (MMBaseModem *self,
(MMPortSerialAtUnsolicitedMsgFn)telit_qss_unsolicited_handler,
self,
NULL);
- g_regex_unref (pattern);
next_step:
ctx->step++;
diff --git a/plugins/telit/mm-common-telit.c b/plugins/telit/mm-common-telit.c
index 2e0b3801..911c605b 100644
--- a/plugins/telit/mm-common-telit.c
+++ b/plugins/telit/mm-common-telit.c
@@ -112,12 +112,12 @@ cache_port_mode (MMPortProbe *probe,
MMDevice *device,
const gchar *reply)
{
- GRegex *r = NULL;
- GRegexCompileFlags flags = G_REGEX_DOLLAR_ENDONLY | G_REGEX_RAW;
- GMatchInfo *match_info = NULL;
- GError *error = NULL;
- gboolean ret = FALSE;
- guint portcfg_current;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GRegexCompileFlags flags = G_REGEX_DOLLAR_ENDONLY | G_REGEX_RAW;
+ GError *error = NULL;
+ gboolean ret = FALSE;
+ guint portcfg_current;
/* #PORTCFG: <requested>,<active> */
r = g_regex_new ("#PORTCFG:\\s*(\\d+),(\\d+)", flags, 0, NULL);
@@ -173,9 +173,7 @@ cache_port_mode (MMPortProbe *probe,
ret = TRUE;
out:
- g_match_info_free (match_info);
- g_regex_unref (r);
- if (error != NULL) {
+ if (error) {
mm_obj_dbg (probe, "error while matching #PORTCFG: %s", error->message);
g_error_free (error);
}
diff --git a/plugins/telit/mm-modem-helpers-telit.c b/plugins/telit/mm-modem-helpers-telit.c
index c2061fcd..54cd6a0c 100644
--- a/plugins/telit/mm-modem-helpers-telit.c
+++ b/plugins/telit/mm-modem-helpers-telit.c
@@ -701,11 +701,11 @@ common_parse_bnd_response (const gchar *response,
gpointer log_object,
GError **error)
{
- GError *inner_error = NULL;
- GArray *bands = NULL;
- GMatchInfo *match_info = NULL;
- GRegex *r = NULL;
- const gchar *load_bands_regex = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autoptr(GRegex) r = NULL;
+ GError *inner_error = NULL;
+ GArray *bands = NULL;
+ const gchar *load_bands_regex = NULL;
static const gchar *load_bands_regex_4g_hex[] = {
[LOAD_BANDS_TYPE_SUPPORTED] = "#BND:"MM_SUPPORTED_BANDS_2G MM_SUPPORTED_BANDS_3G MM_SUPPORTED_BANDS_4G_HEX,
@@ -761,9 +761,6 @@ common_parse_bnd_response (const gchar *response,
goto out;
}
out:
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
g_propagate_error (error, inner_error);
g_clear_pointer (&bands, g_array_unref);
diff --git a/plugins/ublox/mm-broadband-modem-ublox.c b/plugins/ublox/mm-broadband-modem-ublox.c
index b5c2072d..e070b750 100644
--- a/plugins/ublox/mm-broadband-modem-ublox.c
+++ b/plugins/ublox/mm-broadband-modem-ublox.c
@@ -1122,10 +1122,10 @@ static void
ublox_setup_ciev_handler (MMIfaceModem *self,
guint simind_idx)
{
- GRegex *pattern;
- gchar *ciev_regex;
- MMPortSerialAt *primary_port;
- MMPortSerialAt *secondary_port;
+ g_autoptr(GRegex) pattern = NULL;
+ g_autofree gchar *ciev_regex = NULL;
+ MMPortSerialAt *primary_port;
+ MMPortSerialAt *secondary_port;
primary_port = mm_base_modem_peek_port_primary (MM_BASE_MODEM (self));
mm_obj_dbg (self, "setting up simind 'CIEV: %d' events handler", simind_idx);
@@ -1149,9 +1149,6 @@ ublox_setup_ciev_handler (MMIfaceModem *self,
(MMPortSerialAtUnsolicitedMsgFn) ublox_ciev_unsolicited_handler,
self,
NULL);
-
- g_regex_unref (pattern);
- g_free (ciev_regex);
}
static void
diff --git a/plugins/ublox/mm-modem-helpers-ublox.c b/plugins/ublox/mm-modem-helpers-ublox.c
index bb0e02ac..5cc03542 100644
--- a/plugins/ublox/mm-modem-helpers-ublox.c
+++ b/plugins/ublox/mm-modem-helpers-ublox.c
@@ -31,14 +31,14 @@ mm_ublox_parse_upincnt_response (const gchar *response,
guint *out_puk2_attempts,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- GError *inner_error = NULL;
- guint pin_attempts = 0;
- guint pin2_attempts = 0;
- guint puk_attempts = 0;
- guint puk2_attempts = 0;
- gboolean success = TRUE;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ guint pin_attempts = 0;
+ guint pin2_attempts = 0;
+ guint puk_attempts = 0;
+ guint puk2_attempts = 0;
+ gboolean success = TRUE;
g_assert (out_pin_attempts);
g_assert (out_pin2_attempts);
@@ -78,9 +78,6 @@ mm_ublox_parse_upincnt_response (const gchar *response,
out:
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
g_propagate_error (error, inner_error);
return FALSE;
@@ -107,10 +104,10 @@ mm_ublox_parse_uusbconf_response (const gchar *response,
MMUbloxUsbProfile *out_profile,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- GError *inner_error = NULL;
- MMUbloxUsbProfile profile = MM_UBLOX_USB_PROFILE_UNKNOWN;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ MMUbloxUsbProfile profile = MM_UBLOX_USB_PROFILE_UNKNOWN;
g_assert (out_profile != NULL);
@@ -127,7 +124,7 @@ mm_ublox_parse_uusbconf_response (const gchar *response,
g_regex_match_full (r, response, strlen (response), 0, 0, &match_info, &inner_error);
if (!inner_error && g_match_info_matches (match_info)) {
- gchar *profile_name;
+ g_autofree gchar *profile_name = NULL;
profile_name = mm_get_string_unquoted_from_match_info (match_info, 2);
if (profile_name && profile_name[0]) {
@@ -140,12 +137,8 @@ mm_ublox_parse_uusbconf_response (const gchar *response,
"Unknown USB profile: '%s'", profile_name);
} else
profile = MM_UBLOX_USB_PROFILE_BACK_COMPATIBLE;
- g_free (profile_name);
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
g_propagate_error (error, inner_error);
return FALSE;
@@ -169,10 +162,10 @@ mm_ublox_parse_ubmconf_response (const gchar *response,
MMUbloxNetworkingMode *out_mode,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- GError *inner_error = NULL;
- MMUbloxNetworkingMode mode = MM_UBLOX_NETWORKING_MODE_UNKNOWN;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ MMUbloxNetworkingMode mode = MM_UBLOX_NETWORKING_MODE_UNKNOWN;
g_assert (out_mode != NULL);
@@ -203,9 +196,6 @@ mm_ublox_parse_ubmconf_response (const gchar *response,
}
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
g_propagate_error (error, inner_error);
return FALSE;
@@ -234,15 +224,15 @@ mm_ublox_parse_uipaddr_response (const gchar *response,
gchar **out_ipv6_link_local_address,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- GError *inner_error = NULL;
- guint cid = 0;
- gchar *if_name = NULL;
- gchar *ipv4_address = NULL;
- gchar *ipv4_subnet = NULL;
- gchar *ipv6_global_address = NULL;
- gchar *ipv6_link_local_address = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ guint cid = 0;
+ gchar *if_name = NULL;
+ gchar *ipv4_address = NULL;
+ gchar *ipv4_subnet = NULL;
+ gchar *ipv6_global_address = NULL;
+ gchar *ipv6_link_local_address = NULL;
/* Response may be e.g.:
* +UIPADDR: 1,"ccinet0","5.168.120.13","255.255.255.0","",""
@@ -288,10 +278,6 @@ mm_ublox_parse_uipaddr_response (const gchar *response,
ipv6_link_local_address = mm_get_string_unquoted_from_match_info (match_info, 6);
out:
-
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
g_free (if_name);
g_free (ipv4_address);
@@ -1550,11 +1536,11 @@ GArray *
mm_ublox_parse_uact_response (const gchar *response,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- GError *inner_error = NULL;
- GArray *nums = NULL;
- GArray *bands = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ GArray *nums = NULL;
+ GArray *bands = NULL;
/*
* AT+UACT?
@@ -1566,16 +1552,12 @@ mm_ublox_parse_uact_response (const gchar *response,
g_regex_match_full (r, response, strlen (response), 0, 0, &match_info, &inner_error);
if (!inner_error && g_match_info_matches (match_info)) {
- gchar *bandstr;
+ g_autofree gchar *bandstr = NULL;
bandstr = mm_get_string_unquoted_from_match_info (match_info, 4);
nums = mm_parse_uint_list (bandstr, &inner_error);
- g_free (bandstr);
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
g_propagate_error (error, inner_error);
return NULL;
@@ -1632,16 +1614,16 @@ mm_ublox_parse_uact_test (const gchar *response,
GArray **bands4g_out,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- GError *inner_error = NULL;
- const gchar *bands2g_str = NULL;
- const gchar *bands3g_str = NULL;
- const gchar *bands4g_str = NULL;
- GArray *bands2g = NULL;
- GArray *bands3g = NULL;
- GArray *bands4g = NULL;
- gchar **split = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_auto(GStrv) split = NULL;
+ GError *inner_error = NULL;
+ const gchar *bands2g_str = NULL;
+ const gchar *bands3g_str = NULL;
+ const gchar *bands4g_str = NULL;
+ GArray *bands2g = NULL;
+ GArray *bands3g = NULL;
+ GArray *bands4g = NULL;
g_assert (bands2g_out && bands3g_out && bands4g_out);
@@ -1658,8 +1640,8 @@ mm_ublox_parse_uact_test (const gchar *response,
goto out;
if (g_match_info_matches (match_info)) {
- gchar *aux;
- guint n_groups;
+ g_autofree gchar *aux = NULL;
+ guint n_groups;
aux = mm_get_string_unquoted_from_match_info (match_info, 4);
split = mm_split_string_groups (aux);
@@ -1670,7 +1652,6 @@ mm_ublox_parse_uact_test (const gchar *response,
bands3g_str = split[1];
if (n_groups >= 3)
bands4g_str = split[2];
- g_free (aux);
}
if (!bands2g_str && !bands3g_str && !bands4g_str) {
@@ -1692,10 +1673,6 @@ mm_ublox_parse_uact_test (const gchar *response,
/* success */
out:
- g_strfreev (split);
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
if (bands2g)
g_array_unref (bands2g);
@@ -1760,13 +1737,13 @@ mm_ublox_parse_urat_read_response (const gchar *response,
MMModemMode *out_preferred,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- GError *inner_error = NULL;
- MMModemMode allowed = MM_MODEM_MODE_NONE;
- MMModemMode preferred = MM_MODEM_MODE_NONE;
- gchar *allowed_str = NULL;
- gchar *preferred_str = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ MMModemMode allowed = MM_MODEM_MODE_NONE;
+ MMModemMode preferred = MM_MODEM_MODE_NONE;
+ g_autofree gchar *allowed_str = NULL;
+ g_autofree gchar *preferred_str = NULL;
g_assert (out_allowed != NULL && out_preferred != NULL);
@@ -1821,13 +1798,6 @@ mm_ublox_parse_urat_read_response (const gchar *response,
}
out:
-
- g_free (allowed_str);
- g_free (preferred_str);
-
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
g_propagate_error (error, inner_error);
return FALSE;
@@ -1981,14 +1951,14 @@ mm_ublox_parse_ugcntrd_response_for_cid (const gchar *response,
guint64 *out_total_rx_bytes,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info = NULL;
- GError *inner_error = NULL;
- guint64 session_tx_bytes = 0;
- guint64 session_rx_bytes = 0;
- guint64 total_tx_bytes = 0;
- guint64 total_rx_bytes = 0;
- gboolean matched = FALSE;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ guint64 session_tx_bytes = 0;
+ guint64 session_rx_bytes = 0;
+ guint64 total_tx_bytes = 0;
+ guint64 total_rx_bytes = 0;
+ gboolean matched = FALSE;
/* Response may be e.g.:
* +UGCNTRD: 31,2704,1819,2724,1839
@@ -2044,10 +2014,6 @@ mm_ublox_parse_ugcntrd_response_for_cid (const gchar *response,
}
out:
-
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
g_propagate_error (error, inner_error);
return FALSE;
diff --git a/plugins/via/mm-broadband-modem-via.c b/plugins/via/mm-broadband-modem-via.c
index 6a8b4508..896db8cd 100644
--- a/plugins/via/mm-broadband-modem-via.c
+++ b/plugins/via/mm-broadband-modem-via.c
@@ -153,7 +153,7 @@ get_detailed_registration_state_finish (MMIfaceModemCdma *self,
MMModemCdmaRegistrationState *detailed_evdo_state,
GError **error)
{
- DetailedRegistrationStateResults *results;
+ g_autofree DetailedRegistrationStateResults *results = NULL;
results = g_task_propagate_pointer (G_TASK (res), error);
if (!results)
@@ -161,7 +161,6 @@ get_detailed_registration_state_finish (MMIfaceModemCdma *self,
*detailed_cdma1x_state = results->detailed_cdma1x_state;
*detailed_evdo_state = results->detailed_evdo_state;
- g_free (results);
return TRUE;
}
@@ -171,13 +170,13 @@ sysinfo_ready (MMBaseModem *self,
GTask *task)
{
- DetailedRegistrationStateResults *ctx;
- DetailedRegistrationStateResults *results;
- const gchar *response;
- GRegex *r;
- GMatchInfo *match_info;
- MMModemCdmaRegistrationState reg_state;
- guint val = 0;
+ DetailedRegistrationStateResults *ctx;
+ g_autofree DetailedRegistrationStateResults *results = NULL;
+ const gchar *response;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ MMModemCdmaRegistrationState reg_state;
+ guint val = 0;
ctx = g_task_get_task_data (task);
@@ -236,11 +235,8 @@ sysinfo_ready (MMBaseModem *self,
results->detailed_cdma1x_state = reg_state;
}
- g_match_info_free (match_info);
- g_regex_unref (r);
-
out:
- g_task_return_pointer (task, results, NULL);
+ g_task_return_pointer (task, g_steal_pointer (&results), g_free);
g_object_unref (task);
}
diff --git a/plugins/wavecom/mm-broadband-modem-wavecom.c b/plugins/wavecom/mm-broadband-modem-wavecom.c
index 8659e1c4..521e72de 100644
--- a/plugins/wavecom/mm-broadband-modem-wavecom.c
+++ b/plugins/wavecom/mm-broadband-modem-wavecom.c
@@ -1223,9 +1223,9 @@ modem_power_off (MMIfaceModem *self,
static void
setup_ports (MMBroadbandModem *self)
{
- gpointer parser;
- MMPortSerialAt *primary;
- GRegex *regex;
+ gpointer parser;
+ MMPortSerialAt *primary;
+ g_autoptr(GRegex) regex = NULL;
/* Call parent's setup ports first always */
MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_wavecom_parent_class)->setup_ports (self);
@@ -1242,7 +1242,6 @@ setup_ports (MMBroadbandModem *self)
G_REGEX_RAW | G_REGEX_OPTIMIZE,
0, NULL);
mm_serial_parser_v1_set_custom_regex (parser, regex, NULL);
- g_regex_unref (regex);
mm_port_serial_at_set_response_parser (MM_PORT_SERIAL_AT (primary),
mm_serial_parser_v1_parse,
diff --git a/plugins/x22x/mm-broadband-modem-x22x.c b/plugins/x22x/mm-broadband-modem-x22x.c
index c4744262..1ce32f57 100644
--- a/plugins/x22x/mm-broadband-modem-x22x.c
+++ b/plugins/x22x/mm-broadband-modem-x22x.c
@@ -120,12 +120,12 @@ load_current_modes_finish (MMIfaceModem *self,
MMModemMode *preferred,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- const gchar *response;
- gchar *str;
- gint mode = -1;
- GError *match_error = NULL;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ const gchar *response;
+ gchar *str;
+ gint mode = -1;
+ GError *match_error = NULL;
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, error);
if (!response)
@@ -143,17 +143,12 @@ load_current_modes_finish (MMIfaceModem *self,
MM_CORE_ERROR_FAILED,
"Couldn't match +SYSSEL reply: %s", response);
}
-
- g_match_info_free (match_info);
- g_regex_unref (r);
return FALSE;
}
str = g_match_info_fetch (match_info, 3);
mode = atoi (str);
g_free (str);
- g_match_info_free (match_info);
- g_regex_unref (r);
switch (mode) {
case 0:
diff --git a/plugins/xmm/mm-modem-helpers-xmm.c b/plugins/xmm/mm-modem-helpers-xmm.c
index 9b3933d2..70e02a8f 100644
--- a/plugins/xmm/mm-modem-helpers-xmm.c
+++ b/plugins/xmm/mm-modem-helpers-xmm.c
@@ -364,11 +364,11 @@ mm_xmm_parse_xact_query_response (const gchar *response,
GArray **bands_out,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- GError *inner_error = NULL;
- GArray *bands = NULL;
- guint i;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ GArray *bands = NULL;
+ guint i;
MMModemModeCombination mode = {
.allowed = MM_MODEM_MODE_NONE,
@@ -450,9 +450,6 @@ mm_xmm_parse_xact_query_response (const gchar *response,
/* success */
out:
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
if (bands)
g_array_unref (bands);
@@ -609,17 +606,17 @@ mm_xmm_parse_xcesq_query_response (const gchar *response,
gint *out_rssnr,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- GError *inner_error = NULL;
- guint rxlev = 99;
- guint ber = 99;
- guint rscp = 255;
- guint ecn0 = 255;
- guint rsrq = 255;
- guint rsrp = 255;
- gint rssnr = 255;
- gboolean success = FALSE;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ guint rxlev = 99;
+ guint ber = 99;
+ guint rscp = 255;
+ guint ecn0 = 255;
+ guint rsrq = 255;
+ guint rsrp = 255;
+ gint rssnr = 255;
+ gboolean success = FALSE;
g_assert (out_rxlev);
g_assert (out_ber);
@@ -672,9 +669,6 @@ mm_xmm_parse_xcesq_query_response (const gchar *response,
}
out:
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
g_propagate_error (error, inner_error);
return FALSE;
@@ -959,11 +953,11 @@ mm_xmm_parse_xlcsslp_query_response (const gchar *response,
gchar **supl_address,
GError **error)
{
- GRegex *r;
- GMatchInfo *match_info;
- GError *inner_error = NULL;
- gchar *address = NULL;
- guint port = 0;
+ g_autoptr(GRegex) r = NULL;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ GError *inner_error = NULL;
+ gchar *address = NULL;
+ guint port = 0;
/*
* E.g.:
@@ -996,9 +990,6 @@ mm_xmm_parse_xlcsslp_query_response (const gchar *response,
}
out:
- g_match_info_free (match_info);
- g_regex_unref (r);
-
if (inner_error) {
g_propagate_error (error, inner_error);
return FALSE;
diff --git a/plugins/zte/mm-broadband-modem-zte.c b/plugins/zte/mm-broadband-modem-zte.c
index f4cb774d..35283531 100644
--- a/plugins/zte/mm-broadband-modem-zte.c
+++ b/plugins/zte/mm-broadband-modem-zte.c
@@ -339,22 +339,20 @@ load_current_modes_finish (MMIfaceModem *self,
MMModemMode *preferred,
GError **error)
{
- const gchar *response;
- GMatchInfo *match_info = NULL;
- GRegex *r;
- gint cm_mode = -1;
- gint pref_acq = -1;
- gboolean result;
- GError *match_error = NULL;
+ const gchar *response;
+ g_autoptr(GMatchInfo) match_info = NULL;
+ g_autoptr(GRegex) r = NULL;
+ gint cm_mode = -1;
+ gint pref_acq = -1;
+ GError *match_error = NULL;
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, error);
if (!response)
return FALSE;
- r = g_regex_new ("\\+ZSNT:\\s*(\\d),(\\d),(\\d)", G_REGEX_UNGREEDY, 0, error);
+ r = g_regex_new ("\\+ZSNT:\\s*(\\d),(\\d),(\\d)", G_REGEX_UNGREEDY, 0, NULL);
g_assert (r != NULL);
- result = FALSE;
if (!g_regex_match_full (r, response, strlen (response), 0, 0, &match_info, &match_error)) {
if (match_error)
g_propagate_error (error, match_error);
@@ -364,7 +362,7 @@ load_current_modes_finish (MMIfaceModem *self,
MM_CORE_ERROR_FAILED,
"Couldn't parse +ZSNT response: '%s'",
response);
- goto done;
+ return FALSE;
}
if (!mm_get_int_from_match_info (match_info, 1, &cm_mode) ||
@@ -376,11 +374,10 @@ load_current_modes_finish (MMIfaceModem *self,
MM_CORE_ERROR_FAILED,
"Failed to parse the allowed mode response: '%s'",
response);
- goto done;
+ return FALSE;
}
/* Correctly parsed! */
- result = TRUE;
if (cm_mode == 0) {
/* Both 2G, 3G and LTE allowed. For LTE modems, no 2G/3G preference supported. */
if (pref_acq == 0 || mm_iface_modem_is_3gpp_lte (self)) {
@@ -410,12 +407,7 @@ load_current_modes_finish (MMIfaceModem *self,
} else
g_assert_not_reached ();
-done:
- g_match_info_free (match_info);
- if (r)
- g_regex_unref (r);
-
- return result;
+ return TRUE;
}
static void