sql57.c File Reference

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

## Macros

#define | SQLPROBE_DEFAULT_CONNTIMEOUT 30
#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 []

## Detailed Description

sql57 probe

Author
  "Daniel Kopecek" dkope.nosp@m.cek@.nosp@m.redha.nosp@m.t.co.nosp@m.m

## Macro Definition Documentation

#define get_string | ( |  | dst,
|  |  | obj,
|  |  | ent_name
| ) |  |

Value:
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
| ) |  |

Value:
case first: \
if (strncasecmp((rest), ++(tok), strlen(rest)) == 0) { \
tok += strlen(rest); \
skipspace(tok); \
if (*(tok) != '=') goto __fail; \
else (dst) = strdup((tok) + 1); \
} \
else dE("Unrecognized token: '%s'", (tok)-1); \
while(0)

#define matchitem2 | ( |  | tok,
|  |  | first,
|  |  | rest1,
|  |  | dst1,
|  |  | rest2,
|  |  | dst2
| ) |  |

Value:
case first: \
if (strncasecmp((rest1), (tok)+1, strlen(rest1)) == 0) { \
tok += 1+strlen(rest1); \
skipspace(tok); \
if (*(tok) != '=') goto __fail; \
else (dst1) = strdup((tok) + 1); \
} \
else if (strncasecmp((rest2), (tok)+1, strlen(rest2)) == 0) { \
tok += 1+strlen(rest2); \
skipspace(tok); \
if (*(tok) != '=') goto __fail; \
else (dst2) = strdup((tok) + 1); \
} \
else dE("Unrecognized token: '%s'", (tok)); \
while(0)

## Variable Documentation

dbEngineMap_t engine_map[]

Initial value:
= {
{ "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" }
}