int query_first_result(struct query *q, uint8_t **tal_data, size_t *n, int *raw, int *id) { int result; query_prepare(q); result = query_next(q, tal_data, n, raw, id); query_finalize(q); return result; }
int query_foreach_result(struct query *q, int (*fn)(uint8_t *data, size_t n, int raw, int id, int i, void *user), void *user) { uint8_t *data; size_t n; int raw, id, i, status; query_prepare(q); i = 0; while(query_next(q, &data, &n, &raw, &id) == 0) { status = (*fn)(data, n, raw, id, i++, user); talloc_free(data); if(status != 0) break; } query_finalize(q); return i; }
xc_result_t xCOM_QueryNext ( xc_handle_t queryHandle, xc_handle_t *importHandlePtr ) { query_t *queryPtr; xc_result_t result; TRACE3 (("called with queryHandle=%u, importHandlePtr=%p", queryHandle, importHandlePtr)); pthread_mutex_lock (&lock); queryPtr = (query_t *) handle_dir_get (queryHandles, queryHandle); if (queryPtr != NULL) { result = query_next (queryPtr, importHandlePtr); } else { result = XC_ERR_INVAL; } pthread_mutex_unlock (&lock); TRACE3 (("exiting with result=%d", result)); return result; }