• src/sbbs3/jsexec.c

    From Rob Swindell@VERT to Git commit to sbbs/master on Fri Nov 13 19:43:21 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/74b4a948bb366ce463a78eef
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    More control over output streams

    Added options -A[filename] and -S[filename] to allow more control over which output streams go where (for mlong and his troubles with running ircd via systemd).

    -A controls "all messages" either sending all to stdout or the specified filename. This override the automatic suppression of the console output stream when run without a controlling TTY.

    -S controls "status message" (includes non-error level log messages), either sending the status messages to stdout or the specified filename. This also overrides the automatic suppression of the console output stream when run without a controlling TTY.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to sbbs/master on Fri Nov 13 21:40:45 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/8cdd04222f1b14ff8fb239cf
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Restore console to "cooked" mode before daemonizing().

    Previously, the console would be left in "raw" mode after invoking
    'jsexec -d <module>'.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to Main/master on Tue Nov 24 00:06:52 2020
    https://gitlab.synchro.net/main/sbbs/-/commit/abb3bcccb3c217ff0dea5327
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Resolve warning: ‘strJavaScriptContextStack’ defined but not used

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sat Jan 30 02:22:11 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/6cd643a3e500532fd395fef1
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Add -I (Interpret) command-line option to execute cmdline string

    At Tracker1's request/suggestion.

    jsexec -Itrue
    ...
    Result (boolean): true

    More elaborate expressions can be evaluated and white-space included by quoting the "-I expression".

    Also, send all cmd-line usage errors to stderr and syntax help to stdout, always (Deuce's request).

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sat Jan 30 02:22:11 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/d5dc867b8717f227bc3942c2
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    I said, usage to stdout.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sat Jan 30 11:13:15 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/d33e6a4444321febdff0ee1b
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Make it 'jsexec -r' (run) instead of 'jsexec -I'

    Also, it's not technically an option, so remove from the option list.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Dream Master@VERT/CIAD to Rob Swindell on Sat Jan 30 16:20:23 2021
    Re: src/sbbs3/jsexec.c
    By: Rob Swindell to Git commit to main/sbbs/master on Sat Jan 30 2021 11:13 am

    Make it 'jsexec -r' (run) instead of 'jsexec -I'

    Let me guess, I for instantiate? :)

    Brian Klauss <-> Dream Master
    Caught in a Dream | caughtinadream.com a Synchronet BBS

    ---
    ■ Synchronet ■ Caught in a Dream - caughtinadream.com
  • From Digital Man@VERT to Dream Master on Sat Jan 30 15:40:45 2021
    Re: src/sbbs3/jsexec.c
    By: Dream Master to Rob Swindell on Sat Jan 30 2021 04:20 pm

    Re: src/sbbs3/jsexec.c
    By: Rob Swindell to Git commit to main/sbbs/master on Sat Jan 30 2021 11:13 am

    Make it 'jsexec -r' (run) instead of 'jsexec -I'

    Let me guess, I for instantiate? :)

    I was thinking Invoke or Interpret, but the capital 'I' just isn't a great thing to convey or document (looks too much like an 'l') or use (shift key and all) when there's another option, so I went with '-r' for Run. :-)
    --
    digital man

    Synchronet "Real Fact" #81:
    Vertrauen has had the FidoNet node number 1:103/705 since 1992.
    Norco, CA WX: 61.3°F, 50.0% humidity, 0 mph WSW wind, 0.00 inches rain/24hrs ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Dream Master@VERT/CIAD to Digital Man on Sat Jan 30 17:19:17 2021
    Re: src/sbbs3/jsexec.c
    By: Digital Man to Dream Master on Sat Jan 30 2021 03:40 pm

    I was thinking Invoke or Interpret, but the capital 'I' just isn't a great thing to convey or document (looks too much like an 'l') or use (shift key and all) when there's another option, so I went with '-r' for Run. :-)

    I've come up with some crazy variables in my time. Hell, I wish all *nixes would keep their options the same. In AIX, if you want to see everything in terms of 1024, you use -g (df -g, for example). In Linux, -h (df -h), which Mibs, Gibs, or Tibs them.

    Oh well.

    Brian Klauss <-> Dream Master
    Caught in a Dream | caughtinadream.com a Synchronet BBS

    ---
    ■ Synchronet ■ Caught in a Dream - caughtinadream.com
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sat Jan 30 23:41:46 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/6751ec5c6552c2af7507c80a
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Apply Deuce's feedback on the usage/syntax help output.

    Also change the wording of the -D option to be more descriptive.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sat Jan 30 23:44:13 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/d49668063295eec1dab3f5e4
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Typo

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sun Feb 21 21:45:04 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/39c0b830e2d6c839f90b3542
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Remove unnecessary NULL check (caught by Coverity)

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sat Mar 6 14:10:06 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/4365aac62118b6e5a509f219
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Don't compile the .ini parsing stuff for JSDoor

    This should fix the recent JSDoor build issue introduced.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sun Mar 7 11:52:50 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/8f4425cba02558a1c2c31fca
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Enable JSOPTION_VAROBJFIX for JSDoor.

    This option fixes the fact that the following two lines sometimes
    place the variables in different scopes at the top-level of included
    scripts:
    var x = 1;
    y = 2;

    I plan to use this to experiment on if this is what's causing much
    of the remaining scope chain weirdness... it certain explains some
    things we've been seeing (and possibly even things like the METHODJIT
    issues DigitalMan saw yesterday).

    Enabling in sbbs/jsexec is a much bigger lift, but this change may
    end up being all upside... the docs have suggested this option always
    be set since it was originally introduced, and now that I understand
    scopes better, it's pretty clear why that is.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sun Mar 7 21:26:57 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/a64184e0046bdda67b3cdce1
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    JSDoor still needs the module name.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Mon Apr 5 23:36:36 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/aa4c080b13259eaa89016787
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Typos in help

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Sun Aug 8 23:40:32 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/3313031a70bb0b995e0006ea
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Don't fclose(errfp) if it's NULL.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Thu Jun 16 21:47:40 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/d49facc893a919fefcb8969d
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Flush console output stream after executing a script

    Solves problem of status output lines being interleved with console
    output (e.g. from print()) after executing a script.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows)@VERT to Git commit to main/sbbs/master on Mon May 1 12:00:24 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/65bde885de939d6b1157382e
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    More verbose help output for -L option

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wed May 3 09:52:54 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/29001ba126bfd344c1f9ad63
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    This should allow it to link as a console program.

    ---
    ■ 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 Jun 11 14:33:40 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/20da5318bafa58eb3ead19e2
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Fix (harmless) memory leak reported by ASan when running 'jsexec -?'

    ---
    ■ 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 Jul 9 15:23:31 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/cd997ea347ee9db7c5f3e474
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Resource cleanup on exit (when no module specified)

    Eliminates a SANITIZE build error

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows)@VERT to Git commit to main/sbbs/master on Tue Aug 8 17:43:51 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/40995ce1868fdb8cdbacf2a6
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Insure the exec_dir is *always* prepped (fix for Windows upgrade to v3.20)

    A "prepped" means directory means a relative path from the configuration files (or default settings) has been converted to a full/absolute path with proper slashes for the platform (i.e. backslashes instead of forward-slashes on Windows).

    JSexec doesn't require that the new v3.20 ctrl/*.ini files exist to run; this was necessary to be able to run 'jsexec update -> upgrade_to_v320.js' which does the ctrl/*.cnf to .ini file conversion (egg not required to build chicken). When JSexec failed to load ctrl/msgs.ini
    (e.g. "!ERROR loading configuration files: 2 (No such file or directory) opening /sbbs/ctrl\msgs.ini"), it would continue to run, but not "prep" any
    of the "path" settings (e.g. exec_dir).

    The first run of 'jsexec update.js' would fail to run upgrade_to_v320.exe (which does the v3.20 user base conversion) and a bunch of other (but not as important) update steps because Windows couldn't execute "../exec/*".

    Multiple errors would be displayed in this case, but the most important (as reported by Ree in #synchronet of irc.synchro.net) was:
    '..' is not recognized as an internal or external command

    right after the status output:
    No v3.20 user base found, running ../exec/upgrade_to_v320

    Notice the "../exec/" prefix, which is not support by Windows when specifying
    a file path to execute.

    A second run of 'jsexec update' would work fine because the new v3.20 .ini files would be successfully created after the first run (though the user base was not).

    This is likely the same issue that MRO reported recently when upgrading a Windows SBBS v3.19 install to v3.20 and not having the user base upgraded
    the first time.

    ---
    ■ 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 Fri Dec 8 17:37:09 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/7b932f63e4f1d4275e55dfbf
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Only create/use a single run-time for use in JSexec, even when re-runnning

    The '-l' (loop) option would cause the JS runtime to be destroyed and
    recreated for each new execution of the script, which resulted in memory
    leaks in Windows builds (see issue #672 for details). So instead, just
    use a single JS runtime here when the -l option is used to prevent that
    from happening, though truth be told, that's likely not a normal/common occurrence. Other apparent JS-related memory leaks (e.g. in the web
    server) appear to be of a common concern.

    Likely upgrading to a modern libmozjs would also fix this issue, but
    we're far short of being able to do that right now.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Feb 5 22:18:08 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/b53254b6bcc9d02aae63da2e
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Resolve full path to specified ctrl directory, before chdir

    If a relative path to the ctrl directory is specified on the command-line
    or in the SBBSCTRL environment variable, the loading of ctrl/*.ini would
    fail after the changing of the working directory.

    We should probably get replace all use of FULLPATH with _fullpath someday,
    but for now, I just went with majority-rule.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Feb 5 22:27:55 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/7d3b61d7f59fcdf32e739baf
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    PATH_MAX (not an MSVC thing) -> MAX_PATH

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sun Mar 17 00:13:16 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/97fb3f1f463adc057fc05ea8
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Make Windows hack Windows-only

    We need _CIOLIB_main on macOS... at least until the curses stuff works.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sun Mar 17 01:35:53 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/1e48f1252859924638b52e96
    Modified Files:
    src/sbbs3/jsexec.c
    Log Message:
    Don't use the non-standard third parameter to main for enivronment

    Use the standard `extern char **environ' instead.
    Fixes an issue with macOS.

    Also, check that env is not NULL in js_init.

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