char *_svc_db_query_builder_add(char *old_query, char *op, char *uri, char *mime, bool collate)
{
- char query[QUERY_MAX_LEN];
+ char *query;
+ char *q;
if (collate) {
if (old_query) {
- snprintf(query, QUERY_MAX_LEN,
- "%s, '%s|%s|%s'",
+ query = sqlite3_mprintf("%s, '%q|%q|%q'",
old_query, op, uri, mime);
free(old_query);
} else {
- snprintf(query, QUERY_MAX_LEN,
- "'%s|%s|%s'",
+ query = sqlite3_mprintf("'%q|%q|%q'",
op, uri, mime);
}
-
} else {
if (old_query) {
- snprintf(query, QUERY_MAX_LEN,
- "%s OR ac.app_control like '%%%s|%s|%s%%' ",
+ query = sqlite3_mprintf("%s OR ac.app_control like '%%%q|%q|%q%%' ",
old_query, op, uri, mime);
free(old_query);
} else {
- snprintf(query, QUERY_MAX_LEN,
- "ac.app_control like '%%%s|%s|%s%%' ",
+ query = sqlite3_mprintf("ac.app_control like '%%%q|%q|%q%%' ",
op, uri, mime);
}
}
- return strdup(query);
+ q = strdup(query);
+ sqlite3_free(query);
+ return q;
}
char *_svc_db_query_builder_or(char *q1, char *q2)