• src/sbbs3/js_internal.c

    From rswindell@VERT to CVS commit on Thu Dec 27 14:38:00 2018
    src/sbbs3 js_internal.c 1.87 1.88
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/home/rswindell/sbbs/src/sbbs3

    Modified Files:
    js_internal.c
    Log Message:
    Fixed typo in JSDOC description of js.load_path_list property.



    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From deuce@VERT to CVS commit on Sat Aug 24 21:54:33 2019
    src/sbbs3 js_internal.c 1.88 1.89
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv23072

    Modified Files:
    js_internal.c
    Log Message:
    Add js.exec().
    This allows executing a new script in a specified scope, much like load(). There are important differences however...
    1) js.exec() *must* specify a scope.
    2) js.exec()d scripts can call exit() and their handlers are ran then,
    rather than when the parent script exists as in js.load().
    3) The js object is installed in the scope with the real JS object as the
    prototype. This generally shouldn't be an issue, but if you're doing
    strange things, stranger things may happen.
    4) As part of #3, the exec_path/exec_dir/exec_file/startup_dir/scope
    properties of the JS object represent the new script, not the calling
    one.
    5) js.exec() only searches in the passed startup dir (if specified) and the
    current js.exec_dir path. It does not search the load paths or the mods
    directory at all.

    This API is also subject to change.




    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From rswindell@VERT to CVS commit on Sun Aug 25 09:06:28 2019
    src/sbbs3 js_internal.c 1.89 1.90
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/home/rswindell/sbbs/src/sbbs3

    Modified Files:
    js_internal.c
    Log Message:
    Fix typo in previous commit. Thanks, NotBert.



    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From deuce@VERT to CVS commit on Sun Aug 25 16:38:02 2019
    src/sbbs3 js_internal.c 1.90 1.91
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv11223

    Modified Files:
    js_internal.c
    Log Message:
    If an exception is thrown by the exec()d script, return it instead of the exit_code, and don't throw the exception in the caller.

    Remove support for js_scope == scope. It sorta defeats the whole purpose
    of js.exec().




    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From deuce@VERT to CVS commit on Mon Aug 26 13:10:25 2019
    src/sbbs3 js_internal.c 1.91 1.92
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv4528

    Modified Files:
    js_internal.c
    Log Message:
    js.exec() fixes.

    A child of the parent scopes js object can't do on_exit() stuff properly
    due to the missing private context. Create a new JS object in the child instead.

    We also need to copy in the js.load_path_list array contents since we don't want the child changing the parent by accident.




    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From deuce@VERT to CVS commit on Tue Aug 27 07:54:46 2019
    src/sbbs3 js_internal.c 1.92 1.93
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv14332

    Modified Files:
    js_internal.c
    Log Message:
    Respect the actual scoping rules, and add a note on properly creating a
    child scope.




    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From rswindell@VERT to CVS commit on Tue Aug 27 14:36:24 2019
    src/sbbs3 js_internal.c 1.93 1.94
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv9938

    Modified Files:
    js_internal.c
    Log Message:
    Resolve a couple MSVC warnings about signed/unsigned value comparisons.



    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From deuce@VERT to CVS commit on Thu Aug 29 05:35:01 2019
    src/sbbs3 js_internal.c 1.94 1.95
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv7915

    Modified Files:
    js_internal.c
    Log Message:
    Initialize path.




    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From rswindell@VERT to CVS commit on Sat Mar 28 14:11:58 2020
    src/sbbs3 js_internal.c 1.95 1.96
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv12239

    Modified Files:
    js_internal.c
    Log Message:
    Fix version number in js.exec() documentation: This method was added in v3.17c not v3.16.



    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From rswindell@VERT to CVS commit on Sat Mar 28 14:49:16 2020
    src/sbbs3 js_internal.c 1.96 1.97
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv18457

    Modified Files:
    js_internal.c
    Log Message:
    Fix double-free (of startup_dir) in js.exec() method.
    Improve "script missing" error reporting in js.exec().



    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From rswindell@VERT to CVS commit on Sat Mar 28 18:49:17 2020
    src/sbbs3 js_internal.c 1.97 1.98
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv26628

    Modified Files:
    js_internal.c
    Log Message:
    js.exec() enhancement: if any of the arguments to be passed to the executed script are arrays, pass each element of the array as a separate argument to the child script. This allows one script to generate a variable-length list of arguments to be passed to another.


    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Tracker1@VERT/TRN to rswindell on Sat Mar 28 21:47:21 2020
    Just curious... what would it take to get Synchronet up to the current spidermonkey engine?

    Related to your recent arguments change for `js.exec()`, having a spread operator would help for when writing such scripts.

    js.exec(...params)

    --
    Michael J. Ryan
    tracker1 +o Roughneck BBS

    ---
    ­ Synchronet ­ Roughneck BBS - coming back 2/2/20
  • From Digital Man@VERT to Tracker1 on Sun Mar 29 11:12:07 2020
    Re: Re: src/sbbs3/js_internal.c
    By: Tracker1 to rswindell on Sun Mar 29 2020 01:47 am

    Just curious... what would it take to get Synchronet up to the current spidermonkey engine?

    A lot of work.

    Related to your recent arguments change for `js.exec()`, having a spread operator would help for when writing such scripts.

    js.exec(...params)

    We don't have the spread operator currently, but reading about it brought me to function.apply() which looks like that can be used to solve the js.exec() problem I had. I don't need to array argument trick. Thanks for the tip!

    digital man

    This Is Spinal Tap quote #16:
    David St. Hubbins: I believe virtually everything I read...
    Norco, CA WX: 63.9øF, 54.0% humidity, 3 mph ENE wind, 0.00 inches rain/24hrs

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From rswindell@VERT to CVS commit on Sun Mar 29 12:40:57 2020
    src/sbbs3 js_internal.c 1.98 1.99
    Update of /cvsroot/sbbs/src/sbbs3
    In directory cvs:/tmp/cvs-serv29776

    Modified Files:
    js_internal.c
    Log Message:
    Revert the last commit (mostly): don't treat array arguments to js.exec() specially, just pass them on to the script as-is. Included a JSDOC note about the use of js.exec.apply() to pass a variable number of arguments (ala execv).

    Thanks Tracker1 for the pointer to 'spread' which led me to function.apply() and the JS-standard method of achieving the result I needed with this enhancement.

    I still think that a script that calls exit() is unlikely to expect non-string arguments in the first place, but if we don't need special case behavior, it's better not to add it and keep the behavior consistent with load() and require(). That was the decision of the executive board anyway. :-|



    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to sbbs/master on Fri Sep 25 13:58:22 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/41429b5f199747ddbb2ddb8b
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Fix 'js' opbject property descriptions in jsobjs.html.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Stephen Hurd@VERT to Git commit to sbbs/master on Tue Nov 17 18:44:34 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/be9d78c653db953092c336e6
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Eliminate crash in js.on_exit()

    Have js.on_exit() throw an exciption with a useful(?) error when the
    scope already has private data, and that data is not an on_exit list.

    This fixes #182.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Stephen Hurd@VERT to Git commit to sbbs/master on Wed Nov 18 05:56:08 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/34801e27613644ad3ddd6ca4
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Fix previous commit.

    Copy/paste without the update required a single character to have
    seven different values... which is unlikely to actually happen.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Stephen Hurd@VERT to Git commit to sbbs/master on Wed Nov 18 06:56:52 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/876766e10ef7b9f94c22ad18
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    May as well check the signature in the OnExit handler too.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sat Jan 16 10:20:34 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/da7c67c99b965eb7e77bf699
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Fix js.exec() returned nul" unless exit() was called explicitly

    Don't use the "exit_code" property value as the return value of js.exec() unless it's a number. As reported by mlong (thanks).

    Also, "exit_code" was being set to null (instead of void/undefined) in js_PrepareToExecute(). I think this was just an oversight or typo by Deuce from his commit of 5 years ago (f3256d81). Since we're comparing exit_code with JSVAL_VOID in other places to determine if it was actually set, this appears to be a long standing bug.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sat Jan 16 12:37:43 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/a4fd167b477a07103a95e6b9
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Deuce wants js.exec() to support non-number return values via exit_code

    <@Deuce> Just saying that if someone does the work of exit_code = {thing: function(x) { return secretsauce }); exit(); they should get away with it.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Fri Mar 5 21:32:38 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/7e2022cbb881808a346e9a97
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Add a js.options property to report the option flags used for the JS ctx

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Apr 4 14:51:56 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/78146ab20d2874f439e06614
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Fix event listener removal

    Was terribly broken.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Apr 4 15:05:54 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/a1797cc6f087047e19f29afe
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Add js.setImmediate(callback[, thisObj)

    I haven't added a clearImmediate() because there's currently no way
    of manipulating the run queue, and I can't come up with a reason
    someone would actually need it.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Apr 4 15:10:10 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/6a290b4bee1274a152d84747
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Clarify that dispatchEvent() adds to the end of the run queue

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Apr 4 16:24:55 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/3513bba392c0759260c9ecc7
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Keep running the event loop while the run queue is not empty

    Previously, timed or polled callbacks were required to keep the
    event loop running.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Apr 7 19:26:16 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/77933477bdedaf7d0c8bc80c
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Fix sizeof() target.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue Apr 13 12:54:50 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/13cc4027f25c56980ca6ad3d
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Delete one-shot events before running the callback.

    If a callback deletes the one-shot event that invoked it, the
    event pointer in the caller would be to free()d memory with
    hilarious results.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri May 21 16:43:02 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/b6fe381f0ee21b9eac16cb87
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Fix console and connect events when using select()

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Tue Feb 22 13:32:00 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/78ae75b368cb4d8a877a135b
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Update JSDOCs on timer-related methods

    - setInterval() returns a Number, not an Object.
    - typos fixed
    - markup added

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on ChromeOS)@VERT to Git commit to main/sbbs/master on Sun Feb 12 22:54:28 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/4bbe7434dcbe92221eaff726
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Descriptions of js.exec_file and exec_dir were reversed

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows)@VERT to Git commit to main/sbbs/master on Fri Jul 21 12:42:28 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/c2c3cdfc4a890fc622e36cf7
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Fix js.exec() error message when specified script can't be found

    If the search up the scope tree for js.exec_dir fails, the script 'path' would be left blank leading to a weird error message.
    e.g. !JavaScript default.js line 249: Error: Script file () does not exist

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Nightfox@VERT/DIGDIST to Rob Swindell (on Windows) on Fri Jul 21 14:55:45 2023
    Re: src/sbbs3/js_internal.c
    By: Rob Swindell (on Windows) to Git commit to main/sbbs/master on Fri Jul 21 2023 12:42 pm

    Fix js.exec() error message when specified script can't be found

    If the search up the scope tree for js.exec_dir fails, the script 'path' would be left blank leading to a weird error message.
    e.g. !JavaScript default.js line 249: Error: Script file () does not exist

    I just did an update and rebuilt my Synchronet binaries (and updated my default.js as well). That seems to fix the issue we were seeing with DDMsgReader and default.js. But now I'm seeing the same error in a different situation.

    In my command shell (custom JS), I have this command to run my file area chooser:

    bbs.exec("?../xtrn/DigDist/AreaChoosers/DDFileAreaChooser.js");

    That works. However, I also have a JS script in my sbbs/mods directory that I use as a test sandbox to try out new things, which I usually run from my main menu. I tried using the same line above in my test script to run my DDFileAreaChooser.js, but when I run that, I get the error:

    !JavaScript DigitalDistortionTest.js line 8: Error: Script file () does not exist

    It seems this might be a recent issue, as I've done similar things in my sandbox test script, and I don't remember seeing this before.

    Nightfox

    ---
    þ Synchronet þ Digital Distortion: digitaldistortionbbs.com
  • From Digital Man@VERT to Nightfox on Fri Jul 21 16:38:18 2023
    Re: src/sbbs3/js_internal.c
    By: Nightfox to Rob Swindell (on Windows) on Fri Jul 21 2023 02:55 pm

    Re: src/sbbs3/js_internal.c
    By: Rob Swindell (on Windows) to Git commit to main/sbbs/master on Fri Jul 21 2023 12:42 pm

    Fix js.exec() error message when specified script can't be found

    If the search up the scope tree for js.exec_dir fails, the script 'path' would be left blank leading to a weird error message.
    e.g. !JavaScript default.js line 249: Error: Script file () does not exist

    I just did an update and rebuilt my Synchronet binaries (and updated my default.js as well). That seems to fix the issue we were seeing with DDMsgReader and default.js. But now I'm seeing the same error in a different situation.

    In my command shell (custom JS), I have this command to run my file area chooser:

    bbs.exec("?../xtrn/DigDist/AreaChoosers/DDFileAreaChooser.js");

    That works. However, I also have a JS script in my sbbs/mods directory that I use as a test sandbox to try out new things, which I usually run from my main menu. I tried using the same line above in my test script to run my DDFileAreaChooser.js, but when I run that, I get the error:

    !JavaScript DigitalDistortionTest.js line 8: Error: Script file () does not exist

    That error message looks to be from js.exec(), not bbs.exec(). The error message itself (the empty parens) was fixed in git today. It doesn't appear you have that fix.

    It seems this might be a recent issue, as I've done similar things in my sandbox test script, and I don't remember seeing this before.

    No recent changes to either js.exec() or bbs.exec() that I'm aware of (other than the error message fix I just mentioned).
    --
    digital man (rob)

    Sling Blade quote #10:
    Morris: I stand on the hill, not for thrill, but for the breath of a fresh kill Norco, CA WX: 89.0øF, 30.0% humidity, 11 mph SSE wind, 0.00 inches rain/24hrs ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Nightfox@VERT/DIGDIST to Digital Man on Fri Jul 21 17:25:47 2023
    Re: src/sbbs3/js_internal.c
    By: Digital Man to Nightfox on Fri Jul 21 2023 04:38 pm

    In my command shell (custom JS), I have this command to run my file
    area chooser:

    bbs.exec("?../xtrn/DigDist/AreaChoosers/DDFileAreaChooser.js");

    That works. However, I also have a JS script in my sbbs/mods
    directory that I use as a test sandbox to try out new things, which I
    usually run from my main menu. I tried using the same line above in
    my test script to run my DDFileAreaChooser.js, but when I run that, I
    get the error:

    !JavaScript DigitalDistortionTest.js line 8: Error: Script file ()
    does not
    exist

    That error message looks to be from js.exec(), not bbs.exec(). The error message itself (the empty parens) was fixed in git today. It doesn't appear you have that fix.

    It was something silly on my part.. I had a line above it using js.exec(), and I thought I had removed that but it was still in there.

    Also, I had to check out a fresh copy of the repo in order to rebuild successfully. In the copy of the repo I had, it was getting a build error ('no rule to make target' for something, but I don't remember what it was now). But it's building now, and all is good.

    Nightfox

    ---
    þ Synchronet þ Digital Distortion: digitaldistortionbbs.com
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri Sep 1 12:32:50 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/3e1aa12ec62d240e54d6fe0d
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Don't use scope argument value to js.exec() if it's null

    Fixes issue #611

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Mon Feb 26 23:07:48 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/b1e8d3070d100a5a0ec090aa
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Update docs for js.auto_terminate to clarify: disconnection will trigger too

    User disconnection will trigger auto-terminate (eventually) as well. But only in the terminal server.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Thu Aug 8 12:38:17 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/c8a83171c6837d7dabfe698c
    Modified Files:
    src/sbbs3/js_internal.c
    Log Message:
    Fix CID 508259: Control flow issue (DEADCODE)

    ... introduced in commit 54523145

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net