diff options
author | Eric Leblond <eric@regit.org> | 2013-03-20 00:03:35 +0100 |
---|---|---|
committer | Eric Leblond <eric@regit.org> | 2013-05-21 19:55:18 +0200 |
commit | 1d84cdeaa56fe003c4beb0452c8bc476ecfd75a8 (patch) | |
tree | eeb829221d3964ddc55187a1a1a4c0ec3130e0f1 /util | |
parent | 5d3a5e5c2e16555a19e794341ed72cf2415b07fc (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.
Diffstat (limited to 'util')
-rw-r--r-- | util/db.c | 16 |
1 files changed, 9 insertions, 7 deletions
@@ -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; |