Skip to content
Snippets Groups Projects
Commit 9c5d941e authored by deuce's avatar deuce
Browse files

Move towards shared runtimes...

parent a0cab686
No related branches found
No related tags found
No related merge requests found
...@@ -227,6 +227,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -227,6 +227,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
JSBool success; JSBool success;
JSBool background=JS_FALSE; JSBool background=JS_FALSE;
background_data_t* bg; background_data_t* bg;
jsrefcount rc;
*rval=JSVAL_VOID; *rval=JSVAL_VOID;
...@@ -330,6 +331,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -330,6 +331,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY); ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY);
} }
rc=JS_SuspendRequest(cx);
errno = 0; errno = 0;
if(isfullpath(filename)) if(isfullpath(filename))
strcpy(path,filename); strcpy(path,filename);
...@@ -338,6 +340,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -338,6 +340,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(p->cfg->mods_dir[0]==0 || !fexistcase(path)) if(p->cfg->mods_dir[0]==0 || !fexistcase(path))
sprintf(path,"%s%s",p->cfg->exec_dir,filename); sprintf(path,"%s%s",p->cfg->exec_dir,filename);
} }
JS_ResumeRequest(cx, rc);
JS_ClearPendingException(exec_cx); JS_ClearPendingException(exec_cx);
...@@ -384,14 +387,17 @@ static JSBool ...@@ -384,14 +387,17 @@ static JSBool
js_yield(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_yield(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
BOOL forced=TRUE; BOOL forced=TRUE;
jsrefcount rc;
if(argc) if(argc)
JS_ValueToBoolean(cx, argv[0], &forced); JS_ValueToBoolean(cx, argv[0], &forced);
rc=JS_SuspendRequest(cx);
if(forced) { if(forced) {
YIELD(); YIELD();
} else { } else {
MAYBE_YIELD(); MAYBE_YIELD();
} }
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -401,10 +407,13 @@ js_mswait(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -401,10 +407,13 @@ js_mswait(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
int32 val=1; int32 val=1;
clock_t start=msclock(); clock_t start=msclock();
jsrefcount rc;
if(argc) if(argc)
JS_ValueToInt32(cx,argv[0],&val); JS_ValueToInt32(cx,argv[0],&val);
rc=JS_SuspendRequest(cx);
mswait(val); mswait(val);
JS_ResumeRequest(cx, rc);
JS_NewNumberValue(cx,msclock()-start,rval); JS_NewNumberValue(cx,msclock()-start,rval);
...@@ -436,13 +445,16 @@ js_beep(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -436,13 +445,16 @@ js_beep(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
int32 freq=500; int32 freq=500;
int32 dur=500; int32 dur=500;
jsrefcount rc;
if(argc) if(argc)
JS_ValueToInt32(cx,argv[0],&freq); JS_ValueToInt32(cx,argv[0],&freq);
if(argc>1) if(argc>1)
JS_ValueToInt32(cx,argv[1],&dur); JS_ValueToInt32(cx,argv[1],&dur);
rc=JS_SuspendRequest(cx);
sbbs_beep(freq,dur); sbbs_beep(freq,dur);
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -461,6 +473,7 @@ js_crc16(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -461,6 +473,7 @@ js_crc16(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
size_t len; size_t len;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -468,7 +481,9 @@ js_crc16(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -468,7 +481,9 @@ js_crc16(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], &len))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], &len))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = INT_TO_JSVAL(crc16(p,len)); *rval = INT_TO_JSVAL(crc16(p,len));
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -477,6 +492,10 @@ js_crc32(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -477,6 +492,10 @@ js_crc32(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
size_t len; size_t len;
uint32_t cs;
jsrefcount rc;
rc=JS_SuspendRequest(cx);
JS_ResumeRequest(cx, rc);
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -484,7 +503,10 @@ js_crc32(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -484,7 +503,10 @@ js_crc32(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], &len))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], &len))==NULL)
return(JS_FALSE); return(JS_FALSE);
JS_NewNumberValue(cx,crc32(p,len),rval); cs=crc32(p,len);
rc=JS_SuspendRequest(cx);
JS_NewNumberValue(cx,cs,rval);
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -494,6 +516,7 @@ js_chksum(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -494,6 +516,7 @@ js_chksum(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
ulong sum=0; ulong sum=0;
char* p; char* p;
size_t len; size_t len;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -501,7 +524,9 @@ js_chksum(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -501,7 +524,9 @@ js_chksum(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], &len))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], &len))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
while(len--) sum+=*(p++); while(len--) sum+=*(p++);
JS_ResumeRequest(cx, rc);
JS_NewNumberValue(cx,sum,rval); JS_NewNumberValue(cx,sum,rval);
return(JS_TRUE); return(JS_TRUE);
...@@ -839,6 +864,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -839,6 +864,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
int old_prefix_bytes=0; int old_prefix_bytes=0;
int outbuf_size=0; int outbuf_size=0;
JSString* js_str; JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -870,6 +896,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -870,6 +896,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
} }
prefix[0]=0; prefix[0]=0;
} }
rc=JS_SuspendRequest(cx);
outbuf[0]=0; outbuf[0]=0;
/* Get prefix from the first line (ouch) */ /* Get prefix from the first line (ouch) */
...@@ -1071,6 +1098,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -1071,6 +1098,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
} }
} }
JS_ResumeRequest(cx, rc);
js_str = JS_NewStringCopyZ(cx, outbuf); js_str = JS_NewStringCopyZ(cx, outbuf);
free(outbuf); free(outbuf);
free(linebuf); free(linebuf);
...@@ -1093,6 +1121,7 @@ js_quote_msg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -1093,6 +1121,7 @@ js_quote_msg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* linebuf; char* linebuf;
char* prefix=" > "; char* prefix=" > ";
JSString* js_str; JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -1116,6 +1145,7 @@ js_quote_msg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -1116,6 +1145,7 @@ js_quote_msg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((linebuf=(char*)alloca(len*2+2))==NULL) /* (Hopefully) Room for ^A codes. ToDo */ if((linebuf=(char*)alloca(len*2+2))==NULL) /* (Hopefully) Room for ^A codes. ToDo */
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
outbuf[0]=0; outbuf[0]=0;
clen=0; clen=0;
for(i=l=0;inbuf[i];i++) { for(i=l=0;inbuf[i];i++) {
...@@ -1139,6 +1169,7 @@ js_quote_msg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -1139,6 +1169,7 @@ js_quote_msg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
} }
if(l) /* remainder */ if(l) /* remainder */
strncat(outbuf,linebuf,l); strncat(outbuf,linebuf,l);
JS_ResumeRequest(cx, rc);
js_str = JS_NewStringCopyZ(cx, outbuf); js_str = JS_NewStringCopyZ(cx, outbuf);
free(outbuf); free(outbuf);
...@@ -1409,6 +1440,7 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva ...@@ -1409,6 +1440,7 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
ulong clear_screen=0; ulong clear_screen=0;
JSObject* stateobj=NULL; JSObject* stateobj=NULL;
jsval val; jsval val;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -1472,6 +1504,7 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva ...@@ -1472,6 +1504,7 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
if((tmpbuf=(char*)malloc((strlen(inbuf)*10)+1))==NULL) if((tmpbuf=(char*)malloc((strlen(inbuf)*10)+1))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
for(i=j=0;inbuf[i];i++) { for(i=j=0;inbuf[i];i++) {
switch(inbuf[i]) { switch(inbuf[i]) {
case TAB: case TAB:
...@@ -1549,6 +1582,7 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva ...@@ -1549,6 +1582,7 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
if((outbuf=(uchar*)malloc(obsize))==NULL) if((outbuf=(uchar*)malloc(obsize))==NULL)
{ {
free(tmpbuf); free(tmpbuf);
rc=JS_SuspendRequest(cx);
return(JS_FALSE); return(JS_FALSE);
} }
j=sprintf(outbuf,"<span style=\"%s\">",htmlansi[7]); j=sprintf(outbuf,"<span style=\"%s\">",htmlansi[7]);
...@@ -1561,6 +1595,7 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva ...@@ -1561,6 +1595,7 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
{ {
free(tmpbuf); free(tmpbuf);
free(outbuf); free(outbuf);
rc=JS_SuspendRequest(cx);
return(JS_FALSE); return(JS_FALSE);
} }
outbuf=param; outbuf=param;
...@@ -2014,12 +2049,15 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva ...@@ -2014,12 +2049,15 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
} }
} }
strcpy(outbuf+j,"</span>"); strcpy(outbuf+j,"</span>");
rc=JS_SuspendRequest(cx);
js_str = JS_NewStringCopyZ(cx, outbuf); js_str = JS_NewStringCopyZ(cx, outbuf);
free(outbuf); free(outbuf);
} }
else else {
rc=JS_SuspendRequest(cx);
js_str = JS_NewStringCopyZ(cx, tmpbuf); js_str = JS_NewStringCopyZ(cx, tmpbuf);
}
free(tmpbuf); /* assertion here, Feb-20-2006 */ free(tmpbuf); /* assertion here, Feb-20-2006 */
if(js_str==NULL) if(js_str==NULL)
...@@ -2064,6 +2102,7 @@ js_html_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva ...@@ -2064,6 +2102,7 @@ js_html_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
char token[16]; char token[16];
size_t t; size_t t;
JSString* js_str; JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2074,6 +2113,7 @@ js_html_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva ...@@ -2074,6 +2113,7 @@ js_html_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
if((outbuf=(char*)malloc(strlen(inbuf)+1))==NULL) if((outbuf=(char*)malloc(strlen(inbuf)+1))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
for(i=j=0;inbuf[i];i++) { for(i=j=0;inbuf[i];i++) {
if(inbuf[i]!='&') { if(inbuf[i]!='&') {
outbuf[j++]=inbuf[i]; outbuf[j++]=inbuf[i];
...@@ -2143,6 +2183,7 @@ js_html_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva ...@@ -2143,6 +2183,7 @@ js_html_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
} }
outbuf[j]=0; outbuf[j]=0;
JS_ResumeRequest(cx, rc);
js_str = JS_NewStringCopyZ(cx, outbuf); js_str = JS_NewStringCopyZ(cx, outbuf);
free(outbuf); free(outbuf);
...@@ -2162,6 +2203,7 @@ js_b64_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ...@@ -2162,6 +2203,7 @@ js_b64_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
uchar* inbuf; uchar* inbuf;
uchar* outbuf; uchar* outbuf;
JSString* js_str; JSString* js_str;
jsrefcount rc;
*rval = JSVAL_NULL; *rval = JSVAL_NULL;
...@@ -2176,7 +2218,9 @@ js_b64_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ...@@ -2176,7 +2218,9 @@ js_b64_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
if((outbuf=(char*)malloc(len))==NULL) if((outbuf=(char*)malloc(len))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
res=b64_encode(outbuf,len,inbuf,inbuf_len); res=b64_encode(outbuf,len,inbuf,inbuf_len);
JS_ResumeRequest(cx, rc);
if(res<1) { if(res<1) {
free(outbuf); free(outbuf);
...@@ -2200,6 +2244,7 @@ js_b64_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ...@@ -2200,6 +2244,7 @@ js_b64_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
uchar* inbuf; uchar* inbuf;
uchar* outbuf; uchar* outbuf;
JSString* js_str; JSString* js_str;
jsrefcount rc;
*rval = JSVAL_NULL; *rval = JSVAL_NULL;
...@@ -2214,7 +2259,9 @@ js_b64_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ...@@ -2214,7 +2259,9 @@ js_b64_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
if((outbuf=(char*)malloc(len))==NULL) if((outbuf=(char*)malloc(len))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
res=b64_decode(outbuf,len,inbuf,strlen(inbuf)); res=b64_decode(outbuf,len,inbuf,strlen(inbuf));
JS_ResumeRequest(cx, rc);
if(res<1) { if(res<1) {
free(outbuf); free(outbuf);
...@@ -2239,6 +2286,7 @@ js_md5_calc(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) ...@@ -2239,6 +2286,7 @@ js_md5_calc(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval)
char* inbuf; char* inbuf;
char outbuf[64]; char outbuf[64];
JSString* js_str; JSString* js_str;
jsrefcount rc;
*rval = JSVAL_NULL; *rval = JSVAL_NULL;
...@@ -2251,12 +2299,14 @@ js_md5_calc(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval) ...@@ -2251,12 +2299,14 @@ js_md5_calc(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval)
if(argc>1 && JSVAL_IS_BOOLEAN(argv[1])) if(argc>1 && JSVAL_IS_BOOLEAN(argv[1]))
hex=JSVAL_TO_BOOLEAN(argv[1]); hex=JSVAL_TO_BOOLEAN(argv[1]);
rc=JS_SuspendRequest(cx);
MD5_calc(digest,inbuf,inbuf_len); MD5_calc(digest,inbuf,inbuf_len);
if(hex) if(hex)
MD5_hex(outbuf,digest); MD5_hex(outbuf,digest);
else else
b64_encode(outbuf,sizeof(outbuf),digest,sizeof(digest)); b64_encode(outbuf,sizeof(outbuf),digest,sizeof(digest));
JS_ResumeRequest(cx, rc);
js_str = JS_NewStringCopyZ(cx, outbuf); js_str = JS_NewStringCopyZ(cx, outbuf);
if(js_str==NULL) if(js_str==NULL)
...@@ -2373,6 +2423,7 @@ js_fullpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2373,6 +2423,7 @@ js_fullpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char path[MAX_PATH+1]; char path[MAX_PATH+1];
char* str; char* str;
JSString* js_str; JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2381,7 +2432,9 @@ js_fullpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2381,7 +2432,9 @@ js_fullpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
return(JS_FALSE); return(JS_FALSE);
SAFECOPY(path,str); SAFECOPY(path,str);
rc=JS_SuspendRequest(cx);
_fullpath(path, str, sizeof(path)); _fullpath(path, str, sizeof(path));
JS_ResumeRequest(cx, rc);
if((js_str = JS_NewStringCopyZ(cx, path))==NULL) if((js_str = JS_NewStringCopyZ(cx, path))==NULL)
return(JS_FALSE); return(JS_FALSE);
...@@ -2441,6 +2494,8 @@ js_getfcase(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2441,6 +2494,8 @@ js_getfcase(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* str; char* str;
char path[MAX_PATH+1]; char path[MAX_PATH+1];
JSString* js_str; JSString* js_str;
jsrefcount rc;
rc=JS_SuspendRequest(cx);
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2449,13 +2504,17 @@ js_getfcase(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2449,13 +2504,17 @@ js_getfcase(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
return(JS_FALSE); return(JS_FALSE);
SAFECOPY(path,str); SAFECOPY(path,str);
rc=JS_SuspendRequest(cx);
if(fexistcase(path)) { if(fexistcase(path)) {
JS_ResumeRequest(cx, rc);
js_str = JS_NewStringCopyZ(cx, path); js_str = JS_NewStringCopyZ(cx, path);
if(js_str==NULL) if(js_str==NULL)
return(JS_FALSE); return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str); *rval = STRING_TO_JSVAL(js_str);
} }
else
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2465,6 +2524,7 @@ js_dosfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2465,6 +2524,7 @@ js_dosfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* str; char* str;
char path[MAX_PATH+1]; char path[MAX_PATH+1];
JSString* js_str; JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2474,13 +2534,17 @@ js_dosfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2474,13 +2534,17 @@ js_dosfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((str=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((str=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
if(GetShortPathName(str,path,sizeof(path))) { if(GetShortPathName(str,path,sizeof(path))) {
JS_ResumeRequest(cx, rc);
js_str = JS_NewStringCopyZ(cx, path); js_str = JS_NewStringCopyZ(cx, path);
if(js_str==NULL) if(js_str==NULL)
return(JS_FALSE); return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str); *rval = STRING_TO_JSVAL(js_str);
} }
else
JS_ResumeRequest(cx, rc);
#else /* No non-Windows equivalent */ #else /* No non-Windows equivalent */
...@@ -2497,6 +2561,10 @@ js_cfgfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2497,6 +2561,10 @@ js_cfgfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* path; char* path;
char* fname; char* fname;
char result[MAX_PATH+1]; char result[MAX_PATH+1];
char* cstr;
jsrefcount rc;
rc=JS_SuspendRequest(cx);
JS_ResumeRequest(cx, rc);
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2507,7 +2575,10 @@ js_cfgfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2507,7 +2575,10 @@ js_cfgfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((fname=js_ValueToStringBytes(cx, argv[1], NULL))==NULL) if((fname=js_ValueToStringBytes(cx, argv[1], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,iniFileName(result,sizeof(result),path,fname))); rc=JS_SuspendRequest(cx);
cstr = iniFileName(result,sizeof(result),path,fname);
JS_ResumeRequest(cx, rc);
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,cstr));
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2516,6 +2587,7 @@ static JSBool ...@@ -2516,6 +2587,7 @@ static JSBool
js_fexist(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_fexist(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2523,7 +2595,9 @@ js_fexist(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2523,7 +2595,9 @@ js_fexist(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(fexist(p)); *rval = BOOLEAN_TO_JSVAL(fexist(p));
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2531,6 +2605,7 @@ static JSBool ...@@ -2531,6 +2605,7 @@ static JSBool
js_removecase(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_removecase(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2538,7 +2613,9 @@ js_removecase(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ...@@ -2538,7 +2613,9 @@ js_removecase(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(removecase(p)==0); *rval = BOOLEAN_TO_JSVAL(removecase(p)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2546,6 +2623,7 @@ static JSBool ...@@ -2546,6 +2623,7 @@ static JSBool
js_remove(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_remove(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2553,7 +2631,9 @@ js_remove(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2553,7 +2631,9 @@ js_remove(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(remove(p)==0); *rval = BOOLEAN_TO_JSVAL(remove(p)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2562,6 +2642,7 @@ js_rename(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2562,6 +2642,7 @@ js_rename(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* oldname; char* oldname;
char* newname; char* newname;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2572,7 +2653,9 @@ js_rename(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2572,7 +2653,9 @@ js_rename(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((newname=js_ValueToStringBytes(cx, argv[1], NULL))==NULL) if((newname=js_ValueToStringBytes(cx, argv[1], NULL))==NULL)
return(JS_TRUE); return(JS_TRUE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(rename(oldname,newname)==0); *rval = BOOLEAN_TO_JSVAL(rename(oldname,newname)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2581,6 +2664,7 @@ js_fcopy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2581,6 +2664,7 @@ js_fcopy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* src; char* src;
char* dest; char* dest;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2591,7 +2675,9 @@ js_fcopy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2591,7 +2675,9 @@ js_fcopy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((dest=js_ValueToStringBytes(cx, argv[1], NULL))==NULL) if((dest=js_ValueToStringBytes(cx, argv[1], NULL))==NULL)
return(JS_TRUE); return(JS_TRUE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(fcopy(src,dest)); *rval = BOOLEAN_TO_JSVAL(fcopy(src,dest));
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2600,6 +2686,7 @@ js_fcompare(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2600,6 +2686,7 @@ js_fcompare(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* fn1; char* fn1;
char* fn2; char* fn2;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2610,7 +2697,9 @@ js_fcompare(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2610,7 +2697,9 @@ js_fcompare(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((fn2=js_ValueToStringBytes(cx, argv[1], NULL))==NULL) if((fn2=js_ValueToStringBytes(cx, argv[1], NULL))==NULL)
return(JS_TRUE); return(JS_TRUE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(fcompare(fn1,fn2)); *rval = BOOLEAN_TO_JSVAL(fcompare(fn1,fn2));
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2620,6 +2709,7 @@ js_backup(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2620,6 +2709,7 @@ js_backup(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* fname; char* fname;
int32 level=5; int32 level=5;
BOOL ren=FALSE; BOOL ren=FALSE;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2633,7 +2723,9 @@ js_backup(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2633,7 +2723,9 @@ js_backup(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(argc>2) if(argc>2)
JS_ValueToBoolean(cx,argv[2],&ren); JS_ValueToBoolean(cx,argv[2],&ren);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(backup(fname,level,ren)); *rval = BOOLEAN_TO_JSVAL(backup(fname,level,ren));
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2641,6 +2733,7 @@ static JSBool ...@@ -2641,6 +2733,7 @@ static JSBool
js_isdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_isdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2648,7 +2741,9 @@ js_isdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2648,7 +2741,9 @@ js_isdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(isdir(p)); *rval = BOOLEAN_TO_JSVAL(isdir(p));
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2656,6 +2751,8 @@ static JSBool ...@@ -2656,6 +2751,8 @@ static JSBool
js_fattr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_fattr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
jsrefcount rc;
int attr;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2663,7 +2760,10 @@ js_fattr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2663,7 +2760,10 @@ js_fattr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
JS_NewNumberValue(cx,getfattr(p),rval); rc=JS_SuspendRequest(cx);
attr=getfattr(p);
JS_ResumeRequest(cx, rc);
JS_NewNumberValue(cx,attr,rval);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2671,6 +2771,8 @@ static JSBool ...@@ -2671,6 +2771,8 @@ static JSBool
js_fdate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_fdate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
time_t fd;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2678,7 +2780,10 @@ js_fdate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2678,7 +2780,10 @@ js_fdate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
JS_NewNumberValue(cx,fdate(p),rval); rc=JS_SuspendRequest(cx);
fd=fdate(p);
JS_ResumeRequest(cx, rc);
JS_NewNumberValue(cx,fd,rval);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2689,6 +2794,7 @@ js_utime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2689,6 +2794,7 @@ js_utime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
int32 actime; int32 actime;
int32 modtime; int32 modtime;
struct utimbuf ut; struct utimbuf ut;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2709,7 +2815,9 @@ js_utime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2709,7 +2815,9 @@ js_utime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
ut.modtime=modtime; ut.modtime=modtime;
} }
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(utime(fname,&ut)==0); *rval = BOOLEAN_TO_JSVAL(utime(fname,&ut)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2719,6 +2827,8 @@ static JSBool ...@@ -2719,6 +2827,8 @@ static JSBool
js_flength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_flength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
long fl;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2726,7 +2836,10 @@ js_flength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2726,7 +2836,10 @@ js_flength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
JS_NewNumberValue(cx,flength(p),rval); rc=JS_SuspendRequest(cx);
fl=flength(p);
JS_ResumeRequest(cx, rc);
JS_NewNumberValue(cx,fl,rval);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2735,6 +2848,7 @@ static JSBool ...@@ -2735,6 +2848,7 @@ static JSBool
js_ftouch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_ftouch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* fname; char* fname;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2742,7 +2856,9 @@ js_ftouch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2742,7 +2856,9 @@ js_ftouch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((fname=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((fname=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(ftouch(fname)); *rval = BOOLEAN_TO_JSVAL(ftouch(fname));
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2753,6 +2869,7 @@ js_fmutex(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2753,6 +2869,7 @@ js_fmutex(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* text=NULL; char* text=NULL;
int32 max_age=0; int32 max_age=0;
uintN argn=0; uintN argn=0;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2764,7 +2881,9 @@ js_fmutex(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2764,7 +2881,9 @@ js_fmutex(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(argc > argn && JSVAL_IS_NUMBER(argv[argn])) if(argc > argn && JSVAL_IS_NUMBER(argv[argn]))
JS_ValueToInt32(cx, argv[argn++], &max_age); JS_ValueToInt32(cx, argv[argn++], &max_age);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(fmutex(fname,text,max_age)); *rval = BOOLEAN_TO_JSVAL(fmutex(fname,text,max_age));
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2772,6 +2891,7 @@ static JSBool ...@@ -2772,6 +2891,7 @@ static JSBool
js_sound(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_sound(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
jsrefcount rc;
if(!argc) { /* Stop playing sound */ if(!argc) { /* Stop playing sound */
#ifdef _WIN32 #ifdef _WIN32
...@@ -2787,11 +2907,13 @@ js_sound(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2787,11 +2907,13 @@ js_sound(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
#ifdef _WIN32 #ifdef _WIN32
*rval = BOOLEAN_TO_JSVAL(PlaySound(p, NULL, SND_ASYNC|SND_FILENAME)); *rval = BOOLEAN_TO_JSVAL(PlaySound(p, NULL, SND_ASYNC|SND_FILENAME));
#else #else
*rval = BOOLEAN_TO_JSVAL(JS_FALSE); *rval = BOOLEAN_TO_JSVAL(JS_FALSE);
#endif #endif
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2807,6 +2929,7 @@ js_directory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2807,6 +2929,7 @@ js_directory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
JSString* js_str; JSString* js_str;
jsint len=0; jsint len=0;
jsval val; jsval val;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2822,7 +2945,9 @@ js_directory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2822,7 +2945,9 @@ js_directory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((array = JS_NewArrayObject(cx, 0, NULL))==NULL) if((array = JS_NewArrayObject(cx, 0, NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
glob(p,flags,NULL,&g); glob(p,flags,NULL,&g);
JS_ResumeRequest(cx, rc);
for(i=0;i<(int)g.gl_pathc;i++) { for(i=0;i<(int)g.gl_pathc;i++) {
if((js_str=JS_NewStringCopyZ(cx,g.gl_pathv[i]))==NULL) if((js_str=JS_NewStringCopyZ(cx,g.gl_pathv[i]))==NULL)
break; break;
...@@ -2830,7 +2955,9 @@ js_directory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2830,7 +2955,9 @@ js_directory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(!JS_SetElement(cx, array, len++, &val)) if(!JS_SetElement(cx, array, len++, &val))
break; break;
} }
rc=JS_SuspendRequest(cx);
globfree(&g); globfree(&g);
JS_ResumeRequest(cx, rc);
*rval = OBJECT_TO_JSVAL(array); *rval = OBJECT_TO_JSVAL(array);
...@@ -2845,6 +2972,7 @@ js_wildmatch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2845,6 +2972,7 @@ js_wildmatch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* fname; char* fname;
char* spec="*"; char* spec="*";
uintN argn=0; uintN argn=0;
jsrefcount rc;
if(JSVAL_IS_BOOLEAN(argv[argn])) if(JSVAL_IS_BOOLEAN(argv[argn]))
JS_ValueToBoolean(cx, argv[argn++], &case_sensitive); JS_ValueToBoolean(cx, argv[argn++], &case_sensitive);
...@@ -2859,10 +2987,12 @@ js_wildmatch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2859,10 +2987,12 @@ js_wildmatch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(argn<argc && argv[argn]!=JSVAL_VOID) if(argn<argc && argv[argn]!=JSVAL_VOID)
JS_ValueToBoolean(cx, argv[argn++], &path); JS_ValueToBoolean(cx, argv[argn++], &path);
rc=JS_SuspendRequest(cx);
if(case_sensitive) if(case_sensitive)
*rval = BOOLEAN_TO_JSVAL(wildmatch(fname, spec, path)); *rval = BOOLEAN_TO_JSVAL(wildmatch(fname, spec, path));
else else
*rval = BOOLEAN_TO_JSVAL(wildmatchi(fname, spec, path)); *rval = BOOLEAN_TO_JSVAL(wildmatchi(fname, spec, path));
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2873,6 +3003,8 @@ js_freediskspace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r ...@@ -2873,6 +3003,8 @@ js_freediskspace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
{ {
int32 unit=0; int32 unit=0;
char* p; char* p;
ulong fd;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2883,7 +3015,10 @@ js_freediskspace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r ...@@ -2883,7 +3015,10 @@ js_freediskspace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
if(argc>1) if(argc>1)
JS_ValueToInt32(cx,argv[1],&unit); JS_ValueToInt32(cx,argv[1],&unit);
JS_NewNumberValue(cx,getfreediskspace(p,unit),rval); rc=JS_SuspendRequest(cx);
fd=getfreediskspace(p,unit);
JS_ResumeRequest(cx, rc);
JS_NewNumberValue(cx,fd,rval);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2893,6 +3028,8 @@ js_disksize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2893,6 +3028,8 @@ js_disksize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
int32 unit=0; int32 unit=0;
char* p; char* p;
ulong ds;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2903,7 +3040,10 @@ js_disksize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2903,7 +3040,10 @@ js_disksize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(argc>1) if(argc>1)
JS_ValueToInt32(cx,argv[1],&unit); JS_ValueToInt32(cx,argv[1],&unit);
JS_NewNumberValue(cx,getdisksize(p,unit),rval); rc=JS_SuspendRequest(cx);
ds=getdisksize(p,unit);
JS_ResumeRequest(cx, rc);
JS_NewNumberValue(cx,ds,rval);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2927,6 +3067,7 @@ js_socket_select(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r ...@@ -2927,6 +3067,7 @@ js_socket_select(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
SOCKET* index; SOCKET* index;
jsval val; jsval val;
int len=0; int len=0;
jsrefcount rc;
*rval = JSVAL_NULL; *rval = JSVAL_NULL;
...@@ -2970,18 +3111,24 @@ js_socket_select(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r ...@@ -2970,18 +3111,24 @@ js_socket_select(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
} }
} }
rc=JS_SuspendRequest(cx);
if(select(maxsock+1,rd_set,wr_set,NULL,&tv) >= 0) { if(select(maxsock+1,rd_set,wr_set,NULL,&tv) >= 0) {
for(i=0;i<limit;i++) { for(i=0;i<limit;i++) {
if(index[i]!=INVALID_SOCKET && FD_ISSET(index[i],&socket_set)) { if(index[i]!=INVALID_SOCKET && FD_ISSET(index[i],&socket_set)) {
val=INT_TO_JSVAL(i); val=INT_TO_JSVAL(i);
if(!JS_SetElement(cx, rarray, len++, &val)) JS_ResumeRequest(cx, rc);
if(!JS_SetElement(cx, rarray, len++, &val)) {
rc=JS_SuspendRequest(cx);
break; break;
}
rc=JS_SuspendRequest(cx);
} }
} }
*rval = OBJECT_TO_JSVAL(rarray); *rval = OBJECT_TO_JSVAL(rarray);
} }
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -2990,6 +3137,7 @@ static JSBool ...@@ -2990,6 +3137,7 @@ static JSBool
js_mkdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_mkdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -2997,7 +3145,9 @@ js_mkdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -2997,7 +3145,9 @@ js_mkdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(MKDIR(p)==0); *rval = BOOLEAN_TO_JSVAL(MKDIR(p)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -3005,6 +3155,7 @@ static JSBool ...@@ -3005,6 +3155,7 @@ static JSBool
js_mkpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_mkpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -3012,7 +3163,9 @@ js_mkpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -3012,7 +3163,9 @@ js_mkpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(mkpath(p)==0); *rval = BOOLEAN_TO_JSVAL(mkpath(p)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -3020,6 +3173,7 @@ static JSBool ...@@ -3020,6 +3173,7 @@ static JSBool
js_rmdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) js_rmdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{ {
char* p; char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -3027,7 +3181,9 @@ js_rmdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -3027,7 +3181,9 @@ js_rmdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(rmdir(p)==0); *rval = BOOLEAN_TO_JSVAL(rmdir(p)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE); return(JS_TRUE);
} }
...@@ -3041,6 +3197,7 @@ js_strftime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -3041,6 +3197,7 @@ js_strftime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
time_t t; time_t t;
struct tm tm; struct tm tm;
JSString* js_str; JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE); return(JS_TRUE);
...@@ -3051,11 +3208,13 @@ js_strftime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -3051,11 +3208,13 @@ js_strftime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(argc>1) if(argc>1)
JS_ValueToInt32(cx,argv[1],&i); JS_ValueToInt32(cx,argv[1],&i);
rc=JS_SuspendRequest(cx);
strcpy(str,"-Invalid time-"); strcpy(str,"-Invalid time-");
t=i; t=i;
if(localtime_r(&t,&tm)==NULL) if(localtime_r(&t,&tm)==NULL)
memset(&tm,0,sizeof(tm)); memset(&tm,0,sizeof(tm));
strftime(str,sizeof(str),fmt,&tm); strftime(str,sizeof(str),fmt,&tm);
JS_ResumeRequest(cx, rc);
if((js_str=JS_NewStringCopyZ(cx, str))==NULL) if((js_str=JS_NewStringCopyZ(cx, str))==NULL)
return(JS_FALSE); return(JS_FALSE);
...@@ -3070,6 +3229,7 @@ js_resolve_ip(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ...@@ -3070,6 +3229,7 @@ js_resolve_ip(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
struct in_addr addr; struct in_addr addr;
JSString* str; JSString* str;
char* p; char* p;
jsrefcount rc;
*rval = JSVAL_NULL; *rval = JSVAL_NULL;
...@@ -3079,8 +3239,10 @@ js_resolve_ip(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ...@@ -3079,8 +3239,10 @@ js_resolve_ip(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
if((addr.s_addr=resolve_ip(p))==INADDR_NONE) if((addr.s_addr=resolve_ip(p))==INADDR_NONE)
return(JS_TRUE); return(JS_TRUE);
JS_ResumeRequest(cx, rc);
if((str=JS_NewStringCopyZ(cx, inet_ntoa(addr)))==NULL) if((str=JS_NewStringCopyZ(cx, inet_ntoa(addr)))==NULL)
return(JS_FALSE); return(JS_FALSE);
...@@ -3096,6 +3258,7 @@ js_resolve_host(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv ...@@ -3096,6 +3258,7 @@ js_resolve_host(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv
struct in_addr addr; struct in_addr addr;
HOSTENT* h; HOSTENT* h;
char* p; char* p;
jsrefcount rc;
*rval = JSVAL_NULL; *rval = JSVAL_NULL;
...@@ -3105,8 +3268,10 @@ js_resolve_host(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv ...@@ -3105,8 +3268,10 @@ js_resolve_host(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv
if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL) if((p=js_ValueToStringBytes(cx, argv[0], NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
addr.s_addr=inet_addr(p); addr.s_addr=inet_addr(p);
h=gethostbyaddr((char *)&addr,sizeof(addr),AF_INET); h=gethostbyaddr((char *)&addr,sizeof(addr),AF_INET);
JS_ResumeRequest(cx, rc);
if(h!=NULL && h->h_name!=NULL) if(h!=NULL && h->h_name!=NULL)
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,h->h_name)); *rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,h->h_name));
...@@ -3125,17 +3290,24 @@ js_list_named_queues(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva ...@@ -3125,17 +3290,24 @@ js_list_named_queues(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsva
jsval val; jsval val;
list_node_t* node; list_node_t* node;
msg_queue_t* q; msg_queue_t* q;
jsrefcount rc;
if((array = JS_NewArrayObject(cx, 0, NULL))==NULL) if((array = JS_NewArrayObject(cx, 0, NULL))==NULL)
return(JS_FALSE); return(JS_FALSE);
rc=JS_SuspendRequest(cx);
for(node=listFirstNode(&named_queues);node!=NULL;node=listNextNode(node)) { for(node=listFirstNode(&named_queues);node!=NULL;node=listNextNode(node)) {
if((q=listNodeData(node))==NULL) if((q=listNodeData(node))==NULL)
continue; continue;
JS_ResumeRequest(cx, rc);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx,q->name)); val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx,q->name));
if(!JS_SetElement(cx, array, len++, &val)) if(!JS_SetElement(cx, array, len++, &val)) {
rc=JS_SuspendRequest(cx);
break; break;
}
rc=JS_SuspendRequest(cx);
} }
JS_ResumeRequest(cx, rc);
*rval = OBJECT_TO_JSVAL(array); *rval = OBJECT_TO_JSVAL(array);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment