示例#1
0
static JSBool
rpmaug_getprop(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmaugClass, NULL);
    rpmaug aug = ptr;
    jsint tiny = JSVAL_TO_INT(id);

_PROP_DEBUG_ENTRY(_debug < 0);

    /* XXX the class has ptr == NULL, instances have ptr != NULL. */
    if (ptr == NULL)
	return JS_TRUE;

    switch (tiny) {
    case _DEBUG:
	*vp = INT_TO_JSVAL(_debug);
	break;
    default:
        if (JSVAL_IS_STRING(id) && *vp == JSVAL_VOID) {
	    const char * name = JS_GetStringBytes(JS_ValueToString(cx, id));
	    const char * _path = rpmGetPath(_defvar, "/", name, NULL);
	    const char * _value = NULL;
	    if (rpmaugGet(aug, _path, &_value) >= 0 && _value != NULL)
		*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, _value));
	    _path = _free(_path);
	    _value = _free(_value);
            break;
        }
	break;
    }

    return JS_TRUE;
}
示例#2
0
static JSBool
rpmaug_setprop(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmaugClass, NULL);
    rpmaug aug = ptr;
    jsint tiny = JSVAL_TO_INT(id);

_PROP_DEBUG_ENTRY(_debug < 0);

    /* XXX the class has ptr == NULL, instances have ptr != NULL. */
    if (ptr == NULL)
	return JS_TRUE;

    switch (tiny) {
    case _DEBUG:
	if (!JS_ValueToInt32(cx, *vp, &_debug))
	    break;
	break;
    default:
	/* XXX expr = undefined same as deleting? */
        if (JSVAL_IS_STRING(id)) {
            const char * name = JS_GetStringBytes(JS_ValueToString(cx, id));
            const char * expr = JS_GetStringBytes(JS_ValueToString(cx, *vp));
	    /* XXX should *setprop be permitted to delete NAME?!? */
	    /* XXX return is no. nodes in EXPR match. */
	    (void) rpmaugDefvar(aug, name, expr);
            break;
        }
	break;
    }

    return JS_TRUE;
}
示例#3
0
文件: rpmhdr-js.c 项目: avokhmin/RPM5
static JSBool
rpmhdr_setprop(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmhdrClass, NULL);
    jsval idval;
    JS_IdToValue(cx, id, &idval);
    jsint tiny = JSVAL_TO_INT(idval);

_PROP_DEBUG_ENTRY(_debug < 0);

    /* XXX the class has ptr == NULL, instances have ptr != NULL. */
    if (ptr == NULL)
	return JS_TRUE;

    switch (tiny) {
    case _DEBUG:
	if (!JS_ValueToInt32(cx, *vp, &_debug))
	    break;
	break;
    default:
	break;
    }

    return JS_TRUE;
}
示例#4
0
文件: rpmhdr-js.c 项目: avokhmin/RPM5
static JSBool
rpmhdr_getprop(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmhdrClass, NULL);
    Header h = ptr;
    jsval idval;
    JS_IdToValue(cx, id, &idval);
    jsint tiny = JSVAL_TO_INT(idval);

_PROP_DEBUG_ENTRY(_debug < 0);

    /* XXX the class has ptr == NULL, instances have ptr != NULL. */
    if (ptr == NULL)
	return JS_TRUE;

    switch (tiny) {
    case _DEBUG:
	*vp = INT_TO_JSVAL(_debug);
	break;
    default: {
	char * s = NULL;
	rpmTag tag = JSVAL_IS_INT(id)
		? (rpmTag) JSVAL_TO_INT(id)
		: tagValue((s = JS_EncodeString(cx, (JS_ValueToString(cx, id)))));
	if (s)
	    JS_free(cx, s);
	if (rpmhdrLoadTag(cx, obj, h, tag, vp) == NULL)
	    break;
      } break;
    }

    return JS_TRUE;
}
示例#5
0
static JSBool
rpmdir_getprop(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdirClass, NULL);
    jsint tiny = JSVAL_TO_INT(id);

_PROP_DEBUG_ENTRY(_debug < 0);

    /* XXX the class has ptr == NULL, instances have ptr != NULL. */
    if (ptr == NULL)
	return JS_TRUE;

    switch (tiny) {
    case _DEBUG:	*vp = INT_TO_JSVAL(_debug);		break;
    default:
	break;
    }

    return JS_TRUE;
}
示例#6
0
static JSBool
rpmbf_setprop(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmbfClass, NULL);
    jsint tiny = JSVAL_TO_INT(id);

#ifdef	NOTYET
    rpmbf bf = ptr;
_PROP_DEBUG_ENTRY(_debug < 0);
#endif

    /* XXX the class has ptr == NULL, instances have ptr != NULL. */
    if (ptr == NULL)
	return JS_TRUE;

    switch (tiny) {
    case _DEBUG:
	if (!JS_ValueToInt32(cx, *vp, &_debug))
	    break;
	break;
    default:
#ifdef	NOTYET
	/* XXX expr = undefined same as deleting? */
        if (JSVAL_IS_STRING(id)) {
            const char * name = JS_EncodeString(cx, JS_ValueToString(cx, id));
            const char * expr = JS_EncodeString(cx, JS_ValueToString(cx, *vp));
	    /* XXX should *setprop be permitted to delete NAME?!? */
	    /* XXX return is no. nodes in EXPR match. */
	    (void) rpmbfDefvar(bf, name, expr);
	    expr = _free(expr);
	    name = _free(name);
            break;
        }
#endif
	break;
    }

    return JS_TRUE;
}
示例#7
0
static JSBool
rpmdc_getprop(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdcClass, NULL);
    rpmdc dc = ptr;
    jsint tiny = JSVAL_TO_INT(id);

_PROP_DEBUG_ENTRY(_debug < 0);

    /* XXX the class has ptr == NULL, instances have ptr != NULL. */
    if (ptr == NULL)
	return JS_TRUE;

    switch (tiny) {
    case _DEBUG:	*vp = INT_TO_JSVAL(_debug);		break;
    case _ALGO:		*vp = _GET_I(dc, rpmDigestAlgo(dc));	break;
    case _ASN1:		*vp = _GET_S(dc, rpmDigestASN1(dc));	break;
    case _NAME:		*vp = _GET_S(dc, rpmDigestName(dc));	break;
    default:
	break;
    }

    return JS_TRUE;
}
示例#8
0
static JSBool
rpmts_getprop(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
    void * ptr = JS_GetInstancePrivate(cx, obj, &rpmtsClass, NULL);
    rpmts ts = ptr;
    jsint tiny = JSVAL_TO_INT(id);

_PROP_DEBUG_ENTRY(_debug < 0);

    /* XXX the class has ptr == NULL, instances have ptr != NULL. */
    if (ptr == NULL)
	return JS_TRUE;

    switch (tiny) {
    case _DEBUG:
	*vp = INT_TO_JSVAL(_debug);
	break;
    case _LENGTH:
	*vp = INT_TO_JSVAL(rpmtsNElements(ts));
	break;
    case _VSFLAGS:
	*vp = INT_TO_JSVAL((jsint)rpmtsVSFlags(ts));
	break;
    case _TYPE:
	*vp = INT_TO_JSVAL((jsint)rpmtsType(ts));
	break;
    case _ARBGOAL:
	*vp = INT_TO_JSVAL((jsint)rpmtsARBGoal(ts));
	break;
    case _ROOTDIR:
	*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, rpmtsRootDir(ts)));
	break;
    case _CURRDIR:
	*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, rpmtsCurrDir(ts)));
	break;
    case _SELINUX:
	*vp = INT_TO_JSVAL((jsint)rpmtsSELinuxEnabled(ts));
	break;
    case _CHROOTDONE:
	*vp = INT_TO_JSVAL((jsint)rpmtsChrootDone(ts));
	break;
    case _TID:
	*vp = INT_TO_JSVAL((jsint)rpmtsGetTid(ts));
	break;
    case _NELEMENTS:
	*vp = INT_TO_JSVAL((jsint)rpmtsNElements(ts));
	break;
    case _PROBFILTER:
	*vp = INT_TO_JSVAL((jsint)rpmtsFilterFlags(ts));
	break;
    case _FLAGS:
	*vp = INT_TO_JSVAL((jsint)rpmtsFlags(ts));
	break;
    case _DFLAGS:
	*vp = INT_TO_JSVAL((jsint)rpmtsDFlags(ts));
	break;
    case _GOAL:
	*vp = INT_TO_JSVAL((jsint)rpmtsGoal(ts));
	break;
    case _DBMODE:
	*vp = INT_TO_JSVAL((jsint)rpmtsDBMode(ts));
	break;
    case _COLOR:
	*vp = INT_TO_JSVAL((jsint)rpmtsColor(ts));
	break;
    case _PREFCOLOR:
	*vp = INT_TO_JSVAL((jsint)rpmtsPrefColor(ts));
	break;
    default:
	if (JSVAL_IS_INT(id)) {
	    int oc = JSVAL_TO_INT(id);
	    JSObject *teo = NULL;
	    rpmte te = NULL;
	    /* XXX rpmteLink/rpmteUnlink are no-ops */
	    if ((te = rpmtsElement(ts, oc)) != NULL
	     && (teo = JS_NewObject(cx, &rpmteClass, NULL, NULL)) != NULL
	     && JS_SetPrivate(cx, teo, rpmteLink(te)))
	    {
		*vp = OBJECT_TO_JSVAL(teo);
	    }
	    break;
	}
#ifdef	DYING
	if (JSVAL_IS_STRING(id)) {
	    JSString * str = JS_ValueToString(cx, id);
	    const char * name = JS_GetStringBytes(str);
	    if (!strcmp(name, "NVRA")) {
		JSObject * NVRA = rpmtsLoadNVRA(cx, obj);
		*vp = OBJECT_TO_JSVAL(NVRA);
	    }
	    break;
	}
#endif
	break;
    }

    return JS_TRUE;
}