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; }
static void parse_modes (MMModemMode *allowed, MMModemMode *preferred) { GError *error = NULL; *allowed = mm_common_get_modes_from_string (set_allowed_modes_str, &error); if (error) { g_printerr ("error: couldn't parse list of allowed modes: '%s'\n", error->message); exit (EXIT_FAILURE); } *preferred = (set_preferred_mode_str ? mm_common_get_modes_from_string (set_preferred_mode_str, &error) : MM_MODEM_MODE_NONE); if (error) { g_printerr ("error: couldn't parse preferred mode: '%s'\n", error->message); exit (EXIT_FAILURE); } }