static void look_for_sms_in_modem (GetSmsContext *ctx) { MMModemMessaging *modem; if (!ctx->modems) { g_printerr ("error: couldn't find SMS at '%s': 'not found in any modem'\n", ctx->sms_path); exit (EXIT_FAILURE); } /* Loop looking for the sms in each modem found */ ctx->current = MM_OBJECT (ctx->modems->data); ctx->modems = g_list_delete_link (ctx->modems, ctx->modems); modem = mm_object_get_modem_messaging (ctx->current); if (modem) { g_debug ("Looking for sms '%s' in modem '%s'...", ctx->sms_path, mm_object_get_path (ctx->current)); mm_modem_messaging_list (modem, ctx->cancellable, (GAsyncReadyCallback)list_sms_ready, ctx); g_object_unref (modem); return; } /* Current modem has no messaging capabilities, try with next modem */ look_for_sms_in_modem (ctx); }
static void get_modem_ready (GObject *source, GAsyncResult *result, gpointer none) { ctx->object = mmcli_get_modem_finish (result, &ctx->manager); ctx->modem_messaging = mm_object_get_modem_messaging (ctx->object); /* Setup operation timeout */ if (ctx->modem_messaging) mmcli_force_operation_timeout (G_DBUS_PROXY (ctx->modem_messaging)); ensure_modem_messaging (); if (status_flag) g_assert_not_reached (); /* Request to list SMS? */ if (list_flag) { g_debug ("Asynchronously listing SMS in modem..."); mm_modem_messaging_list (ctx->modem_messaging, ctx->cancellable, (GAsyncReadyCallback)list_ready, NULL); return; } /* Request to create a new SMS? */ if (create_str) { MMSmsProperties *properties; properties = build_sms_properties_from_input (create_str, create_with_data_str); g_debug ("Asynchronously creating new SMS in modem..."); mm_modem_messaging_create (ctx->modem_messaging, properties, ctx->cancellable, (GAsyncReadyCallback)create_ready, NULL); g_object_unref (properties); return; } /* Request to delete a given SMS? */ if (delete_str) { mmcli_get_sms (ctx->connection, delete_str, ctx->cancellable, (GAsyncReadyCallback)get_sms_to_delete_ready, NULL); return; } g_warn_if_reached (); }