JSBool http_uri(JSContext* cx, JSObject* req, couch_args* args, jsval* uri_val) { FILE* uri_fp = NULL; JSString* uri_str; // Default is http://localhost:5984/ when no uri file is specified if (!args->uri_file) { uri_str = JS_InternString(cx, "http://localhost:5984/"); *uri_val = STRING_TO_JSVAL(uri_str); return JS_TRUE; } // Else check to see if the base url is cached in a reserved slot if (JS_GetReservedSlot(cx, req, 0, uri_val) && !JSVAL_IS_VOID(*uri_val)) { return JS_TRUE; } // Read the first line of the couch.uri file. if(!((uri_fp = fopen(args->uri_file, "r")) && (uri_str = couch_readline(cx, uri_fp)))) { JS_ReportError(cx, "Failed to read couch.uri file."); goto error; } fclose(uri_fp); *uri_val = STRING_TO_JSVAL(uri_str); JS_SetReservedSlot(cx, req, 0, *uri_val); return JS_TRUE; error: if(uri_fp) fclose(uri_fp); return JS_FALSE; }
static JSBool readline(JSContext* cx, uintN argc, jsval* vp) { JSString* line; /* GC Occasionally */ JS_MaybeGC(cx); line = couch_readline(cx, stdin); if(line == NULL) return JS_FALSE; JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(line)); return JS_TRUE; }
static JSBool readline(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) { JSString* line; /* GC Occasionally */ JS_MaybeGC(cx); line = couch_readline(cx, stdin); if(line == NULL) return JS_FALSE; *rval = STRING_TO_JSVAL(line); return JS_TRUE; }