All pastes #27833 Raw Edit

Someone

public text v1 · immutable
#27833 ·published 2005-11-07 03:39 UTC
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;
}