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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }