From 485440f1ea548f7362b26dbcf82a6e702ccc5f98 Mon Sep 17 00:00:00 2001 From: Rob Swindell <rob@synchro.net> Date: Wed, 26 May 2021 23:08:54 -0700 Subject: [PATCH] New bbs.view_file(filename) method. To list/view file/archive contents. --- src/sbbs3/js_bbs.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/sbbs3/js_bbs.cpp b/src/sbbs3/js_bbs.cpp index 5b9461af4d..898413afa5 100644 --- a/src/sbbs3/js_bbs.cpp +++ b/src/sbbs3/js_bbs.cpp @@ -2145,6 +2145,34 @@ js_batchaddlist(JSContext *cx, uintN argc, jsval *arglist) return(JS_TRUE); } +static JSBool +js_viewfile(JSContext *cx, uintN argc, jsval *arglist) +{ + jsval *argv=JS_ARGV(cx, arglist); + sbbs_t* sbbs; + jsrefcount rc; + char* cstr; + + if((sbbs = js_GetPrivate(cx, JS_THIS_OBJECT(cx, arglist))) == NULL) + return JS_FALSE; + + JS_SET_RVAL(cx, arglist, JSVAL_VOID); + + if(!js_argc(cx, argc, 1)) + return JS_FALSE; + + JSVALUE_TO_MSTRING(cx, argv[0], cstr, NULL); + if(cstr == NULL) + return JS_FALSE; + + rc=JS_SUSPENDREQUEST(cx); + JS_SET_RVAL(cx, arglist, BOOLEAN_TO_JSVAL(sbbs->viewfile(cstr))); + free(cstr); + JS_RESUMEREQUEST(cx, rc); + + return JS_TRUE; +} + static JSBool js_sendfile(JSContext *cx, uintN argc, jsval *arglist) { @@ -4319,6 +4347,10 @@ static jsSyncMethodSpec js_bbs_functions[] = { ,JSDOCSTR("add file list to batch download queue") ,310 }, + {"view_file", js_viewfile, 1, JSTYPE_BOOLEAN, JSDOCSTR("filename") + ,JSDOCSTR("list contents of specified filename (complete path)") + ,319 + }, {"send_file", js_sendfile, 1, JSTYPE_BOOLEAN, JSDOCSTR("filename [,protocol] [,description] [,autohang=true]") ,JSDOCSTR("send specified filename (complete path) to user via user-prompted " "(or optionally specified) protocol.<br>" -- GitLab