static void import_send_key (SeahorseLDAPSource *self, GSimpleAsyncResult *res) { source_import_closure *closure = g_simple_async_result_get_op_res_gpointer (res); LDAPServerInfo *sinfo; gchar *base; LDAPMod mod; LDAPMod *attrs[2]; char *values[2]; GSource *gsource; GError *error = NULL; gchar *keydata; int ldap_op; int rc; if (closure->current_index >= 0) { keydata = closure->keydata->pdata[closure->current_index]; seahorse_progress_end (closure->cancellable, keydata); } closure->current_index++; /* All done, complete operation */ if (closure->current_index == (gint)closure->keydata->len) { g_simple_async_result_complete (res); return; } keydata = closure->keydata->pdata[closure->current_index]; seahorse_progress_begin (closure->cancellable, keydata); values[0] = keydata; values[1] = NULL; sinfo = get_ldap_server_info (self, TRUE); memset (&mod, 0, sizeof (mod)); mod.mod_op = LDAP_MOD_ADD; mod.mod_type = sinfo->key_attr; mod.mod_values = values; attrs[0] = &mod; attrs[1] = NULL; base = g_strdup_printf ("pgpCertid=virtual,%s", sinfo->base_dn); rc = ldap_add_ext (closure->ldap, base, attrs, NULL, NULL, &ldap_op); g_free (base); if (seahorse_ldap_source_propagate_error (self, rc, &error)) { g_simple_async_result_complete (res); return; } gsource = seahorse_ldap_gsource_new (closure->ldap, ldap_op, closure->cancellable); g_source_set_callback (gsource, (GSourceFunc)on_import_add_completed, g_object_ref (res), g_object_unref); g_source_attach (gsource, g_main_context_default ()); g_source_unref (gsource); }
static void export_retrieve_key (SeahorseLDAPSource *self, GSimpleAsyncResult *res) { ExportClosure *closure = g_simple_async_result_get_op_res_gpointer (res); LDAPServerInfo *sinfo; gchar *filter; char *attrs[2]; GSource *gsource; const gchar *fingerprint; GError *error = NULL; int length, rc; int ldap_op; if (closure->current_index > 0) { fingerprint = closure->fingerprints->pdata[closure->current_index]; seahorse_progress_end (closure->cancellable, fingerprint); } closure->current_index++; /* All done, complete operation */ if (closure->current_index == (gint)closure->fingerprints->len) { g_simple_async_result_complete (res); return; } fingerprint = closure->fingerprints->pdata[closure->current_index]; seahorse_progress_begin (closure->cancellable, fingerprint); length = strlen (fingerprint); if (length > 16) fingerprint += (length - 16); filter = g_strdup_printf ("(pgpcertid=%.16s)", fingerprint); sinfo = get_ldap_server_info (self, TRUE); attrs[0] = sinfo->key_attr; attrs[1] = NULL; rc = ldap_search_ext (closure->ldap, sinfo->base_dn, LDAP_SCOPE_SUBTREE, filter, attrs, 0, NULL, NULL, NULL, 0, &ldap_op); g_free (filter); if (seahorse_ldap_source_propagate_error (self, rc, &error)) { g_simple_async_result_take_error (res, error); g_simple_async_result_complete (res); return; } gsource = seahorse_ldap_gsource_new (closure->ldap, ldap_op, closure->cancellable); g_source_set_callback (gsource, (GSourceFunc)on_export_search_completed, g_object_ref (res), g_object_unref); g_source_attach (gsource, g_main_context_default ()); g_source_unref (gsource); }
void seahorse_progress_prep_and_begin (GCancellable *cancellable, gconstpointer progress_tag, const gchar *details, ...) { va_list va; if (!cancellable) return; g_return_if_fail (G_IS_CANCELLABLE (cancellable)); va_start (va, details); progress_prep_va (cancellable, progress_tag, details, va); seahorse_progress_begin (cancellable, progress_tag); va_end (va); }