summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Leblond <eric@regit.org>2013-03-20 00:03:35 +0100
committerEric Leblond <eric@regit.org>2013-05-21 19:55:18 +0200
commit1d84cdeaa56fe003c4beb0452c8bc476ecfd75a8 (patch)
treeeeb829221d3964ddc55187a1a1a4c0ec3130e0f1
parent5d3a5e5c2e16555a19e794341ed72cf2415b07fc (diff)
db: use offset instead of direct pointer.
Use an offset approach to get the start of values printing area. It is more generic and will be use soon.
-rw-r--r--include/ulogd/db.h2
-rw-r--r--util/db.c16
2 files changed, 10 insertions, 8 deletions
diff --git a/include/ulogd/db.h b/include/ulogd/db.h
index a02afb5..82f37b9 100644
--- a/include/ulogd/db.h
+++ b/include/ulogd/db.h
@@ -29,7 +29,7 @@ struct db_stmt {
struct db_instance {
char *stmt; /* buffer for our insert statement */
- char *stmt_val; /* pointer to the beginning of the "VALUES" part */
+ int stmt_offset; /* offset to the beginning of the "VALUES" part */
char *schema;
time_t reconnect;
int (*interp)(struct ulogd_pluginstance *upi);
diff --git a/util/db.c b/util/db.c
index 91834da..14d9481 100644
--- a/util/db.c
+++ b/util/db.c
@@ -66,6 +66,7 @@ static int sql_createstmt(struct ulogd_pluginstance *upi)
unsigned int i;
char *table = table_ce(upi->config_kset).u.string;
char *procedure = procedure_ce(upi->config_kset).u.string;
+ char *stmt_val = NULL;
if (mi->stmt)
free(mi->stmt);
@@ -106,7 +107,7 @@ static int sql_createstmt(struct ulogd_pluginstance *upi)
else
sprintf(mi->stmt, "%s (", procedure);
- mi->stmt_val = mi->stmt + strlen(mi->stmt);
+ stmt_val = mi->stmt + strlen(mi->stmt);
for (i = 0; i < upi->input.num_keys; i++) {
if (upi->input.keys[i].flags & ULOGD_KEYF_INACTIVE)
@@ -115,19 +116,20 @@ static int sql_createstmt(struct ulogd_pluginstance *upi)
strncpy(buf, upi->input.keys[i].name, ULOGD_MAX_KEYLEN);
while ((underscore = strchr(buf, '.')))
*underscore = '_';
- sprintf(mi->stmt_val, "%s,", buf);
- mi->stmt_val = mi->stmt + strlen(mi->stmt);
+ sprintf(stmt_val, "%s,", buf);
+ stmt_val = mi->stmt + strlen(mi->stmt);
}
- *(mi->stmt_val - 1) = ')';
+ *(stmt_val - 1) = ')';
- sprintf(mi->stmt_val, " values (");
+ sprintf(stmt_val, " values (");
} else if (strncasecmp(procedure,"CALL", strlen("CALL")) == 0) {
sprintf(mi->stmt, "CALL %s(", procedure);
} else {
sprintf(mi->stmt, "SELECT %s(", procedure);
}
- mi->stmt_val = mi->stmt + strlen(mi->stmt);
+
+ mi->stmt_offset = strlen(mi->stmt);
ulogd_log(ULOGD_DEBUG, "stmt='%s'\n", mi->stmt);
@@ -266,7 +268,7 @@ static void __format_query_db(struct ulogd_pluginstance *upi)
unsigned int i;
- char * stmt_ins = di->stmt_val;
+ char *stmt_ins = di->stmt + di->stmt_offset;
for (i = 0; i < upi->input.num_keys; i++) {
struct ulogd_key *res = upi->input.keys[i].u.source;