diff --git a/src/sbbs3/js_uifc.c b/src/sbbs3/js_uifc.c index 60d55bef0b702ae244945689a754342d7e2e3f34..afc5b5ab366e7bf070ea85e375e7b49c74ff19fc 100644 --- a/src/sbbs3/js_uifc.c +++ b/src/sbbs3/js_uifc.c @@ -235,6 +235,7 @@ js_uifc_init(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { int ciolib_mode=CIOLIB_MODE_AUTO; char* title="Synchronet"; + char* mode; uifcapi_t* uifc; *rval = JSVAL_FALSE; @@ -245,11 +246,29 @@ js_uifc_init(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) if(argc && (title=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) return(JS_FALSE); - if(initciolib(ciolib_mode)) - return(JS_TRUE); + if(argc>1 && (mode=js_ValueToStringBytes(cx, argv[1], NULL))!=NULL) { + if(!stricmp(mode,"STDIO")) + ciolib_mode=-1; + else if(!stricmp(mode,"AUTO")) + ciolib_mode=CIOLIB_MODE_AUTO; + else if(!stricmp(mode,"X")) + ciolib_mode=CIOLIB_MODE_X; + else if(!stricmp(mode,"ANSI")) + ciolib_mode=CIOLIB_MODE_ANSI; + else if(!stricmp(mode,"CONIO")) + ciolib_mode=CIOLIB_MODE_CONIO; + } - if(uifcini32(uifc)) - return(JS_TRUE); + if(ciolib_mode==-1) { + if(uifcinix(uifc)) + return(JS_TRUE); + } else { + if(initciolib(ciolib_mode)) + return(JS_TRUE); + + if(uifcini32(uifc)) + return(JS_TRUE); + } *rval = JSVAL_TRUE; uifc->scrn(title); @@ -427,7 +446,7 @@ js_finalize(JSContext *cx, JSObject *obj) { uifcapi_t* p; - if((p=get_uifc(cx,obj))==NULL) + if((p=(uifcapi_t*)JS_GetPrivate(cx,obj))==NULL) return; free(p);