From 9cb7ea46821283e924ebf3cb0ed7658df08f49f5 Mon Sep 17 00:00:00 2001 From: markster Date: Mon, 22 Nov 2004 05:03:03 +0000 Subject: Minor realtime improvements git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4311 f38db490-d61c-443f-a65b-d21fe96a405b --- res/res_config_odbc.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'res') diff --git a/res/res_config_odbc.c b/res/res_config_odbc.c index 7d2cd8ea1..512ed9f8e 100755 --- a/res/res_config_odbc.c +++ b/res/res_config_odbc.c @@ -31,13 +31,28 @@ STANDARD_LOCAL_USER; LOCAL_USER_DECL; +static void parseop(char *newp, int newplen, char **opo, const char *newparam) +{ + char *op; + strncpy(newp, newparam, newplen - 1); + op = strchr(newp, ' '); + if (op) { + *op = '\0'; + op++; + } else + op = "="; + *opo = op; +} + static struct ast_variable *realtime_odbc(const char *database, const char *table, va_list ap) { odbc_obj *obj; SQLHSTMT stmt; - char sql[256]; + char sql[1024]; char coltitle[256]; char rowdata[2048]; + char newp[256]; + char *op; const char *newparam, *newval; char *stringp; char *chunk; @@ -75,10 +90,11 @@ static struct ast_variable *realtime_odbc(const char *database, const char *tabl return NULL; } newval = va_arg(aq, const char *); - - snprintf(sql, sizeof(sql), "SELECT * FROM %s WHERE %s=?", table, newparam); + parseop(newp, sizeof(newp), &op, newparam); + snprintf(sql, sizeof(sql), "SELECT * FROM %s WHERE %s %s ?", table, newp, op); while((newparam = va_arg(aq, const char *))) { - snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), " AND %s=?", newparam); + parseop(newp, sizeof(newp), &op, newparam); + snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), " AND %s %s ?", newparam, op); newval = va_arg(aq, const char *); } va_end(aq); -- cgit v1.2.3