sql57 probe More...
#include <seap.h>
#include <probe-api.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <common/assume.h>
#include <common/debug_priv.h>
#include <common/bfind.h>
#include <time.h>
#include <errno.h>
#include <opendbx/api.h>
Data Structures | |
struct | dbEngineMap_t |
struct | dbURIInfo_t |
Defines | |
#define | ENGINE_MAP_COUNT (sizeof engine_map / sizeof (dbEngineMap_t)) |
#define | skipspace(s) while (isspace(*s)) ++s; |
#define | matchitem1(tok, first, rest, dst) |
#define | matchitem2(tok, first, rest1, dst1, rest2, dst2) |
#define | get_string(dst, obj, ent_name) |
Functions | |
void * | probe_init (void) |
void | probe_fini (void *arg) |
int | probe_main (probe_ctx *ctx, void *arg) |
Variables | |
dbEngineMap_t | engine_map [] |
sql57 probe
#define get_string | ( | dst, | |||
obj, | |||||
ent_name | ) |
do { \ SEXP_t *__sval; \ \ __sval = probe_obj_getentval (obj, ent_name, 1); \ \ if (__sval == NULL) { \ dE("Missing entity or value: obj=%p, ent=%s\n", obj, #ent_name); \ err = PROBE_ENOENT; \ goto __exit; \ } \ \ (dst) = SEXP_string_cstr (__sval); \ \ if ((dst) == NULL) { \ SEXP_free(__sval); \ err = PROBE_EINVAL; \ goto __exit; \ } \ \ SEXP_free(__sval); \ } while (0)
#define matchitem1 | ( | tok, | |||
first, | |||||
rest, | |||||
dst | ) |
case first: \ if (strncasecmp((rest), ++(tok), strlen(rest)) == 0) { \ tok += strlen(rest); \ skipspace(tok); \ if (*(tok) != '=') goto __fail; \ else (dst) = strdup((tok) + 1); \ } \ while(0)
#define matchitem2 | ( | tok, | |||
first, | |||||
rest1, | |||||
dst1, | |||||
rest2, | |||||
dst2 | ) |
case first: \ if (strcasecmp((rest1), (tok)+1) == 0) { \ tok += 1+strlen(rest1); \ skipspace(tok); \ if (*(tok) != '=') goto __fail; \ else (dst1) = strdup((tok) + 1); \ } \ else if (strcasecmp((rest2), (tok)+1) == 0) { \ tok += 1+strlen(rest2); \ skipspace(tok); \ if (*(tok) != '=') goto __fail; \ else (dst2) = strdup((tok) + 1); \ } \ while(0)
dbEngineMap_t engine_map[] |
{ { "access", NULL }, { "db2", NULL }, { "cache", NULL }, { "firebird", "firebird" }, { "firstsql", NULL }, { "foxpro", NULL }, { "informix", NULL }, { "ingres", NULL }, { "interbase", NULL }, { "lightbase", NULL }, { "maxdb", NULL }, { "monetdb", NULL }, { "mimer", NULL }, { "mssql", "mssql" }, { "mysql", "mysql" }, { "oracle", "oracle" }, { "paradox", NULL }, { "pervasive", NULL }, { "postgre", "pgsql" }, { "sqlbase", NULL }, { "sqlite", "sqlite" }, { "sqlite3", "sqlite3" }, { "sqlserver", NULL }, { "sybase", "sybase" } }