Synchronet now requires the libarchive development package (e.g. libarchive-dev on Debian-based Linux distros, libarchive.org for more info) to build successfully.

Commit c3fbdd02 authored by deuce's avatar deuce

Cyan: the Synchronet source code is currently a melted pile of steaming slag

      on the floor of Deuce's computer room
Cyan: Rob's on his way
* Deuce throws his coffee on it.
parent 21233a7a
......@@ -537,7 +537,7 @@ char * sbbs_t::copystrvar(csi_t *csi, char *p, char *str)
#ifdef JAVASCRIPT
static JSBool
js_BranchCallback(JSContext *cx, JSScript *script)
js_BranchCallback(JSContext *cx, JSObject *script)
{
sbbs_t* sbbs;
......@@ -582,7 +582,7 @@ long sbbs_t::js_execfile(const char *cmd, const char* startup_dir, JSObject* sco
char cmdline[MAX_PATH+1];
char path[MAX_PATH+1];
JSObject* js_scope=scope;
JSScript* js_script=NULL;
JSObject* js_script=NULL;
jsval rval;
int32 result=0;
......
......@@ -376,8 +376,10 @@ int getdir(char* p, user_t* user, client_t* client)
js_server_props_t js_server_props;
static JSBool
js_write(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_write(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
uintN i;
JSString* str=NULL;
FILE* fp;
......@@ -396,15 +398,17 @@ js_write(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
}
if(str==NULL)
*rval = JSVAL_VOID;
JS_SET_RVAL(cx, arglist, JSVAL_VOID);
else
*rval = STRING_TO_JSVAL(str);
JS_SET_RVAL(cx, arglist, STRING_TO_JSVAL(str));
return(JS_TRUE);
}
static JSBool
js_writeln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_writeln(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
FILE* fp;
jsrefcount rc;
......@@ -637,7 +641,7 @@ BOOL js_generate_index(JSContext* js_cx, JSObject* parent,
JSObject* dir_obj=NULL;
JSObject* file_array=NULL;
JSObject* dir_array=NULL;
JSScript* js_script=NULL;
JSObject* js_script=NULL;
JSString* js_str;
long double start=xp_timer();
jsrefcount rc;
......
This diff is collapsed.
......@@ -63,13 +63,15 @@ enum {
};
#endif
static JSBool js_client_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
static JSBool js_client_set(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp)
{
jsval idval;
return(JS_FALSE);
}
static JSBool js_client_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
static JSBool js_client_get(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
{
jsval idval;
const char* p=NULL;
ulong val=0;
jsint tiny;
......@@ -79,7 +81,8 @@ static JSBool js_client_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
if((client=(client_t*)JS_GetPrivate(cx,obj))==NULL)
return(JS_FALSE);
tiny = JSVAL_TO_INT(id);
JS_IdToValue(cx, id, &idval);
tiny = JSVAL_TO_INT(idval);
switch(tiny) {
case CLIENT_PROP_ADDR:
......@@ -127,7 +130,7 @@ static jsSyncPropertySpec js_client_properties[] = {
{0}
};
static JSBool js_client_resolve(JSContext *cx, JSObject *obj, jsval id)
static JSBool js_client_resolve(JSContext *cx, JSObject *obj, jsid id)
{
char* name=NULL;
......
......@@ -98,8 +98,10 @@ static void js_finalize_com(JSContext *cx, JSObject *obj)
/* COM Object Methods */
static JSBool
js_close(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_close(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
private_t* p;
jsrefcount rc;
......@@ -126,8 +128,10 @@ js_close(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
}
static JSBool
js_open(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_open(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
private_t* p;
jsrefcount rc;
......@@ -144,7 +148,7 @@ js_open(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(p->com==COM_HANDLE_INVALID) {
p->last_error=ERROR_VALUE;
dbprintf(TRUE, p, "connect failed with error %d",ERROR_VALUE);
*rval = JSVAL_FALSE;
JS_SET_RVAL(cx, arglist, JSVAL_FALSE);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
......@@ -152,7 +156,7 @@ js_open(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
comSetBaudRate(p->com, p->baud_rate);
p->is_open = TRUE;
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
dbprintf(FALSE, p, "connected to port %s", p->dev);
JS_RESUMEREQUEST(cx, rc);
......@@ -160,8 +164,10 @@ js_open(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
}
static JSBool
js_send(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_send(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
char* cp;
int len;
JSString* str;
......@@ -173,7 +179,7 @@ js_send(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
return(JS_FALSE);
}
*rval = JSVAL_FALSE;
JS_SET_RVAL(cx, arglist, JSVAL_FALSE);
str = JS_ValueToString(cx, argv[0]);
cp = JS_GetStringBytes(str);
......@@ -182,7 +188,7 @@ js_send(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
rc=JS_SUSPENDREQUEST(cx);
if(comWriteBuf(p->com,cp,len)==len) {
dbprintf(FALSE, p, "sent %u bytes",len);
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
} else {
p->last_error=ERROR_VALUE;
dbprintf(TRUE, p, "send of %u bytes failed",len);
......@@ -193,8 +199,10 @@ js_send(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
}
static JSBool
js_sendfile(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_sendfile(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
long len;
int file;
char* fname;
......@@ -208,7 +216,7 @@ js_sendfile(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
return(JS_FALSE);
}
*rval = JSVAL_FALSE;
JS_SET_RVAL(cx, arglist, JSVAL_FALSE);
if((str = JS_ValueToString(cx, argv[0]))==NULL
|| (fname=JS_GetStringBytes(str))==NULL) {
......@@ -236,7 +244,7 @@ js_sendfile(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(comWriteBuf(p->com,buf,len)==len) {
dbprintf(FALSE, p, "sent %u bytes",len);
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
} else {
p->last_error=ERROR_VALUE;
dbprintf(TRUE, p, "send of %u bytes failed",len);
......@@ -248,8 +256,10 @@ js_sendfile(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
}
static JSBool
js_sendbin(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_sendbin(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
BYTE b;
WORD w;
DWORD l;
......@@ -259,7 +269,7 @@ js_sendbin(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
private_t* p;
jsrefcount rc;
*rval = JSVAL_FALSE;
JS_SET_RVAL(cx, arglist, JSVAL_FALSE);
if((p=(private_t*)JS_GetPrivate(cx,obj))==NULL) {
JS_ReportError(cx,getprivate_failure,WHERE);
......@@ -296,7 +306,7 @@ js_sendbin(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
}
if(wr==size) {
dbprintf(FALSE, p, "sent %u bytes (binary)",size);
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
} else {
p->last_error=ERROR_VALUE;
dbprintf(TRUE, p, "send of %u bytes (binary) failed",size);
......@@ -308,8 +318,10 @@ js_sendbin(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
static JSBool
js_recv(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_recv(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
char* buf;
int32 len=512;
JSString* str;
......@@ -339,7 +351,7 @@ js_recv(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
JS_RESUMEREQUEST(cx, rc);
if(len<0) {
p->last_error=ERROR_VALUE;
*rval = JSVAL_NULL;
JS_SET_RVAL(cx, arglist, JSVAL_NULL);
return(JS_TRUE);
}
buf[len]=0;
......@@ -348,7 +360,7 @@ js_recv(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(str);
JS_SET_RVAL(cx, arglist, STRING_TO_JSVAL(str));
rc=JS_SUSPENDREQUEST(cx);
dbprintf(FALSE, p, "received %u bytes",len);
JS_RESUMEREQUEST(cx, rc);
......@@ -357,8 +369,10 @@ js_recv(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
}
static JSBool
js_recvline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_recvline(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
char* buf;
int i;
int32 len=512;
......@@ -397,7 +411,7 @@ js_recvline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(str);
JS_SET_RVAL(cx, arglist, STRING_TO_JSVAL(str));
rc=JS_SUSPENDREQUEST(cx);
dbprintf(FALSE, p, "received %u bytes (recvline) lasterror=%d"
,i,ERROR_VALUE);
......@@ -407,8 +421,10 @@ js_recvline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
}
static JSBool
js_recvbin(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_recvbin(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
BYTE b;
WORD w;
DWORD l;
......@@ -418,7 +434,7 @@ js_recvbin(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
jsrefcount rc;
int32 timeout=30; /* seconds */
*rval = INT_TO_JSVAL(-1);
JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(-1));
if((p=(private_t*)JS_GetPrivate(cx,obj))==NULL) {
JS_ReportError(cx,getprivate_failure,WHERE);
......@@ -435,20 +451,20 @@ js_recvbin(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
switch(size) {
case sizeof(BYTE):
if((rd=comReadBuf(p->com,(BYTE*)&b,size,NULL,timeout))==size)
*rval = INT_TO_JSVAL(b);
JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(b));
break;
case sizeof(WORD):
if((rd=comReadBuf(p->com,(BYTE*)&w,size,NULL,timeout))==size) {
if(p->network_byte_order)
w=ntohs(w);
*rval = INT_TO_JSVAL(w);
JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(w));
}
break;
case sizeof(DWORD):
if((rd=comReadBuf(p->com,(BYTE*)&l,size,NULL,timeout))==size) {
if(p->network_byte_order)
l=ntohl(l);
*rval=UINT_TO_JSVAL(l);
JS_SET_RVAL(cx, arglist,UINT_TO_JSVAL(l));
}
break;
}
......@@ -495,8 +511,9 @@ static char* com_prop_desc[] = {
};
#endif
static JSBool js_com_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
static JSBool js_com_set(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp)
{
jsval idval;
jsint tiny;
private_t* p;
jsrefcount rc;
......@@ -507,7 +524,8 @@ static JSBool js_com_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return(JS_TRUE);
}
tiny = JSVAL_TO_INT(id);
JS_IdToValue(cx, id, &idval);
tiny = JSVAL_TO_INT(idval);
rc=JS_SUSPENDREQUEST(cx);
dbprintf(FALSE, p, "setting property %d",tiny);
......@@ -552,8 +570,9 @@ static JSBool js_com_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return(JS_TRUE);
}
static JSBool js_com_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
static JSBool js_com_get(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
{
jsval idval;
jsint tiny;
private_t* p;
JSString* js_str;
......@@ -566,7 +585,8 @@ static JSBool js_com_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return(JS_TRUE);
}
tiny = JSVAL_TO_INT(id);
JS_IdToValue(cx, id, &idval);
tiny = JSVAL_TO_INT(idval);
rc=JS_SUSPENDREQUEST(cx);
#if 0 /* just too much */
......@@ -693,7 +713,7 @@ static jsSyncMethodSpec js_com_functions[] = {
{0}
};
static JSBool js_com_resolve(JSContext *cx, JSObject *obj, jsval id)
static JSBool js_com_resolve(JSContext *cx, JSObject *obj, jsid id)
{
char* name=NULL;
......@@ -724,8 +744,10 @@ static JSClass js_com_class = {
/* COM Constructor (creates COM descriptor) */
static JSBool
js_com_constructor(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_com_constructor(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
private_t* p;
char* protocol=NULL;
char* fname;
......
......@@ -71,12 +71,14 @@ enum {
,PROP_LOWVIDEO
};
static JSBool js_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
static JSBool js_get(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
{
jsval idval;
jsint tiny;
jsrefcount rc;
tiny = JSVAL_TO_INT(id);
JS_IdToValue(cx, id, &idval);
tiny = JSVAL_TO_INT(idval);
rc=JS_SUSPENDREQUEST(cx);
switch(tiny) {
......@@ -158,14 +160,16 @@ static JSBool js_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
return(JS_TRUE);
}
static JSBool js_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
static JSBool js_set(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp)
{
jsval idval;
jsint tiny;
int32 i=0;
JSBool b;
jsrefcount rc;
tiny = JSVAL_TO_INT(id);
JS_IdToValue(cx, id, &idval);
tiny = JSVAL_TO_INT(idval);
switch(tiny) {
case PROP_WSCROLL:
......@@ -287,13 +291,15 @@ static jsSyncPropertySpec js_properties[] = {
/* Methods */
static JSBool
js_conio_init(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_init(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
int ciolib_mode=CIOLIB_MODE_AUTO;
char* mode;
jsrefcount rc;
*rval = JSVAL_FALSE;
JS_SET_RVAL(cx, arglist, JSVAL_FALSE);
if(argc>0 && (mode=js_ValueToStringBytes(cx, argv[0], NULL))!=NULL) {
if(!stricmp(mode,"STDIO"))
......@@ -314,171 +320,199 @@ js_conio_init(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
return(JS_TRUE);
}
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_conio_suspend(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_suspend(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
jsrefcount rc;
rc=JS_SUSPENDREQUEST(cx);
suspendciolib();
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_conio_clreol(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_clreol(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
jsrefcount rc;
rc=JS_SUSPENDREQUEST(cx);
clreol();
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_conio_clrscr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_clrscr(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
jsrefcount rc;
rc=JS_SUSPENDREQUEST(cx);
clrscr();
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_conio_wscroll(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_wscroll(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
jsrefcount rc;
rc=JS_SUSPENDREQUEST(cx);
wscroll();
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_conio_delline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_delline(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
jsrefcount rc;
rc=JS_SUSPENDREQUEST(cx);
delline();
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_conio_insline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_insline(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
jsrefcount rc;
rc=JS_SUSPENDREQUEST(cx);
insline();
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_conio_normvideo(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_normvideo(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
jsrefcount rc;
rc=JS_SUSPENDREQUEST(cx);
normvideo();
*rval = JSVAL_TRUE;
JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_conio_getch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_getch(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
jsrefcount rc;
rc=JS_SUSPENDREQUEST(cx);
*rval = INT_TO_JSVAL(getch());
JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(getch()));
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_conio_getche(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_getche(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
jsrefcount rc;
rc=JS_SUSPENDREQUEST(cx);
*rval = INT_TO_JSVAL(getche());
JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(getche()));
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_conio_beep(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_beep(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
jsrefcount rc;
rc=JS_SUSPENDREQUEST(cx);
*rval = INT_TO_JSVAL(beep());
JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(beep()));
JS_RESUMEREQUEST(cx, rc);
return(JS_TRUE);
}
static JSBool
js_conio_getfont(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_conio_getfont(JSContext *cx, uintN argc, jsval *arglist)
{
JSObject *obj=JS_THIS_OBJECT(cx, arglist);
jsval *argv=JS_ARGV(cx, arglist);
jsrefcount rc;
rc=JS_SUSPENDREQUEST(cx);