aboutsummaryrefslogtreecommitdiffstats
path: root/res/res_config_odbc.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-11-22 05:03:03 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-11-22 05:03:03 +0000
commit9cb7ea46821283e924ebf3cb0ed7658df08f49f5 (patch)
tree8f41ca59a0006bc978bdaeb35f4be49de308fe3a /res/res_config_odbc.c
parentd8551ca4e2d63d1da6fe7ef2d52b3c8dbdb53ba6 (diff)
Minor realtime improvements
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4311 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res/res_config_odbc.c')
-rwxr-xr-xres/res_config_odbc.c24
1 files changed, 20 insertions, 4 deletions
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);