unsigned GetA::detect() { unsigned keyCode = detect_key(); if( keyCode ) return keyCode; else return detect_click(); }
static void get_callback (SoupSession *session, SoupMessage *msg, SeahorseHKPOperation *hop) { GError *err = NULL; const gchar *start; const gchar *end; GOutputStream *output; const gchar *text; gboolean ret; guint len; gsize written; if (hop->cancelling) return; if (SOUP_MESSAGE_IS_ERROR (msg)) { fail_hkp_operation (hop, msg, NULL); return; } end = text = msg->response_body->data; len = msg->response_body->length; for (;;) { len -= end - text; text = end; if(!detect_key (text, len, &start, &end)) break; /* Any key blocks get written to our result data */ output = seahorse_operation_get_result (SEAHORSE_OPERATION (hop)); g_return_if_fail (G_IS_OUTPUT_STREAM (output)); ret = g_output_stream_write_all (output, start, end - start, &written, NULL, &err) && g_output_stream_write_all (output, "\n", 1, &written, NULL, &err) && g_output_stream_flush (output, NULL, &err); if (!ret) { seahorse_operation_mark_done (SEAHORSE_OPERATION (hop), FALSE, err); return; } } if (--hop->requests <= 0) { output = seahorse_operation_get_result (SEAHORSE_OPERATION (hop)); g_return_if_fail (G_IS_OUTPUT_STREAM (output)); g_output_stream_close (output, NULL, &err); seahorse_operation_mark_done (SEAHORSE_OPERATION (hop), FALSE, err); } else { seahorse_operation_mark_progress_full (SEAHORSE_OPERATION (hop), _("Retrieving keys..."), hop->requests, hop->total); } }
static void on_export_message_complete (SoupSession *session, SoupMessage *message, gpointer user_data) { g_autoptr(GTask) task = G_TASK (user_data); ExportClosure *closure = g_task_get_task_data (task); g_autoptr(GError) error = NULL; const gchar *start, *end, *text; guint len; seahorse_progress_end (closure->cancellable, message); if (hkp_message_propagate_error (closure->source, message, &error)) { g_task_return_error (task, g_steal_pointer (&error)); return; } end = text = message->response_body->data; len = message->response_body->length; for (;;) { len -= end - text; text = end; if (!detect_key (text, len, &start, &end)) break; g_string_append_len (closure->data, start, end - start); g_string_append_c (closure->data, '\n'); } g_assert (closure->requests > 0); closure->requests--; if (closure->requests == 0) { closure->data_len = closure->data->len; g_task_return_pointer (task, g_string_free (g_steal_pointer (&closure->data), FALSE), g_free); } }
static void on_export_message_complete (SoupSession *session, SoupMessage *message, gpointer user_data) { GSimpleAsyncResult *res = G_SIMPLE_ASYNC_RESULT (user_data); ExportClosure *closure = g_simple_async_result_get_op_res_gpointer (res); GError *error = NULL; const gchar *start; const gchar *end; const gchar *text; guint len; seahorse_progress_end (closure->cancellable, message); if (hkp_message_propagate_error (closure->source, message, &error)) { g_simple_async_result_take_error (res, error); } else { end = text = message->response_body->data; len = message->response_body->length; for (;;) { len -= end - text; text = end; if (!detect_key (text, len, &start, &end)) break; g_string_append_len (closure->data, start, end - start); g_string_append_c (closure->data, '\n'); } } g_assert (closure->requests > 0); closure->requests--; if (closure->requests == 0) g_simple_async_result_complete_in_idle (res); g_object_unref (res); }