diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c index 161864c53a6b8709db6c5aca0b5323d174e7ff4f..4c2964408a6815aa70c85d403a409dbfe75f380f 100644 --- a/src/sbbs3/js_global.c +++ b/src/sbbs3/js_global.c @@ -364,6 +364,41 @@ js_flength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) return(JS_TRUE); } + +static JSBool +js_play_sound(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + char* p; + JSString* js_str; + + if(!argc) { /* Stop playing sound */ +#ifdef _WIN32 + PlaySound(NULL,NULL,0); +#endif + *rval = BOOLEAN_TO_JSVAL(JS_TRUE); + return(JS_TRUE); + } + + if((js_str=JS_ValueToString(cx, argv[0]))==NULL) { + *rval = BOOLEAN_TO_JSVAL(JS_FALSE); + return(JS_TRUE); + } + + if((p=JS_GetStringBytes(js_str))==NULL) { + *rval = BOOLEAN_TO_JSVAL(JS_FALSE); + return(JS_TRUE); + } + +#ifdef _WIN32 + *rval = BOOLEAN_TO_JSVAL(PlaySound(p, NULL, SND_ASYNC|SND_FILENAME)); +#else + *rval = BOOLEAN_TO_JSVAL(JS_FALSE); +#endif + + return(JS_TRUE); +} + + static JSClass js_global_class ={ "Global", JSCLASS_HAS_PRIVATE, /* needed for scfg_t ptr */ @@ -390,6 +425,7 @@ static JSFunctionSpec js_global_functions[] = { {"file_attrib", js_fattr, 1}, /* get file mode/attributes */ {"file_date", js_fdate, 1}, /* get file last modified date/time */ {"file_size", js_flength, 1}, /* get file length (in bytes) */ + {"play_sound", js_play_sound, 0}, /* play sound file */ {0} };