#ifndef __orasel_h__ #define __orasel_h__ #include #include #include #include #include typedef struct { unsigned len; char s[]; }Str; typedef struct { const Str* username; const Str* password; const Str* uri; OCIError* errhp; OCISvcCtx* svchp; OCIEnv* envhp; OCISession* authp; OCIServer* srvhp; OCIStmt* stmthp; }con_t; typedef struct { Str** names; Str*** rows; unsigned char* types; unsigned col_n; unsigned row_n; }res_t; void __attribute__((noreturn)) donegood(const char *msg); void __attribute__((noreturn)) errxit(const char *msg); void __attribute__((noreturn)) oraxit(sword status, const con_t* con); void* safe_malloc(size_t sz); Str* str_alloc(const char *s, size_t len); void open_sess(con_t* con); void send_req(con_t* con, const Str* req); void get_res(const con_t* con, res_t* _r); void out_res(const res_t* _r); typedef struct { unsigned raw : 1, hdr : 1, emp : 1; }outmode_t; extern outmode_t outmode; #endif