/********************************************************************************* * Package : c-sqld-psql.c * Author : Hans Oesterholt-Dijkema. * Copyright : HOD 2004/2005. * License : The Elemental Programming Artistic License. * CVS : $Id: c-sqld-psql.c,v 1.1 2007/07/05 20:12:43 hoesterholt Exp $ *********************************************************************************/ /*#include #include */ #include #ifdef Darwin #include #else #include #endif #ifdef _WIN32 #define EXPORT __declspec(dllexport) #else #define EXPORT extern #endif #include "c-threads.c" typedef void PGresult; typedef void PGconn; typedef int (*block_f)(void *,void *,void *,float); static block_f block=NULL; typedef PGresult * (*pqexec_f)(void *,void *); static pqexec_f pqexec=NULL; typedef struct { PGconn *conn; char *query; PGresult *result; int ready; } t_exec_query; static int execute_query_ready(void *data) { t_exec_query *Q=(t_exec_query *) data; return Q->ready; } static int execute_query(void *data) { t_exec_query *Q=(t_exec_query *) data; Q->result=pqexec(Q->conn,Q->query); Q->ready=1; return 0; } EXPORT void c_psql_set_block(void *g) { block=(block_f) g; } EXPORT void c_psql_set_pqexec(void * g) { pqexec=(pqexec_f) g; } EXPORT PGresult *c_psql_query(PGconn *conn,const char *query) { PGresult *res; { t_exec_query *Q = (t_exec_query *) malloc(sizeof(t_exec_query)); t_c_thread_id id; Q->conn=conn; Q->query=(char *) query; Q->result=NULL; Q->ready=0; id = c_thread_create(execute_query,(void *) Q); block(execute_query_ready,NULL,Q,-1); c_thread_join(id); res=Q->result; free(Q); } return res; } void *scheme_reload(void *env) { } void *scheme_initialize(void *env) { } void *scheme_module_name(void) { }