rendered paste body
My function
static JSBool
chan_dbget(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
int res = 0;
char tmp[256];
JSString *str = NULL;
char *family, *key;
*rval = BOOLEAN_TO_JSVAL ( JS_FALSE);
if (!(( str = JS_ValueToString(cx, argv[0])) && ( family = JS_GetStringBytes(str) ))) {
*rval = STRING_TO_JSVAL ( JS_NewStringCopyZ(cx, res ));
return JS_FALSE;
}
if (!(( str = JS_ValueToString(cx, argv[1])) && ( key = JS_GetStringBytes(str) ))) {
*rval = STRING_TO_JSVAL ( JS_NewStringCopyZ(cx, res ));
return JS_FALSE;
}
res = opbx_db_get(family, key, tmp, sizeof(tmp));
if ( res == 0 && !opbx_strlen_zero(tmp) ) {
printf("RETURNING TRUE!\n");
*rval = STRING_TO_JSVAL ( JS_NewStringCopyZ(cx, tmp));
return JS_TRUE;
}
printf ("RETURNING FALSE!\n");
return JS_FALSE;
}
corelib/db.c
int opbx_db_get(const char *family, const char *keys, char *value, int valuelen)
{
char *sql;
char *zErr = 0;
int res = 0;
struct opbx_frame dframe;
sqlite3 *db;
sanity_check();
if (!(db = sqlite_open_db(globals.dbfile))) {
return -1;
}
if (!family || opbx_strlen_zero(family)) {
family = "_undef_";
}
dframe.data = value;
dframe.datalen = valuelen;
if ((sql = sqlite3_mprintf("select value from %q where family='%q' and keys='%q'", globals.tablename, family, keys))) {
opbx_log(LOG_DEBUG, "SQL [%s]\n", sql);
res = sqlite3_exec(db,
sql,
get_callback,
&dframe,
&zErr
);
if (zErr) {
opbx_log(LOG_ERROR, "SQL ERR [%s] [%s]\n", sql, zErr);
res = -1;
} else {
res = 0;
}
if (dframe.datalen <= 0 ) {
res = -1;
}
} else {
opbx_log(LOG_ERROR, "Memory Error!\n");
}
if (sql) {
sqlite3_free(sql);
sql = NULL;
}
return res;
}