static JSBool rpmseq_Get(JSContext *cx, uintN argc, jsval *vp) { jsval *argv = JS_ARGV(cx , vp); JSObject *obj = JS_NewObjectForConstructor(cx , vp); if(!obj) { JS_ReportError(cx , "Failed to create 'this' object"); return JS_FALSE; } void * ptr = JS_GetInstancePrivate(cx, obj, &rpmseqClass, NULL); DB_SEQUENCE * seq = ptr; JSObject * o = NULL; DB_TXN * _txn = NULL; int32_t _delta = 1; uint32_t _flags = 0; JSBool ok = JS_FALSE; _METHOD_DEBUG_ENTRY(_debug); if (seq == NULL) goto exit; JS_SET_RVAL(cx, vp, JSVAL_FALSE); if (!(ok = JS_ConvertArguments(cx, argc, argv, "o/iu", &o, &_delta, &_flags))) goto exit; if (o && OBJ_IS_RPMTXN(cx, o)) _txn = JS_GetInstancePrivate(cx, o, &rpmtxnClass, NULL); if (_delta <= 0) goto exit; { jsdouble d = 0; db_seq_t _seqno = 0; int ret = seq->get(seq, _txn, _delta, &_seqno, _flags); switch (ret) { default: fprintf(stderr, "DB_SEQUENCE->get: %s\n", db_strerror(ret)); goto exit; break; case 0: d = _seqno; if (!JS_NewNumberValue(cx, d, &JS_RVAL(cx, vp))) JS_SET_RVAL(cx, vp, JSVAL_FALSE); break; } } ok = JS_TRUE; exit: return ok; }
static JSBool rpmseq_Open(JSContext *cx, uintN argc, jsval *vp) { jsval *argv = JS_ARGV(cx , vp); JSObject *obj = JS_NewObjectForConstructor(cx , vp); if(!obj) { JS_ReportError(cx , "Failed to create 'this' object"); return JS_FALSE; } void * ptr = JS_GetInstancePrivate(cx, obj, &rpmseqClass, NULL); DB_SEQUENCE * seq = ptr; JSObject * o = NULL; DB_TXN * _txn = NULL; jsval _kv = JSVAL_NULL; _RPMDBT _k = _RPMDBT_INIT; uint32_t _flags = DB_CREATE; JSBool ok = JS_FALSE; _METHOD_DEBUG_ENTRY(_debug); if (seq == NULL) goto exit; JS_SET_RVAL(cx, vp, JSVAL_FALSE); if (!(ok = JS_ConvertArguments(cx, argc, argv, "ov/u", &o, &_kv, &_flags))) goto exit; if (o && OBJ_IS_RPMTXN(cx, o)) _txn = JS_GetInstancePrivate(cx, o, &rpmtxnClass, NULL); if (rpmdb_v2dbt(cx, _kv, &_k)) goto exit; { int ret = seq->open(seq, _txn, _RPMDBT_PTR(_k), _flags); switch (ret) { default: fprintf(stderr, "DB_SEQUENCE->open: %s\n", db_strerror(ret)); goto exit; break; case 0: JS_SET_RVAL(cx, vp, JSVAL_TRUE); seq->api_internal = obj; break; } } ok = JS_TRUE; exit: return ok; }
static JSBool rpmseq_Remove(JSContext *cx, uintN argc, jsval *vp) { jsval *argv = JS_ARGV(cx , vp); JSObject *obj = JS_NewObjectForConstructor(cx , vp); if(!obj) { JS_ReportError(cx , "Failed to create 'this' object"); return JS_FALSE; } void * ptr = JS_GetInstancePrivate(cx, obj, &rpmseqClass, NULL); DB_SEQUENCE * seq = ptr; JSObject * o = NULL; DB_TXN * _txn = NULL; uint32_t _flags = 0; JSBool ok = JS_FALSE; _METHOD_DEBUG_ENTRY(_debug); if (seq == NULL) goto exit; JS_SET_RVAL(cx, vp, JSVAL_FALSE); if (!(ok = JS_ConvertArguments(cx, argc, argv, "o/u", &o, &_flags))) goto exit; if (o && OBJ_IS_RPMTXN(cx, o)) _txn = JS_GetInstancePrivate(cx, o, &rpmtxnClass, NULL); { int ret = seq->remove(seq, _txn, _flags); switch (ret) { default: fprintf(stderr, "DB_SEQUENCE->remove: %s\n", db_strerror(ret)); goto exit; break; case 0: JS_SET_RVAL(cx, vp, JSVAL_TRUE); break; } seq = ptr = NULL; (void) JS_SetPrivate(cx, obj, ptr); } ok = JS_TRUE; exit: return ok; }
static JSBool rpmmpf_Get(JSContext *cx, uintN argc, jsval *vp) { jsval *argv = JS_ARGV(cx, vp); JSObject *obj = JS_THIS_OBJECT(cx, vp); void * ptr = JS_GetInstancePrivate(cx, obj, &rpmmpfClass, NULL); DB_MPOOLFILE * mpf = ptr; JSObject * o = NULL; DB_TXN * _txn = NULL; uint32_t _flags = 0; JSBool ok = JS_FALSE; _METHOD_DEBUG_ENTRY(_debug); if (mpf == NULL) goto exit; *vp = JSVAL_FALSE; if (!(ok = JS_ConvertArguments(cx, argc, argv, "o/u", &o, &_flags))) goto exit; if (o && OBJ_IS_RPMTXN(cx, o)) _txn = JS_GetInstancePrivate(cx, o, &rpmtxnClass, NULL); { db_pgno_t _pgno = 0; void * _page = NULL; int ret = mpf->get(mpf, &_pgno, _txn, _flags, &_page); switch (ret) { default: fprintf(stderr, "DB_MPOOLFILE->get: %s\n", db_strerror(ret)); goto exit; break; case 0: *vp = JSVAL_TRUE; break; } } ok = JS_TRUE; exit: return ok; }