Пример #1
0
static JSBool
rpmmpf_Close(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmmpfClass, NULL);
    DB_MPOOLFILE * mpf = ptr;
    uint32_t _flags = 0;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    if (mpf == NULL) goto exit;
    *rval = JSVAL_FALSE;

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "/u", &_flags)))
	goto exit;

    {	int ret = mpf->close(mpf, _flags);
	if (ret)
	    fprintf(stderr, "DB_MPOOLFILE->close: %s\n", db_strerror(ret));
	else
	    *rval = JSVAL_TRUE;
	mpf = ptr = NULL;
	(void) JS_SetPrivate(cx, obj, ptr);
    }

    ok = JS_TRUE;
exit:
    return ok;
}
Пример #2
0
static JSBool
rpmaug_set(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmaugClass, NULL);
    rpmaug aug = ptr;
    JSBool ok = JS_FALSE;
    const char * _path = NULL;
    const char * _value = NULL;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "ss", &_path, &_value)))
        goto exit;

    switch (rpmaugSet(aug, _path, _value)) {
    case 0:	/* found */
	*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, _value));
	break;
    default:
    case -1:	/* multiply defined */
	*rval = JSVAL_VOID;
	break;
    }
    ok = JS_TRUE;
exit:
    return ok;
}
Пример #3
0
static JSBool
rpmte_fi(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmteClass, NULL);
    rpmte te = ptr;
    rpmTag tagN = RPMTAG_BASENAMES;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "/i", &tagN)))
        goto exit;
    {	rpmfi fi = NULL;
	JSObject *fio = NULL;
	if ((fi = rpmteFI(te, tagN)) == NULL)
	    *rval = JSVAL_NULL;
	else
	if ((fio = JS_NewObject(cx, &rpmfiClass, NULL, NULL)) != NULL
	 && JS_SetPrivate(cx, fio, rpmfiLink(fi, __FUNCTION__)))
	    *rval = OBJECT_TO_JSVAL(fio);
	else {
	    fi = rpmfiFree(fi);
	    *rval = JSVAL_VOID;
	}
    }
    ok = JS_TRUE;
exit:
    return ok;
}
Пример #4
0
/* --- Object methods */
static JSBool
rpmps_push(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, &rpmpsClass, NULL);
    rpmps ps = ptr;
    char *pkgNEVR;
    char *altNEVR;
    JSObject *o;
    rpmProblemType type;
    char *dn;
    char *bn;
    uint32 ui;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "ssoissu",
		&pkgNEVR, &altNEVR, &o, &type, &dn, &bn, &ui)))
	goto exit;
    rpmpsAppend(ps, type, pkgNEVR, o, dn, bn, altNEVR, ui);

    ok = JS_TRUE;
exit:
    return ok;
}
Пример #5
0
static JSBool
rpmaug_match(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmaugClass, NULL);
    rpmaug aug = ptr;
    JSBool ok = JS_FALSE;
    const char * _path = NULL;
    char ** _matches = NULL;
    int nmatches;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "s", &_path)))
        goto exit;

    nmatches = rpmaugMatch(aug, _path, &_matches);
    if (nmatches <= 0) {	/* not found */
	*rval = JSVAL_VOID;
	goto exit;
    } else {
	JSObject *o;
	jsval v;
	int i;
	*rval = OBJECT_TO_JSVAL(o=JS_NewArrayObject(cx, 0, NULL));
	for (i = 0; i < nmatches; i++) {
	    v = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, _matches[i]));
	    ok = JS_SetElement(cx, o, i, &v);
	    _matches[i] = _free(_matches[i]);
	}
	_matches = _free(_matches);
    }
    ok = JS_TRUE;
exit:
    return ok;
}
Пример #6
0
static JSBool
rpmdc_Fini(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdcClass, NULL);
    rpmdc dc = ptr;
    JSBool ok = JS_FALSE;
    const char * s = NULL;
    size_t ns = 0;

_METHOD_DEBUG_ENTRY(_debug);

    *rval = JSVAL_FALSE;
    if (dc == NULL)
	goto exit;

    (void) rpmDigestFinal(dc, &s, &ns, 1);
    *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, s));

    (void) JS_SetPrivate(cx, obj, (void *)NULL);

    ok = JS_TRUE;
exit:
    s = _free(s);
    return ok;
}
Пример #7
0
/* --- Object methods */
static JSBool
rpmte_ds(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmteClass, NULL);
    rpmte te = ptr;
    rpmTag tagN = RPMTAG_NAME;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "/i", &tagN)))
        goto exit;
    {	rpmds ds = NULL;
	JSObject *dso = NULL;
	if ((ds = rpmteDS(te, tagN)) == NULL)
	    *rval = JSVAL_NULL;
	else
	if ((dso = JS_NewObject(cx, &rpmdsClass, NULL, NULL)) != NULL
	 && JS_SetPrivate(cx, dso, rpmdsLink(ds, __FUNCTION__)))
	    *rval = OBJECT_TO_JSVAL(dso);
	else {
	    ds = rpmdsFree(ds);
	    *rval = JSVAL_VOID;
	}
    }
    ok = JS_TRUE;
exit:
    return ok;
}
Пример #8
0
static JSBool
rpmdc_Update(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdcClass, NULL);
    rpmdc dc = ptr;
    JSBool ok = JS_FALSE;
    const char * s = NULL;
    size_t ns = 0;

_METHOD_DEBUG_ENTRY(_debug);

    *rval = JSVAL_FALSE;
    if (!(ok = JS_ConvertArguments(cx, argc, argv, "s", &s)))
        goto exit;
    if (dc == NULL)
	goto exit;

    if (s && (ns = strlen(s)) > 0)
	(void) rpmDigestUpdate(dc, s, ns);
    *rval = JSVAL_TRUE;

    ok = JS_TRUE;
exit:
    return ok;
}
Пример #9
0
/* XXX unclear whether aug.defvar("foo", "bar") or aug.foo = "bar" is better */
static JSBool
rpmaug_defvar(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmaugClass, NULL);
    rpmaug aug = ptr;
    JSBool ok = JS_FALSE;
    const char * _name = NULL;
    const char * _expr = NULL;

_METHOD_DEBUG_ENTRY(_debug);

    /* XXX note optional EXPR. If EXPR is NULL, then NAME is deleted. */
    if (!(ok = JS_ConvertArguments(cx, argc, argv, "s/s", &_name, &_expr)))
        goto exit;

    switch (rpmaugDefvar(aug, _name, _expr)) {
    default:
    case 0:	/* failure (but success if EXPR was NULL?) */
    case 1:	/* success */
	/* XXX return NAME or EXPR on success?  or bool for success/failure? */
	/* XXX hmmm, bool and string mixed returns. */
	*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, _name));
	break;
    }
    ok = JS_TRUE;
exit:
    return ok;
}
Пример #10
0
static JSBool
rpmmpf_Sync(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;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    if (mpf == NULL) goto exit;
    *vp = JSVAL_FALSE;

    {	int ret = mpf->sync(mpf);
	if (ret)
	    fprintf(stderr, "DB_MPOOLFILE->sync: %s\n", db_strerror(ret));
	*vp = (!ret ? JSVAL_TRUE : JSVAL_FALSE);
    }

    ok = JS_TRUE;

exit:
    return ok;
}
Пример #11
0
static JSBool
rpmhdr_setorigin(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, &rpmhdrClass, NULL);
    Header h = ptr;
    char * s = NULL;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "s", &s)))
        goto exit;

    (void) headerSetOrigin(h, s);
    JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(JS_NewStringCopyZ(cx, headerGetOrigin(h))));
    ok = JS_TRUE;
exit:
    return ok;
}
Пример #12
0
static JSBool
rpmhdr_sprintf(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, &rpmhdrClass, NULL);
    Header h = ptr;
    char * qfmt = NULL;
    const char * s = NULL;
    const char * errstr = NULL;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "s", &qfmt)))
        goto exit;

    if ((s = headerSprintf(h, qfmt, NULL, rpmHeaderFormats, &errstr)) == NULL)
	s = errstr; 	/* XXX FIXME: returning errstr in-band. */
    JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(JS_NewStringCopyZ(cx, s)));
    ok = JS_TRUE;
exit:
    return ok;
}
Пример #13
0
static JSBool
rpmseq_Close(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;
    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, "/u", &_flags)))
	goto exit;

    {	int ret = seq->close(seq, _flags);
	if (ret)
	    fprintf(stderr, "DB_SEQUENCE->close: %s\n", db_strerror(ret));
	else
	    JS_SET_RVAL(cx, vp, JSVAL_TRUE);
	seq = ptr = NULL;
	(void) JS_SetPrivate(cx, obj, ptr);
    }

    ok = JS_TRUE;
exit:
    return ok;
}
Пример #14
0
static JSBool
rpmts_mi(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmtsClass, NULL);
    rpmts ts = ptr;
    jsval tagid = JSVAL_VOID;
    jsval kv = JSVAL_VOID;
    rpmTag tag = RPMDBI_PACKAGES;
    JSObject *mio;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "/vv", &tagid, &kv)))
        goto exit;

    if (!JSVAL_IS_VOID(tagid)) {
	/* XXX TODO: make sure both tag and key were specified. */
	tag = JSVAL_IS_INT(tagid)
		? (rpmTag) JSVAL_TO_INT(tagid)
		: tagValue(JS_GetStringBytes(JS_ValueToString(cx, tagid)));
    }

    if ((mio = rpmjs_NewMiObject(cx, ts, tag, kv)) == NULL)
	goto exit;

    *rval = OBJECT_TO_JSVAL(mio);
    ok = JS_TRUE;

exit:
    return ok;
}
Пример #15
0
/* XXX print is uselss method because of FILE * in Augeas API. */
static JSBool
rpmaug_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmaugClass, NULL);
    rpmaug aug = ptr;
    JSBool ok = JS_FALSE;
    const char * _path = NULL;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "s", &_path)))
        goto exit;

    switch (rpmaugPrint(aug, NULL, _path)) {
    case 0:	/* success */
	*rval = JSVAL_TRUE;
	break;
    default:
    case -1:	/* failure */
	*rval = JSVAL_FALSE;
	break;
    }
    ok = JS_TRUE;
exit:
    return ok;
}
Пример #16
0
/* --- Object methods */
static JSBool
rpmdc_Init(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdcClass, NULL);
    rpmdc dc = ptr;
    JSBool ok = JS_FALSE;
    unsigned int _dalgo = PGPHASHALGO_NONE;
    unsigned int _flags = RPMDIGEST_NONE;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "/uu", &_dalgo, &_flags)))
        goto exit;

    if (dc) {
	if (_dalgo == PGPHASHALGO_NONE) _dalgo = rpmDigestAlgo(dc);
	(void) rpmDigestFinal(dc, NULL, NULL, 0);
	(void) JS_SetPrivate(cx, obj, (void *)NULL);
    }
    if (_dalgo == PGPHASHALGO_NONE) _dalgo = _dalgo_default;
    dc = rpmDigestInit(_dalgo, _flags);
    (void) JS_SetPrivate(cx, obj, (void *)dc);

    *rval = JSVAL_TRUE;
    ok = JS_TRUE;
exit:
    return ok;
}
Пример #17
0
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;
}
Пример #18
0
static JSBool
rpmbf_clr(JSContext *cx, uintN argc, jsval *vp)
{
    JSObject *obj = JS_THIS_OBJECT(cx, vp);
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmbfClass, NULL);
    rpmbf bf = ptr;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    *vp = (rpmbfClr(bf) == 0 ? JSVAL_TRUE : JSVAL_FALSE);
    ok = JS_TRUE;
    return ok;
}
Пример #19
0
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;
}
Пример #20
0
static JSBool
rpmps_print(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, &rpmpsClass, NULL);
    rpmps ps = ptr;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    rpmpsPrint(NULL, ps);

    ok = JS_TRUE;
    return ok;
}
Пример #21
0
static JSBool
rpmts_order(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmtsClass, NULL);
    rpmts ts = ptr;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    if (rpmtsNElements(ts) > 0)
	(void) rpmcliInstallOrder(ts);	/* XXX print ps for now */
    ok = JS_TRUE;

    *rval = BOOLEAN_TO_JSVAL(ok);	/* XXX return error */
    return ok;
}
Пример #22
0
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;
}
Пример #23
0
static JSBool
rpmts_dbrebuild(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmtsClass, NULL);
    rpmts ts = ptr;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    /* XXX rebuild requires root. */
    if (getuid())
	*rval = JSVAL_VOID;
    else
	*rval = (ts && !rpmtsRebuildDB(ts)) ? JSVAL_TRUE : JSVAL_FALSE;
    ok = JS_TRUE;

    return ok;
}
Пример #24
0
static JSBool
rpmaug_rm(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmaugClass, NULL);
    rpmaug aug = ptr;
    JSBool ok = JS_FALSE;
    const char * _path = NULL;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "s", &_path)))
        goto exit;

    /* XXX rpmaug_rm() returns number of deleted nodes. */
    *rval = INT_TO_JSVAL(rpmaugRm(aug, _path));
    ok = JS_TRUE;
exit:
    return ok;
}
Пример #25
0
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;
}
Пример #26
0
static JSBool
rpmts_run(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmtsClass, NULL);
    rpmts ts = ptr;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

#ifdef	NOTYET
    /* XXX force --test instead. */
    if (rpmtsNElements(ts) > 0)
	(void) rpmcliInstallRun(ts, NULL, 0);
#else
    rpmtsEmpty(ts);
#endif
    ok = JS_TRUE;

    *rval = BOOLEAN_TO_JSVAL(ok);	/* XXX return error */
    return ok;
}
Пример #27
0
static JSBool
rpmaug_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmaugClass, NULL);
    rpmaug aug = ptr;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    switch (rpmaugLoad(aug)) {
    case 0:	/* success */
	*rval = JSVAL_TRUE;
	break;
    default:
    case -1:	/* failure */
	*rval = JSVAL_FALSE;
	break;
    }
    ok = JS_TRUE;
    return ok;
}
Пример #28
0
static JSBool
rpmbf_del(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, &rpmbfClass, NULL);
    rpmbf bf = ptr;
    JSBool ok = JS_FALSE;
    const char * _s = NULL;

_METHOD_DEBUG_ENTRY(_debug);

    *vp = JSVAL_FALSE;
    if (!(ok = JS_ConvertArguments(cx, argc, argv, "s", &_s)))
        goto exit;

    *vp = (rpmbfDel(bf, _s, 0) == 0 ? JSVAL_TRUE : JSVAL_FALSE);
    ok = JS_TRUE;
exit:
    return ok;
}
Пример #29
0
static JSBool
rpmmpf_Open(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;
    char * _file = NULL;
    uint32_t _flags = DB_CREATE;
    int _mode = 0640;
    uint32_t _pagesize = _RPMMPF_PAGESIZE;

    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    if (mpf == NULL) goto exit;
    *vp = JSVAL_FALSE;

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "/suiu", &_file, &_flags, &_mode, &_pagesize)))
	goto exit;

    {	size_t pagesize = _pagesize;
	int ret = mpf->open(mpf, _file, _flags, _mode, pagesize);
	switch (ret) {
	default:
	    fprintf(stderr, "DB_MPOOLFILE->open: %s\n", db_strerror(ret));
	    goto exit;
	    break;
	case 0:
	    *vp = JSVAL_TRUE;
	    break;
	}
    }

    ok = JS_TRUE;

exit:
    return ok;
}
Пример #30
0
/* --- Object methods */
static JSBool
rpmhdr_ds(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, &rpmhdrClass, NULL);
    rpmTag tagN = RPMTAG_NAME;
    JSBool ok = JS_FALSE;

_METHOD_DEBUG_ENTRY(_debug);

    if (!(ok = JS_ConvertArguments(cx, argc, argv, "/u", &tagN)))
        goto exit;
    JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(rpmjs_NewDsObject(cx, OBJECT_TO_JSVAL(obj), tagN)));
    ok = JS_TRUE;
exit:
    return ok;
}