MMSimpleConnectProperties * mm_simple_connect_properties_new_from_string (const gchar *str, GError **error) { ParseKeyValueContext ctx; ctx.error = NULL; ctx.allowed_modes_str = NULL; ctx.preferred_mode_str = NULL; ctx.properties = mm_simple_connect_properties_new (); mm_common_parse_key_value_string (str, &ctx.error, (MMParseKeyValueForeachFn)key_value_foreach, &ctx); /* If error, destroy the object */ if (ctx.error) { g_propagate_error (error, ctx.error); g_object_unref (ctx.properties); ctx.properties = NULL; } else if (ctx.allowed_modes_str || ctx.preferred_mode_str) { MMModemMode allowed_modes; MMModemMode preferred_mode; allowed_modes = (ctx.allowed_modes_str ? mm_common_get_modes_from_string (ctx.allowed_modes_str, &ctx.error) : MM_MODEM_MODE_ANY); if (!ctx.error) { preferred_mode = (ctx.preferred_mode_str ? mm_common_get_modes_from_string (ctx.preferred_mode_str, &ctx.error) : MM_MODEM_MODE_NONE); } if (ctx.error) { g_propagate_error (error, ctx.error); g_object_unref (ctx.properties); ctx.properties = NULL; } else { mm_simple_connect_properties_set_allowed_modes ( ctx.properties, allowed_modes, preferred_mode); } } g_free (ctx.allowed_modes_str); g_free (ctx.preferred_mode_str); return ctx.properties; }
MMBearerProperties * mm_bearer_properties_new_from_string (const gchar *str, GError **error) { ParseKeyValueContext ctx; ctx.error = NULL; ctx.properties = mm_bearer_properties_new (); mm_common_parse_key_value_string (str, &ctx.error, (MMParseKeyValueForeachFn)key_value_foreach, &ctx); /* If error, destroy the object */ if (ctx.error) { g_propagate_error (error, ctx.error); g_object_unref (ctx.properties); ctx.properties = NULL; } return ctx.properties; }