119
base_url(JSContext *cx, JSObject* obj, jsid pid, jsval* vp)
121
couch_args *args = (couch_args*)JS_GetContextPrivate(cx);
122
return http_uri(cx, obj, args, &JS_RVAL(cx, vp));
119
127
evalcx(JSContext *cx, uintN argc, jsval* vp)
121
129
jsval* argv = JS_ARGV(cx, vp);
163
name = enc_string(cx, argv[2], NULL);
153
166
if(srclen == 0) {
154
167
JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(sandbox));
156
JS_EvaluateUCScript(subcx, sandbox, src, srclen, NULL, 0, &rval);
169
JS_EvaluateUCScript(subcx, sandbox, src, srclen, name, 1, &rval);
157
170
JS_SET_RVAL(cx, vp, rval);
176
if(name) JS_free(cx, name);
163
177
FINISH_REQUEST(subcx);
164
178
JS_DestroyContext(subcx);
254
268
JSPropertySpec CouchHTTPProperties[] = {
255
269
{"status", 0, JSPROP_READONLY, req_status, NULL},
270
{"base_url", 0, JSPROP_READONLY | JSPROP_SHARED, base_url, NULL},
308
324
couch_args* args = couch_parse_args(argc, argv);
310
rt = JS_NewRuntime(64L * 1024L * 1024L);
326
rt = JS_NewRuntime(args->stack_size);
314
cx = JS_NewContext(rt, args->stack_size);
330
cx = JS_NewContext(rt, 8L * 1024L);
318
334
JS_SetErrorReporter(cx, couch_error);
319
335
JS_ToggleOptions(cx, JSOPTION_XML);
336
JS_SetContextPrivate(cx, args);
321
338
SETUP_REQUEST(cx);
354
// Convert script source to jschars.
355
scriptsrc = dec_string(cx, args->script, strlen(args->script));
359
schars = JS_GetStringChars(scriptsrc);
360
slen = JS_GetStringLength(scriptsrc);
362
// Root it so GC doesn't collect it.
363
sroot = STRING_TO_JSVAL(scriptsrc);
364
if(JS_AddRoot(cx, &sroot) != JS_TRUE) {
365
fprintf(stderr, "Internal root error.\n");
370
script = JS_CompileUCScript(cx, global, schars, slen, args->script_name, 1);
372
fprintf(stderr, "Failed to compile script.\n");
376
JS_ExecuteScript(cx, global, script, &result);
378
// Warning message if we don't remove it.
379
JS_RemoveRoot(cx, &sroot);
371
for (i = 0 ; args->scripts[i] ; i++) {
372
// Convert script source to jschars.
373
scriptsrc = couch_readfile(cx, args->scripts[i]);
377
schars = JS_GetStringChars(scriptsrc);
378
slen = JS_GetStringLength(scriptsrc);
380
// Root it so GC doesn't collect it.
381
sroot = STRING_TO_JSVAL(scriptsrc);
382
if(JS_AddRoot(cx, &sroot) != JS_TRUE) {
383
fprintf(stderr, "Internal root error.\n");
388
script = JS_CompileUCScript(cx, global, schars, slen,
389
args->scripts[i], 1);
391
fprintf(stderr, "Failed to compile script.\n");
395
JS_ExecuteScript(cx, global, script, &result);
397
// Warning message if we don't remove it.
398
JS_RemoveRoot(cx, &sroot);
381
401
FINISH_REQUEST(cx);
382
402
JS_DestroyContext(cx);