void _gpgme_wait_global_event_cb (void *data, gpgme_event_io_t type, void *type_data) { gpgme_ctx_t ctx = (gpgme_ctx_t) data; assert (ctx); switch (type) { case GPGME_EVENT_START: { gpgme_error_t err = ctx_active (ctx); if (err) { /* An error occured. Close all fds in this context, and send the error in a done event. */ unsigned int idx; for (idx = 0; idx <= ctx->fdt.size; idx++) if (ctx->fdt.fds[idx].fd != -1) _gpgme_io_close (ctx->fdt.fds[idx].fd); _gpgme_engine_io_event (ctx->engine, GPGME_EVENT_DONE, &err); } } break; case GPGME_EVENT_DONE: { gpgme_error_t *errp = (gpgme_error_t *) type_data; assert (errp); ctx_done (ctx, *errp); } break; case GPGME_EVENT_NEXT_KEY: assert (!"Unexpected event GPGME_EVENT_NEXT_KEY"); break; case GPGME_EVENT_NEXT_TRUSTITEM: assert (!"Unexpected event GPGME_EVENT_NEXT_TRUSTITEM"); break; default: assert (!"Unexpected event"); break; } }
void _gpgme_wait_global_event_cb (void *data, gpgme_event_io_t type, void *type_data) { gpgme_ctx_t ctx = (gpgme_ctx_t) data; assert (ctx); switch (type) { case GPGME_EVENT_START: { gpgme_error_t err = ctx_active (ctx); if (err) /* An error occured. Close all fds in this context, and send the error in a done event. */ _gpgme_cancel_with_err (ctx, err, 0); } break; case GPGME_EVENT_DONE: { gpgme_io_event_done_data_t done_data = (gpgme_io_event_done_data_t) type_data; ctx_done (ctx, done_data->err, done_data->op_err); } break; case GPGME_EVENT_NEXT_KEY: assert (!"Unexpected event GPGME_EVENT_NEXT_KEY"); break; case GPGME_EVENT_NEXT_TRUSTITEM: assert (!"Unexpected event GPGME_EVENT_NEXT_TRUSTITEM"); break; default: assert (!"Unexpected event"); break; } }