- 26 May, 2020 1 commit
-
-
rswindell authored
Create sbbs_t::random_menu() (JS bbs.random_menu()) - to make the display of a randomly-chosen menu file from text/menu, very easy.
-
- 24 May, 2020 1 commit
-
-
rswindell authored
Create sbbs_t::cursor_getxy() which gets the current x/y coordinates even for non-ANSI terminals (using the locally-tracked cursor position).
-
- 19 May, 2020 1 commit
-
-
rswindell authored
Move term_env from static (BSS) variable to sbbs_t member. Static member function variables are shared among threads, so this was just a race-condition waiting to happen. <grimmace>
-
- 11 May, 2020 2 commits
- 09 May, 2020 1 commit
-
-
rswindell authored
Both hungry/liberal hot-spots and strict hot-spots can be defined now, at the same time. For Nelgin. Use ^A` to define a single-char strict hot-spot using Ctrl-A codes. Unfortunately, this usurps the "home" Ctrl-A code which nothing seems to use but has now been changed to ^A'. Use ` instead of ~ in mnemonics to define strict single-char hot-spots (also displays the cmd key in [] instead () on non ANSI/PETSCII terms). Use @` instead of @~ codes to define strict hot-keys. Use HOT:STRICT @-code to declare a strict hot-key color. Use HOT:HUNGRY @-code to toggle back to hungry color-defined hot-keys (the default). New optional boolean argument to JS console.add_hotkey(), hungry = true by default.
-
- 08 May, 2020 4 commits
-
-
rswindell authored
- "HOT" by itself will set the hot-spot attribute to the *current* attribute (just colorize the @-code in your editor the same as you do your cmd keys no need to memorize color-code mnemonics) - "HOT:OFF" will turn off the hot-spot attribute through the end of the text or util re-enabled - Use a more greedy/liberal hot-spot matching algoirthm so that hot spots can overlap and the "best" one will be chosen. No way to opt-out of this algorithm (e.g. to use a conservative matching algo) currently. - Earlier parse of @~ codes to keep text prestine (no parsing of |* or -*)
-
rswindell authored
A more convenient method of creating mouse hot spots in a display (e.g. menu) file: New "HOT:<attr>" @-code allows you to define a specific combination of attributes (colors) that will be used to exclusively create clickable command keys or words in a file. Every set of charcters in the display file that uses that specific combination of attributes will become an automatic mouse hot spot. The <attr> is specified using a set of attribte mnemonics (e.g. "YH" for high-intensity yellow), the same set used in attr.cfg and other places in sbbs. This allows more WYSIWYG style menu editing (e.g. use PabloDraw), you just need to be careful with your choice of colors. You cannot send white-space or control characters with this method and the clickable text is the exact text that will be put in the keyboard buffer.
-
rswindell authored
and JS console.keyboard_buffer_space() and keyboard_buffer_level() ... for tracking the number of character spaces used and available in the the (unget)keyboard input buffer.
-
rswindell authored
- hot spots are clickable screen areas (e.g. in menus and prompts) that generate key-strokes - commands may be from 1 to 127 ASCII-characters in length - currently using the X10 mouse reporting mode, may change - all mnemonics strings (~Example) are automatically hot-spots - The new ~ @-code defines a hot spot - Any screen-clear operation clears all hot spots - sbbs now tracks the current screen (cursor position) row - eliminated the old "tos" (top-of-screen) boolean (row == 0 indicates "tos") - created an sbbs_t::ungetstr() method - keep track if in pause (hit a key) prompt, for special mouse behavior new JS console object: - row property - tos property is now read-only (and deprecated) - new methods: add_hotspot() clear_hotspots() scroll_hotspots() redrwstr() gets some UTF8 touch-ups as part of this commit. <shrug>
-
- 04 May, 2020 1 commit
-
-
rswindell authored
When inkey() receives an ANSI escape sequence it doesn't need to consume, put the consumed characters into the keyboard buffer *ahead* of whatever else is in the keyboard buffer already. Uses new ungetkey() insert mode option.
-
- 30 Apr, 2020 2 commits
-
-
rswindell authored
ctrl/*.cpp includes this file and does not use/include libjs.
-
rswindell authored
the name of a scalar property in either the current scope (by default) or the scope of the object passed to: - bbs.menu() - console.putmsg() - console.printfile() - console.printtail() The 'name' cannot be an array element (e.g. myprop[0]) or a nested object reference (e.g. myobj.myprop): just a single property name that can be converted to a string. Also, bbs.menu() now accepts an optional print-mode argument (default: P_NONE).
-
- 28 Apr, 2020 1 commit
-
-
rswindell authored
current column is > 0, it'll maintain that same margin on the right-edge of the screen (shortening the fill length). This allows you to create nice dynamic horizontal lines/dividers with margins.
-
- 24 Apr, 2020 1 commit
-
-
rswindell authored
Added multiple Internet email recipient support. I'll look into multiple FidoNet netmail support later as that code needs an even greater overhaul in that process.
-
- 23 Apr, 2020 1 commit
-
-
rswindell authored
- external programs section (default: "xtrn_sec") - logon list (default: "logonlist") This ties the Baja XTRN_SECTION and USERLIST_LOGONS functions and the JS bbs.xtrn_sec() and bbs.list_logons() methods to the loadable modules (if configured) automatically without the exec_bin hackery in *.src. Also, allow the xtrn section argument to be passed to the JS/C++ method to go directly to a specific xtrn program section. The bbs.list_logons() can also accept an argument to pass to the module (e.g. "-y" for yesterday's logons).
-
- 11 Apr, 2020 1 commit
-
-
rswindell authored
together to keep things atomic: 1. Eliminate eprintf() as sbbs_t::lputs() and sbbs_t::lprintf() do the "right thing" (e.g. log to the event log when called from the event_thread). 2. Moved upload_stats() and download_stats() from ftpsrvr.c to getstats.c where I plan to make use of them for JS-based upload/download file support.
-
- 19 Mar, 2020 1 commit
-
-
rswindell authored
(e.g. for the [O]perator->(H)eader dump command from the reading msgs prompt) Looks pretty much the same as before.
-
- 01 Mar, 2020 1 commit
-
-
rswindell authored
now accept an optional print-mode (a.k.a. pmode) argument to provide more control over the printing that happens in these functions/methods. The immediate use is for P_NOCRLF to stop the newline from being printed after a yes or no response (e.g. in a full-screen UI), but there could be other uses.
-
- 03 Jan, 2020 1 commit
-
-
rswindell authored
not set (or blank), use the default ("/sbbs/ctrl") and print a warning to stderr. This resolves a FAQ for sysops that struggle with setting the SBBSCTRL env var, but do have sbbs install in /sbbs or a symlink from /sbbs to where sbbs is actually installed. Note: this function is different than the one previously defined in getctrl.c but never used. If/when we ever really need to support PREFIX, then perhaps we'll use that one (which copies a string to a buffer).
-
- 01 Dec, 2019 1 commit
-
-
rswindell authored
(configured or auto-generated): getsubnewsgroupname().
-
- 24 Oct, 2019 1 commit
-
-
rswindell authored
running a JavaScript module would crash (e.g. segfault) sbbs: Create and use a separate JS runtime, context, and global object/scope for global hotkey events. This means that the hotkey won't benefit from any previously loaded/required scripts, possibly effecting the performance of the first invocation of the hotkey handler. Subsequent JS hotkey events will reuse the same runtime/context/global, so they'll execute fast(er). One questionalbe change to js_execfile(): With the JS_GC (garbage collection) call *before* the JS_ENDREQUEST() call, the process would crash in libmozjs. Moving the JS_GC() call to *after* the JS_ENDREQUEST() resolved this issue and I'm not clear why. This 'js_cx' parameter here is not always sbbs_t::js_cx. When called to handle a JS hotkey event, it's sbbs_t::js_hotkey_cx, so it shouldn't interfere with the sbs_t::js_cx being used by the currently executing JS module (shell or door). <scratches chin>
-
- 08 Oct, 2019 1 commit
-
-
rswindell authored
JS console.gotoxy() and the GOTOXY @-code now work with PETSCII terminals (homes the cursor then moves down and right the appropriate number of rows and columns). Bummer I didn't think of this method sooner.
-
- 05 Oct, 2019 1 commit
-
-
rswindell authored
in-place or by also copying to a new string in the process. Don't string "soft-CRs" (0x8d) from UTF-8 encoded FTN messages, ever. Default strip_soft_cr SBBSecho setting to true/on.
-
- 21 Sep, 2019 1 commit
-
-
rswindell authored
"width" argument (in columns), defaults the user's current screen column-width but you can now over-ride this value when an additional/optional argument. Also, center() now clears-to-EOL before sending the CRLF to the terminal. Hopefully this doesn't mess up anyone's existing use of center().
-
- 31 Aug, 2019 1 commit
-
-
rswindell authored
Elminate unused member variable: inputfile
-
- 28 Aug, 2019 1 commit
-
-
rswindell authored
any control (ASCII 0x01 - 0x1F) characters.
-
- 25 Aug, 2019 1 commit
-
-
rswindell authored
client_socket_dup before activating the passthru_socket. This resolves the issue of external programs receiving stale data from the previous passthru session - data that was not sucessfully read by the last external program invoked.
-
- 24 Aug, 2019 1 commit
-
-
rswindell authored
wrapper for utf8_normalize_str() and utf8_replace_chars with the proper arguments. This will fix *a* problem with UTF-8 message not being converted to CP437 in QWK packets correctly (we were just normalizing, not fully converting). Also got rid of the defunct DLLCALL usage str_util.c
-
- 21 Aug, 2019 1 commit
-
-
rswindell authored
use socket I/O (e.g. sexyz, door32.sys doors, sync-xsdk doors) - not just when the client is connected via SSH. This solves a number of problems: - programs that change socket options - programs that don't support non-CP437 charsets (e.g. PETSCII, UTF-8) - programs that don't support Telnet-IAC escaping This greatly simplifies (reduces the need for) input_thread locking. The passthru_thread now handles chunks of up to 4000 bytes per transfer between socket and ringbuf, instead of a char at a time, greatly improving the performance.
-
- 20 Aug, 2019 1 commit
-
-
rswindell authored
when "extra raw" output is needed. Use putcom() and comprintf() instead of rputs() and rprintf() for ANSI escape sequences. This doesn't actually fix any problem, but since rputs() is "less raw" than it used to be, let's use direct-output routines instead, for ANSI output.
-
- 15 Aug, 2019 1 commit
-
-
rswindell authored
optionally including the current (your) node. New @-codes: "ANODES" (active-nodes count), aliases: "ANODE" and "AN" "ONODES" (other-active-nodes count), aliases: "ONODE" and "ON" Make "NN" an alias for "NODE" and "TN" and alias for "TNODE". Add "TNODES" alias for "TNODE" as well, for symmetry.
-
- 12 Aug, 2019 1 commit
-
-
rswindell authored
(not delete) from the end of the sorted list of files (normally, 0). Created an sbbs_t::delfiles() wrapper which defaults to keep 0 files and also generates a error.log message if any of the file-deletions fail.
-
- 07 Aug, 2019 1 commit
-
-
rswindell authored
-
- 05 Aug, 2019 2 commits
-
-
rswindell authored
- new @-code BPS:x (where x is 0/unlimited, 300, 600, 1200, 2400, ... 115200) - new JS property: console.output_rate So you can have mutliple output rate changes in a single file by using multiple BPS @-codes. Hopefully this doesn't do weird things with non-compliant terminals.
-
rswindell authored
now accept an optional "count" argument (default: 1). JS console.backspace() and carrage_return() methods now accept an optional "count" argumnet (default: 1).
-
- 04 Aug, 2019 2 commits
-
-
rswindell authored
- bstrlen() moved to sbbs_t, accepts an option pmode argument so it can account for UTF-8 encoded strings correctly - JS console.strlen() now accepts an optional pmode argument (e.g. P_UTF8) - Renamed sbbs_t::utf8_to_cp437 to sbbs_t::print_utf8_as_cp437 - Create/use msghdr_hfield() to perform UTF-8->CP437 conversions as needed for printing/copying UTF-8 encoded message header fields. - Defined XTRN_UTF8 misc setting flag. If a message editor does *not* have this flag, it is assumed to *not* support UTF-8. Will likely use this for UTF-8 doors as some point too (none known to exist, yet).
-
deuce authored
support to the JS API.
-
- 03 Aug, 2019 1 commit
-
-
rswindell authored
flag in the message header. When displaying message header fields containing UTF-8 using show_msghdr() with text.dat string or with msghdr.asc and @-codes, do the "dance" to be sure it's displayed correctly depending on the user's terminal (UTF-8 or not).
-
- 02 Aug, 2019 1 commit
-
-
rswindell authored
a message is posted to a different conference than the original sub-board with completely different header information. I suspect this has something to do HEADERS.DAT creation or import - not sure. So I added a "Conference" headers.dat field for *messages* (it already existed for votes) and use that value to confirm that the message header at the associated offset value in the QWK packet has the same conference number as the section in the headers.dat file. This is really just a sanity check and will only catch messages that were mistakening cross-posted (to a different conference) - *but* it log errors and save the bad QWK or REP file for me to examine more closely and see what's going on - and the message won't be imported (just "lost", which is also bad). So added more QWK import success/error checking and logging (especially for QWK packets since REP importing already had a lot of stats covered). Another check would be to store the original message number in the headers.dat file as well and use that to confirm that the headers.dat section is the correct match for the QWK message at that offset. I did not implement this check, yet. The conference number check seems like it'll catch most of the bad msgs and lead me to the root-cause.
-