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)
JSBool success;
JSBool background=JS_FALSE;
background_data_t* bg;
jsrefcount rc;
*rval=JSVAL_VOID;
......@@ -330,6 +331,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY);
}
rc=JS_SuspendRequest(cx);
errno = 0;
if(isfullpath(filename))
strcpy(path,filename);
......@@ -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))
sprintf(path,"%s%s",p->cfg->exec_dir,filename);
}
JS_ResumeRequest(cx, rc);
JS_ClearPendingException(exec_cx);
......@@ -384,14 +387,17 @@ static JSBool
js_yield(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
BOOL forced=TRUE;
jsrefcount rc;
if(argc)
JS_ValueToBoolean(cx, argv[0], &forced);
rc=JS_SuspendRequest(cx);
if(forced) {
YIELD();
} else {
MAYBE_YIELD();
}
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -401,10 +407,13 @@ js_mswait(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
int32 val=1;
clock_t start=msclock();
jsrefcount rc;
if(argc)
JS_ValueToInt32(cx,argv[0],&val);
rc=JS_SuspendRequest(cx);
mswait(val);
JS_ResumeRequest(cx, rc);
JS_NewNumberValue(cx,msclock()-start,rval);
......@@ -436,13 +445,16 @@ js_beep(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
int32 freq=500;
int32 dur=500;
jsrefcount rc;
if(argc)
JS_ValueToInt32(cx,argv[0],&freq);
if(argc>1)
JS_ValueToInt32(cx,argv[1],&dur);
rc=JS_SuspendRequest(cx);
sbbs_beep(freq,dur);
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -461,6 +473,7 @@ js_crc16(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
size_t len;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = INT_TO_JSVAL(crc16(p,len));
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -477,6 +492,10 @@ js_crc32(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
size_t len;
uint32_t cs;
jsrefcount rc;
rc=JS_SuspendRequest(cx);
JS_ResumeRequest(cx, rc);
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
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);
}
......@@ -494,6 +516,7 @@ js_chksum(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
ulong sum=0;
char* p;
size_t len;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
while(len--) sum+=*(p++);
JS_ResumeRequest(cx, rc);
JS_NewNumberValue(cx,sum,rval);
return(JS_TRUE);
......@@ -839,6 +864,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
int old_prefix_bytes=0;
int outbuf_size=0;
JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -870,6 +896,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
}
prefix[0]=0;
}
rc=JS_SuspendRequest(cx);
outbuf[0]=0;
/* Get prefix from the first line (ouch) */
......@@ -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);
free(outbuf);
free(linebuf);
......@@ -1093,6 +1121,7 @@ js_quote_msg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* linebuf;
char* prefix=" > ";
JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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 */
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
outbuf[0]=0;
clen=0;
for(i=l=0;inbuf[i];i++) {
......@@ -1139,6 +1169,7 @@ js_quote_msg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
}
if(l) /* remainder */
strncat(outbuf,linebuf,l);
JS_ResumeRequest(cx, rc);
js_str = JS_NewStringCopyZ(cx, outbuf);
free(outbuf);
......@@ -1409,6 +1440,7 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
ulong clear_screen=0;
JSObject* stateobj=NULL;
jsval val;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
for(i=j=0;inbuf[i];i++) {
switch(inbuf[i]) {
case TAB:
......@@ -1549,6 +1582,7 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
if((outbuf=(uchar*)malloc(obsize))==NULL)
{
free(tmpbuf);
rc=JS_SuspendRequest(cx);
return(JS_FALSE);
}
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
{
free(tmpbuf);
free(outbuf);
rc=JS_SuspendRequest(cx);
return(JS_FALSE);
}
outbuf=param;
......@@ -2014,12 +2049,15 @@ js_html_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
}
}
strcpy(outbuf+j,"</span>");
rc=JS_SuspendRequest(cx);
js_str = JS_NewStringCopyZ(cx, outbuf);
free(outbuf);
}
else
else {
rc=JS_SuspendRequest(cx);
js_str = JS_NewStringCopyZ(cx, tmpbuf);
}
free(tmpbuf); /* assertion here, Feb-20-2006 */
if(js_str==NULL)
......@@ -2064,6 +2102,7 @@ js_html_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
char token[16];
size_t t;
JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
for(i=j=0;inbuf[i];i++) {
if(inbuf[i]!='&') {
outbuf[j++]=inbuf[i];
......@@ -2143,6 +2183,7 @@ js_html_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
}
outbuf[j]=0;
JS_ResumeRequest(cx, rc);
js_str = JS_NewStringCopyZ(cx, outbuf);
free(outbuf);
......@@ -2162,6 +2203,7 @@ js_b64_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
uchar* inbuf;
uchar* outbuf;
JSString* js_str;
jsrefcount rc;
*rval = JSVAL_NULL;
......@@ -2176,7 +2218,9 @@ js_b64_encode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
if((outbuf=(char*)malloc(len))==NULL)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
res=b64_encode(outbuf,len,inbuf,inbuf_len);
JS_ResumeRequest(cx, rc);
if(res<1) {
free(outbuf);
......@@ -2200,6 +2244,7 @@ js_b64_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
uchar* inbuf;
uchar* outbuf;
JSString* js_str;
jsrefcount rc;
*rval = JSVAL_NULL;
......@@ -2214,7 +2259,9 @@ js_b64_decode(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
if((outbuf=(char*)malloc(len))==NULL)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
res=b64_decode(outbuf,len,inbuf,strlen(inbuf));
JS_ResumeRequest(cx, rc);
if(res<1) {
free(outbuf);
......@@ -2239,6 +2286,7 @@ js_md5_calc(JSContext* cx, JSObject* obj, uintN argc, jsval* argv, jsval* rval)
char* inbuf;
char outbuf[64];
JSString* js_str;
jsrefcount rc;
*rval = JSVAL_NULL;
......@@ -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]))
hex=JSVAL_TO_BOOLEAN(argv[1]);
rc=JS_SuspendRequest(cx);
MD5_calc(digest,inbuf,inbuf_len);
if(hex)
MD5_hex(outbuf,digest);
else
b64_encode(outbuf,sizeof(outbuf),digest,sizeof(digest));
JS_ResumeRequest(cx, rc);
js_str = JS_NewStringCopyZ(cx, outbuf);
if(js_str==NULL)
......@@ -2373,6 +2423,7 @@ js_fullpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char path[MAX_PATH+1];
char* str;
JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -2381,7 +2432,9 @@ js_fullpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
return(JS_FALSE);
SAFECOPY(path,str);
rc=JS_SuspendRequest(cx);
_fullpath(path, str, sizeof(path));
JS_ResumeRequest(cx, rc);
if((js_str = JS_NewStringCopyZ(cx, path))==NULL)
return(JS_FALSE);
......@@ -2441,6 +2494,8 @@ js_getfcase(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* str;
char path[MAX_PATH+1];
JSString* js_str;
jsrefcount rc;
rc=JS_SuspendRequest(cx);
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -2449,13 +2504,17 @@ js_getfcase(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
return(JS_FALSE);
SAFECOPY(path,str);
rc=JS_SuspendRequest(cx);
if(fexistcase(path)) {
JS_ResumeRequest(cx, rc);
js_str = JS_NewStringCopyZ(cx, path);
if(js_str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
}
else
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2465,6 +2524,7 @@ js_dosfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* str;
char path[MAX_PATH+1];
JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
if(GetShortPathName(str,path,sizeof(path))) {
JS_ResumeRequest(cx, rc);
js_str = JS_NewStringCopyZ(cx, path);
if(js_str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
}
else
JS_ResumeRequest(cx, rc);
#else /* No non-Windows equivalent */
......@@ -2497,6 +2561,10 @@ js_cfgfname(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* path;
char* fname;
char result[MAX_PATH+1];
char* cstr;
jsrefcount rc;
rc=JS_SuspendRequest(cx);
JS_ResumeRequest(cx, rc);
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
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);
}
......@@ -2516,6 +2587,7 @@ static JSBool
js_fexist(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(fexist(p));
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2531,6 +2605,7 @@ static JSBool
js_removecase(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(removecase(p)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2546,6 +2623,7 @@ static JSBool
js_remove(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(remove(p)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2562,6 +2642,7 @@ js_rename(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* oldname;
char* newname;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_TRUE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(rename(oldname,newname)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2581,6 +2664,7 @@ js_fcopy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* src;
char* dest;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_TRUE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(fcopy(src,dest));
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2600,6 +2686,7 @@ js_fcompare(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* fn1;
char* fn2;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_TRUE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(fcompare(fn1,fn2));
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2620,6 +2709,7 @@ js_backup(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* fname;
int32 level=5;
BOOL ren=FALSE;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -2633,7 +2723,9 @@ js_backup(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(argc>2)
JS_ValueToBoolean(cx,argv[2],&ren);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(backup(fname,level,ren));
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2641,6 +2733,7 @@ static JSBool
js_isdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(isdir(p));
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2656,6 +2751,8 @@ static JSBool
js_fattr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
jsrefcount rc;
int attr;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
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);
}
......@@ -2671,6 +2771,8 @@ static JSBool
js_fdate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
time_t fd;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
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);
}
......@@ -2689,6 +2794,7 @@ js_utime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
int32 actime;
int32 modtime;
struct utimbuf ut;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -2709,7 +2815,9 @@ js_utime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
ut.modtime=modtime;
}
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(utime(fname,&ut)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2719,6 +2827,8 @@ static JSBool
js_flength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
long fl;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
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);
}
......@@ -2735,6 +2848,7 @@ static JSBool
js_ftouch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* fname;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(ftouch(fname));
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2753,6 +2869,7 @@ js_fmutex(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* text=NULL;
int32 max_age=0;
uintN argn=0;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -2764,7 +2881,9 @@ js_fmutex(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(argc > argn && JSVAL_IS_NUMBER(argv[argn]))
JS_ValueToInt32(cx, argv[argn++], &max_age);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(fmutex(fname,text,max_age));
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2772,6 +2891,7 @@ static JSBool
js_sound(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
jsrefcount rc;
if(!argc) { /* Stop playing sound */
#ifdef _WIN32
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
#ifdef _WIN32
*rval = BOOLEAN_TO_JSVAL(PlaySound(p, NULL, SND_ASYNC|SND_FILENAME));
#else
*rval = BOOLEAN_TO_JSVAL(JS_FALSE);
#endif
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2807,6 +2929,7 @@ js_directory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
JSString* js_str;
jsint len=0;
jsval val;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -2822,7 +2945,9 @@ js_directory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if((array = JS_NewArrayObject(cx, 0, NULL))==NULL)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
glob(p,flags,NULL,&g);
JS_ResumeRequest(cx, rc);
for(i=0;i<(int)g.gl_pathc;i++) {
if((js_str=JS_NewStringCopyZ(cx,g.gl_pathv[i]))==NULL)
break;
......@@ -2830,7 +2955,9 @@ js_directory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(!JS_SetElement(cx, array, len++, &val))
break;
}
rc=JS_SuspendRequest(cx);
globfree(&g);
JS_ResumeRequest(cx, rc);
*rval = OBJECT_TO_JSVAL(array);
......@@ -2845,6 +2972,7 @@ js_wildmatch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* fname;
char* spec="*";
uintN argn=0;
jsrefcount rc;
if(JSVAL_IS_BOOLEAN(argv[argn]))
JS_ValueToBoolean(cx, argv[argn++], &case_sensitive);
......@@ -2859,10 +2987,12 @@ js_wildmatch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(argn<argc && argv[argn]!=JSVAL_VOID)
JS_ValueToBoolean(cx, argv[argn++], &path);
rc=JS_SuspendRequest(cx);
if(case_sensitive)
*rval = BOOLEAN_TO_JSVAL(wildmatch(fname, spec, path));
else
*rval = BOOLEAN_TO_JSVAL(wildmatchi(fname, spec, path));
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2873,6 +3003,8 @@ js_freediskspace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
{
int32 unit=0;
char* p;
ulong fd;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -2883,7 +3015,10 @@ js_freediskspace(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
if(argc>1)
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);
}
......@@ -2893,6 +3028,8 @@ js_disksize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
int32 unit=0;
char* p;
ulong ds;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -2903,7 +3040,10 @@ js_disksize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(argc>1)
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);
}
......@@ -2927,6 +3067,7 @@ js_socket_select(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
SOCKET* index;
jsval val;
int len=0;
jsrefcount rc;
*rval = JSVAL_NULL;
......@@ -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) {
for(i=0;i<limit;i++) {
if(index[i]!=INVALID_SOCKET && FD_ISSET(index[i],&socket_set)) {
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;
}
rc=JS_SuspendRequest(cx);
}
}
*rval = OBJECT_TO_JSVAL(rarray);
}
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -2990,6 +3137,7 @@ static JSBool
js_mkdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(MKDIR(p)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -3005,6 +3155,7 @@ static JSBool
js_mkpath(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(mkpath(p)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -3020,6 +3173,7 @@ static JSBool
js_rmdir(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
char* p;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
*rval = BOOLEAN_TO_JSVAL(rmdir(p)==0);
JS_ResumeRequest(cx, rc);
return(JS_TRUE);
}
......@@ -3041,6 +3197,7 @@ js_strftime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
time_t t;
struct tm tm;
JSString* js_str;
jsrefcount rc;
if(JSVAL_IS_VOID(argv[0]))
return(JS_TRUE);
......@@ -3051,11 +3208,13 @@ js_strftime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(argc>1)
JS_ValueToInt32(cx,argv[1],&i);
rc=JS_SuspendRequest(cx);
strcpy(str,"-Invalid time-");
t=i;
if(localtime_r(&t,&tm)==NULL)
memset(&tm,0,sizeof(tm));
strftime(str,sizeof(str),fmt,&tm);
JS_ResumeRequest(cx, rc);
if((js_str=JS_NewStringCopyZ(cx, str))==NULL)
return(JS_FALSE);
......@@ -3070,6 +3229,7 @@ js_resolve_ip(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
struct in_addr addr;
JSString* str;
char* p;
jsrefcount rc;
*rval = JSVAL_NULL;
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
if((addr.s_addr=resolve_ip(p))==INADDR_NONE)
return(JS_TRUE);
JS_ResumeRequest(cx, rc);
if((str=JS_NewStringCopyZ(cx, inet_ntoa(addr)))==NULL)
return(JS_FALSE);
......@@ -3096,6 +3258,7 @@ js_resolve_host(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rv
struct in_addr addr;
HOSTENT* h;
char* p;
jsrefcount rc;
*rval = JSVAL_NULL;
......@@ -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)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
addr.s_addr=inet_addr(p);
h=gethostbyaddr((char *)&addr,sizeof(addr),AF_INET);
JS_ResumeRequest(cx, rc);
if(h!=NULL && h->h_name!=NULL)
*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
jsval val;
list_node_t* node;
msg_queue_t* q;
jsrefcount rc;
if((array = JS_NewArrayObject(cx, 0, NULL))==NULL)
return(JS_FALSE);
rc=JS_SuspendRequest(cx);
for(node=listFirstNode(&named_queues);node!=NULL;node=listNextNode(node)) {
if((q=listNodeData(node))==NULL)
continue;
JS_ResumeRequest(cx, rc);
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;
}
rc=JS_SuspendRequest(cx);
}
JS_ResumeRequest(cx, rc);
*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