Synchronet Git Commit Log

This is a log of the 500 most recent pushes to the master branch of the Synchronet Git repository.
If you want to view more pushes/commits, you can by passing ?<number> in URL.
  1. Rob Swindell (on Debian Linux)
    Mon May 12 2025 22:37:24 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/echocfg.c diff
    Make it clear that linked nodes includes linked points in the help text

  2. Rob Swindell (on Windows 11)
    Mon May 12 2025 17:26:22 GMT-0700 (PDT)
    Modified Files:
    

    exec/areamgr.hlp diff
    src/sbbs3/sbbsecho.c diff
    src/sbbs3/sbbsecho.h diff
    Allow a "max message count" to be specified in AreaMgr "rescan" requests - The -R option (in the subject), can now include a message count i.e. -R=<count> I don't think this follows any existing area manager example usage, but I figured as long as we support a -R option, -R=<count> makes sense. - The %RESCAN function (in the body) can now include a message count i.e. %RESCAN [area-tag] [R=<count>] This mimics the Mystic area manager usage, though we don't yet support a "D=days" option. This at least partially addresses issue #929, but I sure would like some people to test it an let me know how well it works (!)

  3. Rob Swindell
    Sat May 10 2025 12:48:41 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    Merge branch 'dd_msg_reader_another_utf8_update' into 'master' DDMsgReader: Another UTF-8 update to ensure messages with UTF8 are printed correctly (reported by Nelgin) See merge request main/sbbs!542

  4. Eric Oulashin
    Sat May 10 2025 12:03:44 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    DDMsgReader: Another UTF-8 update to ensure messages with UTF8 are printed correctly (reported by Nelgin)

  5. Rob Swindell
    Thu May 08 2025 18:26:25 GMT-0700 (PDT)
    Added Files:
    

    webv4/root/error/429.html diff
    Merge branch 'web_429_error' into 'master' Add 429 error message page See merge request main/sbbs!534

  6. Nigel Reed
    Thu May 08 2025 18:26:25 GMT-0700 (PDT)
    Added Files:
    

    webv4/root/error/429.html diff
    Add 429 error message page

  7. Rob Swindell
    Thu May 08 2025 15:24:22 GMT-0700 (PDT)
    Modified Files:
    

    exec/SlyEdit_DCTStuff.js diff
    Merge branch 'slyedit_DCT_remove_ctrl_R_for_program_info_from_menu' into 'master' SlyEdit DCT mode: Remove "Ctrl-R" from help menu for program info, since that hotkey is now used to run the spell checker See merge request main/sbbs!540

  8. Eric Oulashin
    Thu May 08 2025 15:24:22 GMT-0700 (PDT)
    Modified Files:
    

    exec/SlyEdit_DCTStuff.js diff
    SlyEdit DCT mode: Remove "Ctrl-R" from help menu for program info, since that hotkey is now used to run the spell checker

  9. Rob Swindell
    Wed May 07 2025 21:47:05 GMT-0700 (PDT)
    Modified Files:
    

    ctrl/SlyEdit.cfg diff
    docs/slyedit_readme.txt diff
    exec/SlyEdit.js diff
    exec/SlyEdit_DCTStuff.js diff
    exec/SlyEdit_IceStuff.js diff
    exec/SlyEdit_Misc.js diff
    exec/slyedcfg.js diff
    Merge branch 'slyedit_general_file_edit_and_meme_support' into 'master' SlyEdit: Better behavior for editing general files, to support editing SSH keys & such. Support for appending a meme to a message by typing /m on an empty line and pressing enter. See merge request main/sbbs!539

  10. Eric Oulashin
    Wed May 07 2025 21:47:05 GMT-0700 (PDT)
    Modified Files:
    

    ctrl/SlyEdit.cfg diff
    docs/slyedit_readme.txt diff
    exec/SlyEdit.js diff
    exec/SlyEdit_DCTStuff.js diff
    exec/SlyEdit_IceStuff.js diff
    exec/SlyEdit_Misc.js diff
    exec/slyedcfg.js diff
    SlyEdit: Better behavior for editing general files, to support editing SSH keys & such. Support for appending a meme to a message by typing /m on an empty line and pressing enter.

  11. Rob Swindell (on Debian Linux)
    Mon May 05 2025 18:46:06 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/ftp.js diff
    Add an 8th (!) argument to constructor to allow connect timeout override ... for Nelgin

  12. Rob Swindell (on Debian Linux)
    Mon May 05 2025 17:58:56 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/ftp.js diff
    Store last received response in 'received_response' property For Nelgin's use in exception handler of something that's using this script

  13. Rob Swindell (on Debian Linux)
    Mon May 05 2025 16:15:59 GMT-0700 (PDT)
    Modified Files:
    

    ctrl/dns_blacklist.cfg diff
    Remove sorbes.net as it is has ceased operation Fix for issue #925

  14. Rob Swindell (on Debian Linux)
    Sun May 04 2025 17:34:17 GMT-0700 (PDT)
    Modified Files:
    

    src/smblib/smblib.c diff
    src/smblib/smblib.h diff
    src/smblib/smbtxt.c diff
    Add support for parsing format parameter of plain/text content-type MIME field This sets the SMB MSG_FIXED_FORMAT auxattr header flag automatically when importing MIME-compliant messages.

  15. Rob Swindell (on Debian Linux)
    Sun May 04 2025 17:04:16 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/newsutil.js diff
    Include format=fixed or flowed in exported content-type news header fields

  16. Rob Swindell (on Debian Linux)
    Sun May 04 2025 16:23:23 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/smbdefs.js diff
    exec/postmeme.js diff
    exec/postmsg.js diff
    src/sbbs3/atcodes.cpp diff
    src/sbbs3/getmsg.cpp diff
    src/sbbs3/msgtoqwk.cpp diff
    src/sbbs3/postmsg.cpp diff
    src/sbbs3/qwktomsg.cpp diff
    src/sbbs3/sbbsecho.c diff
    src/sbbs3/sbbsecho.h diff
    src/smblib/smbdefs.h diff
    src/smblib/smbstr.c diff
    Add support to SMBLIB for "Fixed" format message text By default, messages are assumed to be of "Flowed" format (CRLF-delimited paragraphs). When posting pre-formatted text, this aux attribute flag should be set to indicate to message viewers that the message text should be displayed as-is, without applying word-wrapping or parsing/expanding markup tags. This adds a new key/value field to QWK HEADERS.DAT and FTN Kludge: "Format: fixed" and "Fixed: flowed" as appropriate. This flag is now automatically set when posting messages in raw input mode, when using postmeme.js, or postmsg.js with the -P option. Not done: adding or parsing the "Format" parameter in MIME content-type message header fields per RFC-3676.

  17. Rob Swindell (on Debian Linux)
    Sat May 03 2025 22:51:11 GMT-0700 (PDT)
    Modified Files:
    

    exec/logon.js diff
    Add 'center_automsg' option (default: false) may be used to display the auto message centered on the terminal

  18. Rob Swindell (on Debian Linux)
    Sat May 03 2025 22:46:38 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/sbbsdefs.js diff
    Add P_MODS and P_CENTER definitions

  19. Rob Swindell (on Debian Linux)
    Sat May 03 2025 22:43:48 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/putmsg.cpp diff
    src/sbbs3/sbbsdefs.h diff
    Add P_CENTER mode flag for printing centered multline text buffers/strings When used with putmsg(), centers the output based on the longest line. When used with printfile() line at a time mode, centers each line. When used with printfile() open/close mode, centers just the first line. So it's a little weird and wonky.

  20. Rob Swindell (on Debian Linux)
    Sat May 03 2025 22:39:00 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/str_util.c diff
    src/sbbs3/str_util.h diff
    Add widest_line(), returns widest (display width) of lines in char* does not (yet) support UTF-8

  21. Rob Swindell (on Debian Linux)
    Sat May 03 2025 22:08:27 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/prntfile.cpp diff
    Fix bug in random_menu() introduce in previous commit Broke random menu/display files - we needed another temp variable here.

  22. Rob Swindell (on Debian Linux)
    Sat May 03 2025 21:34:20 GMT-0700 (PDT)
    Modified Files:
    

    exec/automsg.js diff
    Add meme formatter, make meme format the default (using meme_chooser.js) Set modopts/automsg.ini meme=false to disable this behavior.

  23. Rob Swindell (on Debian Linux)
    Sat May 03 2025 21:34:20 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/meme_chooser.js diff
    Do the options thing in the main() function

  24. Rob Swindell
    Sat May 03 2025 20:25:59 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDFileAreaChooser.js diff
    xtrn/DDAreaChoosers/version_history.txt diff
    Merge branch 'dd_file_are_chooser_display_header_fix' into 'master' DDFileAreaChooser fix: Displays the configured header file again See merge request main/sbbs!537

  25. Eric Oulashin
    Sat May 03 2025 20:25:59 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDFileAreaChooser.js diff
    xtrn/DDAreaChoosers/version_history.txt diff
    DDFileAreaChooser fix: Displays the configured header file again

  26. Rob Swindell
    Sat May 03 2025 20:20:46 GMT-0700 (PDT)
    Modified Files:
    

    ctrl/xtrn.ini diff
    Merge branch 'slyedit_retain_ctrl_a_in_quotes' into 'master' Updated default SlyEdit settings to enable retaining Ctrl-A codes in quotes See merge request main/sbbs!536

  27. Eric Oulashin
    Sat May 03 2025 20:20:46 GMT-0700 (PDT)
    Modified Files:
    

    ctrl/xtrn.ini diff
    Updated default SlyEdit settings to enable retaining Ctrl-A codes in quotes

  28. Rob Swindell (on Debian Linux)
    Sat May 03 2025 20:07:19 GMT-0700 (PDT)
    Added Files:
    

    exec/load/meme_chooser.js diff
    Modified Files:

    exec/postmeme.js diff
    Move most of the logic from postmeme.js to reusable meme_chooser.js lib e.g. for use in automsg.js

  29. Rob Swindell (on Debian Linux)
    Sat May 03 2025 19:05:43 GMT-0700 (PDT)
    Modified Files:
    

    exec/automsg.js diff
    Add PTSC header to specify tab size/usage

  30. Rob Swindell (on Debian Linux)
    Sat May 03 2025 18:22:52 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/meme_lib.js diff
    exec/postmeme.js diff
    Support left/right justification Part of issue/request #922 I don't know if we really want separate cycling/selection of foreground and background colors (most foreground colors aren't good combos for most background colors) or the separate cycling/selection of the upper, mid, and lower parts of the border. These are doable, but I'm not sure the majority of the results would look good.

  31. Rob Swindell (on Debian Linux)
    Sat May 03 2025 17:14:49 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/meme_lib.js diff
    Add another mixed-width border style (3d/button effect)

  32. Rob Swindell (on Debian Linux)
    Sat May 03 2025 16:47:10 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/prntfile.cpp diff
    Resolve relative menu/../* to absolute path before checking for file existence On *nix, fexist("../mods/text/menu/../filename") would fail unless the mods/text/menu sub-directory existed. It works on Windows fine however. This resolves issue #918, reported by Keyop - thank you!

  33. Rob Swindell (on Debian Linux)
    Sat May 03 2025 14:49:31 GMT-0700 (PDT)
    Modified Files:
    

    exec/postmeme.js diff
    Allow direct border style numeric entry, max_length option

  34. Rob Swindell (on Debian Linux)
    Sat May 03 2025 14:35:39 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/meme_lib.js diff
    Remove invalid comment

  35. Rob Swindell (on Debian Linux)
    Sat May 03 2025 14:34:39 GMT-0700 (PDT)
    Modified Files:
    

    exec/postmeme.js diff
    Fix bug in previous commit with converting undefined color and border options ... to a valid number

  36. Rob Swindell (on Debian Linux)
    Sat May 03 2025 13:34:31 GMT-0700 (PDT)
    Modified Files:
    

    exec/postmeme.js diff
    Allow color to be separately cycled from the border style modopts/postmem.ini now supports: - random (randomly selecct color/border when true) - color (number of fg/bg attribute combo) - border (number of border)

  37. Rob Swindell (on Debian Linux)
    Sat May 03 2025 13:15:30 GMT-0700 (PDT)
    Modified Files:
    

    exec/postmeme.js diff
    Hitting Ctrl-C and Pot to or subject prompt now aborts

  38. Rob Swindell (on Debian Linux)
    Sat May 03 2025 13:09:13 GMT-0700 (PDT)
    Added Files:
    

    exec/load/meme_lib.js diff
    Modified Files:

    exec/postmeme.js diff
    Libify postmeme.js -> meme_lib.js Now we can use this generate meme-style text for other uses (e.g. auto-message)

  39. Rob Swindell (on Debian Linux)
    Sat May 03 2025 01:43:00 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/scfg/scfgxtrn.c diff
    src/sbbs3/writemsg.cpp diff
    Remove the "Expand LF to CRLF" option for external editors Synchronet now does the proper line ending conversion when necessary (using WM_EXPANDLF or WM_STRIP_CR mode flags), so we don't need a per-editor setting for this behavior.

  40. Rob Swindell (on Debian Linux)
    Sat May 03 2025 01:37:09 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/scfg/scfgxtrn.c diff
    src/sbbs3/writemsg.cpp diff
    Add editor setting flag to retain Ctrl-A codes in QUOTES.TXT file Previously, any Ctrl-A codes in the quoted message text (QUOTES.TXT) would be retained, but not all editors actually support Ctrl-A codes, so make this an optin (defaults to No/false).

  41. Rob Swindell (on Debian Linux)
    Fri May 02 2025 18:49:07 GMT-0700 (PDT)
    Modified Files:
    

    exec/default.js diff
    text/menu/main.msg diff
    Add /M (post meme) main menu option to default shell

  42. Rob Swindell (on Debian Linux)
    Fri May 02 2025 18:38:11 GMT-0700 (PDT)
    Added Files:
    

    exec/postmeme.js diff
    A meme poster, to be run within terminal server colorized, center-justified, decorative borders Could be used to post announcements too.

  43. Rob Swindell (on Debian Linux)
    Thu May 01 2025 11:50:17 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/logon.cpp diff
    Do rollover daily stats (dsts.ini) if the previous date was Jan-1-1970 (never) Basically revert commit 2064f3a4f71c6656693a1d24fc63004c3c41aaea In a new install, the "Date" value in dsts.ini will be 0/Never and thus would never be rolled over (e.g. stats moved o csts.tab files). Since getstats() now reliably detects any read failures, we shouldn't need this as a work-around any more anyway - if the "date" field is 0, it just means a new install and it's expected. This should fix the issue reported by Basis where the ctrl/csts.tab and node*/csts.tab files were never created in fresh install of v3.20. A work around is to just set the Date field in the ctrl/dsts.ini file to the current date (one time).

  44. Rob Swindell (on Debian Linux)
    Wed Apr 30 2025 17:03:12 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/services.c diff
    Include client IP address in UDP "created client socket" debug log msg Fix issue #919

  45. Rob Swindell (on Windows 11)
    Mon Apr 28 2025 21:28:30 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/atcodes.cpp diff
    src/sbbs3/getstats.c diff
    src/sbbs3/getstats.h diff
    Create getnewposts() and getnewfiles() to return number of new messages/files ... and use these functions for new @-codes: NEWMSGS and NEWFILES as requested by Finglonger on DOVE-Net Add more protection for file-area-based @-codes when user doesn't have access to any file areas (i.e. don't crash).

  46. Rob Swindell (on Windows 11)
    Mon Apr 28 2025 20:38:02 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/sbbsdefs.js diff
    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/writemsg.cpp diff
    Rename WM_CR_STRIP to WM_STRIP_CR to match the <verb><noun> pattern of other WM_* mode flags (e.g. WM_EXPANDLF).

  47. Rob Swindell (on Debian Linux)
    Mon Apr 28 2025 20:19:59 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/sbbsdefs.js diff
    Add WM_EXPLANDLF and WM_CR_STRIP definitions

  48. Rob Swindell (on Windows 11)
    Mon Apr 28 2025 20:16:45 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/writemsg.cpp diff
    Rename WM_CRLF to WM_EXPANDLF, add WM_CR_STRIP support So now you can explicitly create/edit files without CRs, for whenever that's a problem (e.g. in ssh key files), regardless of which message editor is used.

  49. Rob Swindell (on Windows 11)
    Mon Apr 28 2025 20:16:45 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_console.cpp diff
    src/sbbs3/sbbs.h diff
    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/writemsg.cpp diff
    Insure messages created/edited are always CRLF line-terminated Even if a message editor is configured to *not* expand LF to CRLF (in SCFG), when creating or editing message text, always do the LF->CRLF expansion, for uniformity. Allow the wmode flag (WM_*) to be passed to JS console.editfile() for use in other scenarios where we want to insure the file is CRLF-terminated.

  50. Rob Swindell (on Debian Linux)
    Sat Apr 26 2025 23:13:39 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    exec/tdfiglet.js diff
    Add support for looping through fonts (-l option) with pause (-p) Cleaned-up the font filename weirdness in the lib.

  51. Rob Swindell (on ChromeOS)
    Sat Apr 26 2025 19:36:31 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    exec/tdfiglet.js diff
    Add tdfiglet -R option for random font with retry (e.g. if too wide for screen) ... use with caution as you could get into an infinite exception/retry loop using this feature. tdfonts_lib opt.retry added (default: false/disabled) Removed some unnecessary comments from lib source

  52. Rob Swindell (on ChromeOS)
    Sat Apr 26 2025 18:49:04 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    Fix negaitve padding calculation (for center justification of long srings)

  53. Rob Swindell (on ChromeOS)
    Sat Apr 26 2025 18:16:05 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    exec/tdfiglet.js diff
    Add word-wrap support

  54. Rob Swindell (on Windows 11)
    Fri Apr 25 2025 18:27:30 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/qwktomsg.cpp diff
    Create FTN charset of "ASCII 1" when the imported message is explicitly ASCII (e.g. via "Content-Type: text/plain; charset=US-ASCII" header field) ... previously we would default to "CP437" for the created FTN charset.

  55. Rob Swindell (on Windows 11)
    Fri Apr 25 2025 18:24:12 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/msgtoqwk.cpp diff
    Don't add CP437 QWKnet tagline glyph when message is explicitly US-ASCII e.g. when message was posted via NNTP with: Content-Type: text/plain; charset=US-ASCII Assume the poster wants the message to remain US-ASCII, so let's not pollute the message with CP437 chars and invalidate the header and cause unnecessary downstream issues.

  56. Rob Swindell (on Windows 11)
    Fri Apr 25 2025 18:22:52 GMT-0700 (PDT)
    Modified Files:
    

    src/smblib/smblib.c diff
    src/smblib/smblib.h diff
    Create smb_msg_is_ascii() This function returns true if the message *header* explicitly claims that the message contains only US-ASCII chars.

  57. Rob Swindell (on Windows 11)
    Fri Apr 25 2025 17:29:43 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/readmail.cpp diff
    When listing mail messages with no "to" field, display SMTP forward path ... if there is one.

  58. Rob Swindell (on Debian Linux)
    Fri Apr 25 2025 17:27:32 GMT-0700 (PDT)
    Modified Files:
    

    exec/nntpservice.js diff
    Include sent mail messages in "mail" newsgroup too

  59. Rob Swindell (on Debian Linux)
    Fri Apr 25 2025 14:18:21 GMT-0700 (PDT)
    Modified Files:
    

    exec/nntpservice.js diff
    The -mail option now allows user (non-Guest) access to their email in the "mail" group, rather than sysop acccess to *all* email. If any sysop actually wants the "all email" feature, that can be re-added easy enough. I *think* this is what Accession was asking for?

  60. Rob Swindell (on Debian Linux)
    Fri Apr 25 2025 13:01:46 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/modopts.js diff
    Throw a different exception if get_mod_options() is passed a non-string modname

  61. Rob Swindell (on Debian Linux)
    Fri Apr 25 2025 12:37:27 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/modopts.js diff
    Support legacy scripts (e.g. webInit.js) thtat just load('modopts.js') without passing any parameters (just returns null) Throw an exception in get_mod_options() if passed a falsey modname.

  62. Rob Swindell (on Debian Linux)
    Fri Apr 25 2025 12:01:20 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/modopts.js diff
    Load ctrl/modopts/module-suffix.ini instead of ctrl/modopts/module:suffix.ini Colons are problematic in Windows filenames, so convert colon to dash, if provided in the modname (e.g. qnet-ftp:qwk-id). Also noticed the default option value didn't work for ctrl/modopts/*.ini files (when requesting one specific property) - fixed that.

  63. Rob Swindell (on Debian Linux)
    Fri Apr 25 2025 10:00:32 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    Throw an exception when rendered line would exceed screen width since we don't support line wrapping or truncation (yet).

  64. Rob Swindell (on Debian Linux)
    Fri Apr 25 2025 09:56:17 GMT-0700 (PDT)
    Modified Files:
    

    exec/tdfiglet.js diff
    Error out (display usage) rather than printing blank lines

  65. Rob Swindell (on Debian Linux)
    Fri Apr 25 2025 02:01:28 GMT-0700 (PDT)
    Modified Files:
    

    exec/tdfiglet.js diff
    Remove the extra blank line before the output

  66. Rob Swindell (on Debian Linux)
    Fri Apr 25 2025 02:00:03 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    Fix the Ctrl-A background color mapping I don't remember why these aren't in CGA order

  67. Rob Swindell (on Debian Linux)
    Fri Apr 25 2025 01:05:15 GMT-0700 (PDT)
    Modified Files:
    

    text/answer.msg diff
    Enable long-line truncation and use DATETIMEZONE @-code These are cosmetic improvements I've been using on Vertrauen for many years but failed to copy to the stock answer.msg file.

  68. Rob Swindell (on Debian Linux)
    Fri Apr 25 2025 00:47:10 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    Remove accidental debug output

  69. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 21:32:35 GMT-0700 (PDT)
    Modified Files:
    

    exec/tdfiglet.js diff
    Clean up comments, unnecessary opt object property init, usage output

  70. Rob Swindell
    Thu Apr 24 2025 20:18:02 GMT-0700 (PDT)
    Modified Files:
    

    webv4/pages/001-forum.ssjs diff
    Merge branch 'fix_typeError_in_wevb4' into 'master' Fix for typeError See merge request main/sbbs!535

  71. Nigel Reed
    Thu Apr 24 2025 20:18:02 GMT-0700 (PDT)
    Modified Files:
    

    webv4/pages/001-forum.ssjs diff
    Fix for typeError

  72. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 18:36:19 GMT-0700 (PDT)
    Modified Files:
    

    exec/tdfiglet.js diff
    Fix typo and identation with tabs

  73. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 18:19:06 GMT-0700 (PDT)
    Modified Files:
    

    exec/tdfiglet.js diff
    Allow a left or right margin to be specified with -m option default: 0 (no margin)

  74. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 18:17:57 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    When right justifying and no margin, don't print CRLF (blank lines) ... assume the terminal auto-line-wrapped for us. Allow a margin (for left or right justification) to be specified in opt.margin (default: 0).

  75. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 17:43:40 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    Auto-detect the screen width when the width option isn't specified This fixes the center/right justification options for terminals not exactly 80 columns in width.

  76. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 17:42:00 GMT-0700 (PDT)
    Modified Files:
    

    exec/tdfiglet.js diff
    Don't load() tdfonts_lib.js into global scope, doesn't work with ;exec command Use the lib as recommended. Don't set the opt.width default value here, allowing for auto-detection.

  77. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 17:18:53 GMT-0700 (PDT)
    Modified Files:
    

    exec/tdfiglet.js diff
    Clean up the command-line parsing There's no reason to copy the argv array to another array (args). Use for instead of while loop. Fix up indentation.

  78. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 16:43:55 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    Fix off-by-one error when using opt.index value e.g. opt.index==0 was treated the same as opt.index==1

  79. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 16:30:41 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    exec/tdfiglet.js diff
    Support combination use of tdfiglet -x and -r options e.g. to use only the first font (index 0) from a randomly selected font file.

  80. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 16:02:47 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    When random mode is specified and multiple fonts exist in font file... pick one at random. Display the font index value when the info mode is requested.

  81. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 15:38:32 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    exec/tdfiglet.js diff
    Add PTSC headers to specify the tab-size and to use tabs for indentation

  82. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 15:24:50 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    exec/tdfiglet.js diff
    If no font object or filename is passed to lib, pick a font file at random This moves the random file selection into tdfonts_lib.js We should also pick a font index at random (when opt.random is true), but that's not happening yet. Also fixed up some indentation issues (when using 4 space tabstops). The original commit of this file used spaces for indentation, so it's kind of a mess now and should be uncrustified.

  83. Rob Swindell (on Debian Linux)
    Thu Apr 24 2025 13:52:26 GMT-0700 (PDT)
    Modified Files:
    

    webv4/pages/001-forum.ssjs diff
    Include filename and line number of logged exception (warning) messages This might help get to the root-cause/solution of issue #823

  84. Rob Swindell
    Thu Apr 24 2025 12:40:57 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/telnet_lib.js diff
    Merge branch 'add_telnet_negotiation_codes' into 'master' Add telnet negotiation codes that are mostly used for MUDS, See merge request main/sbbs!533

  85. Nigel Reed
    Thu Apr 24 2025 12:40:57 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/telnet_lib.js diff
    Add telnet negotiation codes that are mostly used for MUDS,

  86. Rob Swindell (on Windows 11)
    Thu Apr 24 2025 12:36:06 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_internal.c diff
    js.exec() will now execute scripts from the configured mods and exec dirs ... if not passed a full path and the script file doesn't exist in the startup_dir (if specified) or the same directory the calling script was executed from (js.exec_dir). This should fix the reported issue when trying to use the "spy" command from a cmdshell script run from the mods dir: !JavaScript /sbbs/exec/str_cmds.js line 388: Error: Script file (mqtt_spy.js) does not exist

  87. Rob Swindell (on Debian Linux)
    Wed Apr 23 2025 21:37:20 GMT-0700 (PDT)
    Modified Files:
    

    exec/nntpservice.js diff
    Add support for -utf8 option To force conversion of non-ASCII message body text, assumed to CP437, to UTF-8 encoded equivalent. Use of the -ascii option or when exporting sub-boards that are configured (in SCFG) to export ASCII only, defeats this option. Fix for issue #917.

  88. Rob Swindell (on Debian Linux)
    Wed Apr 23 2025 19:48:28 GMT-0700 (PDT)
    Modified Files:
    

    exec/fileman.js diff
    When editing a file description that doesn't exist, pass a blank string uifc.input() defaults to a max width of 40 chars if no string is passed. file.desc may be undefined when no description is provided by uploader.

  89. Rob Swindell (on Debian Linux)
    Wed Apr 23 2025 18:23:28 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    exec/tdfiglet.js diff
    Add Ctrl-A output encoding (now the default) The output is CP437/Ctrl-A by default, use -u to force UTF-8 encoded characters if you need that or -a to force ANSI output if you need that. Removed the mIRC color support (that can be added back easiliy enough if anyone actually wants that). So the tdfiglet -e u|a option has been replaced with -u (UTF-8) and -c m|a option has been replaced -a (ANSI). Simpler usage with correct terminology.

  90. Rob Swindell (on Debian Linux)
    Wed Apr 23 2025 17:40:38 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    Make the 'opt' object predefinition optional (not required) Defaults to CP437/ANSI output in this case

  91. Rob Swindell (on Debian Linux)
    Wed Apr 23 2025 17:27:28 GMT-0700 (PDT)
    Removed Files:
    

    xtrn/lord/lord.example.ini diff
    Added by accident

  92. Rob Swindell (on Debian Linux)
    Wed Apr 23 2025 17:25:32 GMT-0700 (PDT)
    Added Files:
    

    xtrn/lord/lord.example.ini diff
    Modified Files:

    exec/load/tdfonts_lib.js diff
    exec/tdfiglet.js diff
    tdfonts_lib.js output() method can be passed just the font path/filename ... so the caller (e.g. tdfiglet.js) doesn't need to call loadfont().

  93. Rob Swindell (on Debian Linux)
    Wed Apr 23 2025 16:31:17 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    Terminate lines with CRLF not just LF

  94. Deucе
    Wed Apr 23 2025 16:22:34 GMT-0700 (PDT)
    Modified Files:
    

    src/conio/sdl_con.c diff
    src/syncterm/syncterm.c diff
    Fix "ghost" instance of SyncTERM on exit in SDL mode on Win32 Since nothing will default to this mode anymore, we can just hack this fix into SyncTERM. This ensures that if SyncTERM is terminated by calling return from main() on Windows that the quit wrapper does nothing. This is a fairly ugly hack, but it works for SyncTERM. Fixes ticket 203

  95. Rob Swindell (on Debian Linux)
    Wed Apr 23 2025 16:09:33 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    Add output() method that just outputs the font/string, doesn't print for Nelgin

  96. Deucе
    Wed Apr 23 2025 13:57:23 GMT-0700 (PDT)
    Modified Files:
    

    src/conio/cterm.c diff
    src/syncterm/CHANGES diff
    Fix LCF mode When wrapping due to a character being written, be sure to move to the next line before writing the new character. LCF mode was badly broken, so I guess nobody was using it?

  97. Deucе
    Wed Apr 23 2025 13:57:07 GMT-0700 (PDT)
    Modified Files:
    

    src/syncterm/CHANGES diff
    src/syncterm/term.c diff
    Fix screen save/restore for manual uploads While it was properly entering the mode for the file picker, it restored the screen before the protocol picker, which resulted in the palette/charset from the connection being used for the transfer window. Fixes ticket 202 While we're here, wrap the whole "put everything in CP437 mode" into a new function and use it everywhere.

  98. Rob Swindell (on Debian Linux)
    Wed Apr 23 2025 12:56:03 GMT-0700 (PDT)
    Modified Files:
    

    exec/xtrn_sec.js diff
    Define 'xtrn_sec' in the global JS scope when an section is listed This allows the use of JS:xtrn_sec @-code in the 'which' prompt string. For Nelgin.

  99. Rob Swindell (on Debian Linux)
    Wed Apr 23 2025 12:22:46 GMT-0700 (PDT)
    Modified Files:
    

    exec/xtrn_sec.js diff
    Support multicolumn xtrn program *section* listing While we've long supported multicolumn program lists (for long lists that would likely cause a user's terminal to scroll), we've never supported multicolumn external program *section* listings. So if the multicolumn option is set to true (the default) and the list of sections is longer than would fit on the user's terminal screen, split into 2 columns (just two). This introduces the new configurable string-option: multicolumn_section_fmt This fixes issue #915 Hopefully Nelgin will be in a better mood as a result.

  100. Rob Swindell (on Debian Linux)
    Tue Apr 22 2025 19:48:19 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/tdfonts_lib.js diff
    If lowercase char is not mapped to font, lookup the uppercased letter Not all fonts have the lowercase chars mapped

  101. Rob Swindell (on Debian Linux)
    Tue Apr 22 2025 19:34:53 GMT-0700 (PDT)
    Modified Files:
    

    exec/tdfiglet.js diff
    Remove unused charset variable

  102. Rob Swindell (on Windows 11)
    Tue Apr 22 2025 16:11:21 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/atcodes.cpp diff
    Allow C escape sequences in EXEC: @-code argument, to allow param passing e.g. separate module name from command-line params with \x20 and separate params from eachother with \x20.

  103. Rob Swindell (on Debian Linux)
    Tue Apr 22 2025 15:46:05 GMT-0700 (PDT)
    Added Files:
    

    exec/tdfiglet.js diff
    Modified Files:

    exec/load/tdfonts_lib.js diff
    Libify tdfonts_lib.js, creating tdfiglet.js (the front-end) Just split tdfonts_lib.js in half basically tdfiglet.js is the "front-end" (e.g. for use with jsexec or ;exec sysop command).

  104. Rob Swindell (on Debian Linux)
    Tue Apr 22 2025 15:28:26 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/xjs.js diff
    Throw Error exception rather than just logging errors better traceability

  105. Rob Swindell (on Windows 11)
    Tue Apr 22 2025 15:24:30 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/writemsg.cpp diff
    If editor doesn't create a file, just return false from sbbs_t::editfile() ... don't log any error message. This fixes issue #914

  106. Rob Swindell
    Tue Apr 22 2025 13:36:36 GMT-0700 (PDT)
    Added Files:
    

    ctrl/tdfonts/1911.tdf diff
    ctrl/tdfonts/1911x.tdf diff
    ctrl/tdfonts/208.tdf diff
    ctrl/tdfonts/208x.tdf diff
    ctrl/tdfonts/3d-ascii.tdf diff
    ctrl/tdfonts/4maxcol.tdf diff
    ctrl/tdfonts/aaa.tdf diff
    ctrl/tdfonts/aaax.tdf diff
    ctrl/tdfonts/aardvark.tdf diff
    ctrl/tdfonts/abbadon.tdf diff
    ctrl/tdfonts/access.tdf diff
    ctrl/tdfonts/acheronx.tdf diff
    ctrl/tdfonts/acid3dx.tdf diff
    ctrl/tdfonts/acidnewx.tdf diff
    ctrl/tdfonts/acidsc2x.tdf diff
    ctrl/tdfonts/acidscpx.tdf diff
    ctrl/tdfonts/acidtron.tdf diff
    ctrl/tdfonts/acidx.tdf diff
    ctrl/tdfonts/acrylicx.tdf diff
    ctrl/tdfonts/adomex.tdf diff
    ctrl/tdfonts/adrenax.tdf diff
    ctrl/tdfonts/adrknesx.tdf diff
    ctrl/tdfonts/advocate.tdf diff
    ctrl/tdfonts/aftrdarx.tdf diff
    ctrl/tdfonts/aftrhoux.tdf diff
    ctrl/tdfonts/agony.tdf diff
    ctrl/tdfonts/agony2x.tdf diff
    ctrl/tdfonts/alchemyx.tdf diff
    ctrl/tdfonts/alfheimx.tdf diff
    ctrl/tdfonts/alienled.tdf diff
    ctrl/tdfonts/alphax.tdf diff
    ctrl/tdfonts/amazonx.tdf diff
    ctrl/tdfonts/ambush2.tdf diff
    ctrl/tdfonts/ambushs.tdf diff
    ctrl/tdfonts/ambushx.tdf diff
    ctrl/tdfonts/amcneko.tdf diff
    ctrl/tdfonts/amnesia.tdf diff
    ctrl/tdfonts/amnesiax.tdf diff
    ctrl/tdfonts/anarchyx.tdf diff
    ctrl/tdfonts/andromed.tdf diff
    ctrl/tdfonts/anemiax.tdf diff
    ctrl/tdfonts/anemiaxx.tdf diff
    ctrl/tdfonts/angldust.tdf diff
    ctrl/tdfonts/anniverx.tdf diff
    ctrl/tdfonts/anomalix.tdf diff
    ctrl/tdfonts/apocal2x.tdf diff
    ctrl/tdfonts/apotm.tdf diff
    ctrl/tdfonts/apovisnx.tdf diff
    ctrl/tdfonts/appocalx.tdf diff
    ctrl/tdfonts/arcane.tdf diff
    ctrl/tdfonts/archana.tdf diff
    ctrl/tdfonts/areaconx.tdf diff
    ctrl/tdfonts/areax.tdf diff
    ctrl/tdfonts/armagdnx.tdf diff
    ctrl/tdfonts/ascii.tdf diff
    ctrl/tdfonts/assylum.tdf diff
    ctrl/tdfonts/assylumx.tdf diff
    ctrl/tdfonts/astronmx.tdf diff
    ctrl/tdfonts/asylumx.tdf diff
    ctrl/tdfonts/atbx.tdf diff
    ctrl/tdfonts/atlansmx.tdf diff
    ctrl/tdfonts/atlantix.tdf diff
    ctrl/tdfonts/atomicx.tdf diff
    ctrl/tdfonts/atomx.tdf diff
    ctrl/tdfonts/attitudx.tdf diff
    ctrl/tdfonts/audiofil.tdf diff
    ctrl/tdfonts/badlandx.tdf diff
    ctrl/tdfonts/balistcx.tdf diff
    ctrl/tdfonts/bamboosx.tdf diff
    ctrl/tdfonts/banshee.tdf diff
    ctrl/tdfonts/bansheex.tdf diff
    ctrl/tdfonts/bbstx.tdf diff
    ctrl/tdfonts/beast.tdf diff
    ctrl/tdfonts/belfastx.tdf diff
    ctrl/tdfonts/bevisiox.tdf diff
    ctrl/tdfonts/beyond2x.tdf diff
    ctrl/tdfonts/beyondx.tdf diff
    ctrl/tdfonts/bigice_f.tdf diff
    ctrl/tdfonts/bigl2.tdf diff
    ctrl/tdfonts/biglimpy.tdf diff
    ctrl/tdfonts/biohazrx.tdf diff
    ctrl/tdfonts/bismarcx.tdf diff
    ctrl/tdfonts/bitchvrx.tdf diff
    ctrl/tdfonts/bizarrax.tdf diff
    ctrl/tdfonts/blacksun.tdf diff
    ctrl/tdfonts/blacksux.tdf diff
    ctrl/tdfonts/blackx.tdf diff
    ctrl/tdfonts/bladex.tdf diff
    ctrl/tdfonts/blah.tdf diff
    ctrl/tdfonts/blahx.tdf diff
    ctrl/tdfonts/blcksunx.tdf diff
    ctrl/tdfonts/blcktrnc.tdf diff
    ctrl/tdfonts/bleach.tdf diff
    ctrl/tdfonts/blendr1x.tdf diff
    ctrl/tdfonts/blendr2x.tdf diff
    ctrl/tdfonts/blevx.tdf diff
    ctrl/tdfonts/blisterx.tdf diff
    ctrl/tdfonts/block.tdf diff
    ctrl/tdfonts/block3d.tdf diff
    ctrl/tdfonts/block3dx.tdf diff
    ctrl/tdfonts/bloodlg.tdf diff
    ctrl/tdfonts/bloodlgc.tdf diff
    ctrl/tdfonts/bloodsmc.tdf diff
    ctrl/tdfonts/bloodsml.tdf diff
    ctrl/tdfonts/bloodyx.tdf diff
    ctrl/tdfonts/blueescx.tdf diff
    ctrl/tdfonts/blwtorcx.tdf diff
    ctrl/tdfonts/boardx.tdf diff
    ctrl/tdfonts/bodily.tdf diff
    ctrl/tdfonts/bodycnt.tdf diff
    ctrl/tdfonts/bodycntx.tdf diff
    ctrl/tdfonts/bodyelex.tdf diff
    ctrl/tdfonts/bollux.tdf diff
    ctrl/tdfonts/bolluxx.tdf diff
    ctrl/tdfonts/bonerx.tdf diff
    ctrl/tdfonts/bonex.tdf diff
    ctrl/tdfonts/bongx.tdf diff
    ctrl/tdfonts/boxfight.tdf diff
    ctrl/tdfonts/bravex.tdf diff
    ctrl/tdfonts/brazenx.tdf diff
    ctrl/tdfonts/breachx.tdf diff
    ctrl/tdfonts/breakx.tdf diff
    ctrl/tdfonts/brex.tdf diff
    ctrl/tdfonts/brickx.tdf diff
    ctrl/tdfonts/brink.tdf diff
    ctrl/tdfonts/brinkx.tdf diff
    ctrl/tdfonts/brndamgx.tdf diff
    ctrl/tdfonts/brokenx.tdf diff
    ctrl/tdfonts/broknsrt.tdf diff
    ctrl/tdfonts/brothood.tdf diff
    ctrl/tdfonts/bubacol.tdf diff
    ctrl/tdfonts/buffalo.tdf diff
    ctrl/tdfonts/burningx.tdf diff
    ctrl/tdfonts/cafex.tdf diff
    ctrl/tdfonts/califorx.tdf diff
    ctrl/tdfonts/capitalx.tdf diff
    ctrl/tdfonts/carbonx.tdf diff
    ctrl/tdfonts/cardinax.tdf diff
    ctrl/tdfonts/cartelx.tdf diff
    ctrl/tdfonts/cartoon.tdf diff
    ctrl/tdfonts/casinox.tdf diff
    ctrl/tdfonts/castlex.tdf diff
    ctrl/tdfonts/catlkinx.tdf diff
    ctrl/tdfonts/cattlex.tdf diff
    ctrl/tdfonts/ccinx.tdf diff
    ctrl/tdfonts/celertyx.tdf diff
    ctrl/tdfonts/cemetary.tdf diff
    ctrl/tdfonts/cesspoox.tdf diff
    ctrl/tdfonts/cfh-hoer.tdf diff
    ctrl/tdfonts/cfh-horx.tdf diff
    ctrl/tdfonts/cfh-snow.tdf diff
    ctrl/tdfonts/cfh-snwx.tdf diff
    ctrl/tdfonts/chamberx.tdf diff
    ctrl/tdfonts/channelx.tdf diff
    ctrl/tdfonts/chaos2x.tdf diff
    ctrl/tdfonts/chaosenx.tdf diff
    ctrl/tdfonts/chaoticx.tdf diff
    ctrl/tdfonts/chazergx.tdf diff
    ctrl/tdfonts/children.tdf diff
    ctrl/tdfonts/chnlzero.tdf diff
    ctrl/tdfonts/chromax.tdf diff
    ctrl/tdfonts/chronox.tdf diff
    ctrl/tdfonts/churchx.tdf diff
    ctrl/tdfonts/ciafontx.tdf diff
    ctrl/tdfonts/circutsx.tdf diff
    ctrl/tdfonts/cityx.tdf diff
    ctrl/tdfonts/cldcityx.tdf diff
    ctrl/tdfonts/closedx.tdf diff
    ctrl/tdfonts/cnerip.tdf diff
    ctrl/tdfonts/coderx.tdf diff
    ctrl/tdfonts/codex.tdf diff
    ctrl/tdfonts/colony.tdf diff
    ctrl/tdfonts/color.tdf diff
    ctrl/tdfonts/color_.tdf diff
    ctrl/tdfonts/colorhrd.tdf diff
    ctrl/tdfonts/coloscol.tdf diff
    ctrl/tdfonts/coloseux.tdf diff
    ctrl/tdfonts/colossal.tdf diff
    ctrl/tdfonts/coloursx.tdf diff
    ctrl/tdfonts/commx.tdf diff
    ctrl/tdfonts/computrx.tdf diff
    ctrl/tdfonts/consolex.tdf diff
    ctrl/tdfonts/continux.tdf diff
    ctrl/tdfonts/convulsx.tdf diff
    ctrl/tdfonts/cop-bh.tdf diff
    ctrl/tdfonts/cop_ch1.tdf diff
    ctrl/tdfonts/corosv2x.tdf diff
    ctrl/tdfonts/corpse.tdf diff
    ctrl/tdfonts/corrosox.tdf diff
    ctrl/tdfonts/coruptnx.tdf diff
    ctrl/tdfonts/cosmic.tdf diff
    ctrl/tdfonts/cosmicco.tdf diff
    ctrl/tdfonts/countx.tdf diff
    ctrl/tdfonts/courierx.tdf diff
    ctrl/tdfonts/cr-x.tdf diff
    ctrl/tdfonts/crazedx.tdf diff
    ctrl/tdfonts/creatiox.tdf diff
    ctrl/tdfonts/creatorx.tdf diff
    ctrl/tdfonts/creepx.tdf diff
    ctrl/tdfonts/crestclx.tdf diff
    ctrl/tdfonts/crewelx.tdf diff
    ctrl/tdfonts/crimrinx.tdf diff
    ctrl/tdfonts/crimson.tdf diff
    ctrl/tdfonts/crisisx.tdf diff
    ctrl/tdfonts/crosroax.tdf diff
    ctrl/tdfonts/cryptic.tdf diff
    ctrl/tdfonts/crystalx.tdf diff
    ctrl/tdfonts/crzymadx.tdf diff
    ctrl/tdfonts/cyanidx.tdf diff
    ctrl/tdfonts/cybcrtwx.tdf diff
    ctrl/tdfonts/cybera2x.tdf diff
    ctrl/tdfonts/cyberia1.tdf diff
    ctrl/tdfonts/cybernx.tdf diff
    ctrl/tdfonts/cyberrrx.tdf diff
    ctrl/tdfonts/cyberwrx.tdf diff
    ctrl/tdfonts/cyberwx.tdf diff
    ctrl/tdfonts/cybrcrme.tdf diff
    ctrl/tdfonts/cybrfrcx.tdf diff
    ctrl/tdfonts/damagex.tdf diff
    ctrl/tdfonts/damnatnx.tdf diff
    ctrl/tdfonts/damnedx.tdf diff
    ctrl/tdfonts/dangerfx.tdf diff
    ctrl/tdfonts/dangerx.tdf diff
    ctrl/tdfonts/dark.tdf diff
    ctrl/tdfonts/darkcrux.tdf diff
    ctrl/tdfonts/darkers1.tdf diff
    ctrl/tdfonts/darkers2.tdf diff
    ctrl/tdfonts/darklanx.tdf diff
    ctrl/tdfonts/darklitx.tdf diff
    ctrl/tdfonts/darkmoon.tdf diff
    ctrl/tdfonts/darkn2sx.tdf diff
    ctrl/tdfonts/darknses.tdf diff
    ctrl/tdfonts/darksidx.tdf diff
    ctrl/tdfonts/darksun.tdf diff
    ctrl/tdfonts/darksunx.tdf diff
    ctrl/tdfonts/darktwo.tdf diff
    ctrl/tdfonts/darrell.tdf diff
    ctrl/tdfonts/darrellx.tdf diff
    ctrl/tdfonts/dcfont.tdf diff
    ctrl/tdfonts/dcp_1.tdf diff
    ctrl/tdfonts/deadrelm.tdf diff
    ctrl/tdfonts/deadstar.tdf diff
    ctrl/tdfonts/deadstrx.tdf diff
    ctrl/tdfonts/death.tdf diff
    ctrl/tdfonts/deathrow.tdf diff
    ctrl/tdfonts/deathx.tdf diff
    ctrl/tdfonts/deep.tdf diff
    ctrl/tdfonts/dellx.tdf diff
    ctrl/tdfonts/delusion.tdf diff
    ctrl/tdfonts/demonclx.tdf diff
    ctrl/tdfonts/demonic.tdf diff
    ctrl/tdfonts/denied.tdf diff
    ctrl/tdfonts/descentx.tdf diff
    ctrl/tdfonts/descntsx.tdf diff
    ctrl/tdfonts/desertx.tdf diff
    ctrl/tdfonts/desnudo.tdf diff
    ctrl/tdfonts/destinx.tdf diff
    ctrl/tdfonts/destny2x.tdf diff
    ctrl/tdfonts/destrucx.tdf diff
    ctrl/tdfonts/developx.tdf diff
    ctrl/tdfonts/dgmotiox.tdf diff
    ctrl/tdfonts/digital2.tdf diff
    ctrl/tdfonts/digitalx.tdf diff
    ctrl/tdfonts/digitx.tdf diff
    ctrl/tdfonts/digx.tdf diff
    ctrl/tdfonts/dimentox.tdf diff
    ctrl/tdfonts/dimsbolx.tdf diff
    ctrl/tdfonts/dimsslim.tdf diff
    ctrl/tdfonts/dimsslix.tdf diff
    ctrl/tdfonts/dissimux.tdf diff
    ctrl/tdfonts/distreax.tdf diff
    ctrl/tdfonts/dolcex.tdf diff
    ctrl/tdfonts/dominion.tdf diff
    ctrl/tdfonts/dominiox.tdf diff
    ctrl/tdfonts/donnow.tdf diff
    ctrl/tdfonts/doorsx.tdf diff
    ctrl/tdfonts/dope.tdf diff
    ctrl/tdfonts/downfalx.tdf diff
    ctrl/tdfonts/dragon2x.tdf diff
    ctrl/tdfonts/dragonx.tdf diff
    ctrl/tdfonts/dreadlk.tdf diff
    ctrl/tdfonts/dream.tdf diff
    ctrl/tdfonts/dreamlds.tdf diff
    ctrl/tdfonts/dreamlnx.tdf diff
    ctrl/tdfonts/dreamlsx.tdf diff
    ctrl/tdfonts/drgx.tdf diff
    ctrl/tdfonts/drkers1x.tdf diff
    ctrl/tdfonts/drkers2x.tdf diff
    ctrl/tdfonts/drkimagx.tdf diff
    ctrl/tdfonts/drkmoonx.tdf diff
    ctrl/tdfonts/drkrealm.tdf diff
    ctrl/tdfonts/drksocty.tdf diff
    ctrl/tdfonts/drome.tdf diff
    ctrl/tdfonts/drumsx.tdf diff
    ctrl/tdfonts/dsktdwnx.tdf diff
    ctrl/tdfonts/dungeon2.tdf diff
    ctrl/tdfonts/dungeonx.tdf diff
    ctrl/tdfonts/dustnbnx.tdf diff
    ctrl/tdfonts/dynasty.tdf diff
    ctrl/tdfonts/dynastyx.tdf diff
    ctrl/tdfonts/eatmex.tdf diff
    ctrl/tdfonts/eberusx.tdf diff
    ctrl/tdfonts/eclipse2.tdf diff
    ctrl/tdfonts/eclipsex.tdf diff
    ctrl/tdfonts/eclpse2x.tdf diff
    ctrl/tdfonts/ecox.tdf diff
    ctrl/tdfonts/eleuthix.tdf diff
    ctrl/tdfonts/eleventh.tdf diff
    ctrl/tdfonts/elusivex.tdf diff
    ctrl/tdfonts/emberx.tdf diff
    ctrl/tdfonts/empi.tdf diff
    ctrl/tdfonts/empiresx.tdf diff
    ctrl/tdfonts/emsx.tdf diff
    ctrl/tdfonts/endless.tdf diff
    ctrl/tdfonts/energyx.tdf diff
    ctrl/tdfonts/erthbnd2.tdf diff
    ctrl/tdfonts/erthbond.tdf diff
    ctrl/tdfonts/escape2.tdf diff
    ctrl/tdfonts/escapex.tdf diff
    ctrl/tdfonts/eterna2x.tdf diff
    ctrl/tdfonts/eternal2.tdf diff
    ctrl/tdfonts/eternalx.tdf diff
    ctrl/tdfonts/eternitx.tdf diff
    ctrl/tdfonts/etherx.tdf diff
    ctrl/tdfonts/euphorix.tdf diff
    ctrl/tdfonts/evilx.tdf diff
    ctrl/tdfonts/evlacidx.tdf diff
    ctrl/tdfonts/evolutx.tdf diff
    ctrl/tdfonts/evolve.tdf diff
    ctrl/tdfonts/exilansa.tdf diff
    ctrl/tdfonts/exile.tdf diff
    ctrl/tdfonts/exilians.tdf diff
    ctrl/tdfonts/exodus2x.tdf diff
    ctrl/tdfonts/exodusx.tdf diff
    ctrl/tdfonts/explorax.tdf diff
    ctrl/tdfonts/explosox.tdf diff
    ctrl/tdfonts/extasyx.tdf diff
    ctrl/tdfonts/fa!-#2.tdf diff
    ctrl/tdfonts/faithx.tdf diff
    ctrl/tdfonts/falconsx.tdf diff
    ctrl/tdfonts/fantasyx.tdf diff
    ctrl/tdfonts/fastlane.tdf diff
    ctrl/tdfonts/fatalx.tdf diff
    ctrl/tdfonts/fb-coldx.tdf diff
    ctrl/tdfonts/fb-fogft.tdf diff
    ctrl/tdfonts/fb-gothx.tdf diff
    ctrl/tdfonts/fb-grayx.tdf diff
    ctrl/tdfonts/fb-icefx.tdf diff
    ctrl/tdfonts/fb-oldsd.tdf diff
    ctrl/tdfonts/fb-redsd.tdf diff
    ctrl/tdfonts/fbr.tdf diff
    ctrl/tdfonts/fbrx.tdf diff
    ctrl/tdfonts/fear.tdf diff
    ctrl/tdfonts/fiberx.tdf diff
    ctrl/tdfonts/fields.tdf diff
    ctrl/tdfonts/filex.tdf diff
    ctrl/tdfonts/final.tdf diff
    ctrl/tdfonts/findest2.tdf diff
    ctrl/tdfonts/findstyx.tdf diff
    ctrl/tdfonts/fine.tdf diff
    ctrl/tdfonts/finest.tdf diff
    ctrl/tdfonts/finestx.tdf diff
    ctrl/tdfonts/fire.tdf diff
    ctrl/tdfonts/fishbowl.tdf diff
    ctrl/tdfonts/flarex.tdf diff
    ctrl/tdfonts/flatline.tdf diff
    ctrl/tdfonts/focspopx.tdf diff
    ctrl/tdfonts/font1.tdf diff
    ctrl/tdfonts/font10.tdf diff
    ctrl/tdfonts/font11.tdf diff
    ctrl/tdfonts/font12x.tdf diff
    ctrl/tdfonts/font13.tdf diff
    ctrl/tdfonts/font14.tdf diff
    ctrl/tdfonts/font15.tdf diff
    ctrl/tdfonts/font16.tdf diff
    ctrl/tdfonts/font17.tdf diff
    ctrl/tdfonts/font18.tdf diff
    ctrl/tdfonts/font19.tdf diff
    ctrl/tdfonts/font2.tdf diff
    ctrl/tdfonts/font20.tdf diff
    ctrl/tdfonts/font21x.tdf diff
    ctrl/tdfonts/font22x.tdf diff
    ctrl/tdfonts/font23.tdf diff
    ctrl/tdfonts/font25.tdf diff
    ctrl/tdfonts/font26ox.tdf diff
    ctrl/tdfonts/font26x.tdf diff
    ctrl/tdfonts/font27.tdf diff
    ctrl/tdfonts/font28x.tdf diff
    ctrl/tdfonts/font29x.tdf diff
    ctrl/tdfonts/font2x.tdf diff
    ctrl/tdfonts/font3.tdf diff
    ctrl/tdfonts/font30.tdf diff
    ctrl/tdfonts/font31.tdf diff
    ctrl/tdfonts/font32.tdf diff
    ctrl/tdfonts/font33.tdf diff
    ctrl/tdfonts/font34.tdf diff
    ctrl/tdfonts/font35.tdf diff
    ctrl/tdfonts/font36.tdf diff
    ctrl/tdfonts/font37.tdf diff
    ctrl/tdfonts/font37r.tdf diff
    ctrl/tdfonts/font38.tdf diff
    ctrl/tdfonts/font39.tdf diff
    ctrl/tdfonts/font4.tdf diff
    ctrl/tdfonts/font40x.tdf diff
    ctrl/tdfonts/font41.tdf diff
    ctrl/tdfonts/font42x.tdf diff
    ctrl/tdfonts/font43x.tdf diff
    ctrl/tdfonts/font44x.tdf diff
    ctrl/tdfonts/font45x.tdf diff
    ctrl/tdfonts/font46.tdf diff
    ctrl/tdfonts/font47x.tdf diff
    ctrl/tdfonts/font48.tdf diff
    ctrl/tdfonts/font49.tdf diff
    ctrl/tdfonts/font4x.tdf diff
    ctrl/tdfonts/font5.tdf diff
    ctrl/tdfonts/font50.tdf diff
    ctrl/tdfonts/font51.tdf diff
    ctrl/tdfonts/font52.tdf diff
    ctrl/tdfonts/font53x.tdf diff
    ctrl/tdfonts/font54x.tdf diff
    ctrl/tdfonts/font55x.tdf diff
    ctrl/tdfonts/font56x.tdf diff
    ctrl/tdfonts/font57.tdf diff
    ctrl/tdfonts/font58x.tdf diff
    ctrl/tdfonts/font59x.tdf diff
    ctrl/tdfonts/font5x.tdf diff
    ctrl/tdfonts/font6.tdf diff
    ctrl/tdfonts/font60x.tdf diff
    ctrl/tdfonts/font61x.tdf diff
    ctrl/tdfonts/font62.tdf diff
    ctrl/tdfonts/font64.tdf diff
    ctrl/tdfonts/font65.tdf diff
    ctrl/tdfonts/font66.tdf diff
    ctrl/tdfonts/font67x.tdf diff
    ctrl/tdfonts/font68.tdf diff
    ctrl/tdfonts/font69.tdf diff
    ctrl/tdfonts/font7.tdf diff
    ctrl/tdfonts/font70.tdf diff
    ctrl/tdfonts/font71.tdf diff
    ctrl/tdfonts/font72.tdf diff
    ctrl/tdfonts/font72ox.tdf diff
    ctrl/tdfonts/font73.tdf diff
    ctrl/tdfonts/font74.tdf diff
    ctrl/tdfonts/font76x.tdf diff
    ctrl/tdfonts/font77.tdf diff
    ctrl/tdfonts/font78x.tdf diff
    ctrl/tdfonts/font79x.tdf diff
    ctrl/tdfonts/font8.tdf diff
    ctrl/tdfonts/font80.tdf diff
    ctrl/tdfonts/font81x.tdf diff
    ctrl/tdfonts/font82.tdf diff
    ctrl/tdfonts/font83x.tdf diff
    ctrl/tdfonts/font84x.tdf diff
    ctrl/tdfonts/font85.tdf diff
    ctrl/tdfonts/font9.tdf diff
    ctrl/tdfonts/forbiddx.tdf diff
    ctrl/tdfonts/forgotex.tdf diff
    ctrl/tdfonts/foundatx.tdf diff
    ctrl/tdfonts/fraktur.tdf diff
    ctrl/tdfonts/freak-10.tdf diff
    ctrl/tdfonts/freak-11.tdf diff
    ctrl/tdfonts/freak-2.tdf diff
    ctrl/tdfonts/freak-4.tdf diff
    ctrl/tdfonts/freak-5.tdf diff
    ctrl/tdfonts/freak112.tdf diff
    ctrl/tdfonts/freak_52.tdf diff
    ctrl/tdfonts/freeside.tdf diff
    ctrl/tdfonts/freside2.tdf diff
    ctrl/tdfonts/friendsp.tdf diff
    ctrl/tdfonts/frzmoon.tdf diff
    ctrl/tdfonts/ftegatex.tdf diff
    ctrl/tdfonts/fth.tdf diff
    ctrl/tdfonts/fundbird.tdf diff
    ctrl/tdfonts/fungi.tdf diff
    ctrl/tdfonts/future2x.tdf diff
    ctrl/tdfonts/galaxyx.tdf diff
    ctrl/tdfonts/ganglanx.tdf diff
    ctrl/tdfonts/gardenx.tdf diff
    ctrl/tdfonts/generatn.tdf diff
    ctrl/tdfonts/genocide.tdf diff
    ctrl/tdfonts/ghost.tdf diff
    ctrl/tdfonts/ghostx.tdf diff
    ctrl/tdfonts/glarex.tdf diff
    ctrl/tdfonts/gloomx.tdf diff
    ctrl/tdfonts/gloree.tdf diff
    ctrl/tdfonts/gluenew.tdf diff
    ctrl/tdfonts/gnarlyx.tdf diff
    ctrl/tdfonts/graffiti.tdf diff
    ctrl/tdfonts/grandx.tdf diff
    ctrl/tdfonts/graphicx.tdf diff
    ctrl/tdfonts/gravex.tdf diff
    ctrl/tdfonts/greedx.tdf diff
    ctrl/tdfonts/greenie.tdf diff
    ctrl/tdfonts/grnchaox.tdf diff
    ctrl/tdfonts/grndzero.tdf diff
    ctrl/tdfonts/grndzerx.tdf diff
    ctrl/tdfonts/grndzsml.tdf diff
    ctrl/tdfonts/grndzsmx.tdf diff
    ctrl/tdfonts/grnsht.tdf diff
    ctrl/tdfonts/grnshtx.tdf diff
    ctrl/tdfonts/grveyard.tdf diff
    ctrl/tdfonts/guardf2.tdf diff
    ctrl/tdfonts/guild.tdf diff
    ctrl/tdfonts/guild2.tdf diff
    ctrl/tdfonts/hack-tdf.tdf diff
    ctrl/tdfonts/hacker2.tdf diff
    ctrl/tdfonts/hackshck.tdf diff
    ctrl/tdfonts/hardtdfx.tdf diff
    ctrl/tdfonts/hardwrdx.tdf diff
    ctrl/tdfonts/harlot.tdf diff
    ctrl/tdfonts/harlotx.tdf diff
    ctrl/tdfonts/harvest.tdf diff
    ctrl/tdfonts/harvestx.tdf diff
    ctrl/tdfonts/hawkx.tdf diff
    ctrl/tdfonts/head.tdf diff
    ctrl/tdfonts/headx.tdf diff
    ctrl/tdfonts/helitech.tdf diff
    ctrl/tdfonts/helitecx.tdf diff
    ctrl/tdfonts/helium.tdf diff
    ctrl/tdfonts/hellhole.tdf diff
    ctrl/tdfonts/hellpay.tdf diff
    ctrl/tdfonts/heltsklx.tdf diff
    ctrl/tdfonts/hemi.tdf diff
    ctrl/tdfonts/hemisphx.tdf diff
    ctrl/tdfonts/hgsierax.tdf diff
    ctrl/tdfonts/hidden.tdf diff
    ctrl/tdfonts/hoard.tdf diff
    ctrl/tdfonts/hopeless.tdf diff
    ctrl/tdfonts/horr-tdf.tdf diff
    ctrl/tdfonts/hostess.tdf diff
    ctrl/tdfonts/hotbox.tdf diff
    ctrl/tdfonts/houn-tdf.tdf diff
    ctrl/tdfonts/housex.tdf diff
    ctrl/tdfonts/houstekx.tdf diff
    ctrl/tdfonts/hrdwirex.tdf diff
    ctrl/tdfonts/hs-effek.tdf diff
    ctrl/tdfonts/hunterx.tdf diff
    ctrl/tdfonts/hw.tdf diff
    ctrl/tdfonts/hwplated.tdf diff
    ctrl/tdfonts/hwx.tdf diff
    ctrl/tdfonts/hydrogen.tdf diff
    ctrl/tdfonts/hyperx.tdf diff
    ctrl/tdfonts/hypnosis.tdf diff
    ctrl/tdfonts/hysteria.tdf diff
    ctrl/tdfonts/iceblock.tdf diff
    ctrl/tdfonts/icefire.tdf diff
    ctrl/tdfonts/icex.tdf diff
    ctrl/tdfonts/icezonex.tdf diff
    ctrl/tdfonts/idesx.tdf diff
    ctrl/tdfonts/ilcommx.tdf diff
    ctrl/tdfonts/illcomm.tdf diff
    ctrl/tdfonts/illuchro.tdf diff
    ctrl/tdfonts/illusin2.tdf diff
    ctrl/tdfonts/illusion.tdf diff
    ctrl/tdfonts/ilusion3.tdf diff
    ctrl/tdfonts/images.tdf diff
    ctrl/tdfonts/imagesx.tdf diff
    ctrl/tdfonts/imgmnset.tdf diff
    ctrl/tdfonts/impact2x.tdf diff
    ctrl/tdfonts/impactx.tdf diff
    ctrl/tdfonts/inch.tdf diff
    ctrl/tdfonts/incircle.tdf diff
    ctrl/tdfonts/incirclx.tdf diff
    ctrl/tdfonts/incorped.tdf diff
    ctrl/tdfonts/incorpex.tdf diff
    ctrl/tdfonts/indesgrn.tdf diff
    ctrl/tdfonts/inertia.tdf diff
    ctrl/tdfonts/inertiax.tdf diff
    ctrl/tdfonts/inet.tdf diff
    ctrl/tdfonts/inetx.tdf diff
    ctrl/tdfonts/infinite.tdf diff
    ctrl/tdfonts/infinsrt.tdf diff
    ctrl/tdfonts/infinsrx.tdf diff
    ctrl/tdfonts/infozine.tdf diff
    ctrl/tdfonts/infozinx.tdf diff
    ctrl/tdfonts/inner.tdf diff
    ctrl/tdfonts/inocencx.tdf diff
    ctrl/tdfonts/insanex.tdf diff
    ctrl/tdfonts/insanity.tdf diff
    ctrl/tdfonts/insinsan.tdf diff
    ctrl/tdfonts/insinsax.tdf diff
    ctrl/tdfonts/insomiax.tdf diff
    ctrl/tdfonts/inspectx.tdf diff
    ctrl/tdfonts/intense.tdf diff
    ctrl/tdfonts/intensex.tdf diff
    ctrl/tdfonts/intentsx.tdf diff
    ctrl/tdfonts/internat.tdf diff
    ctrl/tdfonts/intoxicx.tdf diff
    ctrl/tdfonts/invasins.tdf diff
    ctrl/tdfonts/invasion.tdf diff
    ctrl/tdfonts/invasisx.tdf diff
    ctrl/tdfonts/iridium.tdf diff
    ctrl/tdfonts/itsover.tdf diff
    ctrl/tdfonts/jelly.tdf diff
    ctrl/tdfonts/juice.tdf diff
    ctrl/tdfonts/juicex.tdf diff
    ctrl/tdfonts/juvenocr.tdf diff
    ctrl/tdfonts/kansas.tdf diff
    ctrl/tdfonts/kevin1.tdf diff
    ctrl/tdfonts/kevin2.tdf diff
    ctrl/tdfonts/kevin4.tdf diff
    ctrl/tdfonts/kevin42.tdf diff
    ctrl/tdfonts/kevin5.tdf diff
    ctrl/tdfonts/kevin52.tdf diff
    ctrl/tdfonts/keys.tdf diff
    ctrl/tdfonts/kfcx.tdf diff
    ctrl/tdfonts/kissmy.tdf diff
    ctrl/tdfonts/kissmyx.tdf diff
    ctrl/tdfonts/knightsx.tdf diff
    ctrl/tdfonts/koders.tdf diff
    ctrl/tdfonts/krystal.tdf diff
    ctrl/tdfonts/krystalx.tdf diff
    ctrl/tdfonts/larry3d.tdf diff
    ctrl/tdfonts/lastbbs.tdf diff
    ctrl/tdfonts/lastdime.tdf diff
    ctrl/tdfonts/laughtex.tdf diff
    ctrl/tdfonts/league.tdf diff
    ctrl/tdfonts/leech.tdf diff
    ctrl/tdfonts/leeching.tdf diff
    ctrl/tdfonts/legacy.tdf diff
    ctrl/tdfonts/legacy2x.tdf diff
    ctrl/tdfonts/legcy3dx.tdf diff
    ctrl/tdfonts/leisure.tdf diff
    ctrl/tdfonts/leisurex.tdf diff
    ctrl/tdfonts/lgy3dbl.tdf diff
    ctrl/tdfonts/liar.tdf diff
    ctrl/tdfonts/limpyset.tdf diff
    ctrl/tdfonts/liquid.tdf diff
    ctrl/tdfonts/liquid2.tdf diff
    ctrl/tdfonts/live.tdf diff
    ctrl/tdfonts/lstsouls.tdf diff
    ctrl/tdfonts/lucidsrt.tdf diff
    ctrl/tdfonts/lucretix.tdf diff
    ctrl/tdfonts/madman.tdf diff
    ctrl/tdfonts/madman2.tdf diff
    ctrl/tdfonts/magazine.tdf diff
    ctrl/tdfonts/magicast.tdf diff
    ctrl/tdfonts/magnumx.tdf diff
    ctrl/tdfonts/majicx.tdf diff
    ctrl/tdfonts/malice.tdf diff
    ctrl/tdfonts/mappersx.tdf diff
    ctrl/tdfonts/masacrex.tdf diff
    ctrl/tdfonts/master.tdf diff
    ctrl/tdfonts/matrix.tdf diff
    ctrl/tdfonts/matrixx.tdf diff
    ctrl/tdfonts/maxfont2.tdf diff
    ctrl/tdfonts/maximum.tdf diff
    ctrl/tdfonts/maximumx.tdf diff
    ctrl/tdfonts/mechanic.tdf diff
    ctrl/tdfonts/mechresi.tdf diff
    ctrl/tdfonts/mechrest.tdf diff
    ctrl/tdfonts/members.tdf diff
    ctrl/tdfonts/memoryx.tdf diff
    ctrl/tdfonts/menacex.tdf diff
    ctrl/tdfonts/mercury.tdf diff
    ctrl/tdfonts/mercury2.tdf diff
    ctrl/tdfonts/mercuryx.tdf diff
    ctrl/tdfonts/mercuy3x.tdf diff
    ctrl/tdfonts/merry.tdf diff
    ctrl/tdfonts/messages.tdf diff
    ctrl/tdfonts/metal.tdf diff
    ctrl/tdfonts/metalix.tdf diff
    ctrl/tdfonts/metalix2.tdf diff
    ctrl/tdfonts/midas.tdf diff
    ctrl/tdfonts/midnight.tdf diff
    ctrl/tdfonts/mindbncx.tdf diff
    ctrl/tdfonts/mindstax.tdf diff
    ctrl/tdfonts/mindsx.tdf diff
    ctrl/tdfonts/mirrow2.tdf diff
    ctrl/tdfonts/money.tdf diff
    ctrl/tdfonts/moon1.tdf diff
    ctrl/tdfonts/moon2.tdf diff
    ctrl/tdfonts/moon3.tdf diff
    ctrl/tdfonts/morldecx.tdf diff
    ctrl/tdfonts/motion.tdf diff
    ctrl/tdfonts/mr.tdf diff
    ctrl/tdfonts/myfont.tdf diff
    ctrl/tdfonts/mystbye.tdf diff
    ctrl/tdfonts/mysteryx.tdf diff
    ctrl/tdfonts/mysticx.tdf diff
    ctrl/tdfonts/mystousx.tdf diff
    ctrl/tdfonts/nacho.tdf diff
    ctrl/tdfonts/nationx.tdf diff
    ctrl/tdfonts/negative.tdf diff
    ctrl/tdfonts/neon.tdf diff
    ctrl/tdfonts/nestred.tdf diff
    ctrl/tdfonts/nestx.tdf diff
    ctrl/tdfonts/neurosix.tdf diff
    ctrl/tdfonts/neurosmx.tdf diff
    ctrl/tdfonts/neurrndx.tdf diff
    ctrl/tdfonts/neutralx.tdf diff
    ctrl/tdfonts/newhavnx.tdf diff
    ctrl/tdfonts/newsletx.tdf diff
    ctrl/tdfonts/newsx.tdf diff
    ctrl/tdfonts/nexus.tdf diff
    ctrl/tdfonts/nghtmare.tdf diff
    ctrl/tdfonts/ngthshdx.tdf diff
    ctrl/tdfonts/nicex.tdf diff
    ctrl/tdfonts/nigtmgrx.tdf diff
    ctrl/tdfonts/nirvana.tdf diff
    ctrl/tdfonts/nirvana2.tdf diff
    ctrl/tdfonts/nmswhq.tdf diff
    ctrl/tdfonts/nocariex.tdf diff
    ctrl/tdfonts/nodelay.tdf diff
    ctrl/tdfonts/nodespyx.tdf diff
    ctrl/tdfonts/nope.tdf diff
    ctrl/tdfonts/nope2.tdf diff
    ctrl/tdfonts/northerx.tdf diff
    ctrl/tdfonts/novax.tdf diff
    ctrl/tdfonts/nox.tdf diff
    ctrl/tdfonts/nrthstar.tdf diff
    ctrl/tdfonts/nsa.tdf diff
    ctrl/tdfonts/nuclear.tdf diff
    ctrl/tdfonts/nukex.tdf diff
    ctrl/tdfonts/nuklearx.tdf diff
    ctrl/tdfonts/nycotine.tdf diff
    ctrl/tdfonts/nyndee.tdf diff
    ctrl/tdfonts/oblivion.tdf diff
    ctrl/tdfonts/oblivred.tdf diff
    ctrl/tdfonts/obsesss.tdf diff
    ctrl/tdfonts/obvlrdsm.tdf diff
    ctrl/tdfonts/oceana.tdf diff
    ctrl/tdfonts/odb.tdf diff
    ctrl/tdfonts/one.tdf diff
    ctrl/tdfonts/onelinex.tdf diff
    ctrl/tdfonts/onkelzx.tdf diff
    ctrl/tdfonts/optical.tdf diff
    ctrl/tdfonts/outfont1.tdf diff
    ctrl/tdfonts/outlinex.tdf diff
    ctrl/tdfonts/outpost.tdf diff
    ctrl/tdfonts/outpost2.tdf diff
    ctrl/tdfonts/overdosx.tdf diff
    ctrl/tdfonts/pagan.tdf diff
    ctrl/tdfonts/paganrhx.tdf diff
    ctrl/tdfonts/paincave.tdf diff
    ctrl/tdfonts/palace.tdf diff
    ctrl/tdfonts/palace2x.tdf diff
    ctrl/tdfonts/paladiux.tdf diff
    ctrl/tdfonts/pandemon.tdf diff
    ctrl/tdfonts/pangeax.tdf diff
    ctrl/tdfonts/pantheon.tdf diff
    ctrl/tdfonts/paradigm.tdf diff
    ctrl/tdfonts/paramntx.tdf diff
    ctrl/tdfonts/paridoxx.tdf diff
    ctrl/tdfonts/partyx.tdf diff
    ctrl/tdfonts/patex.tdf diff
    ctrl/tdfonts/pcboard.tdf diff
    ctrl/tdfonts/pentagrx.tdf diff
    ctrl/tdfonts/pepper.tdf diff
    ctrl/tdfonts/persuasx.tdf diff
    ctrl/tdfonts/pex.tdf diff
    ctrl/tdfonts/phalanx.tdf diff
    ctrl/tdfonts/phalnxx.tdf diff
    ctrl/tdfonts/pharcydx.tdf diff
    ctrl/tdfonts/phiber1x.tdf diff
    ctrl/tdfonts/phiber2.tdf diff
    ctrl/tdfonts/phiberx.tdf diff
    ctrl/tdfonts/phonx.tdf diff
    ctrl/tdfonts/phuck.tdf diff
    ctrl/tdfonts/phudge.tdf diff
    ctrl/tdfonts/pinaclex.tdf diff
    ctrl/tdfonts/pipeline.tdf diff
    ctrl/tdfonts/pirates.tdf diff
    ctrl/tdfonts/pitsx.tdf diff
    ctrl/tdfonts/pittyx.tdf diff
    ctrl/tdfonts/platzang.tdf diff
    ctrl/tdfonts/poisonx.tdf diff
    ctrl/tdfonts/policex.tdf diff
    ctrl/tdfonts/portal.tdf diff
    ctrl/tdfonts/powrgrdx.tdf diff
    ctrl/tdfonts/prdctnsx.tdf diff
    ctrl/tdfonts/presurex.tdf diff
    ctrl/tdfonts/primelin.tdf diff
    ctrl/tdfonts/primelix.tdf diff
    ctrl/tdfonts/prisoner.tdf diff
    ctrl/tdfonts/prjet13x.tdf diff
    ctrl/tdfonts/proctor.tdf diff
    ctrl/tdfonts/prophecy.tdf diff
    ctrl/tdfonts/props.tdf diff
    ctrl/tdfonts/prototyp.tdf diff
    ctrl/tdfonts/prpugrdx.tdf diff
    ctrl/tdfonts/psych3dx.tdf diff
    ctrl/tdfonts/psycho2.tdf diff
    ctrl/tdfonts/psycho3x.tdf diff
    ctrl/tdfonts/psychos2.tdf diff
    ctrl/tdfonts/psychosm.tdf diff
    ctrl/tdfonts/psychsyx.tdf diff
    ctrl/tdfonts/psycosix.tdf diff
    ctrl/tdfonts/psyneuro.tdf diff
    ctrl/tdfonts/pulsex.tdf diff
    ctrl/tdfonts/puncx.tdf diff
    ctrl/tdfonts/punishtx.tdf diff
    ctrl/tdfonts/puremadx.tdf diff
    ctrl/tdfonts/pushead.tdf diff
    ctrl/tdfonts/quazarx.tdf diff
    ctrl/tdfonts/radiancx.tdf diff
    ctrl/tdfonts/ragnarkx.tdf diff
    ctrl/tdfonts/rainx.tdf diff
    ctrl/tdfonts/rapidcol.tdf diff
    ctrl/tdfonts/rastaa.tdf diff
    ctrl/tdfonts/ravaged.tdf diff
    ctrl/tdfonts/rave.tdf diff
    ctrl/tdfonts/razor1x.tdf diff
    ctrl/tdfonts/razor2.tdf diff
    ctrl/tdfonts/razor3.tdf diff
    ctrl/tdfonts/razorx.tdf diff
    ctrl/tdfonts/realityx.tdf diff
    ctrl/tdfonts/rebelart.tdf diff
    ctrl/tdfonts/rebelion.tdf diff
    ctrl/tdfonts/rebell.tdf diff
    ctrl/tdfonts/regency.tdf diff
    ctrl/tdfonts/regulatx.tdf diff
    ctrl/tdfonts/reguoutx.tdf diff
    ctrl/tdfonts/remorse.tdf diff
    ctrl/tdfonts/request.tdf diff
    ctrl/tdfonts/resista2.tdf diff
    ctrl/tdfonts/resistan.tdf diff
    ctrl/tdfonts/resistax.tdf diff
    ctrl/tdfonts/retribtx.tdf diff
    ctrl/tdfonts/review.tdf diff
    ctrl/tdfonts/revisiox.tdf diff
    ctrl/tdfonts/revolutx.tdf diff
    ctrl/tdfonts/ripper.tdf diff
    ctrl/tdfonts/rivndelx.tdf diff
    ctrl/tdfonts/rod-blue.tdf diff
    ctrl/tdfonts/rod-grn.tdf diff
    ctrl/tdfonts/rod-nav.tdf diff
    ctrl/tdfonts/rod-red.tdf diff
    ctrl/tdfonts/romannsl.tdf diff
    ctrl/tdfonts/roundx.tdf diff
    ctrl/tdfonts/roy-olsx.tdf diff
    ctrl/tdfonts/roy3d.tdf diff
    ctrl/tdfonts/royfivex.tdf diff
    ctrl/tdfonts/royfnt1.tdf diff
    ctrl/tdfonts/royfour.tdf diff
    ctrl/tdfonts/royfour2.tdf diff
    ctrl/tdfonts/roysac2c.tdf diff
    ctrl/tdfonts/roysacos.tdf diff
    ctrl/tdfonts/rozzy.tdf diff
    ctrl/tdfonts/rozzyx.tdf diff
    ctrl/tdfonts/runner.tdf diff
    ctrl/tdfonts/rust.tdf diff
    ctrl/tdfonts/rusty.tdf diff
    ctrl/tdfonts/sabotagc.tdf diff
    ctrl/tdfonts/sabotg2x.tdf diff
    ctrl/tdfonts/sac.tdf diff
    ctrl/tdfonts/sacgrenx.tdf diff
    ctrl/tdfonts/sadistx.tdf diff
    ctrl/tdfonts/salvatnx.tdf diff
    ctrl/tdfonts/sanctx.tdf diff
    ctrl/tdfonts/sanitarx.tdf diff
    ctrl/tdfonts/sanktryx.tdf diff
    ctrl/tdfonts/sanktuary.tdf diff
    ctrl/tdfonts/savagex.tdf diff
    ctrl/tdfonts/scd-l2x.tdf diff
    ctrl/tdfonts/scd-line.tdf diff
    ctrl/tdfonts/sector.tdf diff
    ctrl/tdfonts/sector2x.tdf diff
    ctrl/tdfonts/sectorx.tdf diff
    ctrl/tdfonts/seedsx.tdf diff
    ctrl/tdfonts/seleven.tdf diff
    ctrl/tdfonts/sensex.tdf diff
    ctrl/tdfonts/serpentx.tdf diff
    ctrl/tdfonts/severedx.tdf diff
    ctrl/tdfonts/shadlndx.tdf diff
    ctrl/tdfonts/shadwlsx.tdf diff
    ctrl/tdfonts/shadwsx.tdf diff
    ctrl/tdfonts/shallowx.tdf diff
    ctrl/tdfonts/shaolin2.tdf diff
    ctrl/tdfonts/shaolins.tdf diff
    ctrl/tdfonts/shaolyn.tdf diff
    ctrl/tdfonts/shaolynx.tdf diff
    ctrl/tdfonts/shaos.tdf diff
    ctrl/tdfonts/shaosx.tdf diff
    ctrl/tdfonts/shaotis.tdf diff
    ctrl/tdfonts/sheaven.tdf diff
    ctrl/tdfonts/sheavenx.tdf diff
    ctrl/tdfonts/shelznsh.tdf diff
    ctrl/tdfonts/shelzone.tdf diff
    ctrl/tdfonts/shlnvert.tdf diff
    ctrl/tdfonts/shodanx.tdf diff
    ctrl/tdfonts/shrimpx.tdf diff
    ctrl/tdfonts/shrooms.tdf diff
    ctrl/tdfonts/shsystem.tdf diff
    ctrl/tdfonts/sidepock.tdf diff
    ctrl/tdfonts/sidepokx.tdf diff
    ctrl/tdfonts/silicon2.tdf diff
    ctrl/tdfonts/silicsht.tdf diff
    ctrl/tdfonts/silver2.tdf diff
    ctrl/tdfonts/silverx.tdf diff
    ctrl/tdfonts/siversx.tdf diff
    ctrl/tdfonts/skillion.tdf diff
    ctrl/tdfonts/skyligtx.tdf diff
    ctrl/tdfonts/sloup.tdf diff
    ctrl/tdfonts/smat.tdf diff
    ctrl/tdfonts/societyx.tdf diff
    ctrl/tdfonts/sodapop.tdf diff
    ctrl/tdfonts/sole.tdf diff
    ctrl/tdfonts/sonic.tdf diff
    ctrl/tdfonts/sonicx.tdf diff
    ctrl/tdfonts/spacelnk.tdf diff
    ctrl/tdfonts/spacelnx.tdf diff
    ctrl/tdfonts/spanish.tdf diff
    ctrl/tdfonts/spastc4x.tdf diff
    ctrl/tdfonts/spastc5x.tdf diff
    ctrl/tdfonts/spastic1.tdf diff
    ctrl/tdfonts/spastic2.tdf diff
    ctrl/tdfonts/spastic3.tdf diff
    ctrl/tdfonts/spawn.tdf diff
    ctrl/tdfonts/spedwayx.tdf diff
    ctrl/tdfonts/speedway.tdf diff
    ctrl/tdfonts/splat.tdf diff
    ctrl/tdfonts/splathos.tdf diff
    ctrl/tdfonts/splooge.tdf diff
    ctrl/tdfonts/spyrit.tdf diff
    ctrl/tdfonts/stampx.tdf diff
    ctrl/tdfonts/star.tdf diff
    ctrl/tdfonts/star2x.tdf diff
    ctrl/tdfonts/star3dx.tdf diff
    ctrl/tdfonts/stargatx.tdf diff
    ctrl/tdfonts/stasis.tdf diff
    ctrl/tdfonts/static.tdf diff
    ctrl/tdfonts/statisx.tdf diff
    ctrl/tdfonts/stats.tdf diff
    ctrl/tdfonts/statsrs.tdf diff
    ctrl/tdfonts/steelx.tdf diff
    ctrl/tdfonts/stncirc1.tdf diff
    ctrl/tdfonts/stncirc2.tdf diff
    ctrl/tdfonts/stormx.tdf diff
    ctrl/tdfonts/strabery.tdf diff
    ctrl/tdfonts/stripesx.tdf diff
    ctrl/tdfonts/stripssx.tdf diff
    ctrl/tdfonts/stupidx.tdf diff
    ctrl/tdfonts/sub.tdf diff
    ctrl/tdfonts/succo2x.tdf diff
    ctrl/tdfonts/succox.tdf diff
    ctrl/tdfonts/sucker.tdf diff
    ctrl/tdfonts/suicidax.tdf diff
    ctrl/tdfonts/summit.tdf diff
    ctrl/tdfonts/sunrise.tdf diff
    ctrl/tdfonts/sunshnex.tdf diff
    ctrl/tdfonts/sunyshne.tdf diff
    ctrl/tdfonts/super.tdf diff
    ctrl/tdfonts/superilu.tdf diff
    ctrl/tdfonts/suprem2x.tdf diff
    ctrl/tdfonts/supremcy.tdf diff
    ctrl/tdfonts/supreme.tdf diff
    ctrl/tdfonts/supreme2.tdf diff
    ctrl/tdfonts/syndicat.tdf diff
    ctrl/tdfonts/syndrome.tdf diff
    ctrl/tdfonts/synergy.tdf diff
    ctrl/tdfonts/synrdsrx.tdf diff
    ctrl/tdfonts/synrgisx.tdf diff
    ctrl/tdfonts/synthicx.tdf diff
    ctrl/tdfonts/synthmem.tdf diff
    ctrl/tdfonts/synthtic.tdf diff
    ctrl/tdfonts/talent.tdf diff
    ctrl/tdfonts/talent2.tdf diff
    ctrl/tdfonts/tcax.tdf diff
    ctrl/tdfonts/tddx.tdf diff
    ctrl/tdfonts/tdu.tdf diff
    ctrl/tdfonts/teapotx.tdf diff
    ctrl/tdfonts/termitex.tdf diff
    ctrl/tdfonts/tfh.tdf diff
    ctrl/tdfonts/the_edge.tdf diff
    ctrl/tdfonts/thenstax.tdf diff
    ctrl/tdfonts/theroadx.tdf diff
    ctrl/tdfonts/thesanct.tdf diff
    ctrl/tdfonts/thieves.tdf diff
    ctrl/tdfonts/thievs2x.tdf diff
    ctrl/tdfonts/thievsml.tdf diff
    ctrl/tdfonts/thin2.tdf diff
    ctrl/tdfonts/thinx.tdf diff
    ctrl/tdfonts/this!.tdf diff
    ctrl/tdfonts/thivsmlx.tdf diff
    ctrl/tdfonts/thsanctx.tdf diff
    ctrl/tdfonts/ticcol.tdf diff
    ctrl/tdfonts/timspirx.tdf diff
    ctrl/tdfonts/tincans.tdf diff
    ctrl/tdfonts/tiny.tdf diff
    ctrl/tdfonts/toasterx.tdf diff
    ctrl/tdfonts/tokyo.tdf diff
    ctrl/tdfonts/tower.tdf diff
    ctrl/tdfonts/tower2.tdf diff
    ctrl/tdfonts/townsmlx.tdf diff
    ctrl/tdfonts/townx.tdf diff
    ctrl/tdfonts/toxic.tdf diff
    ctrl/tdfonts/traces.tdf diff
    ctrl/tdfonts/tranqilx.tdf diff
    ctrl/tdfonts/tribesx.tdf diff
    ctrl/tdfonts/tribwrit.tdf diff
    ctrl/tdfonts/tronicsx.tdf diff
    ctrl/tdfonts/troutx.tdf diff
    ctrl/tdfonts/tucx.tdf diff
    ctrl/tdfonts/tumoil.tdf diff
    ctrl/tdfonts/tusse.tdf diff
    ctrl/tdfonts/twistedx.tdf diff
    ctrl/tdfonts/twoyears.tdf diff
    ctrl/tdfonts/udm1x.tdf diff
    ctrl/tdfonts/udmfire.tdf diff
    ctrl/tdfonts/ugrndftr.tdf diff
    ctrl/tdfonts/unchainx.tdf diff
    ctrl/tdfonts/under.tdf diff
    ctrl/tdfonts/undergd2.tdf diff
    ctrl/tdfonts/underwld.tdf diff
    ctrl/tdfonts/undrgdsx.tdf diff
    ctrl/tdfonts/undrgrn2.tdf diff
    ctrl/tdfonts/undrgrnd.tdf diff
    ctrl/tdfonts/undrgrwn.tdf diff
    ctrl/tdfonts/undrwldx.tdf diff
    ctrl/tdfonts/ungrwing.tdf diff
    ctrl/tdfonts/ungrwnxx.tdf diff
    ctrl/tdfonts/unholyx.tdf diff
    ctrl/tdfonts/union.tdf diff
    ctrl/tdfonts/union2.tdf diff
    ctrl/tdfonts/unknownx.tdf diff
    ctrl/tdfonts/unox.tdf diff
    ctrl/tdfonts/unreal.tdf diff
    ctrl/tdfonts/unsane.tdf diff
    ctrl/tdfonts/unsanex.tdf diff
    ctrl/tdfonts/unsnfate.tdf diff
    ctrl/tdfonts/untx.tdf diff
    ctrl/tdfonts/upcorx.tdf diff
    ctrl/tdfonts/uprise.tdf diff
    ctrl/tdfonts/uprise2x.tdf diff
    ctrl/tdfonts/usaflag.tdf diff
    ctrl/tdfonts/user.tdf diff
    ctrl/tdfonts/user2.tdf diff
    ctrl/tdfonts/userstsx.tdf diff
    ctrl/tdfonts/usex.tdf diff
    ctrl/tdfonts/usflgcol.tdf diff
    ctrl/tdfonts/utopanx.tdf diff
    ctrl/tdfonts/valleyx.tdf diff
    ctrl/tdfonts/vampyrex.tdf diff
    ctrl/tdfonts/vasniakx.tdf diff
    ctrl/tdfonts/vdo_1.tdf diff
    ctrl/tdfonts/vengancx.tdf diff
    ctrl/tdfonts/vibrntsx.tdf diff
    ctrl/tdfonts/vintage.tdf diff
    ctrl/tdfonts/violent.tdf diff
    ctrl/tdfonts/virtacxs.tdf diff
    ctrl/tdfonts/vision2.tdf diff
    ctrl/tdfonts/vision3.tdf diff
    ctrl/tdfonts/visionsx.tdf diff
    ctrl/tdfonts/visionx.tdf diff
    ctrl/tdfonts/visionxx.tdf diff
    ctrl/tdfonts/voices.tdf diff
    ctrl/tdfonts/voidx.tdf diff
    ctrl/tdfonts/wallx.tdf diff
    ctrl/tdfonts/warzonex.tdf diff
    ctrl/tdfonts/watchdgx.tdf diff
    ctrl/tdfonts/water.tdf diff
    ctrl/tdfonts/weird.tdf diff
    ctrl/tdfonts/wellfare.tdf diff
    ctrl/tdfonts/whirwinx.tdf diff
    ctrl/tdfonts/white-bl.tdf diff
    ctrl/tdfonts/whox.tdf diff
    ctrl/tdfonts/wicked.tdf diff
    ctrl/tdfonts/wild.tdf diff
    ctrl/tdfonts/wildchld.tdf diff
    ctrl/tdfonts/wildsidx.tdf diff
    ctrl/tdfonts/wpaint.tdf diff
    ctrl/tdfonts/x-tremex.tdf diff
    ctrl/tdfonts/xentrx1x.tdf diff
    ctrl/tdfonts/xfontx.tdf diff
    ctrl/tdfonts/xmas.tdf diff
    ctrl/tdfonts/yazoox.tdf diff
    ctrl/tdfonts/zane.tdf diff
    ctrl/tdfonts/zanex.tdf diff
    ctrl/tdfonts/zetrax.tdf diff
    ctrl/tdfonts/zookx.tdf diff
    exec/load/tdfonts_lib.js diff
    Merge branch 'add_tdfonts' into 'master' Adding start of tdfonts library. See merge request main/sbbs!532

  107. Nigel Reed
    Tue Apr 22 2025 13:36:36 GMT-0700 (PDT)
    Added Files:
    

    ctrl/tdfonts/1911.tdf diff
    ctrl/tdfonts/1911x.tdf diff
    ctrl/tdfonts/208.tdf diff
    ctrl/tdfonts/208x.tdf diff
    ctrl/tdfonts/3d-ascii.tdf diff
    ctrl/tdfonts/4maxcol.tdf diff
    ctrl/tdfonts/aaa.tdf diff
    ctrl/tdfonts/aaax.tdf diff
    ctrl/tdfonts/aardvark.tdf diff
    ctrl/tdfonts/abbadon.tdf diff
    ctrl/tdfonts/access.tdf diff
    ctrl/tdfonts/acheronx.tdf diff
    ctrl/tdfonts/acid3dx.tdf diff
    ctrl/tdfonts/acidnewx.tdf diff
    ctrl/tdfonts/acidsc2x.tdf diff
    ctrl/tdfonts/acidscpx.tdf diff
    ctrl/tdfonts/acidtron.tdf diff
    ctrl/tdfonts/acidx.tdf diff
    ctrl/tdfonts/acrylicx.tdf diff
    ctrl/tdfonts/adomex.tdf diff
    ctrl/tdfonts/adrenax.tdf diff
    ctrl/tdfonts/adrknesx.tdf diff
    ctrl/tdfonts/advocate.tdf diff
    ctrl/tdfonts/aftrdarx.tdf diff
    ctrl/tdfonts/aftrhoux.tdf diff
    ctrl/tdfonts/agony.tdf diff
    ctrl/tdfonts/agony2x.tdf diff
    ctrl/tdfonts/alchemyx.tdf diff
    ctrl/tdfonts/alfheimx.tdf diff
    ctrl/tdfonts/alienled.tdf diff
    ctrl/tdfonts/alphax.tdf diff
    ctrl/tdfonts/amazonx.tdf diff
    ctrl/tdfonts/ambush2.tdf diff
    ctrl/tdfonts/ambushs.tdf diff
    ctrl/tdfonts/ambushx.tdf diff
    ctrl/tdfonts/amcneko.tdf diff
    ctrl/tdfonts/amnesia.tdf diff
    ctrl/tdfonts/amnesiax.tdf diff
    ctrl/tdfonts/anarchyx.tdf diff
    ctrl/tdfonts/andromed.tdf diff
    ctrl/tdfonts/anemiax.tdf diff
    ctrl/tdfonts/anemiaxx.tdf diff
    ctrl/tdfonts/angldust.tdf diff
    ctrl/tdfonts/anniverx.tdf diff
    ctrl/tdfonts/anomalix.tdf diff
    ctrl/tdfonts/apocal2x.tdf diff
    ctrl/tdfonts/apotm.tdf diff
    ctrl/tdfonts/apovisnx.tdf diff
    ctrl/tdfonts/appocalx.tdf diff
    ctrl/tdfonts/arcane.tdf diff
    ctrl/tdfonts/archana.tdf diff
    ctrl/tdfonts/areaconx.tdf diff
    ctrl/tdfonts/areax.tdf diff
    ctrl/tdfonts/armagdnx.tdf diff
    ctrl/tdfonts/ascii.tdf diff
    ctrl/tdfonts/assylum.tdf diff
    ctrl/tdfonts/assylumx.tdf diff
    ctrl/tdfonts/astronmx.tdf diff
    ctrl/tdfonts/asylumx.tdf diff
    ctrl/tdfonts/atbx.tdf diff
    ctrl/tdfonts/atlansmx.tdf diff
    ctrl/tdfonts/atlantix.tdf diff
    ctrl/tdfonts/atomicx.tdf diff
    ctrl/tdfonts/atomx.tdf diff
    ctrl/tdfonts/attitudx.tdf diff
    ctrl/tdfonts/audiofil.tdf diff
    ctrl/tdfonts/badlandx.tdf diff
    ctrl/tdfonts/balistcx.tdf diff
    ctrl/tdfonts/bamboosx.tdf diff
    ctrl/tdfonts/banshee.tdf diff
    ctrl/tdfonts/bansheex.tdf diff
    ctrl/tdfonts/bbstx.tdf diff
    ctrl/tdfonts/beast.tdf diff
    ctrl/tdfonts/belfastx.tdf diff
    ctrl/tdfonts/bevisiox.tdf diff
    ctrl/tdfonts/beyond2x.tdf diff
    ctrl/tdfonts/beyondx.tdf diff
    ctrl/tdfonts/bigice_f.tdf diff
    ctrl/tdfonts/bigl2.tdf diff
    ctrl/tdfonts/biglimpy.tdf diff
    ctrl/tdfonts/biohazrx.tdf diff
    ctrl/tdfonts/bismarcx.tdf diff
    ctrl/tdfonts/bitchvrx.tdf diff
    ctrl/tdfonts/bizarrax.tdf diff
    ctrl/tdfonts/blacksun.tdf diff
    ctrl/tdfonts/blacksux.tdf diff
    ctrl/tdfonts/blackx.tdf diff
    ctrl/tdfonts/bladex.tdf diff
    ctrl/tdfonts/blah.tdf diff
    ctrl/tdfonts/blahx.tdf diff
    ctrl/tdfonts/blcksunx.tdf diff
    ctrl/tdfonts/blcktrnc.tdf diff
    ctrl/tdfonts/bleach.tdf diff
    ctrl/tdfonts/blendr1x.tdf diff
    ctrl/tdfonts/blendr2x.tdf diff
    ctrl/tdfonts/blevx.tdf diff
    ctrl/tdfonts/blisterx.tdf diff
    ctrl/tdfonts/block.tdf diff
    ctrl/tdfonts/block3d.tdf diff
    ctrl/tdfonts/block3dx.tdf diff
    ctrl/tdfonts/bloodlg.tdf diff
    ctrl/tdfonts/bloodlgc.tdf diff
    ctrl/tdfonts/bloodsmc.tdf diff
    ctrl/tdfonts/bloodsml.tdf diff
    ctrl/tdfonts/bloodyx.tdf diff
    ctrl/tdfonts/blueescx.tdf diff
    ctrl/tdfonts/blwtorcx.tdf diff
    ctrl/tdfonts/boardx.tdf diff
    ctrl/tdfonts/bodily.tdf diff
    ctrl/tdfonts/bodycnt.tdf diff
    ctrl/tdfonts/bodycntx.tdf diff
    ctrl/tdfonts/bodyelex.tdf diff
    ctrl/tdfonts/bollux.tdf diff
    ctrl/tdfonts/bolluxx.tdf diff
    ctrl/tdfonts/bonerx.tdf diff
    ctrl/tdfonts/bonex.tdf diff
    ctrl/tdfonts/bongx.tdf diff
    ctrl/tdfonts/boxfight.tdf diff
    ctrl/tdfonts/bravex.tdf diff
    ctrl/tdfonts/brazenx.tdf diff
    ctrl/tdfonts/breachx.tdf diff
    ctrl/tdfonts/breakx.tdf diff
    ctrl/tdfonts/brex.tdf diff
    ctrl/tdfonts/brickx.tdf diff
    ctrl/tdfonts/brink.tdf diff
    ctrl/tdfonts/brinkx.tdf diff
    ctrl/tdfonts/brndamgx.tdf diff
    ctrl/tdfonts/brokenx.tdf diff
    ctrl/tdfonts/broknsrt.tdf diff
    ctrl/tdfonts/brothood.tdf diff
    ctrl/tdfonts/bubacol.tdf diff
    ctrl/tdfonts/buffalo.tdf diff
    ctrl/tdfonts/burningx.tdf diff
    ctrl/tdfonts/cafex.tdf diff
    ctrl/tdfonts/califorx.tdf diff
    ctrl/tdfonts/capitalx.tdf diff
    ctrl/tdfonts/carbonx.tdf diff
    ctrl/tdfonts/cardinax.tdf diff
    ctrl/tdfonts/cartelx.tdf diff
    ctrl/tdfonts/cartoon.tdf diff
    ctrl/tdfonts/casinox.tdf diff
    ctrl/tdfonts/castlex.tdf diff
    ctrl/tdfonts/catlkinx.tdf diff
    ctrl/tdfonts/cattlex.tdf diff
    ctrl/tdfonts/ccinx.tdf diff
    ctrl/tdfonts/celertyx.tdf diff
    ctrl/tdfonts/cemetary.tdf diff
    ctrl/tdfonts/cesspoox.tdf diff
    ctrl/tdfonts/cfh-hoer.tdf diff
    ctrl/tdfonts/cfh-horx.tdf diff
    ctrl/tdfonts/cfh-snow.tdf diff
    ctrl/tdfonts/cfh-snwx.tdf diff
    ctrl/tdfonts/chamberx.tdf diff
    ctrl/tdfonts/channelx.tdf diff
    ctrl/tdfonts/chaos2x.tdf diff
    ctrl/tdfonts/chaosenx.tdf diff
    ctrl/tdfonts/chaoticx.tdf diff
    ctrl/tdfonts/chazergx.tdf diff
    ctrl/tdfonts/children.tdf diff
    ctrl/tdfonts/chnlzero.tdf diff
    ctrl/tdfonts/chromax.tdf diff
    ctrl/tdfonts/chronox.tdf diff
    ctrl/tdfonts/churchx.tdf diff
    ctrl/tdfonts/ciafontx.tdf diff
    ctrl/tdfonts/circutsx.tdf diff
    ctrl/tdfonts/cityx.tdf diff
    ctrl/tdfonts/cldcityx.tdf diff
    ctrl/tdfonts/closedx.tdf diff
    ctrl/tdfonts/cnerip.tdf diff
    ctrl/tdfonts/coderx.tdf diff
    ctrl/tdfonts/codex.tdf diff
    ctrl/tdfonts/colony.tdf diff
    ctrl/tdfonts/color.tdf diff
    ctrl/tdfonts/color_.tdf diff
    ctrl/tdfonts/colorhrd.tdf diff
    ctrl/tdfonts/coloscol.tdf diff
    ctrl/tdfonts/coloseux.tdf diff
    ctrl/tdfonts/colossal.tdf diff
    ctrl/tdfonts/coloursx.tdf diff
    ctrl/tdfonts/commx.tdf diff
    ctrl/tdfonts/computrx.tdf diff
    ctrl/tdfonts/consolex.tdf diff
    ctrl/tdfonts/continux.tdf diff
    ctrl/tdfonts/convulsx.tdf diff
    ctrl/tdfonts/cop-bh.tdf diff
    ctrl/tdfonts/cop_ch1.tdf diff
    ctrl/tdfonts/corosv2x.tdf diff
    ctrl/tdfonts/corpse.tdf diff
    ctrl/tdfonts/corrosox.tdf diff
    ctrl/tdfonts/coruptnx.tdf diff
    ctrl/tdfonts/cosmic.tdf diff
    ctrl/tdfonts/cosmicco.tdf diff
    ctrl/tdfonts/countx.tdf diff
    ctrl/tdfonts/courierx.tdf diff
    ctrl/tdfonts/cr-x.tdf diff
    ctrl/tdfonts/crazedx.tdf diff
    ctrl/tdfonts/creatiox.tdf diff
    ctrl/tdfonts/creatorx.tdf diff
    ctrl/tdfonts/creepx.tdf diff
    ctrl/tdfonts/crestclx.tdf diff
    ctrl/tdfonts/crewelx.tdf diff
    ctrl/tdfonts/crimrinx.tdf diff
    ctrl/tdfonts/crimson.tdf diff
    ctrl/tdfonts/crisisx.tdf diff
    ctrl/tdfonts/crosroax.tdf diff
    ctrl/tdfonts/cryptic.tdf diff
    ctrl/tdfonts/crystalx.tdf diff
    ctrl/tdfonts/crzymadx.tdf diff
    ctrl/tdfonts/cyanidx.tdf diff
    ctrl/tdfonts/cybcrtwx.tdf diff
    ctrl/tdfonts/cybera2x.tdf diff
    ctrl/tdfonts/cyberia1.tdf diff
    ctrl/tdfonts/cybernx.tdf diff
    ctrl/tdfonts/cyberrrx.tdf diff
    ctrl/tdfonts/cyberwrx.tdf diff
    ctrl/tdfonts/cyberwx.tdf diff
    ctrl/tdfonts/cybrcrme.tdf diff
    ctrl/tdfonts/cybrfrcx.tdf diff
    ctrl/tdfonts/damagex.tdf diff
    ctrl/tdfonts/damnatnx.tdf diff
    ctrl/tdfonts/damnedx.tdf diff
    ctrl/tdfonts/dangerfx.tdf diff
    ctrl/tdfonts/dangerx.tdf diff
    ctrl/tdfonts/dark.tdf diff
    ctrl/tdfonts/darkcrux.tdf diff
    ctrl/tdfonts/darkers1.tdf diff
    ctrl/tdfonts/darkers2.tdf diff
    ctrl/tdfonts/darklanx.tdf diff
    ctrl/tdfonts/darklitx.tdf diff
    ctrl/tdfonts/darkmoon.tdf diff
    ctrl/tdfonts/darkn2sx.tdf diff
    ctrl/tdfonts/darknses.tdf diff
    ctrl/tdfonts/darksidx.tdf diff
    ctrl/tdfonts/darksun.tdf diff
    ctrl/tdfonts/darksunx.tdf diff
    ctrl/tdfonts/darktwo.tdf diff
    ctrl/tdfonts/darrell.tdf diff
    ctrl/tdfonts/darrellx.tdf diff
    ctrl/tdfonts/dcfont.tdf diff
    ctrl/tdfonts/dcp_1.tdf diff
    ctrl/tdfonts/deadrelm.tdf diff
    ctrl/tdfonts/deadstar.tdf diff
    ctrl/tdfonts/deadstrx.tdf diff
    ctrl/tdfonts/death.tdf diff
    ctrl/tdfonts/deathrow.tdf diff
    ctrl/tdfonts/deathx.tdf diff
    ctrl/tdfonts/deep.tdf diff
    ctrl/tdfonts/dellx.tdf diff
    ctrl/tdfonts/delusion.tdf diff
    ctrl/tdfonts/demonclx.tdf diff
    ctrl/tdfonts/demonic.tdf diff
    ctrl/tdfonts/denied.tdf diff
    ctrl/tdfonts/descentx.tdf diff
    ctrl/tdfonts/descntsx.tdf diff
    ctrl/tdfonts/desertx.tdf diff
    ctrl/tdfonts/desnudo.tdf diff
    ctrl/tdfonts/destinx.tdf diff
    ctrl/tdfonts/destny2x.tdf diff
    ctrl/tdfonts/destrucx.tdf diff
    ctrl/tdfonts/developx.tdf diff
    ctrl/tdfonts/dgmotiox.tdf diff
    ctrl/tdfonts/digital2.tdf diff
    ctrl/tdfonts/digitalx.tdf diff
    ctrl/tdfonts/digitx.tdf diff
    ctrl/tdfonts/digx.tdf diff
    ctrl/tdfonts/dimentox.tdf diff
    ctrl/tdfonts/dimsbolx.tdf diff
    ctrl/tdfonts/dimsslim.tdf diff
    ctrl/tdfonts/dimsslix.tdf diff
    ctrl/tdfonts/dissimux.tdf diff
    ctrl/tdfonts/distreax.tdf diff
    ctrl/tdfonts/dolcex.tdf diff
    ctrl/tdfonts/dominion.tdf diff
    ctrl/tdfonts/dominiox.tdf diff
    ctrl/tdfonts/donnow.tdf diff
    ctrl/tdfonts/doorsx.tdf diff
    ctrl/tdfonts/dope.tdf diff
    ctrl/tdfonts/downfalx.tdf diff
    ctrl/tdfonts/dragon2x.tdf diff
    ctrl/tdfonts/dragonx.tdf diff
    ctrl/tdfonts/dreadlk.tdf diff
    ctrl/tdfonts/dream.tdf diff
    ctrl/tdfonts/dreamlds.tdf diff
    ctrl/tdfonts/dreamlnx.tdf diff
    ctrl/tdfonts/dreamlsx.tdf diff
    ctrl/tdfonts/drgx.tdf diff
    ctrl/tdfonts/drkers1x.tdf diff
    ctrl/tdfonts/drkers2x.tdf diff
    ctrl/tdfonts/drkimagx.tdf diff
    ctrl/tdfonts/drkmoonx.tdf diff
    ctrl/tdfonts/drkrealm.tdf diff
    ctrl/tdfonts/drksocty.tdf diff
    ctrl/tdfonts/drome.tdf diff
    ctrl/tdfonts/drumsx.tdf diff
    ctrl/tdfonts/dsktdwnx.tdf diff
    ctrl/tdfonts/dungeon2.tdf diff
    ctrl/tdfonts/dungeonx.tdf diff
    ctrl/tdfonts/dustnbnx.tdf diff
    ctrl/tdfonts/dynasty.tdf diff
    ctrl/tdfonts/dynastyx.tdf diff
    ctrl/tdfonts/eatmex.tdf diff
    ctrl/tdfonts/eberusx.tdf diff
    ctrl/tdfonts/eclipse2.tdf diff
    ctrl/tdfonts/eclipsex.tdf diff
    ctrl/tdfonts/eclpse2x.tdf diff
    ctrl/tdfonts/ecox.tdf diff
    ctrl/tdfonts/eleuthix.tdf diff
    ctrl/tdfonts/eleventh.tdf diff
    ctrl/tdfonts/elusivex.tdf diff
    ctrl/tdfonts/emberx.tdf diff
    ctrl/tdfonts/empi.tdf diff
    ctrl/tdfonts/empiresx.tdf diff
    ctrl/tdfonts/emsx.tdf diff
    ctrl/tdfonts/endless.tdf diff
    ctrl/tdfonts/energyx.tdf diff
    ctrl/tdfonts/erthbnd2.tdf diff
    ctrl/tdfonts/erthbond.tdf diff
    ctrl/tdfonts/escape2.tdf diff
    ctrl/tdfonts/escapex.tdf diff
    ctrl/tdfonts/eterna2x.tdf diff
    ctrl/tdfonts/eternal2.tdf diff
    ctrl/tdfonts/eternalx.tdf diff
    ctrl/tdfonts/eternitx.tdf diff
    ctrl/tdfonts/etherx.tdf diff
    ctrl/tdfonts/euphorix.tdf diff
    ctrl/tdfonts/evilx.tdf diff
    ctrl/tdfonts/evlacidx.tdf diff
    ctrl/tdfonts/evolutx.tdf diff
    ctrl/tdfonts/evolve.tdf diff
    ctrl/tdfonts/exilansa.tdf diff
    ctrl/tdfonts/exile.tdf diff
    ctrl/tdfonts/exilians.tdf diff
    ctrl/tdfonts/exodus2x.tdf diff
    ctrl/tdfonts/exodusx.tdf diff
    ctrl/tdfonts/explorax.tdf diff
    ctrl/tdfonts/explosox.tdf diff
    ctrl/tdfonts/extasyx.tdf diff
    ctrl/tdfonts/fa!-#2.tdf diff
    ctrl/tdfonts/faithx.tdf diff
    ctrl/tdfonts/falconsx.tdf diff
    ctrl/tdfonts/fantasyx.tdf diff
    ctrl/tdfonts/fastlane.tdf diff
    ctrl/tdfonts/fatalx.tdf diff
    ctrl/tdfonts/fb-coldx.tdf diff
    ctrl/tdfonts/fb-fogft.tdf diff
    ctrl/tdfonts/fb-gothx.tdf diff
    ctrl/tdfonts/fb-grayx.tdf diff
    ctrl/tdfonts/fb-icefx.tdf diff
    ctrl/tdfonts/fb-oldsd.tdf diff
    ctrl/tdfonts/fb-redsd.tdf diff
    ctrl/tdfonts/fbr.tdf diff
    ctrl/tdfonts/fbrx.tdf diff
    ctrl/tdfonts/fear.tdf diff
    ctrl/tdfonts/fiberx.tdf diff
    ctrl/tdfonts/fields.tdf diff
    ctrl/tdfonts/filex.tdf diff
    ctrl/tdfonts/final.tdf diff
    ctrl/tdfonts/findest2.tdf diff
    ctrl/tdfonts/findstyx.tdf diff
    ctrl/tdfonts/fine.tdf diff
    ctrl/tdfonts/finest.tdf diff
    ctrl/tdfonts/finestx.tdf diff
    ctrl/tdfonts/fire.tdf diff
    ctrl/tdfonts/fishbowl.tdf diff
    ctrl/tdfonts/flarex.tdf diff
    ctrl/tdfonts/flatline.tdf diff
    ctrl/tdfonts/focspopx.tdf diff
    ctrl/tdfonts/font1.tdf diff
    ctrl/tdfonts/font10.tdf diff
    ctrl/tdfonts/font11.tdf diff
    ctrl/tdfonts/font12x.tdf diff
    ctrl/tdfonts/font13.tdf diff
    ctrl/tdfonts/font14.tdf diff
    ctrl/tdfonts/font15.tdf diff
    ctrl/tdfonts/font16.tdf diff
    ctrl/tdfonts/font17.tdf diff
    ctrl/tdfonts/font18.tdf diff
    ctrl/tdfonts/font19.tdf diff
    ctrl/tdfonts/font2.tdf diff
    ctrl/tdfonts/font20.tdf diff
    ctrl/tdfonts/font21x.tdf diff
    ctrl/tdfonts/font22x.tdf diff
    ctrl/tdfonts/font23.tdf diff
    ctrl/tdfonts/font25.tdf diff
    ctrl/tdfonts/font26ox.tdf diff
    ctrl/tdfonts/font26x.tdf diff
    ctrl/tdfonts/font27.tdf diff
    ctrl/tdfonts/font28x.tdf diff
    ctrl/tdfonts/font29x.tdf diff
    ctrl/tdfonts/font2x.tdf diff
    ctrl/tdfonts/font3.tdf diff
    ctrl/tdfonts/font30.tdf diff
    ctrl/tdfonts/font31.tdf diff
    ctrl/tdfonts/font32.tdf diff
    ctrl/tdfonts/font33.tdf diff
    ctrl/tdfonts/font34.tdf diff
    ctrl/tdfonts/font35.tdf diff
    ctrl/tdfonts/font36.tdf diff
    ctrl/tdfonts/font37.tdf diff
    ctrl/tdfonts/font37r.tdf diff
    ctrl/tdfonts/font38.tdf diff
    ctrl/tdfonts/font39.tdf diff
    ctrl/tdfonts/font4.tdf diff
    ctrl/tdfonts/font40x.tdf diff
    ctrl/tdfonts/font41.tdf diff
    ctrl/tdfonts/font42x.tdf diff
    ctrl/tdfonts/font43x.tdf diff
    ctrl/tdfonts/font44x.tdf diff
    ctrl/tdfonts/font45x.tdf diff
    ctrl/tdfonts/font46.tdf diff
    ctrl/tdfonts/font47x.tdf diff
    ctrl/tdfonts/font48.tdf diff
    ctrl/tdfonts/font49.tdf diff
    ctrl/tdfonts/font4x.tdf diff
    ctrl/tdfonts/font5.tdf diff
    ctrl/tdfonts/font50.tdf diff
    ctrl/tdfonts/font51.tdf diff
    ctrl/tdfonts/font52.tdf diff
    ctrl/tdfonts/font53x.tdf diff
    ctrl/tdfonts/font54x.tdf diff
    ctrl/tdfonts/font55x.tdf diff
    ctrl/tdfonts/font56x.tdf diff
    ctrl/tdfonts/font57.tdf diff
    ctrl/tdfonts/font58x.tdf diff
    ctrl/tdfonts/font59x.tdf diff
    ctrl/tdfonts/font5x.tdf diff
    ctrl/tdfonts/font6.tdf diff
    ctrl/tdfonts/font60x.tdf diff
    ctrl/tdfonts/font61x.tdf diff
    ctrl/tdfonts/font62.tdf diff
    ctrl/tdfonts/font64.tdf diff
    ctrl/tdfonts/font65.tdf diff
    ctrl/tdfonts/font66.tdf diff
    ctrl/tdfonts/font67x.tdf diff
    ctrl/tdfonts/font68.tdf diff
    ctrl/tdfonts/font69.tdf diff
    ctrl/tdfonts/font7.tdf diff
    ctrl/tdfonts/font70.tdf diff
    ctrl/tdfonts/font71.tdf diff
    ctrl/tdfonts/font72.tdf diff
    ctrl/tdfonts/font72ox.tdf diff
    ctrl/tdfonts/font73.tdf diff
    ctrl/tdfonts/font74.tdf diff
    ctrl/tdfonts/font76x.tdf diff
    ctrl/tdfonts/font77.tdf diff
    ctrl/tdfonts/font78x.tdf diff
    ctrl/tdfonts/font79x.tdf diff
    ctrl/tdfonts/font8.tdf diff
    ctrl/tdfonts/font80.tdf diff
    ctrl/tdfonts/font81x.tdf diff
    ctrl/tdfonts/font82.tdf diff
    ctrl/tdfonts/font83x.tdf diff
    ctrl/tdfonts/font84x.tdf diff
    ctrl/tdfonts/font85.tdf diff
    ctrl/tdfonts/font9.tdf diff
    ctrl/tdfonts/forbiddx.tdf diff
    ctrl/tdfonts/forgotex.tdf diff
    ctrl/tdfonts/foundatx.tdf diff
    ctrl/tdfonts/fraktur.tdf diff
    ctrl/tdfonts/freak-10.tdf diff
    ctrl/tdfonts/freak-11.tdf diff
    ctrl/tdfonts/freak-2.tdf diff
    ctrl/tdfonts/freak-4.tdf diff
    ctrl/tdfonts/freak-5.tdf diff
    ctrl/tdfonts/freak112.tdf diff
    ctrl/tdfonts/freak_52.tdf diff
    ctrl/tdfonts/freeside.tdf diff
    ctrl/tdfonts/freside2.tdf diff
    ctrl/tdfonts/friendsp.tdf diff
    ctrl/tdfonts/frzmoon.tdf diff
    ctrl/tdfonts/ftegatex.tdf diff
    ctrl/tdfonts/fth.tdf diff
    ctrl/tdfonts/fundbird.tdf diff
    ctrl/tdfonts/fungi.tdf diff
    ctrl/tdfonts/future2x.tdf diff
    ctrl/tdfonts/galaxyx.tdf diff
    ctrl/tdfonts/ganglanx.tdf diff
    ctrl/tdfonts/gardenx.tdf diff
    ctrl/tdfonts/generatn.tdf diff
    ctrl/tdfonts/genocide.tdf diff
    ctrl/tdfonts/ghost.tdf diff
    ctrl/tdfonts/ghostx.tdf diff
    ctrl/tdfonts/glarex.tdf diff
    ctrl/tdfonts/gloomx.tdf diff
    ctrl/tdfonts/gloree.tdf diff
    ctrl/tdfonts/gluenew.tdf diff
    ctrl/tdfonts/gnarlyx.tdf diff
    ctrl/tdfonts/graffiti.tdf diff
    ctrl/tdfonts/grandx.tdf diff
    ctrl/tdfonts/graphicx.tdf diff
    ctrl/tdfonts/gravex.tdf diff
    ctrl/tdfonts/greedx.tdf diff
    ctrl/tdfonts/greenie.tdf diff
    ctrl/tdfonts/grnchaox.tdf diff
    ctrl/tdfonts/grndzero.tdf diff
    ctrl/tdfonts/grndzerx.tdf diff
    ctrl/tdfonts/grndzsml.tdf diff
    ctrl/tdfonts/grndzsmx.tdf diff
    ctrl/tdfonts/grnsht.tdf diff
    ctrl/tdfonts/grnshtx.tdf diff
    ctrl/tdfonts/grveyard.tdf diff
    ctrl/tdfonts/guardf2.tdf diff
    ctrl/tdfonts/guild.tdf diff
    ctrl/tdfonts/guild2.tdf diff
    ctrl/tdfonts/hack-tdf.tdf diff
    ctrl/tdfonts/hacker2.tdf diff
    ctrl/tdfonts/hackshck.tdf diff
    ctrl/tdfonts/hardtdfx.tdf diff
    ctrl/tdfonts/hardwrdx.tdf diff
    ctrl/tdfonts/harlot.tdf diff
    ctrl/tdfonts/harlotx.tdf diff
    ctrl/tdfonts/harvest.tdf diff
    ctrl/tdfonts/harvestx.tdf diff
    ctrl/tdfonts/hawkx.tdf diff
    ctrl/tdfonts/head.tdf diff
    ctrl/tdfonts/headx.tdf diff
    ctrl/tdfonts/helitech.tdf diff
    ctrl/tdfonts/helitecx.tdf diff
    ctrl/tdfonts/helium.tdf diff
    ctrl/tdfonts/hellhole.tdf diff
    ctrl/tdfonts/hellpay.tdf diff
    ctrl/tdfonts/heltsklx.tdf diff
    ctrl/tdfonts/hemi.tdf diff
    ctrl/tdfonts/hemisphx.tdf diff
    ctrl/tdfonts/hgsierax.tdf diff
    ctrl/tdfonts/hidden.tdf diff
    ctrl/tdfonts/hoard.tdf diff
    ctrl/tdfonts/hopeless.tdf diff
    ctrl/tdfonts/horr-tdf.tdf diff
    ctrl/tdfonts/hostess.tdf diff
    ctrl/tdfonts/hotbox.tdf diff
    ctrl/tdfonts/houn-tdf.tdf diff
    ctrl/tdfonts/housex.tdf diff
    ctrl/tdfonts/houstekx.tdf diff
    ctrl/tdfonts/hrdwirex.tdf diff
    ctrl/tdfonts/hs-effek.tdf diff
    ctrl/tdfonts/hunterx.tdf diff
    ctrl/tdfonts/hw.tdf diff
    ctrl/tdfonts/hwplated.tdf diff
    ctrl/tdfonts/hwx.tdf diff
    ctrl/tdfonts/hydrogen.tdf diff
    ctrl/tdfonts/hyperx.tdf diff
    ctrl/tdfonts/hypnosis.tdf diff
    ctrl/tdfonts/hysteria.tdf diff
    ctrl/tdfonts/iceblock.tdf diff
    ctrl/tdfonts/icefire.tdf diff
    ctrl/tdfonts/icex.tdf diff
    ctrl/tdfonts/icezonex.tdf diff
    ctrl/tdfonts/idesx.tdf diff
    ctrl/tdfonts/ilcommx.tdf diff
    ctrl/tdfonts/illcomm.tdf diff
    ctrl/tdfonts/illuchro.tdf diff
    ctrl/tdfonts/illusin2.tdf diff
    ctrl/tdfonts/illusion.tdf diff
    ctrl/tdfonts/ilusion3.tdf diff
    ctrl/tdfonts/images.tdf diff
    ctrl/tdfonts/imagesx.tdf diff
    ctrl/tdfonts/imgmnset.tdf diff
    ctrl/tdfonts/impact2x.tdf diff
    ctrl/tdfonts/impactx.tdf diff
    ctrl/tdfonts/inch.tdf diff
    ctrl/tdfonts/incircle.tdf diff
    ctrl/tdfonts/incirclx.tdf diff
    ctrl/tdfonts/incorped.tdf diff
    ctrl/tdfonts/incorpex.tdf diff
    ctrl/tdfonts/indesgrn.tdf diff
    ctrl/tdfonts/inertia.tdf diff
    ctrl/tdfonts/inertiax.tdf diff
    ctrl/tdfonts/inet.tdf diff
    ctrl/tdfonts/inetx.tdf diff
    ctrl/tdfonts/infinite.tdf diff
    ctrl/tdfonts/infinsrt.tdf diff
    ctrl/tdfonts/infinsrx.tdf diff
    ctrl/tdfonts/infozine.tdf diff
    ctrl/tdfonts/infozinx.tdf diff
    ctrl/tdfonts/inner.tdf diff
    ctrl/tdfonts/inocencx.tdf diff
    ctrl/tdfonts/insanex.tdf diff
    ctrl/tdfonts/insanity.tdf diff
    ctrl/tdfonts/insinsan.tdf diff
    ctrl/tdfonts/insinsax.tdf diff
    ctrl/tdfonts/insomiax.tdf diff
    ctrl/tdfonts/inspectx.tdf diff
    ctrl/tdfonts/intense.tdf diff
    ctrl/tdfonts/intensex.tdf diff
    ctrl/tdfonts/intentsx.tdf diff
    ctrl/tdfonts/internat.tdf diff
    ctrl/tdfonts/intoxicx.tdf diff
    ctrl/tdfonts/invasins.tdf diff
    ctrl/tdfonts/invasion.tdf diff
    ctrl/tdfonts/invasisx.tdf diff
    ctrl/tdfonts/iridium.tdf diff
    ctrl/tdfonts/itsover.tdf diff
    ctrl/tdfonts/jelly.tdf diff
    ctrl/tdfonts/juice.tdf diff
    ctrl/tdfonts/juicex.tdf diff
    ctrl/tdfonts/juvenocr.tdf diff
    ctrl/tdfonts/kansas.tdf diff
    ctrl/tdfonts/kevin1.tdf diff
    ctrl/tdfonts/kevin2.tdf diff
    ctrl/tdfonts/kevin4.tdf diff
    ctrl/tdfonts/kevin42.tdf diff
    ctrl/tdfonts/kevin5.tdf diff
    ctrl/tdfonts/kevin52.tdf diff
    ctrl/tdfonts/keys.tdf diff
    ctrl/tdfonts/kfcx.tdf diff
    ctrl/tdfonts/kissmy.tdf diff
    ctrl/tdfonts/kissmyx.tdf diff
    ctrl/tdfonts/knightsx.tdf diff
    ctrl/tdfonts/koders.tdf diff
    ctrl/tdfonts/krystal.tdf diff
    ctrl/tdfonts/krystalx.tdf diff
    ctrl/tdfonts/larry3d.tdf diff
    ctrl/tdfonts/lastbbs.tdf diff
    ctrl/tdfonts/lastdime.tdf diff
    ctrl/tdfonts/laughtex.tdf diff
    ctrl/tdfonts/league.tdf diff
    ctrl/tdfonts/leech.tdf diff
    ctrl/tdfonts/leeching.tdf diff
    ctrl/tdfonts/legacy.tdf diff
    ctrl/tdfonts/legacy2x.tdf diff
    ctrl/tdfonts/legcy3dx.tdf diff
    ctrl/tdfonts/leisure.tdf diff
    ctrl/tdfonts/leisurex.tdf diff
    ctrl/tdfonts/lgy3dbl.tdf diff
    ctrl/tdfonts/liar.tdf diff
    ctrl/tdfonts/limpyset.tdf diff
    ctrl/tdfonts/liquid.tdf diff
    ctrl/tdfonts/liquid2.tdf diff
    ctrl/tdfonts/live.tdf diff
    ctrl/tdfonts/lstsouls.tdf diff
    ctrl/tdfonts/lucidsrt.tdf diff
    ctrl/tdfonts/lucretix.tdf diff
    ctrl/tdfonts/madman.tdf diff
    ctrl/tdfonts/madman2.tdf diff
    ctrl/tdfonts/magazine.tdf diff
    ctrl/tdfonts/magicast.tdf diff
    ctrl/tdfonts/magnumx.tdf diff
    ctrl/tdfonts/majicx.tdf diff
    ctrl/tdfonts/malice.tdf diff
    ctrl/tdfonts/mappersx.tdf diff
    ctrl/tdfonts/masacrex.tdf diff
    ctrl/tdfonts/master.tdf diff
    ctrl/tdfonts/matrix.tdf diff
    ctrl/tdfonts/matrixx.tdf diff
    ctrl/tdfonts/maxfont2.tdf diff
    ctrl/tdfonts/maximum.tdf diff
    ctrl/tdfonts/maximumx.tdf diff
    ctrl/tdfonts/mechanic.tdf diff
    ctrl/tdfonts/mechresi.tdf diff
    ctrl/tdfonts/mechrest.tdf diff
    ctrl/tdfonts/members.tdf diff
    ctrl/tdfonts/memoryx.tdf diff
    ctrl/tdfonts/menacex.tdf diff
    ctrl/tdfonts/mercury.tdf diff
    ctrl/tdfonts/mercury2.tdf diff
    ctrl/tdfonts/mercuryx.tdf diff
    ctrl/tdfonts/mercuy3x.tdf diff
    ctrl/tdfonts/merry.tdf diff
    ctrl/tdfonts/messages.tdf diff
    ctrl/tdfonts/metal.tdf diff
    ctrl/tdfonts/metalix.tdf diff
    ctrl/tdfonts/metalix2.tdf diff
    ctrl/tdfonts/midas.tdf diff
    ctrl/tdfonts/midnight.tdf diff
    ctrl/tdfonts/mindbncx.tdf diff
    ctrl/tdfonts/mindstax.tdf diff
    ctrl/tdfonts/mindsx.tdf diff
    ctrl/tdfonts/mirrow2.tdf diff
    ctrl/tdfonts/money.tdf diff
    ctrl/tdfonts/moon1.tdf diff
    ctrl/tdfonts/moon2.tdf diff
    ctrl/tdfonts/moon3.tdf diff
    ctrl/tdfonts/morldecx.tdf diff
    ctrl/tdfonts/motion.tdf diff
    ctrl/tdfonts/mr.tdf diff
    ctrl/tdfonts/myfont.tdf diff
    ctrl/tdfonts/mystbye.tdf diff
    ctrl/tdfonts/mysteryx.tdf diff
    ctrl/tdfonts/mysticx.tdf diff
    ctrl/tdfonts/mystousx.tdf diff
    ctrl/tdfonts/nacho.tdf diff
    ctrl/tdfonts/nationx.tdf diff
    ctrl/tdfonts/negative.tdf diff
    ctrl/tdfonts/neon.tdf diff
    ctrl/tdfonts/nestred.tdf diff
    ctrl/tdfonts/nestx.tdf diff
    ctrl/tdfonts/neurosix.tdf diff
    ctrl/tdfonts/neurosmx.tdf diff
    ctrl/tdfonts/neurrndx.tdf diff
    ctrl/tdfonts/neutralx.tdf diff
    ctrl/tdfonts/newhavnx.tdf diff
    ctrl/tdfonts/newsletx.tdf diff
    ctrl/tdfonts/newsx.tdf diff
    ctrl/tdfonts/nexus.tdf diff
    ctrl/tdfonts/nghtmare.tdf diff
    ctrl/tdfonts/ngthshdx.tdf diff
    ctrl/tdfonts/nicex.tdf diff
    ctrl/tdfonts/nigtmgrx.tdf diff
    ctrl/tdfonts/nirvana.tdf diff
    ctrl/tdfonts/nirvana2.tdf diff
    ctrl/tdfonts/nmswhq.tdf diff
    ctrl/tdfonts/nocariex.tdf diff
    ctrl/tdfonts/nodelay.tdf diff
    ctrl/tdfonts/nodespyx.tdf diff
    ctrl/tdfonts/nope.tdf diff
    ctrl/tdfonts/nope2.tdf diff
    ctrl/tdfonts/northerx.tdf diff
    ctrl/tdfonts/novax.tdf diff
    ctrl/tdfonts/nox.tdf diff
    ctrl/tdfonts/nrthstar.tdf diff
    ctrl/tdfonts/nsa.tdf diff
    ctrl/tdfonts/nuclear.tdf diff
    ctrl/tdfonts/nukex.tdf diff
    ctrl/tdfonts/nuklearx.tdf diff
    ctrl/tdfonts/nycotine.tdf diff
    ctrl/tdfonts/nyndee.tdf diff
    ctrl/tdfonts/oblivion.tdf diff
    ctrl/tdfonts/oblivred.tdf diff
    ctrl/tdfonts/obsesss.tdf diff
    ctrl/tdfonts/obvlrdsm.tdf diff
    ctrl/tdfonts/oceana.tdf diff
    ctrl/tdfonts/odb.tdf diff
    ctrl/tdfonts/one.tdf diff
    ctrl/tdfonts/onelinex.tdf diff
    ctrl/tdfonts/onkelzx.tdf diff
    ctrl/tdfonts/optical.tdf diff
    ctrl/tdfonts/outfont1.tdf diff
    ctrl/tdfonts/outlinex.tdf diff
    ctrl/tdfonts/outpost.tdf diff
    ctrl/tdfonts/outpost2.tdf diff
    ctrl/tdfonts/overdosx.tdf diff
    ctrl/tdfonts/pagan.tdf diff
    ctrl/tdfonts/paganrhx.tdf diff
    ctrl/tdfonts/paincave.tdf diff
    ctrl/tdfonts/palace.tdf diff
    ctrl/tdfonts/palace2x.tdf diff
    ctrl/tdfonts/paladiux.tdf diff
    ctrl/tdfonts/pandemon.tdf diff
    ctrl/tdfonts/pangeax.tdf diff
    ctrl/tdfonts/pantheon.tdf diff
    ctrl/tdfonts/paradigm.tdf diff
    ctrl/tdfonts/paramntx.tdf diff
    ctrl/tdfonts/paridoxx.tdf diff
    ctrl/tdfonts/partyx.tdf diff
    ctrl/tdfonts/patex.tdf diff
    ctrl/tdfonts/pcboard.tdf diff
    ctrl/tdfonts/pentagrx.tdf diff
    ctrl/tdfonts/pepper.tdf diff
    ctrl/tdfonts/persuasx.tdf diff
    ctrl/tdfonts/pex.tdf diff
    ctrl/tdfonts/phalanx.tdf diff
    ctrl/tdfonts/phalnxx.tdf diff
    ctrl/tdfonts/pharcydx.tdf diff
    ctrl/tdfonts/phiber1x.tdf diff
    ctrl/tdfonts/phiber2.tdf diff
    ctrl/tdfonts/phiberx.tdf diff
    ctrl/tdfonts/phonx.tdf diff
    ctrl/tdfonts/phuck.tdf diff
    ctrl/tdfonts/phudge.tdf diff
    ctrl/tdfonts/pinaclex.tdf diff
    ctrl/tdfonts/pipeline.tdf diff
    ctrl/tdfonts/pirates.tdf diff
    ctrl/tdfonts/pitsx.tdf diff
    ctrl/tdfonts/pittyx.tdf diff
    ctrl/tdfonts/platzang.tdf diff
    ctrl/tdfonts/poisonx.tdf diff
    ctrl/tdfonts/policex.tdf diff
    ctrl/tdfonts/portal.tdf diff
    ctrl/tdfonts/powrgrdx.tdf diff
    ctrl/tdfonts/prdctnsx.tdf diff
    ctrl/tdfonts/presurex.tdf diff
    ctrl/tdfonts/primelin.tdf diff
    ctrl/tdfonts/primelix.tdf diff
    ctrl/tdfonts/prisoner.tdf diff
    ctrl/tdfonts/prjet13x.tdf diff
    ctrl/tdfonts/proctor.tdf diff
    ctrl/tdfonts/prophecy.tdf diff
    ctrl/tdfonts/props.tdf diff
    ctrl/tdfonts/prototyp.tdf diff
    ctrl/tdfonts/prpugrdx.tdf diff
    ctrl/tdfonts/psych3dx.tdf diff
    ctrl/tdfonts/psycho2.tdf diff
    ctrl/tdfonts/psycho3x.tdf diff
    ctrl/tdfonts/psychos2.tdf diff
    ctrl/tdfonts/psychosm.tdf diff
    ctrl/tdfonts/psychsyx.tdf diff
    ctrl/tdfonts/psycosix.tdf diff
    ctrl/tdfonts/psyneuro.tdf diff
    ctrl/tdfonts/pulsex.tdf diff
    ctrl/tdfonts/puncx.tdf diff
    ctrl/tdfonts/punishtx.tdf diff
    ctrl/tdfonts/puremadx.tdf diff
    ctrl/tdfonts/pushead.tdf diff
    ctrl/tdfonts/quazarx.tdf diff
    ctrl/tdfonts/radiancx.tdf diff
    ctrl/tdfonts/ragnarkx.tdf diff
    ctrl/tdfonts/rainx.tdf diff
    ctrl/tdfonts/rapidcol.tdf diff
    ctrl/tdfonts/rastaa.tdf diff
    ctrl/tdfonts/ravaged.tdf diff
    ctrl/tdfonts/rave.tdf diff
    ctrl/tdfonts/razor1x.tdf diff
    ctrl/tdfonts/razor2.tdf diff
    ctrl/tdfonts/razor3.tdf diff
    ctrl/tdfonts/razorx.tdf diff
    ctrl/tdfonts/realityx.tdf diff
    ctrl/tdfonts/rebelart.tdf diff
    ctrl/tdfonts/rebelion.tdf diff
    ctrl/tdfonts/rebell.tdf diff
    ctrl/tdfonts/regency.tdf diff
    ctrl/tdfonts/regulatx.tdf diff
    ctrl/tdfonts/reguoutx.tdf diff
    ctrl/tdfonts/remorse.tdf diff
    ctrl/tdfonts/request.tdf diff
    ctrl/tdfonts/resista2.tdf diff
    ctrl/tdfonts/resistan.tdf diff
    ctrl/tdfonts/resistax.tdf diff
    ctrl/tdfonts/retribtx.tdf diff
    ctrl/tdfonts/review.tdf diff
    ctrl/tdfonts/revisiox.tdf diff
    ctrl/tdfonts/revolutx.tdf diff
    ctrl/tdfonts/ripper.tdf diff
    ctrl/tdfonts/rivndelx.tdf diff
    ctrl/tdfonts/rod-blue.tdf diff
    ctrl/tdfonts/rod-grn.tdf diff
    ctrl/tdfonts/rod-nav.tdf diff
    ctrl/tdfonts/rod-red.tdf diff
    ctrl/tdfonts/romannsl.tdf diff
    ctrl/tdfonts/roundx.tdf diff
    ctrl/tdfonts/roy-olsx.tdf diff
    ctrl/tdfonts/roy3d.tdf diff
    ctrl/tdfonts/royfivex.tdf diff
    ctrl/tdfonts/royfnt1.tdf diff
    ctrl/tdfonts/royfour.tdf diff
    ctrl/tdfonts/royfour2.tdf diff
    ctrl/tdfonts/roysac2c.tdf diff
    ctrl/tdfonts/roysacos.tdf diff
    ctrl/tdfonts/rozzy.tdf diff
    ctrl/tdfonts/rozzyx.tdf diff
    ctrl/tdfonts/runner.tdf diff
    ctrl/tdfonts/rust.tdf diff
    ctrl/tdfonts/rusty.tdf diff
    ctrl/tdfonts/sabotagc.tdf diff
    ctrl/tdfonts/sabotg2x.tdf diff
    ctrl/tdfonts/sac.tdf diff
    ctrl/tdfonts/sacgrenx.tdf diff
    ctrl/tdfonts/sadistx.tdf diff
    ctrl/tdfonts/salvatnx.tdf diff
    ctrl/tdfonts/sanctx.tdf diff
    ctrl/tdfonts/sanitarx.tdf diff
    ctrl/tdfonts/sanktryx.tdf diff
    ctrl/tdfonts/sanktuary.tdf diff
    ctrl/tdfonts/savagex.tdf diff
    ctrl/tdfonts/scd-l2x.tdf diff
    ctrl/tdfonts/scd-line.tdf diff
    ctrl/tdfonts/sector.tdf diff
    ctrl/tdfonts/sector2x.tdf diff
    ctrl/tdfonts/sectorx.tdf diff
    ctrl/tdfonts/seedsx.tdf diff
    ctrl/tdfonts/seleven.tdf diff
    ctrl/tdfonts/sensex.tdf diff
    ctrl/tdfonts/serpentx.tdf diff
    ctrl/tdfonts/severedx.tdf diff
    ctrl/tdfonts/shadlndx.tdf diff
    ctrl/tdfonts/shadwlsx.tdf diff
    ctrl/tdfonts/shadwsx.tdf diff
    ctrl/tdfonts/shallowx.tdf diff
    ctrl/tdfonts/shaolin2.tdf diff
    ctrl/tdfonts/shaolins.tdf diff
    ctrl/tdfonts/shaolyn.tdf diff
    ctrl/tdfonts/shaolynx.tdf diff
    ctrl/tdfonts/shaos.tdf diff
    ctrl/tdfonts/shaosx.tdf diff
    ctrl/tdfonts/shaotis.tdf diff
    ctrl/tdfonts/sheaven.tdf diff
    ctrl/tdfonts/sheavenx.tdf diff
    ctrl/tdfonts/shelznsh.tdf diff
    ctrl/tdfonts/shelzone.tdf diff
    ctrl/tdfonts/shlnvert.tdf diff
    ctrl/tdfonts/shodanx.tdf diff
    ctrl/tdfonts/shrimpx.tdf diff
    ctrl/tdfonts/shrooms.tdf diff
    ctrl/tdfonts/shsystem.tdf diff
    ctrl/tdfonts/sidepock.tdf diff
    ctrl/tdfonts/sidepokx.tdf diff
    ctrl/tdfonts/silicon2.tdf diff
    ctrl/tdfonts/silicsht.tdf diff
    ctrl/tdfonts/silver2.tdf diff
    ctrl/tdfonts/silverx.tdf diff
    ctrl/tdfonts/siversx.tdf diff
    ctrl/tdfonts/skillion.tdf diff
    ctrl/tdfonts/skyligtx.tdf diff
    ctrl/tdfonts/sloup.tdf diff
    ctrl/tdfonts/smat.tdf diff
    ctrl/tdfonts/societyx.tdf diff
    ctrl/tdfonts/sodapop.tdf diff
    ctrl/tdfonts/sole.tdf diff
    ctrl/tdfonts/sonic.tdf diff
    ctrl/tdfonts/sonicx.tdf diff
    ctrl/tdfonts/spacelnk.tdf diff
    ctrl/tdfonts/spacelnx.tdf diff
    ctrl/tdfonts/spanish.tdf diff
    ctrl/tdfonts/spastc4x.tdf diff
    ctrl/tdfonts/spastc5x.tdf diff
    ctrl/tdfonts/spastic1.tdf diff
    ctrl/tdfonts/spastic2.tdf diff
    ctrl/tdfonts/spastic3.tdf diff
    ctrl/tdfonts/spawn.tdf diff
    ctrl/tdfonts/spedwayx.tdf diff
    ctrl/tdfonts/speedway.tdf diff
    ctrl/tdfonts/splat.tdf diff
    ctrl/tdfonts/splathos.tdf diff
    ctrl/tdfonts/splooge.tdf diff
    ctrl/tdfonts/spyrit.tdf diff
    ctrl/tdfonts/stampx.tdf diff
    ctrl/tdfonts/star.tdf diff
    ctrl/tdfonts/star2x.tdf diff
    ctrl/tdfonts/star3dx.tdf diff
    ctrl/tdfonts/stargatx.tdf diff
    ctrl/tdfonts/stasis.tdf diff
    ctrl/tdfonts/static.tdf diff
    ctrl/tdfonts/statisx.tdf diff
    ctrl/tdfonts/stats.tdf diff
    ctrl/tdfonts/statsrs.tdf diff
    ctrl/tdfonts/steelx.tdf diff
    ctrl/tdfonts/stncirc1.tdf diff
    ctrl/tdfonts/stncirc2.tdf diff
    ctrl/tdfonts/stormx.tdf diff
    ctrl/tdfonts/strabery.tdf diff
    ctrl/tdfonts/stripesx.tdf diff
    ctrl/tdfonts/stripssx.tdf diff
    ctrl/tdfonts/stupidx.tdf diff
    ctrl/tdfonts/sub.tdf diff
    ctrl/tdfonts/succo2x.tdf diff
    ctrl/tdfonts/succox.tdf diff
    ctrl/tdfonts/sucker.tdf diff
    ctrl/tdfonts/suicidax.tdf diff
    ctrl/tdfonts/summit.tdf diff
    ctrl/tdfonts/sunrise.tdf diff
    ctrl/tdfonts/sunshnex.tdf diff
    ctrl/tdfonts/sunyshne.tdf diff
    ctrl/tdfonts/super.tdf diff
    ctrl/tdfonts/superilu.tdf diff
    ctrl/tdfonts/suprem2x.tdf diff
    ctrl/tdfonts/supremcy.tdf diff
    ctrl/tdfonts/supreme.tdf diff
    ctrl/tdfonts/supreme2.tdf diff
    ctrl/tdfonts/syndicat.tdf diff
    ctrl/tdfonts/syndrome.tdf diff
    ctrl/tdfonts/synergy.tdf diff
    ctrl/tdfonts/synrdsrx.tdf diff
    ctrl/tdfonts/synrgisx.tdf diff
    ctrl/tdfonts/synthicx.tdf diff
    ctrl/tdfonts/synthmem.tdf diff
    ctrl/tdfonts/synthtic.tdf diff
    ctrl/tdfonts/talent.tdf diff
    ctrl/tdfonts/talent2.tdf diff
    ctrl/tdfonts/tcax.tdf diff
    ctrl/tdfonts/tddx.tdf diff
    ctrl/tdfonts/tdu.tdf diff
    ctrl/tdfonts/teapotx.tdf diff
    ctrl/tdfonts/termitex.tdf diff
    ctrl/tdfonts/tfh.tdf diff
    ctrl/tdfonts/the_edge.tdf diff
    ctrl/tdfonts/thenstax.tdf diff
    ctrl/tdfonts/theroadx.tdf diff
    ctrl/tdfonts/thesanct.tdf diff
    ctrl/tdfonts/thieves.tdf diff
    ctrl/tdfonts/thievs2x.tdf diff
    ctrl/tdfonts/thievsml.tdf diff
    ctrl/tdfonts/thin2.tdf diff
    ctrl/tdfonts/thinx.tdf diff
    ctrl/tdfonts/this!.tdf diff
    ctrl/tdfonts/thivsmlx.tdf diff
    ctrl/tdfonts/thsanctx.tdf diff
    ctrl/tdfonts/ticcol.tdf diff
    ctrl/tdfonts/timspirx.tdf diff
    ctrl/tdfonts/tincans.tdf diff
    ctrl/tdfonts/tiny.tdf diff
    ctrl/tdfonts/toasterx.tdf diff
    ctrl/tdfonts/tokyo.tdf diff
    ctrl/tdfonts/tower.tdf diff
    ctrl/tdfonts/tower2.tdf diff
    ctrl/tdfonts/townsmlx.tdf diff
    ctrl/tdfonts/townx.tdf diff
    ctrl/tdfonts/toxic.tdf diff
    ctrl/tdfonts/traces.tdf diff
    ctrl/tdfonts/tranqilx.tdf diff
    ctrl/tdfonts/tribesx.tdf diff
    ctrl/tdfonts/tribwrit.tdf diff
    ctrl/tdfonts/tronicsx.tdf diff
    ctrl/tdfonts/troutx.tdf diff
    ctrl/tdfonts/tucx.tdf diff
    ctrl/tdfonts/tumoil.tdf diff
    ctrl/tdfonts/tusse.tdf diff
    ctrl/tdfonts/twistedx.tdf diff
    ctrl/tdfonts/twoyears.tdf diff
    ctrl/tdfonts/udm1x.tdf diff
    ctrl/tdfonts/udmfire.tdf diff
    ctrl/tdfonts/ugrndftr.tdf diff
    ctrl/tdfonts/unchainx.tdf diff
    ctrl/tdfonts/under.tdf diff
    ctrl/tdfonts/undergd2.tdf diff
    ctrl/tdfonts/underwld.tdf diff
    ctrl/tdfonts/undrgdsx.tdf diff
    ctrl/tdfonts/undrgrn2.tdf diff
    ctrl/tdfonts/undrgrnd.tdf diff
    ctrl/tdfonts/undrgrwn.tdf diff
    ctrl/tdfonts/undrwldx.tdf diff
    ctrl/tdfonts/ungrwing.tdf diff
    ctrl/tdfonts/ungrwnxx.tdf diff
    ctrl/tdfonts/unholyx.tdf diff
    ctrl/tdfonts/union.tdf diff
    ctrl/tdfonts/union2.tdf diff
    ctrl/tdfonts/unknownx.tdf diff
    ctrl/tdfonts/unox.tdf diff
    ctrl/tdfonts/unreal.tdf diff
    ctrl/tdfonts/unsane.tdf diff
    ctrl/tdfonts/unsanex.tdf diff
    ctrl/tdfonts/unsnfate.tdf diff
    ctrl/tdfonts/untx.tdf diff
    ctrl/tdfonts/upcorx.tdf diff
    ctrl/tdfonts/uprise.tdf diff
    ctrl/tdfonts/uprise2x.tdf diff
    ctrl/tdfonts/usaflag.tdf diff
    ctrl/tdfonts/user.tdf diff
    ctrl/tdfonts/user2.tdf diff
    ctrl/tdfonts/userstsx.tdf diff
    ctrl/tdfonts/usex.tdf diff
    ctrl/tdfonts/usflgcol.tdf diff
    ctrl/tdfonts/utopanx.tdf diff
    ctrl/tdfonts/valleyx.tdf diff
    ctrl/tdfonts/vampyrex.tdf diff
    ctrl/tdfonts/vasniakx.tdf diff
    ctrl/tdfonts/vdo_1.tdf diff
    ctrl/tdfonts/vengancx.tdf diff
    ctrl/tdfonts/vibrntsx.tdf diff
    ctrl/tdfonts/vintage.tdf diff
    ctrl/tdfonts/violent.tdf diff
    ctrl/tdfonts/virtacxs.tdf diff
    ctrl/tdfonts/vision2.tdf diff
    ctrl/tdfonts/vision3.tdf diff
    ctrl/tdfonts/visionsx.tdf diff
    ctrl/tdfonts/visionx.tdf diff
    ctrl/tdfonts/visionxx.tdf diff
    ctrl/tdfonts/voices.tdf diff
    ctrl/tdfonts/voidx.tdf diff
    ctrl/tdfonts/wallx.tdf diff
    ctrl/tdfonts/warzonex.tdf diff
    ctrl/tdfonts/watchdgx.tdf diff
    ctrl/tdfonts/water.tdf diff
    ctrl/tdfonts/weird.tdf diff
    ctrl/tdfonts/wellfare.tdf diff
    ctrl/tdfonts/whirwinx.tdf diff
    ctrl/tdfonts/white-bl.tdf diff
    ctrl/tdfonts/whox.tdf diff
    ctrl/tdfonts/wicked.tdf diff
    ctrl/tdfonts/wild.tdf diff
    ctrl/tdfonts/wildchld.tdf diff
    ctrl/tdfonts/wildsidx.tdf diff
    ctrl/tdfonts/wpaint.tdf diff
    ctrl/tdfonts/x-tremex.tdf diff
    ctrl/tdfonts/xentrx1x.tdf diff
    ctrl/tdfonts/xfontx.tdf diff
    ctrl/tdfonts/xmas.tdf diff
    ctrl/tdfonts/yazoox.tdf diff
    ctrl/tdfonts/zane.tdf diff
    ctrl/tdfonts/zanex.tdf diff
    ctrl/tdfonts/zetrax.tdf diff
    ctrl/tdfonts/zookx.tdf diff
    exec/load/tdfonts_lib.js diff
    Adding start of tdfonts library.

  108. Rob Swindell
    Mon Apr 21 2025 13:23:01 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDFileAreaChooser.js diff
    xtrn/DDAreaChoosers/DDMsgAreaChooser.js diff
    xtrn/DDAreaChoosers/readme.txt diff
    xtrn/DDAreaChoosers/version_history.txt diff
    Merge branch 'dd_area_chooser_nav_fixes' into 'master' DD area choosers: F & L keys work again (first & last page). Message area chooser fix for "DisplayMenuHdrWithNumItems is not a function". File area chooser fix to ensure header lines written properly after displaying help. See merge request main/sbbs!531

  109. Eric Oulashin
    Mon Apr 21 2025 13:12:48 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDFileAreaChooser.js diff
    xtrn/DDAreaChoosers/DDMsgAreaChooser.js diff
    xtrn/DDAreaChoosers/readme.txt diff
    xtrn/DDAreaChoosers/version_history.txt diff
    DD area choosers: F & L keys work again (first & last page). Message area chooser fix for "DisplayMenuHdrWithNumItems is not a function". File area chooser fix to ensure header lines written properly after displaying help.

  110. Rob Swindell (on Debian Linux)
    Sun Apr 20 2025 21:47:13 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/xjs.js diff
    Fix error "creating" log message details (filename and error value) ... using the wrong File object for those values. Very confusing.

  111. Rob Swindell
    Sun Apr 20 2025 15:09:25 GMT-0700 (PDT)
    Added Files:
    

    xtrn/DDMsgReader/DDMsgReader.example.cfg diff
    Modified Files:

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    Merge branch 'dd_msg_reader_example_config' into 'master' DDMsgReader: The config file in the repo is now DDMsgReader.example.cfg. Copy to DDMsgReader.cfg to make config customizations (it can be in the same dir or in sbbs/mods). See merge request main/sbbs!530

  112. Eric Oulashin
    Sun Apr 20 2025 15:09:25 GMT-0700 (PDT)
    Added Files:
    

    xtrn/DDMsgReader/DDMsgReader.example.cfg diff
    Modified Files:

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    DDMsgReader: The config file in the repo is now DDMsgReader.example.cfg. Copy to DDMsgReader.cfg to make config customizations (it can be in the same dir or in sbbs/mods).

  113. Rob Swindell
    Sat Apr 19 2025 16:01:21 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.cfg diff
    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    Merge branch 'dd_msg_reader_show_user_responses_in_tally_info' into 'master' DDMsgReader: Optionally show users' vote responses (for polls/upvotes/downvotes) when showing tally info (sysop function) with config option showUserResponsesInTallyInfo. showUserResponsesInTallyInfo (from last commit) removed. See merge request main/sbbs!529

  114. Eric Oulashin
    Sat Apr 19 2025 16:01:21 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.cfg diff
    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    DDMsgReader: Optionally show users' vote responses (for polls/upvotes/downvotes) when showing tally info (sysop function) with config option showUserResponsesInTallyInfo. showUserResponsesInTallyInfo (from last commit) removed.

  115. Rob Swindell
    Sat Apr 19 2025 13:30:05 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.cfg diff
    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    Merge branch 'dd_msg_reader_tally_info_show_who_voted_up_down' into 'master' DDMsgReader: When viewing tally info for a message (sysop feature), it can now (optionally) show who specifically voted up/down. Defaults to false. New config otion: showWhoUpvotedAndDownvotedInTallyInfo See merge request main/sbbs!528

  116. Eric Oulashin
    Sat Apr 19 2025 12:02:33 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.cfg diff
    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    DDMsgReader: When viewing tally info for a message (sysop feature), it can now (optionally) show who specifically voted up/down. Defaults to false. New config otion: showWhoUpvotedAndDownvotedInTallyInfo

  117. Rob Swindell (on Debian Linux)
    Sat Apr 19 2025 13:16:41 GMT-0700 (PDT)
    Modified Files:
    

    exec/rlogin.js diff
    Add -H <password> option, to send specified hashed-password ... rather than a hash of the *user's* password. This allows the local user to potentially change their password later without invalidating it on the RLogin server, assuming the RLogin server saves/reuses the specified password for subsequent authentication (as the Synchronet terminal server does). The existing -h option still works as before, but it's a known issue that if a user changes their password locally, they will no longer be able to re-authenticate with any RLogin servers they previously created accounts on using the previous password. With the -H option, the sysop is instead in control of the password used and since the resulting hash is from a combination and system and user unique source data (including optinal salt), as long the same -H password is not used for multiple 3rd party Rlogin servers, the hashed password should be secure from capture and reuse on any other RLogin server (or the local server). While the -h option might be slightly more secure (since a different user password is likely used for each generated hash), the -H option is less error-prone and still considered (by me) to be secure from password leaking and malicious reuse.

  118. Rob Swindell (on Debian Linux)
    Sat Apr 19 2025 13:09:02 GMT-0700 (PDT)
    Modified Files:
    

    exec/xtrn_sec.js diff
    Renamed 'indent_list_items' option to 'align_prog_list' Add 'align_section_list' option too for good measure, for instances where 'section_fmt' (by default, the text.dat SelectItemFmt string) does not contain any integer alignment/padding (e.g. %3u). This is related to issue #911

  119. Rob Swindell (on Debian Linux)
    Fri Apr 18 2025 17:16:05 GMT-0700 (PDT)
    Modified Files:
    

    exec/xtrn_sec.js diff
    Add 'indent_list_items' option For use when multi/singlecolumn_fmt strings don't contain padded integer specifiers (e.g. %3u). Fix issue #911

  120. Rob Swindell (on Windows 11)
    Fri Apr 18 2025 12:07:01 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/ftpsrvr.c diff
    src/sbbs3/mailsrvr.c diff
    src/sbbs3/main.cpp diff
    src/sbbs3/mqtt.c diff
    src/sbbs3/mqtt.h diff
    src/sbbs3/services.c diff
    src/sbbs3/websrvr.c diff
    Store/reuse each server's client highwater mark for MQTT publishing Although we always republished "0" as the client highwater mark (e.g. upon server startup and recycle), the internally tracked highwater marked is *not* reset (to zero) upon recycle, so may not have been republished (with a non-zero) value until/unless the internal highwater mark was exceeded. So now, the value we publish upon recycle will be same value as the internally tracked client highwater mark. This fixes issue #910

  121. Rob Swindell
    Tue Apr 15 2025 17:40:35 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    Merge branch 'dd_msg_reader_personal_email_to_sysop_mark_read' into 'master' DDMsgReader: For the sysop reading personal email addressed to 'sysop', mark the email read See merge request main/sbbs!527

  122. Eric Oulashin
    Tue Apr 15 2025 17:40:35 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    DDMsgReader: For the sysop reading personal email addressed to 'sysop', mark the email read

  123. Rob Swindell
    Tue Apr 15 2025 05:10:46 GMT-0700 (PDT)
    Added Files:
    

    xtrn/mrc/mrc-help-ctcp.msg diff
    xtrn/mrc/mrc-help-more.msg diff
    Modified Files:

    xtrn/mrc/mrc-client.js diff
    xtrn/mrc/mrc-connector.js diff
    xtrn/mrc/mrc-help-main.msg diff
    xtrn/mrc/mrc-help-twit.msg diff
    xtrn/mrc/mrc-session.js diff
    Merge branch 'master' into 'master' CTCP, user actions, and fixes See merge request main/sbbs!525

  124. Craig Hendricks
    Tue Apr 15 2025 05:10:46 GMT-0700 (PDT)
    Added Files:
    

    xtrn/mrc/mrc-help-ctcp.msg diff
    xtrn/mrc/mrc-help-more.msg diff
    Modified Files:

    xtrn/mrc/mrc-client.js diff
    xtrn/mrc/mrc-connector.js diff
    xtrn/mrc/mrc-help-main.msg diff
    xtrn/mrc/mrc-help-twit.msg diff
    xtrn/mrc/mrc-session.js diff
    CTCP, user actions, and fixes

  125. Rob Swindell
    Sun Apr 13 2025 17:45:43 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    Merge branch 'dd_msg_reader_bottom_row_help_line_fix' into 'master' DDMsgReader: Fix to bottom row help text due to behavior change in Git commit fccf1a5718fdcb9864bcbccf2eb6de7ee50d3dd3 - Some key codes in the help lines were causing a line break and causing scrolling See merge request main/sbbs!526

  126. Eric Oulashin
    Sun Apr 13 2025 17:45:43 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    DDMsgReader: Fix to bottom row help text due to behavior change in Git commit fccf1a5718fdcb9864bcbccf2eb6de7ee50d3dd3 - Some key codes in the help lines were causing a line break and causing scrolling

  127. Rob Swindell (on Debian Linux)
    Fri Apr 11 2025 18:16:58 GMT-0700 (PDT)
    Modified Files:
    

    exec/chksetup.js diff
    Use system.check_password() to report on low-quality passwords

  128. Rob Swindell (on Windows 11)
    Fri Apr 11 2025 18:11:31 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/scfg/scfgsys.c diff
    src/sbbs3/scfgdefs.h diff
    src/sbbs3/scfglib1.c diff
    src/sbbs3/scfgsave.c diff
    src/sbbs3/userdat.c diff
    Make the "high quality" password checking optional (default: off/false) To enable high quality/entropy password checking, set SCFG->System->Security ->Demand High Quality Password to "Yes". This defaults to false since the "quality" standard is higher than it used to be and that could be confusing for sysops or users.

  129. Rob Swindell (on Windows 11)
    Fri Apr 11 2025 18:09:05 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/newuser.cpp diff
    Re-generate random password if it doesn't meet our quality standards Log a message before the regenerate loop, just in case this loops forever. :-)

  130. Rob Swindell (on Windows 11)
    Fri Apr 11 2025 18:08:03 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_system.c diff
    system.check_password() does *not* check password.can file now We already other means to do that, allowing more visibility to caller *why* a password may be rejected.

  131. Rob Swindell (on Windows 11)
    Fri Apr 11 2025 18:07:22 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_bbs.cpp diff
    Clarify in JSDOC that bbs.check_password() checks the password.can file

  132. Rob Swindell (on Windows 11)
    Fri Apr 11 2025 00:28:23 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/userdat.c diff
    Move check_pass() nearer the other check_* functions

  133. Rob Swindell (on Windows 11)
    Thu Apr 10 2025 23:37:55 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_bbs.cpp diff
    Rename bbs.good_password() to bbs.check_password() for consistency ... with the system object and the underlying SBBS functions being called. Leave bbs.good_password() as an alias for backward compatibility.

  134. Rob Swindell (on Windows 11)
    Thu Apr 10 2025 23:36:10 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_system.c diff
    Add new methods: system.check_realname() and system.check_password() These are wrappers around the userdat API functions, suitable for servers to do prospective new user string validation.

  135. Rob Swindell (on Windows 11)
    Thu Apr 10 2025 23:08:10 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/str.cpp diff
    src/sbbs3/userdat.c diff
    src/sbbs3/userdat.h diff
    Move password quality check logic to new userdat.c function: check_pass() sbbs_t::chkpass() now becomes just a thin wrapper around check_pass() and it prints the reason for the failure or calls sbbs_t::trashcan(). I also refactored the code quite a bit: no more copying and uppercasing (we have strcasestr() now!) and supports calling with a NULL user_t* as I expect will be a use case. This will allow us to expose the password quality checking algorithm to other servers (e.g. the web server) that can be used to create new user accounts with passwords that meet our quality bar. e.g. via a newly created JS method: system.check_password() Yes, we have bbs.good_password() already (and that still works fine), but can't be used by non-terminal server code.

  136. Rob Swindell (on Windows 11)
    Thu Apr 10 2025 23:00:24 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/str.cpp diff
    Rework part of the "good password" checking algorithm Require that a good password contain a sequence of unique characters (not repeating, incrementing, or decrementing in ASCII code value) of at least half the configured minimum password length. By default, the minimum password length is 4 chars, so this means a sequence of at least 2 unique characters is required. If the minimum password length is increased by the sysop, so is the minimum required unique sequence length. The "PasswordInvalid" text.dat string is printed when passwords are rejected by this criteria. Previously, the following would be rejected by this portion of the algo, this logic has been replaced by the above: - all chars the same (would print the "PasswordInvalid" text.dat string) - first 4 chars are incrementing ("PasswordObvious" string printed) - first 4 chars are decrementing ("PasswordObvious" string printed) but now, a password that starts with "1234" or "abcd" is fine so long as it's longer than that and contains the minimum unique sequence length. This will prevent SBBS from rejecting high quality (e.g. randomly generated or crypto-hashed) passwords that just happen to begin with an incrementing sequence of 4 digits or alpha-characters.

  137. Rob Swindell (on Debian Linux)
    Thu Apr 10 2025 22:58:56 GMT-0700 (PDT)
    Modified Files:
    

    exec/str_cmds.js diff
    Beautify the "help" output Both the and the output are not prettier. This fixes issue #901

  138. Deucе
    Thu Apr 10 2025 22:20:56 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/con_out.cpp diff
    Fix test in last commit

  139. Deucе
    Thu Apr 10 2025 22:17:37 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/ansi_terminal.cpp diff
    src/sbbs3/bat_xfer.cpp diff
    src/sbbs3/chat.cpp diff
    src/sbbs3/con_out.cpp diff
    src/sbbs3/exec.cpp diff
    src/sbbs3/getkey.cpp diff
    src/sbbs3/getstr.cpp diff
    src/sbbs3/js_console.cpp diff
    src/sbbs3/main.cpp diff
    src/sbbs3/prntfile.cpp diff
    src/sbbs3/putmsg.cpp diff
    src/sbbs3/readmail.cpp diff
    src/sbbs3/readmsgs.cpp diff
    src/sbbs3/sbbs.h diff
    src/sbbs3/str.cpp diff
    src/sbbs3/viewfile.cpp diff
    Clear line counter when clearing SS_ABORT Also, always use clearabort() to clear SS_ABORT now, and move the method body into con_out.cpp (where msgabort() is) since it actually does a thing now. Fixes issue #907

  140. Rob Swindell (on Windows 11)
    Thu Apr 10 2025 20:01:30 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_global.c diff
    Update JSDOC descriptions for md5_calc() and sha1_calc() to clarify how many hex digits will be included in the returned (hex) strings

  141. Rob Swindell (on Windows 11)
    Thu Apr 10 2025 20:01:15 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/ident.c diff
    Typo in comment

  142. Rob Swindell (on Windows 11)
    Thu Apr 10 2025 20:00:35 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/getnode.cpp diff
    Use term->cond_newline() for brevity No functional change

  143. Rob Swindell (on Windows 11)
    Thu Apr 10 2025 19:59:42 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/newuser.cpp diff
    When a new RLogin-user's password is rejected, log a message indicating so Replace the CRLFs with direct term->newline() calls.

  144. Rob Swindell (on Debian Linux)
    Thu Apr 10 2025 17:17:50 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/finger_lib.js diff
    Some debug log output that helps when receiving UDP responses from wrong port

  145. Rob Swindell (on Debian Linux)
    Thu Apr 10 2025 17:16:53 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/sbbslist_lib.js diff
    Correct the duplicate name/address log messages.

  146. Rob Swindell (on Debian Linux)
    Thu Apr 10 2025 17:16:24 GMT-0700 (PDT)
    Modified Files:
    

    exec/msglist.js diff
    Fix going to a msg number from viewing/reading msgs mode In some uses (depending on the list order), typing a message number didn't take you to the intended message. Reported by Nelgin in IRC.

  147. Rob Swindell
    Thu Apr 10 2025 17:07:24 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDFileAreaChooser.js diff
    xtrn/DDAreaChoosers/DDMsgAreaChooser.js diff
    xtrn/DDAreaChoosers/readme.txt diff
    xtrn/DDAreaChoosers/version_history.txt diff
    Merge branch 'dd_area_choosers_altDesc_fix_and_start_of_name_collapsing_enhancement' into 'master' DD Area Choosers: Fix for altName missing (reported by nelgin) and start of name collapsing enhancement (no empty names) See merge request main/sbbs!524

  148. Eric Oulashin
    Thu Apr 10 2025 17:00:25 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDFileAreaChooser.js diff
    xtrn/DDAreaChoosers/DDMsgAreaChooser.js diff
    xtrn/DDAreaChoosers/readme.txt diff
    xtrn/DDAreaChoosers/version_history.txt diff
    DD Area Choosers: Fix for altName missing (reported by nelgin) and start of name collapsing enhancement (no empty names)

  149. Rob Swindell (on Debian Linux)
    Thu Apr 10 2025 15:11:08 GMT-0700 (PDT)
    Modified Files:
    

    exec/rlogin.js diff
    Allow optional pepper to be specified with '-h' (hashed password) option e.g. '-hSEVERNAME' This allows server-unique hashing so that if one BBS auto-registers /authenticates its users with *multiple* Rlogin servers, the credentials stored on of the rlogin servers may not be used to authenticate on the others.

  150. Deucе
    Thu Apr 10 2025 14:57:51 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/main.cpp diff
    Fix typo (thrad->thread)

  151. Deucе
    Thu Apr 10 2025 14:56:47 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/main.cpp diff
    Initialize Terminal in global sbbs when answering Should fix issue where extra pauses occur on connection.

  152. Rob Swindell (on Debian Linux)
    Thu Apr 10 2025 14:35:40 GMT-0700 (PDT)
    Modified Files:
    

    exec/rlogin.js diff
    Add '-h' option to send a salted and hashed password to the server Like the -p option, except the server won't get a copy of the client BBS user's password or be able to decode it. The user's password, user number and account creation date are used to generate the password hash (along with the salt), so changing any of these will change the resulting hashed password sent (and presumably logged/stored) on the server. The resulting SHA-1 hash is sent as 40 hexadecimal digits. The default salt is the system's QWK-ID, but the sysop can specify their own salt (e.g. random number or secret passphrase) via the "salt" key in the [rlogin] section of modopts.ini or root section of ctrl/modopts/rlogin.ini

  153. Rob Swindell (on Debian Linux)
    Thu Apr 10 2025 14:34:44 GMT-0700 (PDT)
    Modified Files:
    

    exec/str_cmds.js diff
    Allow string command parameters to line wrap the terminal and log them

  154. Rob Swindell (on Debian Linux)
    Thu Apr 10 2025 12:45:00 GMT-0700 (PDT)
    Modified Files:
    

    exec/rlogin.js diff
    Fix default mode value (should *not* be 10, i.e TG_NODESYNC|TG_CRLF) Bug introduced in commit 49053f3158e5a0b671c the 'mode' value was by default, undefined. the 'timeout' value is by default, 10. When mode value/flags was not provided on the command-line, undefined was passed to bbs.rlogin_gate() as the 5th parameter, but the number 10 is passed as the 6th parameter (for time-out). The problem is, the first Number parameter passed to bbs.rlogin_gate() is interpretted as the mode value and so that becomes 10 (0x0A) which includes TG_NODESYNC thus enabling all node messages/activity being displayed to the rlogin user and interrupting their rlogin session (e.g. game play). Just make the 0 the default value for mode, like we did in telgate.js.

  155. Deucе
    Thu Apr 10 2025 08:02:28 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/lord2/cnw/felicity.ref diff
    xtrn/lord2/lord2.js diff
    Fix felicity IGM and readfile Readfile does not log an error when the file does not exist. In felicity.ref, `s04 and `s05 were left unchanged from whatever they happened to be previously, displaying junk when someone looked at the message. Now, `s04 and `s05 are explicitly set to zero-length strings first so they just display nothing. Fixes #906

  156. Rob Swindell (on Debian Linux)
    Tue Apr 08 2025 20:34:23 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/readmail.cpp diff
    Allow search by author forward/backward for netmail messages Fixes issue #484

  157. Rob Swindell (on Debian Linux)
    Tue Apr 08 2025 20:30:25 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/smbutil.c diff
    Use 7 (hex) digits for byte offset (into shd file) Vert's mail base .shd file is consistently > 0xFFFFFF bytes in size.

  158. Rob Swindell (on Windows 11)
    Tue Apr 08 2025 16:44:45 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/prntfile.cpp diff
    Disable Celerity "pipe code" parsing when displaying ".rip" files RIP sequences conflict with Celerity pipe codes, so don't convert them to color codes (even when enabled in SCFG->Systems->Extra Attribute Codes...). We *used* to disable all pipe code parsing when sending to a RIP-enabled terminal but since we don't do that any longer, this is a better/cleaner fix. Renegade "pipe codes" (|xx where xx are decimal digits) don't "seem" to conflict with any RIP sequences (so leave that parsing enabled for .rip files) but Deuce can help me to be sure about that (please).

  159. Rob Swindell (on Windows 11)
    Tue Apr 08 2025 15:55:07 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_msg_area.c diff
    src/sbbs3/userdat.c diff
    src/sbbs3/userdat.h diff
    Add/use user_can_access_grp() to resolve issue #905 If a message group has no sub-boards (or no sub-boards that ther user can access) then the user cannot access the group, so don't include the group in JS msg_area.grp_list[].

  160. Rob Swindell (on Windows 11)
    Tue Apr 08 2025 11:23:20 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/atcodes.cpp diff
    Clean-up the initial string/pointer adjustment in show_atcodes() No functional change.

  161. Deucе
    Tue Apr 08 2025 11:22:06 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/terminal.cpp diff
    Grab a copy of the sbbs_t * before destroying ourselves We need it to return flags_ from the new instance since Win32 debug builds set sbbs to 0xdddddddd when the object is destroyed. Should fix issue #904

  162. Deucе
    Tue Apr 08 2025 10:57:21 GMT-0700 (PDT)
    Modified Files:
    

    src/conio/sdl_con.c diff
    src/conio/win32gdi.c diff
    src/syncterm/CHANGES diff
    Fix SDL/GDI issue with textmode() using alternate fonts Previously, SDL and GDI modes (but not X11 mode) would return early from textmode() if the new mode is the same as the old mode. This would result in the font not being reset to the defaults for the mode. This was most noticable when using RIP to change the font to one of a difference size since the mode remains the same, but the font and screen dimensions change. Should fix issue 201

  163. Rob Swindell (on Windows 11)
    Mon Apr 07 2025 21:29:15 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/atcodes.cpp diff
    Better parsing of invalid @-codes @-codes never start with a number (decimal digit) @-codes never contain any whitespace (including tabs, CR and LF). These 2 issues caused the stock batch file transfer menu for RIP terminals to display all messed-up. This RIP menu (text/menu/batchxfr.rip) contains @s and they triggered some stripping of text and expanding to a text.dat string (!).

  164. Rob Swindell (on Windows 11)
    Mon Apr 07 2025 21:06:33 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/scfgdefs.h diff
    Resolve recently introduced GCC warning pointer targets in passing argument 2 of ‘toggle_xattr_support’ differ in signedness

  165. Rob Swindell (on Windows 11)
    Mon Apr 07 2025 20:45:02 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/atcodes.cpp diff
    src/sbbs3/main.cpp diff
    src/sbbs3/prntfile.cpp diff
    src/sbbs3/putmsg.cpp diff
    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/str.cpp diff
    Modified text and menu files can now be placed in mods/text/* (e.g. mods/text/menu/main.msg), but only when the mods dir is configured in SCFG->System->Advanced Options (by default, this set to ../mods/). While menu-related functions will always check/read the file from the mods/text dir (if exists), printfile() function requires the new P_MODS flag to be specified to check/read the file from the mods/text directory. This resolves feature request/issue #879

  166. Deucе
    Sun Apr 06 2025 22:34:20 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/terminal.cpp diff
    Remove hot-spots as soon as they scroll off the screen. Don't keep them around until there's no hotspots left.

  167. Deucе
    Sun Apr 06 2025 22:34:20 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/ansi_terminal.cpp diff
    Fix parse_input_sequence() on unhandled mouse events The API was changed after the mouse support was tested, and mouse support wasn't updated correctly. Fixes #900

  168. Rob Swindell (on Windows 11)
    Sun Apr 06 2025 18:25:39 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_global.c diff
    src/sbbs3/msgtoqwk.cpp diff
    src/sbbs3/prntfile.cpp diff
    src/sbbs3/putmsg.cpp diff
    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/scfg/scfg.h diff
    src/sbbs3/scfg/scfgmsg.c diff
    src/sbbs3/scfg/scfgsub.c diff
    src/sbbs3/scfg/scfgsys.c diff
    src/sbbs3/scfglib1.c diff
    src/sbbs3/wordwrap.c diff
    src/sbbs3/wordwrap.h diff
    src/sbbs3/writemsg.cpp diff
    Separate global support for "extra attribute codes" from per sub-board support Each sub-board now has its own separate set of toggles for extra attribute code support (set in the pmode property of sub-boards) via new pmode flags: P_WWIV, P_WILDCAT, P_PCBOARD, P_RENEGADE, and P_CELERITY The P_NOXATTRS flag is no longer handled in putmsg() - has no effect. P_NOXATTRS can be passed to printfile()/menu() however to override the global set of extra attribute support flags. The expansion of "pipe codes" is no longer auto-disabled when the user is using a RIP terminal. Global extra attribute support was moved from SCFG->Message Options to SCFG->System, since the global option now have no effect on displaying messages. The global setting is just the default set of extra attributes supported for display files (e.g. menus). wordwrap() now has a bit more simplified API (one less argument), though supporting the old usage for JS word_wrap() backward compatibilty. This addresses issue #892.

  169. Rob Swindell
    Sun Apr 06 2025 17:32:22 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDFileAreaChooser.cfg diff
    xtrn/DDAreaChoosers/DDMsgAreaChooser.cfg diff
    Merge branch 'dd_area_choosers_default_name_collapsing_false' into 'master' Digital Distortion area choosers: Default the name collapsing feature to false in the .cfg files See merge request main/sbbs!523

  170. Eric Oulashin
    Sun Apr 06 2025 14:09:26 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDFileAreaChooser.cfg diff
    xtrn/DDAreaChoosers/DDMsgAreaChooser.cfg diff
    Digital Distortion area choosers: Default the name collapsing feature to false in the .cfg files

  171. Rob Swindell (on Windows 11)
    Fri Apr 04 2025 16:42:16 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/answer.cpp diff
    src/sbbs3/main.cpp diff
    src/sbbs3/sbbs.h diff
    Save node.log contents to system log file even if disconnected during logon This should address x-bit's inquiry on DOVE-Net: > I've noticed that Sync Control Panel > bbs > view todays log is not showing > rlogin users that I have going directly to the game. My guess is due to the > fact i have them bypassing so much of the login process. > > Anything i can do to show them in the daily logon stats/logs? However, it's probably also going to add some noise to those logs, e.g. "Unsuccessful logon" log lines. I don't have an easy answer for that.

  172. Rob Swindell
    Fri Apr 04 2025 13:35:18 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDMsgAreaChooser.js diff
    Merge branch 'dd_msg_area_chooser_issue_899' into 'master' DDMsgAreaChooser: Fix for 'undefined' error (using the wrong object) when typing a sub-board number to choose it. Reported by Keyop. Fixes issue #899 Closes #899 See merge request main/sbbs!522

  173. Eric Oulashin
    Fri Apr 04 2025 13:35:18 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDMsgAreaChooser.js diff
    DDMsgAreaChooser: Fix for 'undefined' error (using the wrong object) when typing a sub-board number to choose it. Reported by Keyop. Fixes issue #899

  174. Rob Swindell (on Debian Linux)
    Thu Apr 03 2025 12:49:40 GMT-0700 (PDT)
    Modified Files:
    

    ctrl/fonts.ini diff
    exec/load/fonts.js diff
    Allow 'wantblink' to be set globally (in the root section) of fonts.ini Document it and set it by default.

  175. Rob Swindell (on Windows 11)
    Thu Apr 03 2025 12:26:59 GMT-0700 (PDT)
    Modified Files:
    

    ctrl/fonts.ini diff
    Document the 'requirements' and 'wantblink' options

  176. Deucе
    Thu Apr 03 2025 05:22:32 GMT-0700 (PDT)
    Modified Files:
    

    src/syncterm/CHANGES diff
    Add to changes.

  177. Deucе
    Thu Apr 03 2025 05:14:49 GMT-0700 (PDT)
    Modified Files:
    

    src/syncterm/telnet_io.c diff
    Fix telnet binary mode tracking. When SyncTERM started by enabling binary mode in both directions, the internal tracking of the binary status wasn't updated, so it was incorrectly tracked as being in NVT mode. After a file transfer, it would then revert to the NVT mode it throught it was in. This change updates the binary mode value when sending as well as receiving TELNET_BINARY_TX. This is still technically broken though since binary mode is negotiated separately in each direction, and the initial send of WILL + DO is actually a pair of requests that need to be confirmed by the remote. Until they are confirmed, the connection is still in NVT mode. Hopefully though this isn't an issue since the remote should reply to both, and if it denies there's no effective difference between what we should do when already in binary mode and not because we don't support any other modes (such as CHARSET option). Fixing it correctly would get very complex and involve blocking the connection until we get a response.

  178. Rob Swindell (on Windows 11)
    Wed Apr 02 2025 22:57:59 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_file_area.c diff
    Align the Virtual Shortcut property description with the current enumeration as pointed out by Nightfox.

  179. Rob Swindell (on Windows 11)
    Wed Apr 02 2025 22:57:59 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/load_cfg.c diff
    sys_timezone() no longer modifies the scfg_t.sys_timezone member itself ... just the returned copy (when toggling the DST flag). This resolve the issue of SCFG->System menu detecting changes by the sysop (and prompting to Save Changes when exiting) when no changes were actually made, just that DST had been auto-enabled/disabled based on the date.

  180. Rob Swindell (on Debian Linux)
    Wed Apr 02 2025 18:59:21 GMT-0700 (PDT)
    Modified Files:
    

    exec/logon.js diff
    More Rlogin xtrn-menu options (in modopts.ini [logon] section): rlogin_xtrn_logon set to false to skip the normal logon screens for Rlogin. rlogin_xtrn_logoff set to false (default) to immediately hangup, true to prompt the user if they truly wish to logoff, and "full" to prompt and if affirmed, go through the full logoff procedure (dislpay files and events, etc.).

  181. Deucе
    Wed Apr 02 2025 11:59:05 GMT-0700 (PDT)
    Modified Files:
    

    src/syncterm/CHANGES diff
    Note the Win32 ANSI music fix

  182. Deucе
    Wed Apr 02 2025 11:53:21 GMT-0700 (PDT)
    Modified Files:
    

    src/conio/cterm.c diff
    Only call xptone_complete() if there's foreground notes Otherwise there's a race condition that will crash Win32 at least. Fixes ticket 199.

  183. Deucе
    Wed Apr 02 2025 10:26:44 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/termtest/termtest.js diff
    Add test for background music as well This crashes SyncTERM on Win32 if it's the first ANSI music played

  184. Deucе
    Wed Apr 02 2025 08:41:24 GMT-0700 (PDT)
    Modified Files:
    

    src/conio/cterm.adoc diff
    Minor cleanup

  185. Deucе
    Wed Apr 02 2025 08:36:53 GMT-0700 (PDT)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    src/xpdev/Common.gmake diff
    Don't leave portaudio and pulseaudio enabled for Win32 Also, include WaveOut in the audio build options.

  186. Rob Swindell (on Debian Linux)
    Tue Apr 01 2025 11:36:11 GMT-0700 (PDT)
    Modified Files:
    

    exec/logon.js diff
    Support Rlogin terminal="xtrn_sec=<code>" to take users directly to an xtrn sec As requested via DOVE-Net by xbit and StingRay

  187. Rob Swindell (on Debian Linux)
    Mon Mar 31 2025 18:50:34 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/str.cpp diff
    Support optional ctrl/<terminal-protocol>/text.ini file If the sysop wants custom text.dat strings to be unique per terminal connection protocol (e.g. telnet, rlogin, ssh, raw), this is how that can be achieved (e.g. ctrl/rlogin/text.ini can be used to override text.dat strings only for RLogin connections). To at least partially address issue #897

  188. Rob Swindell (on Windows 11)
    Mon Mar 31 2025 17:25:23 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    Re-arrange VERSION/REVISION defines and add a comment

  189. Rob Swindell (on Windows 11)
    Mon Mar 31 2025 17:21:07 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    Derive VERSION_INT from VERSION Really, a single source of truth for the version major.minor number now.

  190. Rob Swindell (on Windows 11)
    Mon Mar 31 2025 16:54:45 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    Clean up formatting, some typos, convert C-style single-line comments to C++

  191. Rob Swindell (on Windows 11)
    Mon Mar 31 2025 16:01:55 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    Fix VERSION_NUM and VERSION_HEX encoding of updated version number (32100). Use math to compute the value of VERSION_NUM and VERSION_HEX so we don't have mutliple sources of truth for the integer-encoded version number any longer.

  192. Rob Swindell (on Windows 11)
    Mon Mar 31 2025 15:28:06 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_system.c diff
    Fix indent (whitespace) only

  193. Rob Swindell (on Windows 11)
    Mon Mar 31 2025 15:28:06 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/writemsg.cpp diff
    Fix MSVC warning about signed/unsigned comparison

  194. Rob Swindell (on Windows 11)
    Mon Mar 31 2025 15:28:06 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_bbs.cpp diff
    Fix GCC warning: ‘js_bbs_class’ initialized and declared ‘extern’

  195. Rob Swindell (on Debian Linux)
    Mon Mar 31 2025 15:15:55 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    Increase version to 3.21a

  196. Deucе
    Mon Mar 31 2025 11:33:06 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/ansi_terminal.cpp diff
    We don't use the ANSI clear line sequence. :D

  197. Deucе
    Mon Mar 31 2025 11:26:00 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/ansi_terminal.cpp diff
    Make note of ANSI.SYS violation.

  198. Deucе
    Mon Mar 31 2025 10:18:36 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/answer.cpp diff
    src/sbbs3/sbbsdefs.h diff
    Remove more ZuulTerm stuff.

  199. Deucе
    Mon Mar 31 2025 07:49:20 GMT-0700 (PDT)
    Modified Files:
    

    src/conio/cterm.adoc diff
    Reorganize string commands into sections Makes it nicer to read through looking for specific commands

  200. Deucе
    Mon Mar 31 2025 06:51:38 GMT-0700 (PDT)
    Modified Files:
    

    src/conio/cterm.adoc diff
    src/syncterm/CHANGES diff
    Split up the subtypes of ECMA-35 escape sequences These all have slightly different semantics (that don't matter yet), so split the up appropriately.

  201. Deucе
    Mon Mar 31 2025 06:28:20 GMT-0700 (PDT)
    Modified Files:
    

    src/conio/cterm.txt diff
    Update cterm.txt as well. I really shouldn't be doing this though. :(

  202. Deucе
    Mon Mar 31 2025 06:25:42 GMT-0700 (PDT)
    Modified Files:
    

    src/conio/cterm.adoc diff
    src/conio/cterm.c diff
    src/sbbs3/ansi_terminal.cpp diff
    xtrn/termtest/termtest.js diff
    Add support for DECSC/DECRC This allows for a way to save/restore the cursor position when DECLRMM is enabled. Saves to the same variables as SCOSC/SCORC.

  203. Deucе
    Mon Mar 31 2025 06:07:39 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/ansi_terminal.cpp diff
    Add long comment about ANSI in general Document that ANSI.SYS is what's implemented, and indicate how this can be extended.

  204. Deucе
    Sun Mar 30 2025 18:48:45 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/ansi_terminal.cpp diff
    src/sbbs3/js_console.cpp diff
    src/sbbs3/terminal.h diff
    Move cursor when console.current_row/current_column is set Closes issue #896 These are zero-based like the properties, not 1-based like gotoxy()

  205. Deucе
    Sun Mar 30 2025 11:55:45 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_bbs.cpp diff
    Fix Win32 build?

  206. Deucе
    Sun Mar 30 2025 11:46:26 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_user.c diff
    Fix terminal update We only do this in the terminal server... to detect this, check if the global object has a bbs object that is of the BBS class. If it does, the context private will be an sbbs_t pointer.

  207. Deucе
    Sun Mar 30 2025 11:13:58 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_user.c diff
    Workaround crash For now, this is a quick hacky fix. The web server does not store an sbbs_t in the context private, so we can't use it here. This needs further work.

  208. Deucе
    Sun Mar 30 2025 10:15:06 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/writemsg.cpp diff
    Fix another Coverity defect

  209. Deucе
    Sun Mar 30 2025 10:12:31 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/terminal.cpp diff
    src/sbbs3/useredit.cpp diff
    src/sbbs3/xtrn.cpp diff
    Fix some of the new Coverity warnings.

  210. Deucе
    Sun Mar 30 2025 09:43:41 GMT-0700 (PDT)
    Modified Files:
    

    src/conio/cterm.c diff
    Atari ST doesn't support the VT-52 Ident command

  211. Rob Swindell
    Sun Mar 30 2025 00:06:47 GMT-0700 (PDT)
    Added Files:
    

    src/sbbs3/ansi_parser.cpp diff
    src/sbbs3/ansi_parser.h diff
    src/sbbs3/ansi_terminal.cpp diff
    src/sbbs3/ansi_terminal.h diff
    src/sbbs3/petscii_term.cpp diff
    src/sbbs3/petscii_term.h diff
    src/sbbs3/terminal.cpp diff
    src/sbbs3/terminal.h diff
    Modified Files:

    exec/load/cga_defs.js diff
    exec/xbimage.js diff
    src/sbbs3/answer.cpp diff
    src/sbbs3/atcodes.cpp diff
    src/sbbs3/bat_xfer.cpp diff
    src/sbbs3/bulkmail.cpp diff
    src/sbbs3/chat.cpp diff
    src/sbbs3/chk_ar.cpp diff
    src/sbbs3/con_hi.cpp diff
    src/sbbs3/con_out.cpp diff
    src/sbbs3/data.cpp diff
    src/sbbs3/download.cpp diff
    src/sbbs3/exec.cpp diff
    src/sbbs3/execfile.cpp diff
    src/sbbs3/execmsg.cpp diff
    src/sbbs3/extdeps.mk diff
    src/sbbs3/file.cpp diff
    src/sbbs3/getkey.cpp diff
    src/sbbs3/getmsg.cpp diff
    src/sbbs3/getnode.cpp diff
    src/sbbs3/getstr.cpp diff
    src/sbbs3/inkey.cpp diff
    src/sbbs3/js_console.cpp diff
    src/sbbs3/js_user.c diff
    src/sbbs3/listfile.cpp diff
    src/sbbs3/logon.cpp diff
    src/sbbs3/main.cpp diff
    src/sbbs3/msgtoqwk.cpp diff
    src/sbbs3/newuser.cpp diff
    src/sbbs3/objects.mk diff
    src/sbbs3/pack_qwk.cpp diff
    src/sbbs3/pack_rep.cpp diff
    src/sbbs3/postmsg.cpp diff
    src/sbbs3/prntfile.cpp diff
    src/sbbs3/putmsg.cpp diff
    src/sbbs3/qwk.cpp diff
    src/sbbs3/readmail.cpp diff
    src/sbbs3/readmsgs.cpp diff
    src/sbbs3/sbbs.h diff
    src/sbbs3/sbbs.jsdocs.vcxproj diff
    src/sbbs3/sbbs.vcxproj diff
    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/scandirs.cpp diff
    src/sbbs3/scansubs.cpp diff
    src/sbbs3/str.cpp diff
    src/sbbs3/telgate.cpp diff
    src/sbbs3/un_rep.cpp diff
    src/sbbs3/upload.cpp diff
    src/sbbs3/useredit.cpp diff
    src/sbbs3/ver.cpp diff
    src/sbbs3/writemsg.cpp diff
    src/sbbs3/xtrn.cpp diff
    src/sbbs3/xtrn_sec.cpp diff
    Removed Files:

    src/sbbs3/ansiterm.cpp diff
    Merge branch 'terminal-abstraction' into 'master' Initial design of Terminal class See merge request main/sbbs!506

  212. Deucе
    Sun Mar 30 2025 00:06:47 GMT-0700 (PDT)
    Added Files:
    

    src/sbbs3/ansi_parser.cpp diff
    src/sbbs3/ansi_parser.h diff
    src/sbbs3/ansi_terminal.cpp diff
    src/sbbs3/ansi_terminal.h diff
    src/sbbs3/petscii_term.cpp diff
    src/sbbs3/petscii_term.h diff
    src/sbbs3/terminal.cpp diff
    src/sbbs3/terminal.h diff
    Modified Files:

    exec/load/cga_defs.js diff
    exec/xbimage.js diff
    src/sbbs3/answer.cpp diff
    src/sbbs3/atcodes.cpp diff
    src/sbbs3/bat_xfer.cpp diff
    src/sbbs3/bulkmail.cpp diff
    src/sbbs3/chat.cpp diff
    src/sbbs3/chk_ar.cpp diff
    src/sbbs3/con_hi.cpp diff
    src/sbbs3/con_out.cpp diff
    src/sbbs3/data.cpp diff
    src/sbbs3/download.cpp diff
    src/sbbs3/exec.cpp diff
    src/sbbs3/execfile.cpp diff
    src/sbbs3/execmsg.cpp diff
    src/sbbs3/extdeps.mk diff
    src/sbbs3/file.cpp diff
    src/sbbs3/getkey.cpp diff
    src/sbbs3/getmsg.cpp diff
    src/sbbs3/getnode.cpp diff
    src/sbbs3/getstr.cpp diff
    src/sbbs3/inkey.cpp diff
    src/sbbs3/js_console.cpp diff
    src/sbbs3/js_user.c diff
    src/sbbs3/listfile.cpp diff
    src/sbbs3/logon.cpp diff
    src/sbbs3/main.cpp diff
    src/sbbs3/msgtoqwk.cpp diff
    src/sbbs3/newuser.cpp diff
    src/sbbs3/objects.mk diff
    src/sbbs3/pack_qwk.cpp diff
    src/sbbs3/pack_rep.cpp diff
    src/sbbs3/postmsg.cpp diff
    src/sbbs3/prntfile.cpp diff
    src/sbbs3/putmsg.cpp diff
    src/sbbs3/qwk.cpp diff
    src/sbbs3/readmail.cpp diff
    src/sbbs3/readmsgs.cpp diff
    src/sbbs3/sbbs.h diff
    src/sbbs3/sbbs.jsdocs.vcxproj diff
    src/sbbs3/sbbs.vcxproj diff
    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/scandirs.cpp diff
    src/sbbs3/scansubs.cpp diff
    src/sbbs3/str.cpp diff
    src/sbbs3/telgate.cpp diff
    src/sbbs3/un_rep.cpp diff
    src/sbbs3/upload.cpp diff
    src/sbbs3/useredit.cpp diff
    src/sbbs3/ver.cpp diff
    src/sbbs3/writemsg.cpp diff
    src/sbbs3/xtrn.cpp diff
    src/sbbs3/xtrn_sec.cpp diff
    Removed Files:

    src/sbbs3/ansiterm.cpp diff
    Initial design of Terminal class

  213. Rob Swindell (on Debian Linux)
    Sat Mar 29 2025 20:22:24 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/ftpsrvr.c diff
    src/sbbs3/mailsrvr.c diff
    src/sbbs3/sbbsecho.c diff
    src/sbbs3/websrvr.c diff
    Replace PRIuOFF with PRIdOFF Better/more obvious "-1" bytes/size logged when flength() returns failure.

  214. Rob Swindell (on Debian Linux)
    Sat Mar 29 2025 15:02:37 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/graphic.js diff
    Fix for Deuce's previous commit: USER_ICE_COLOR was assumed to be defined This broke showmsgavatar.js

  215. Rob Swindell (on Debian Linux)
    Sat Mar 29 2025 14:30:31 GMT-0700 (PDT)
    Modified Files:
    

    exec/postmsg.js diff
    Add -D and -T options to allow setting message date (or date *and* time) Examples: "-D02/29/25" "-T02 Feb 1996 03:04:05 GMT" "-TDecember 17, 1995 03:24:00" "-T1995-12-17T03:24:00" The system's configured time zone is always used however.

  216. Deucе
    Sat Mar 29 2025 08:51:03 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/graphic.js diff
    exec/load/xbimage_lib.js diff
    Fix Graphics in ICE mode Translate the blink attribute to the bright BG attribute. This won't work for XBin however since XBin expects that setting the blink attribute will not change the background colour... and since it tends to use blink for everything, this means XBin images will be shown with a bright background.

  217. Deucе
    Sat Mar 29 2025 08:22:10 GMT-0700 (PDT)
    Modified Files:
    

    exec/xbimage.js diff
    Fix test to not display for ICE colour

  218. Rob Swindell
    Fri Mar 28 2025 17:16:43 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    Merge branch 'dd_msg_reader_reading_mail_only_mark_to_user_read' into 'master' DDMsgReader: When reading messages (including sent email), only mark it read if it's to the current user. Reported by Accession. See merge request main/sbbs!521

  219. Eric Oulashin
    Fri Mar 28 2025 16:44:01 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    DDMsgReader: When reading messages (including sent email), only mark it read if it's to the current user. Reported by Accession.

  220. Deucе
    Fri Mar 28 2025 11:34:46 GMT-0700 (PDT)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Fix program settings menu... The last item was being cut off on my system (uninitialized value)

  221. Rob Swindell (on Windows 11)
    Thu Mar 27 2025 13:45:54 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/ctrl/sbbsctrl.cpp diff
    If passed a filename on the command-line, use as the sbbs.ini file To be consistent with how sbbs[.exe] works

  222. Rob Swindell (on Windows 11)
    Thu Mar 27 2025 13:44:39 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbscon.c diff
    If sbbs is passed a directory, use that as a the ctrl-dir (to find sbbs.ini) To be consistent with how sbbsctrl.exe works

  223. Rob Swindell (on Windows 11)
    Thu Mar 27 2025 12:25:39 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/load_cfg.c diff
    Better range checking of the configure node paths

  224. Deucе
    Tue Mar 25 2025 07:29:38 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/lord/lord.js diff
    Fix issue #766 Don't save player if player is undefined. Presumably someone is sitting at the intitial menu until they run out of time on the BBS. The error was completely harmless.

  225. Deucе
    Mon Mar 24 2025 20:58:12 GMT-0700 (PDT)
    Modified Files:
    

    src/syncterm/term.c diff
    In PETSCII mdoes, map BS to DEL C64 doesn't have a backspace key, so treat backspace the same as DEL. Closes tick 197.

  226. Deucе
    Mon Mar 24 2025 20:39:18 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/tw2/maint.js diff
    Don't lock players for read during maint This should fix issue #893, but it's hard to tell for sure, the docs for JSON db are a bit sparse.

  227. Rob Swindell
    Mon Mar 24 2025 14:36:11 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/recordfile.js diff
    Add more detail to the file open failure exception

  228. Deucе
    Mon Mar 24 2025 07:36:00 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/recordfile.js diff
    Returning null from a constuctor is silly Throw an error instead. This should help DigitalMan debug his issue.

  229. Rob Swindell (on Debian Linux)
    Mon Mar 24 2025 01:17:43 GMT-0700 (PDT)
    Modified Files:
    

    ctrl/main.ini diff
    Add the weekly_event section

  230. Rob Swindell (on Debian Linux)
    Mon Mar 24 2025 01:17:14 GMT-0700 (PDT)
    Modified Files:
    

    ctrl/sbbs.ini diff
    Add the [Mail] PostTo key (blank)

  231. Rob Swindell (on Debian Linux)
    Mon Mar 24 2025 01:14:02 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/putmsg.cpp diff
    Clean-up the hex and decimal value parsing of "extra attribute codes" Eliminate the unnecessary calls to snprintf() and atoi()/ahtoul() since these are simple fixed-length parses. No change in behavior, just a minor optimization.

  232. Deucе
    Mon Mar 24 2025 01:13:25 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/lord2/cnw/vaults.idf diff
    xtrn/lord2/cnw/world.dat diff
    Revert CNW binary file accidental change.

  233. Deucе
    Mon Mar 24 2025 00:48:44 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/lord2/cnw/vaults.idf diff
    xtrn/lord2/cnw/world.dat diff
    xtrn/lord2/lord2.js diff
    When maint is ran, &time is the previous day. &time is incremented after maint runs, which allows a newly created first user to take turns on the first new day.

  234. Rob Swindell (on Debian Linux)
    Sun Mar 23 2025 23:45:06 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_global.c diff
    src/sbbs3/msgtoqwk.cpp diff
    src/sbbs3/putmsg.cpp diff
    src/sbbs3/wordwrap.c diff
    src/sbbs3/wordwrap.h diff
    src/sbbs3/writemsg.cpp diff
    Add support for Renegade color (pipe) codes to wordwrap() When viewing messages posted with pipe codes (e.g. coming from Renegade, WWIV, Mystic BBS), the wordwrap logic would prematurely wrap lines.

  235. Rob Swindell (on Debian Linux)
    Sun Mar 23 2025 23:45:04 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/js_system.c diff
    Fix alignment of system property descriptions in JSDOCS

  236. Deucе
    Sun Mar 23 2025 23:39:43 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/lord2/l2lib.js diff
    Add some random parenthesis This is highly unlikely to solve whatever is happening on DMs system

  237. Rob Swindell
    Sun Mar 23 2025 19:12:00 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/mrc/mrc-client.js diff
    Check the node "interrupt flag" every 10 seconds Since this script isn't normally calling bbs.nodesync() (e.g. to display any pending inter-node messages/telegrams), we have to check the NODE_INTR flag manually. Calling bbs.nodesync() directly here to get a more immediate notice and disconnection message sent to the user. This check is necessary so that a sysop or the event thread can gracefully terminate/disconnect a user that's running this script (e.g. when an exclusive timed event is scheduled to run and thus being prevented to run). This should help Keyop's reported issue with his weekly msgmaint timed event having to ungracefully disconnect his user session because he's running this script.

  238. Rob Swindell
    Sun Mar 23 2025 18:50:01 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/mrc/mrc-client.js diff
    Print a helpful error and exit if can't open mrc-client.ini file

  239. Rob Swindell (on ChromeOS)
    Sun Mar 23 2025 18:09:08 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/xtrn.cpp diff
    Add node interrupt flag checking to *nix external() execution of stdio progs and abort the execution of the program when the node is interrupted. This should allow more cases were the node interrupt flag can be used to gracefully disconnect a user running a DOS or native (stdio) program on *nix. We have this functionality already in the Windows version of external()

  240. Rob Swindell (on ChromeOS)
    Sun Mar 23 2025 17:39:53 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/main.cpp diff
    Set node "interrupt" flag to try to gracefully disconnect user blocking event When a timed event is configured to run "exclusively", all nodes need to not be in in-use. As it was, after waiting 60 minutes for the online user(s) to notice they'd run out of time and disconnect, we'd just (rather ungracefully) close the sockets used by such node(s) connections. This results in same logged errors about trying to send to bad socket descriptors and provides no feedback to the user about why they were disconnected. Since we have the node interrupt flag (which hopefully, all scripts are checking via node_sync) - use that to try to more gracefully terminate the user's session/connection after 30 minutes of waiting for the user to disconnect. If after 60 minutes of waiting, the node is still in-use, we still do the socket disconnection method.

  241. Rob Swindell (on ChromeOS)
    Sun Mar 23 2025 17:17:35 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/main.cpp diff
    filelength() can return -1 on error, deal Just caught during code review

  242. Rob Swindell (on ChromeOS)
    Sun Mar 23 2025 17:12:27 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/xtrn_sec.cpp diff
    Don't close logfile_fp before running JavaScript externals This would've prevented some JS log functions from writing to the node.log file (which gets concatented onto the daily "system" log files). This just came up via code review while looking into Keyop's reported error: term Node 2 !ERROR 9 (Bad file descriptor) in main.cpp line 4606 (node_thread) truncating "logfile" access=0 This is likely unrelated since the "logfile" is immediately re-opened after executing the external program/script.

  243. Deucе
    Sun Mar 23 2025 12:34:01 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/lord2/lord2.js diff
    Make the first day be day zero. Not sure this makes any difference, but this matches LORD2 behaviour.

  244. Deucе
    Sun Mar 23 2025 12:29:25 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/lord2/l2lib.js diff
    When the player is not created, number should be zero Should make issue #392 go away, but the underlying CNW bug which will cause the player that runs maint to see all NPCs remains. For CNW, maintenance should absolutely be ran as a timed event, with a real name that never gets an account. Luckily, if there's no dropfile, real name defaults to SYSOP, which should meet that criteria.

  245. Rob Swindell
    Sat Mar 22 2025 21:26:36 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/lord2/l2cfg.js diff
    Fix exception: assignment to undefined variable 'ch'

  246. Deucе
    Sat Mar 22 2025 21:00:38 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/lord2/lord2.js diff
    Log all the random crap when rec is NaN Maybe something will end up being useful, nobody actaully seems to notice it happening though.

  247. Deucе
    Sat Mar 22 2025 20:35:35 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/lord2/l2cfg.js diff
    Don't try to upper-case a function Reported by Digitalman

  248. Rob Swindell (on Debian Linux)
    Sat Mar 22 2025 16:47:14 GMT-0700 (PDT)
    Modified Files:
    

    src/sexpots/sexpots.c diff
    Log modem status value, helpful when debugging serial line/modem issues

  249. mcmlxxix
    Fri Mar 21 2025 13:02:41 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/bublbogl/game.js diff
    xtrn/bublbogl/lobby.bin diff
    fix bad formatting decisions from previous update

  250. Deucе
    Fri Mar 21 2025 11:41:23 GMT-0700 (PDT)
    Modified Files:
    

    src/build/Common.gmake diff
    src/xpdev/CMakeLists.txt diff
    It's spelt _POSIX_C_SOURCE Since this doesn't work, we're clearly not relying on it, so remove it. Reported by: jrtc27 via IRC

  251. Rob Swindell (on Debian Linux)
    Thu Mar 20 2025 17:34:17 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/scfglib2.c diff
    strtoattr() now ignores Ctrl-A chars in the string... as attrstr() used to This returns bug-compatibility with attrstr(), at least for Ctrl-A chars, so that if someone is for example, assigning a Ctrl-A sequence to JS console.attributes, that'll work (again) as it did in SBBS v3.19. Any other invalid chars in the string will stop the parsing, still, even though that's not how attrstr() worked. For Kirkman's doorgame/script backward compatibility.

  252. Rob Swindell (on Debian Linux)
    Tue Mar 18 2025 23:20:20 GMT-0700 (PDT)
    Modified Files:
    

    exec/pcboard.src diff
    exec/wildcat.src diff
    Don't display/log an error message if text/menu/logon.* doesn't exist For Wildcat (N)ewsletter command and PCBoard "NEWS" command, display "No news is good news." instead. :-)

  253. Rob Swindell
    Tue Mar 18 2025 16:59:33 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDFileAreaChooser.js diff
    xtrn/DDAreaChoosers/DDMsgAreaChooser.js diff
    xtrn/DDAreaChoosers/readme.txt diff
    xtrn/DDAreaChoosers/version_history.txt diff
    Merge branch 'dd_area_choosers_name_collapsing_arbitrary_levels' into 'master' DD file & message area choosers: Name collapsing now supports an arbitrary number of levels See merge request main/sbbs!520

  254. Eric Oulashin
    Mon Mar 17 2025 18:15:56 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/DDAreaChoosers/DDFileAreaChooser.js diff
    xtrn/DDAreaChoosers/DDMsgAreaChooser.js diff
    xtrn/DDAreaChoosers/readme.txt diff
    xtrn/DDAreaChoosers/version_history.txt diff
    DD file & message area choosers: Name collapsing now supports an arbitrary number of levels

  255. Rob Swindell (on Debian Linux)
    Mon Mar 17 2025 17:27:08 GMT-0700 (PDT)
    Modified Files:
    

    exec/nntpservice.js diff
    Fix issue with being able to read mail base as a newsgroup ... when using the -mail option, which probably no sysop is. Just needed to set the 'can_read' property. As reported via IRC by Accession

  256. Rob Swindell (on Windows 11)
    Sat Mar 15 2025 14:28:59 GMT-0700 (PDT)
    Modified Files:
    

    src/sexpots/sexpots.c diff
    Increase buffer size from 4096 to 10000 in handle_call() Log errors if/when comWriteBuf() fails. This is to hopefully help to root-cause or even possibly resolve the issue reported in #synchronet by PyRoDrAkE: "It all works well until the Dialup connection runs slower than 4800 baud using SexPots. I connect from my XT at either 1200 baud or 2400 baud and it would just stop drawing midway." There shouldn't be any write timeout in comWriteBuf(), so I don't know why this would help, but it's worth a try. Logging any comWriteBuf() errors is also a good idea in general.

  257. Rob Swindell (on Debian Linux)
    Fri Mar 14 2025 21:21:24 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsecho.c diff
    Add typecast to elminate GCC warning

  258. Rob Swindell (on Windows 11)
    Fri Mar 14 2025 21:18:51 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsecho.c diff
    Eliminate some unnecessary typecasts and parens

  259. Rob Swindell (on Windows 11)
    Fri Mar 14 2025 21:18:51 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsecho.h diff
    Increment SBBSecho version to 3.24

  260. Rob Swindell (on Windows 11)
    Fri Mar 14 2025 21:18:51 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/sbbsecho.c diff
    Take the configured origin line chars into account when determining charset and if the message is UTF-8, encode the origin line as UTF-8 too. If the message is straight ASCII (e.g. the sub-board is configured as ASCII only), convert the configured origin line to ASCII, before appending. At this time, only ASCII and CP437 encodings of originlines are supported in Synchronet (imported and exported origin lines can contain UTF-8). This should address the issue raise by Sergey Dorofeev (2:5020/12000) in the FidoNet UTF-8 echo whereby messages exported from Synchronet systems (presumably using SBBSecho) could contain a mixture of CP437 and UTF-8 encodings (!) when the sysop had CP437 chars in their configured origin line.

  261. Rob Swindell (on Debian Linux)
    Thu Mar 13 2025 01:24:18 GMT-0700 (PDT)
    Removed Files:
    

    install/lsm.txt diff
    Get rid of this noise (obsolete Linux Software Map data file) I sent an update ("add" email), but it was rejected with "No LSM entries were found" - whatever that means.

  262. Rob Swindell (on Debian Linux)
    Thu Mar 13 2025 00:15:36 GMT-0700 (PDT)
    Modified Files:
    

    exec/chksetup.js diff
    Perform a Synchronet version check and warn if it's not equal to the latest ... so yeah, most *nix sysops will get a warning about running something newer than the latest release.

  263. Rob Swindell (on Debian Linux)
    Thu Mar 13 2025 00:01:40 GMT-0700 (PDT)
    Modified Files:
    

    install/sbbs.json diff
    Shorten the by-line to make warnings (by chksetup) more readable

  264. Rob Swindell (on Debian Linux)
    Wed Mar 12 2025 23:57:42 GMT-0700 (PDT)
    Modified Files:
    

    install/sbbs.json diff
    Missed a comma and a quote

  265. Rob Swindell (on Debian Linux)
    Wed Mar 12 2025 23:27:02 GMT-0700 (PDT)
    Added Files:
    

    install/sbbs.json diff
    Synchronet BBS release details ... for a version number comparison (e.g. by chksetup.js)

  266. Rob Swindell (on Debian Linux)
    Wed Mar 12 2025 22:46:50 GMT-0700 (PDT)
    Modified Files:
    

    install/lsm.txt diff
    Updated (why?) This file hasn't been updated in 20 years and nobody noticed. :-) I at least made a new submission (sent email) one last time before we (might) just remove this file since the the LSM database doesn't appear to be of any real use/value these days.

  267. Rob Swindell (on Debian Linux)
    Wed Mar 12 2025 14:56:41 GMT-0700 (PDT)
    Modified Files:
    

    xtrn/tw2/input.js diff
    Clear the aborted flag on input This fixes the bug whereby if the user ever hit Ctrl-C or hit 'N' at a pause prompt, they could never see another menu / display file.

  268. Rob Swindell (on Debian Linux)
    Tue Mar 11 2025 17:18:18 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/sbbslist_html.js diff
    Change link to syncterm.lst file from ftp to http URL

  269. Rob Swindell (on Debian Linux)
    Tue Mar 11 2025 17:18:18 GMT-0700 (PDT)
    Modified Files:
    

    exec/load/presence_lib.js diff
    Fix cosmetic issue with Logging-out node vstatus display (NodeStatusLogout) When displaying this node vstatus, the user's alias shouldn't be appended to the node status, else you get something like this: 16 Logging out Digital ManDigital Man

  270. Rob Swindell (on macOS)
    Sun Mar 09 2025 22:57:11 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/scfglib1.c diff
    Better config (.ini) file read error detection and reporting It was possibly before for fgets() failures to be pretty hard to diagnose.

  271. Rob Swindell (on macOS)
    Sun Mar 09 2025 22:57:11 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/load_cfg.c diff
    Don't try to load node.ini if no nodes are configured in main.ini But set the error string to hopefully be printed as a warning

  272. Rob Swindell (on macOS)
    Sun Mar 09 2025 22:57:11 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/services.c diff
    Don't clear the 'terminated' flag after binding sockets A sysop could hit 'q' to quit (sbbs, console mode) while the binding is taking place.

  273. Deucе
    Sun Mar 09 2025 07:19:51 GMT-0700 (PDT)
    Modified Files:
    

    src/syncterm/ssh.c diff
    Call ssh_close() on failure after ssh_session is initialized Fixes assertion on failed connects.

  274. Deucе
    Sun Mar 09 2025 06:49:51 GMT-0700 (PDT)
    Modified Files:
    

    src/sbbs3/ssl.c diff
    Incremental backoff on loading SSL cert Try for 16 seconds (14 loops) to load the SSL certificate. On the first time through the loop, create self-signed certificate if configured to do so. This also splits the generation of the self-signed certificate into a separate function. While we're here, split the new SSL epoch out into a separate function as well, and explicitly call it when we create a new self-signed cert. This at least partially fixes the epoch thing, but there's still the possibility of creating it multiple times in the same second... the file date isn't really enough.

  275. Rob Swindell (on Windows 11)
    Sat Mar 08 2025 21:48:50 GMT-0800 (PDT)
    Modified Files:
    

    src/sbbs3/chat.cpp diff
    src/sbbs3/logfile.cpp diff
    src/sbbs3/logfile.h diff
    src/sbbs3/main.cpp diff
    src/sbbs3/xtrn_sec.cpp diff
    Not all uses of fopenlog() should open the file O_DENYNONE For quick open/write/close log files (e.g. error.log), go back to using nopen() to insure exclusive access while writing to prevent any accidental corruption from concurrent writes from multiple threads or processes.

  276. Rob Swindell (on Windows 11)
    Sat Mar 08 2025 21:47:55 GMT-0800 (PDT)
    Modified Files:
    

    src/sbbs3/sbbs.jsdocs.vcxproj diff
    Updated to match the latest sbbs.vcxproj

  277. Rob Swindell (on Windows 11)
    Sat Mar 08 2025 21:26:33 GMT-0800 (PDT)
    Modified Files:
    

    src/sbbs3/scfg/scfgsys.c diff
    src/sbbs3/scfgdefs.h diff
    src/sbbs3/scfglib1.c diff
    src/sbbs3/scfgsave.c diff
    src/sbbs3/ssl.c diff
    Add/use option: SCFG->System->Security->Create Self-signed Certificate Default to false / No. Maybe this should default to true / Yes until a certificate (e.g. from Let's Encrypt) is successfully provisioned? Anyway, this is just a quick-hack to address the issue where a sysop's CA-sigend certificate may be overwritten with a self-signed certificate if for some reason Synchronet can't find/read the ssl.cert file. See issue #881.

  278. Rob Swindell (on Windows 11)
    Sat Mar 08 2025 20:47:37 GMT-0800 (PDT)
    Modified Files:
    

    3rdp/win32.release/cryptlib/bin/cl32.dll diff
    3rdp/win32.release/cryptlib/bin/cl32.lib diff
    3rdp/win32.release/cryptlib/include/cryptlib.h diff
    Latest patched cryptlib for Win32 - fixes issue #882

  279. Rob Swindell (on Windows 11)
    Sat Mar 08 2025 20:41:14 GMT-0800 (PDT)
    Modified Files:
    

    src/xpdev/str_list.c diff
    Detect failure (e.g. realloc failure) in strListReadFile->strListAppend()

  280. Deucе
    Sat Mar 08 2025 20:15:20 GMT-0800 (PDT)
    Added Files:
    

    3rdp/build/cl-winapi-needed.patch diff
    Modified Files:

    3rdp/build/CMakeLists-cl.txt diff
    3rdp/build/CMakeLists.txt diff
    3rdp/build/GNUmakefile diff
    Patch to fix issue #882 Missing WINAPI decoration on function loaded from DLL. When called, this would corrupt the parameters to callers, presumably because the register allocater didn't know the call would tromp on something.

  281. Deucе
    Sat Mar 08 2025 19:42:56 GMT-0800 (PDT)
    Modified Files:
    

    3rdp/build/GNUmakefile diff
    Removed Files:

    3rdp/build/cl-enbiggen-acls.patch diff
    Revert "Add a new experimental patch for keyset crash." This reverts commit 219e685852471a2c0aba95d5267a038538e10c02.

  282. Deucе
    Sat Mar 08 2025 19:42:55 GMT-0800 (PDT)
    Modified Files:
    

    3rdp/build/GNUmakefile diff
    Revert "Fix path to new patch" This reverts commit 4f2886fce0041765538d3c099a706bffb6f4696e.

  283. Rob Swindell (on Debian Linux)
    Sat Mar 08 2025 18:17:23 GMT-0800 (PDT)
    Modified Files:
    

    ctrl/file.ini diff
    Mark zip and unzip testable file commands as "Native" This should be redundant since "zip" and "unzip" should already be in the native program list, but at some point we should be able to get rid of the native program list or at least have it default to blank.

  284. Deucе
    Sat Mar 08 2025 09:16:05 GMT-0800 (PST)
    Modified Files:
    

    3rdp/build/GNUmakefile diff
    Fix path to new patch

  285. Deucе
    Sat Mar 08 2025 08:49:19 GMT-0800 (PST)
    Added Files:
    

    3rdp/build/cl-enbiggen-acls.patch diff
    Modified Files:

    3rdp/build/GNUmakefile diff
    Add a new experimental patch for keyset crash. Cryptlib uses the NT 3.1 API for ACLs, which means hard-codeding certain security structure sizes. Quadruple the sizes of these to see if this fixes the crash DigitalMan is seeing.

  286. Rob Swindell (on Windows 11)
    Fri Mar 07 2025 20:05:12 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/atcodes.cpp diff
    Add MSGS @-code - total messages in current sub-board Unlike SMB_MSGS, the sub-board does not have to be already open. As requested/reported by Finglonger (SILENT)

  287. Deucе
    Fri Mar 07 2025 17:31:57 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ssl.c diff
    Fix failure handing in crypt initialization. Don't add the atexit() do_cryptEnd() handler until we're not going to call cryptEnd() ourselves.

  288. Rob Swindell (on Debian Linux)
    Fri Mar 07 2025 17:17:55 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    We want the install test to start right away, not way for all builds <@Deuce> If you want the install test to start immediately, you would use needs: []

  289. Rob Swindell (on Debian Linux)
    Fri Mar 07 2025 17:13:52 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Use 'needs' instead of 'dependencies' for smoketests so they can run sooner in the pipeline

  290. Rob Swindell (on Debian Linux)
    Fri Mar 07 2025 17:06:24 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    linux install test is standalone (doesn't require a successful build first)

  291. Deucе
    Fri Mar 07 2025 16:05:36 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_cryptkeyset.c diff
    Set p->ks to CRYPT_UNUSED after successful cryptKeysetClose() Possibly should be done after a failure too...

  292. Rob Swindell
    Fri Mar 07 2025 12:33:27 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/ddfl_cfg.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    Merge branch 'dd_file_lister_edit_extd_desc_when_none_fix' into 'master' DDFileLister: Fix for editing a file's extended description when the file doesn't have one initially See merge request main/sbbs!519

  293. Eric Oulashin
    Fri Mar 07 2025 12:33:27 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/ddfl_cfg.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    DDFileLister: Fix for editing a file's extended description when the file doesn't have one initially

  294. Deucе
    Fri Mar 07 2025 08:25:42 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/uedit/uedit.c diff
    Use WIN_ATEXIT at exit. Also, fix some formatting.

  295. Rob Swindell (on Debian Linux)
    Thu Mar 06 2025 16:31:46 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/mqtt.c diff
    src/sbbs3/mqtt.h diff
    Don't publish to the initial server topics (e.g. version) until after connect Fix for issue #884 We must wait until the connect_callback() has been called to publish these messages. Using mqtt.server_version as the indicator of an initial startup connection versus a re-connection (due to broker-connection loss), i.e. setting to NULL after initial connection.

  296. Rob Swindell (on Debian Linux)
    Thu Mar 06 2025 12:49:46 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ssl.c diff
    Log a (notice-level) message when creating a self-signed cert

  297. Rob Swindell
    Thu Mar 06 2025 09:51:20 GMT-0800 (PST)
    Added Files:
    

    xtrn/mrc/mrc-help-main.msg diff
    xtrn/mrc/mrc-help-nick.msg diff
    xtrn/mrc/mrc-help-theme.msg diff
    xtrn/mrc/mrc-help-twit.msg diff
    xtrn/mrc/mrc-splash.msg diff
    Modified Files:

    xtrn/mrc/mrc-client.example.ini diff
    xtrn/mrc/mrc-client.js diff
    xtrn/mrc/mrc-connector.js diff
    xtrn/mrc/mrc-session.js diff
    xtrn/mrc/readme.txt diff
    Merge branch 'massive-mrc-update-20250303' into 'master' MRC Change List on 3/3/2025: See merge request main/sbbs!517

  298. Craig Hendricks
    Thu Mar 06 2025 09:51:20 GMT-0800 (PST)
    Added Files:
    

    xtrn/mrc/mrc-help-main.msg diff
    xtrn/mrc/mrc-help-nick.msg diff
    xtrn/mrc/mrc-help-theme.msg diff
    xtrn/mrc/mrc-help-twit.msg diff
    xtrn/mrc/mrc-splash.msg diff
    Modified Files:

    xtrn/mrc/mrc-client.example.ini diff
    xtrn/mrc/mrc-client.js diff
    xtrn/mrc/mrc-connector.js diff
    xtrn/mrc/mrc-session.js diff
    xtrn/mrc/readme.txt diff
    MRC Change List on 3/3/2025:

  299. Deucе
    Wed Mar 05 2025 15:30:43 GMT-0800 (PST)
    Modified Files:
    

    exec/load/portdefs.js diff
    Fix typo.

  300. Deucе
    Wed Mar 05 2025 12:02:52 GMT-0800 (PST)
    Modified Files:
    

    exec/tests/crypt/cryptkeyset.js diff
    Looks like gitlab doesn't have write access to system.temp_dir Just write to whatever dir, maybe that'll work.

  301. Deucе
    Wed Mar 05 2025 11:55:04 GMT-0800 (PST)
    Added Files:
    

    exec/tests/crypt/cryptkeyset.js diff
    Add a cryptkeyset test I expect this to crash on Windows...

  302. Deucе
    Wed Mar 05 2025 11:36:00 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ssl.c diff
    assert() pthread_mutex assumptions in ssl.c

  303. Deucе
    Wed Mar 05 2025 11:30:36 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ssl.c diff
    Don't set cryptlib_initialized = true until the init is complete is_crypt_initialized() does not depend on the once value.

  304. Rob Swindell
    Wed Mar 05 2025 11:07:02 GMT-0800 (PST)
    Modified Files:
    

    exec/load/dd_lightbar_menu.js diff
    Merge branch 'dd_lightbar_menu_non_ansi_input_update' into 'master' DDLightbarMenu: AdditionalQuitKeys now are honored in traditional (non-lightbar) mode, and there's a new menu property, nonANSIPromptText, which allows customization of the prompt text when in traditional/non-ANSI mode. See merge request main/sbbs!518

  305. Eric Oulashin
    Wed Mar 05 2025 11:07:02 GMT-0800 (PST)
    Modified Files:
    

    exec/load/dd_lightbar_menu.js diff
    DDLightbarMenu: AdditionalQuitKeys now are honored in traditional (non-lightbar) mode, and there's a new menu property, nonANSIPromptText, which allows customization of the prompt text when in traditional/non-ANSI mode.

  306. Deucе
    Wed Mar 05 2025 10:59:08 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci-unix.yml diff
    Don't cache spidermonkey configure results Appears to break builds sometimes.

  307. Deucе
    Wed Mar 05 2025 09:30:33 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    src/syncterm/CHANGES diff
    Document changes, bump CTerm revision

  308. Deucе
    Tue Mar 04 2025 19:44:14 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    src/conio/cterm.h diff
    Allow NUL in Stari ST VT-52 sequences. It seems at least some Atari ST VT-52 implementations do.

  309. Rob Swindell (on Windows 11)
    Tue Mar 04 2025 00:40:27 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    Bump rev to E (i.e. v3.20e)

  310. Rob Swindell (on Windows 11)
    Tue Mar 04 2025 00:39:57 GMT-0800 (PST)
    Modified Files:
    

    docs/v320_new.txt diff
    Fix typo

  311. Rob Swindell (on Windows 11)
    Tue Mar 04 2025 00:37:45 GMT-0800 (PST)
    Modified Files:
    

    docs/jsobjs.html diff
    Regenerated doc for v3.20d Copied from https://nix.synchro.net/jsobjs.html since jsdocs.js is crashing for me (on Windows) in js_cryptkeyset_constructor() -> cryptlib

  312. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 22:14:34 GMT-0800 (PST)
    Modified Files:
    

    install/FILE_ID.DIZ diff
    Updated for v3.20d

  313. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 20:17:28 GMT-0800 (PST)
    Modified Files:
    

    ctrl/services.ini diff
    Disable ircd by default The ircd keeps services from auto-recycling upon request while there's an outbound connection (e.g. to vert).

  314. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 20:16:48 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/services.c diff
    Fix restart of services after a stop Bug introduced in commit 88e8688baac4a83830fdd06509af4b940a65eccf

  315. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 19:29:36 GMT-0800 (PST)
    Modified Files:
    

    exec/load/text.js diff
    Fix TOTAL_TEXT value

  316. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 19:27:10 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    Increment version to v3.20d

  317. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 19:17:16 GMT-0800 (PST)
    Modified Files:
    

    docs/v320_new.txt diff
    More changes in v3.20d documented

  318. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 19:15:35 GMT-0800 (PST)
    Modified Files:
    

    ctrl/services.ini diff
    Add NO_USER_PROT in comments, enable by default for IMAP[S} services

  319. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 18:23:15 GMT-0800 (PST)
    Modified Files:
    

    docs/install.rtf diff
    Update to v3.20d Windows Vista (and Windows Server 2008) are now the minimum versions supported.

  320. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 18:22:14 GMT-0800 (PST)
    Modified Files:
    

    install/install.iss diff
    Bump version to 3.20.3 (v3.20d) Make Windows 6.0 (Vista) the minimum version for install.

  321. Rob Swindell
    Mon Mar 03 2025 18:19:34 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ctrl/sbbsctrl.res diff
    Built again with C++Builder IDE Apparently, the IDE loads the .res file and then updates the .bpr file. So we can't just update values in the .bpr and expect them to propagate to a rebuilt .res file. I'm sure I've learned this lesson before and forgotten it. Perhaps multiple times now.

  322. Rob Swindell
    Mon Mar 03 2025 18:10:34 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ctrl/sbbsctrl.res diff
    Rebuilt with C++Buidler IDE

  323. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 18:06:43 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/readmsgs.cpp diff
    Update data/user/*.ini section name for storing recent save path for msg sub

  324. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 18:06:43 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ctrl/sbbsctrl.bpr diff
    Increment version to 3.20.3.0 (v3.20d)

  325. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 18:06:43 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/atcodes.cpp diff
    Add "AT" @-code to enable easier output of literal @-codes without expansion Deuce's suggestion

  326. Deucе
    Mon Mar 03 2025 16:24:10 GMT-0800 (PST)
    Modified Files:
    

    exec/textedit.js diff
    Remove cleartoeos() hack It's in JS now.

  327. Deucе
    Mon Mar 03 2025 16:20:44 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    Fix Mode7 APS handling The code is 0x1C, not 0x1E, and it's row then column.

  328. Deucе
    Mon Mar 03 2025 15:30:07 GMT-0800 (PST)
    Modified Files:
    

    exec/textedit.js diff
    Load saved textedit.ini at start.

  329. Deucе
    Mon Mar 03 2025 15:21:10 GMT-0800 (PST)
    Modified Files:
    

    exec/textedit.js diff
    Add CTRL-S to "save" This simply writes changed values to ctrl/textedit.ini, you can copy these into the appropriate text.ini or text.dat. I haven't dug in to see if text.dat has different encoding than ini or anything, and I think that if you want to use this to build a full text.dat, you would want to do it a bit at a time, so a follow- on utility to convert text.ini to text.dat is likely the easiest way to do this stuff.

  330. Deucе
    Mon Mar 03 2025 14:28:20 GMT-0800 (PST)
    Modified Files:
    

    exec/load/syncterm_cache.js diff
    Differentiate between nothing and NUL Not sure why I need to... this may be some terminal-abstraction thing.

  331. Deucе
    Mon Mar 03 2025 14:13:08 GMT-0800 (PST)
    Modified Files:
    

    exec/textedit.js diff
    Ah, here's the point the P_NOATCODES can be removed. That was quick!

  332. Rob Swindell (on Windows 11)
    Mon Mar 03 2025 14:06:54 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/con_out.cpp diff
    Remove broken security check for text.dat strings w/@-codes in bputs() As Deuce pointed out, the text[] pointers are malloc()'d so they're not necessarily sequential/in-order addresses. Definitely not after any text replacements have been made.

  333. Deucе
    Mon Mar 03 2025 13:59:27 GMT-0800 (PST)
    Modified Files:
    

    exec/textedit.js diff
    Always pass P_NOATCODES when calling print() This is to work around an issue when fiddling with text data, and will likely be able to be removed at some point.

  334. Deucе
    Mon Mar 03 2025 13:10:38 GMT-0800 (PST)
    Modified Files:
    

    exec/textedit.js diff
    Don't subtract one from TOTAL_TEXT anymore

  335. Deucе
    Mon Mar 03 2025 13:07:31 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/textgen.c diff
    Fix off-by-one in load/text.js TOTAL_TEXT value i is incremented after reading the last entry, making this value incorrect.

  336. Deucе
    Mon Mar 03 2025 11:59:00 GMT-0800 (PST)
    Modified Files:
    

    exec/textedit.js diff
    Actually allow editing (and some other fixes) Home/End move the the expected place. CTRL-Q now quits, not Q CTRL-R "runs" a message (ie: doesn't abort) useful for @EXEC:noyesbar@ CTRL-Z undoes all changes (reloads text.dat value) CTRL-V allows entering a hex value ^ allows entering a CTRL-code \ allows an escape character

  337. Deucе
    Mon Mar 03 2025 09:57:45 GMT-0800 (PST)
    Modified Files:
    

    exec/textedit.js diff
    Some more mnemonics() and do theoretical 40-col support

  338. Deucе
    Mon Mar 03 2025 09:25:02 GMT-0800 (PST)
    Modified Files:
    

    exec/textedit.js diff
    FileInfoEditPrompt uses mnemonics() as well.

  339. Deucе
    Mon Mar 03 2025 09:16:53 GMT-0800 (PST)
    Modified Files:
    

    exec/textedit.js diff
    Add example args for MsgAttr as well. Nicer example than MsgSubj IMO.

  340. Deucе
    Mon Mar 03 2025 09:07:09 GMT-0800 (PST)
    Added Files:
    

    exec/textedit.js diff
    Start of a text.dat editor Right now it's just a text.dat browser, but it's already somewhat useful, so I'm comitting it. Up/Down = Change entry CTRL-G = Go to entry by number PageUp/PageDown = Change output method (putmsg, mnemonics, print) Q = Quit Left/Right = Move the cursor around in the source text This must be ran from the terminal server, it's really not reasonable to do a text.dat editor as stand-alone.

  341. Deucе
    Sun Mar 02 2025 20:44:06 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_console.cpp diff
    Add console.cleartoeos() method

  342. Deucе
    Sun Mar 02 2025 16:41:37 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/syncterm.c diff
    src/syncterm/term.c diff
    Fix the palette hack a bit This actually adjusts the palette values used by the CTerm shadow palette. This allows the palette to work properly without the weird offset thing. Unfortunately, this means a cterm_reset() will not use the new values, and since term.c doesn't know when cterm_reset() has been called, we can't fix it afterward anymore without being very invasive and double-checking after every cterm_write() call. This is fine for the indended audience however (ie: Atari ST emulation) since they don't have a reset sequence.

  343. Rob Swindell (on Windows 11)
    Sat Mar 01 2025 19:27:10 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/readmsgs.cpp diff
    Save/reuse path where messages are saved (per sub-board) to data/user/*.ini This is a sysop time saver when saving multiple posts to a local text file (using the Operator->Save message text command). This is pretty much a copy/paste from readmail.cpp, but uses a different .ini section name.

  344. Deucе
    Sat Mar 01 2025 17:12:29 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/scfg/scfgxfr2.c diff
    Stop counting dupes for no reason. While dupes were counted, nothing was done with the count, so just delete it. Fixes Clang warning.

  345. Deucе
    Sat Mar 01 2025 17:06:58 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    src/syncterm/bbslist.h diff
    src/syncterm/syncterm.c diff
    Allow specifying a palette in a list entry. A palette must be decimal integers separated by commas. The integer represents the RRGGBB value (8-bits per channel) of the desired colour. Someday I'll do a proper picker here, but not for 1.x

  346. Rob Swindell (on Debian Linux)
    Sat Mar 01 2025 15:49:46 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Rename some of the tests to conform to the pattern

  347. Deucе
    Sat Mar 01 2025 15:44:15 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/term.c diff
    Pass all control keys through to remote in Beeb mode Implements feature request #104

  348. Rob Swindell (on Debian Linux)
    Sat Mar 01 2025 15:30:35 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Trigger CI on any *.mk file change

  349. Rob Swindell (on Debian Linux)
    Sat Mar 01 2025 15:30:35 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Add an install-linux CI job

  350. Rob Swindell (on Debian Linux)
    Sat Mar 01 2025 15:30:35 GMT-0800 (PST)
    Modified Files:
    

    install/install-sbbs.mk diff
    Update comments to be more clear how to set boolean variables (e.g. =1)

  351. Rob Swindell
    Sat Mar 01 2025 15:10:29 GMT-0800 (PST)
    Modified Files:
    

    exec/load/dd_lightbar_menu.js diff
    Merge branch 'dd_lightbar_menu_numbered_mode_substr_1_longer' into 'master' DDLightbarMenu: For numbered mode (no lightbar), allow 1 mor character when using substr with the item text See merge request main/sbbs!516

  352. Eric Oulashin
    Sat Mar 01 2025 13:15:01 GMT-0800 (PST)
    Modified Files:
    

    exec/load/dd_lightbar_menu.js diff
    DDLightbarMenu: For numbered mode (no lightbar), allow 1 mor character when using substr with the item text

  353. Rob Swindell (on Debian Linux)
    Sat Mar 01 2025 15:07:31 GMT-0800 (PST)
    Modified Files:
    

    install/install-sbbs.mk diff
    Remove references to addfiles, delfiles, and filelist These were all deprecated with v3.19 (replaced with JS modules) and their C source files and build instructions recently removed from the repo. Reported by MarisaG (thank you!)

  354. Rob Swindell (on Debian Linux)
    Sat Mar 01 2025 15:03:35 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/xtrn.cpp diff
    Remove lprintf() call from child process of fork() call on *nix the info-level debug message "Detaching external process"... as this appears to be the cause of background events hanging sometimes, on Linux (at least).

  355. Rob Swindell (on Debian Linux)
    Sat Mar 01 2025 15:00:13 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ftpsrvr.c diff
    Lower severity of repeated log messages about low disk space "!Insufficient free disk space (%s bytes) to allow upload"

  356. Rob Swindell (on Windows 11)
    Sat Mar 01 2025 14:59:32 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/un_qwk.cpp diff
    Include QWKnet hub-id in "Imported" message statistics ... for Codefenix's mod that'll parse events*.log for QWKnet statistics.

  357. Rob Swindell (on Windows 11)
    Sat Mar 01 2025 14:59:32 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ctrl/MainFormUnit.cpp diff
    src/sbbs3/ctrl/MainFormUnit.h diff
    src/sbbs3/ctrl/TelnetCfgDlgUnit.cpp diff
    src/sbbs3/ctrl/TelnetCfgDlgUnit.dfm diff
    src/sbbs3/logfile.cpp diff
    src/sbbs3/logfile.h diff
    src/sbbs3/main.cpp diff
    Create data/events*.log file for all platforms and monitoring modes Previously, data/events*.log was only created by sbbsctrl-Win32 The file is referred to as "events*.log" because if the first terminal server node number is > 1, then that first node number will be prepended to the base filename. Also, rolled-over logs and renamed to *.0.log, *.1.log, etc. up to the configured maximum before being deleted. This change eliminates the repeated log line dedupe feature for that file (e.g. the "[x2]" indicator). Also, the "Log Eventsto Disk" option is now removed from the sbbsctrl->Terminal Server->Configure dialog. Also, fopenlog() now opens log files non-locked (deny-none), so that the files can be viewed (e.g. with 'grep' or 'tail -f') while they're open and being written to. There isn't a concurrent write problem for events*.log but there may be for other log file openes by fopenlog() - so that should be investigated. ... for Codefenix's mod that'll parse events*.log for QWKnet statistics.

  358. Rob Swindell (on Windows 11)
    Sat Mar 01 2025 14:59:31 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/exec.cpp diff
    src/sbbs3/sbbs.h diff
    sbbs_t::nodefile_fp and node_ext_fp aren't used for anything in sbbs v3 Get rid of this noise.

  359. Deucе
    Sat Mar 01 2025 10:53:25 GMT-0800 (PST)
    Modified Files:
    

    exec/syncterm-bounce.js diff
    Ensure that ANSI is available

  360. Rob Swindell
    Fri Feb 28 2025 14:20:56 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ctrl/sbbsctrl.bpr diff
    Define LINK_LIST_THREADSAFE so sbbsctrl doesn't crash in ntdll.dll Regression introduced in commit cf992d8ad1 sbbs.h defines this macro and now that we're not #including it in ctrl/*.cpp, we need it define in the project file. Fixes issue reported by BrokenMind

  361. Rob Swindell
    Thu Feb 27 2025 23:25:20 GMT-0800 (PST)
    Added Files:
    

    xtrn/ddfilelister/ddfl_cfg.js diff
    Modified Files:

    xtrn/ddfilelister/readme.txt diff
    Merge branch 'dd_file_lister_configurator' into 'master' DDFileLister: Configurator (new): ddfl_cfg.js - To be run using jsexec See merge request main/sbbs!515

  362. Eric Oulashin
    Thu Feb 27 2025 23:25:20 GMT-0800 (PST)
    Added Files:
    

    xtrn/ddfilelister/ddfl_cfg.js diff
    Modified Files:

    xtrn/ddfilelister/readme.txt diff
    DDFileLister: Configurator (new): ddfl_cfg.js - To be run using jsexec

  363. Rob Swindell
    Thu Feb 27 2025 17:52:19 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/revision_history.txt diff
    Merge branch 'dd_file_lister_traditional_UI_extd_desc_ansi_improvement' into 'master' DDFileLister: Improvement for the traditional (non-lightbar) user itnerface when displaying extended descriptions with ANSI codes See merge request main/sbbs!514

  364. Eric Oulashin
    Thu Feb 27 2025 17:45:32 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/revision_history.txt diff
    DDFileLister: Improvement for the traditional (non-lightbar) user itnerface when displaying extended descriptions with ANSI codes

  365. Rob Swindell
    Thu Feb 27 2025 14:59:09 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    Merge branch 'dd_file_lister_settings_refactor' into 'master' DDFileLister: Refactored the way the settings & colors are structured in the code. No functional change. See merge request main/sbbs!513

  366. Eric Oulashin
    Thu Feb 27 2025 10:47:04 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    DDFileLister: Refactored the way the settings & colors are structured in the code. No functional change.

  367. Rob Swindell (on Debian Linux)
    Wed Feb 26 2025 19:00:10 GMT-0800 (PST)
    Modified Files:
    

    exec/str_cmds.js diff
    src/sbbs3/writemsg.cpp diff
    Support per-sub-board user signature (.sig files) This feature was long overdue. And "SIG" command to view, create or edit default signature (same function as available from user_settings.js, in fact a copy/pasted the code). Add "SUBSIG" command to view, create, or edit sub-board signture (no other method is available to this other than direct file system access, e.g. by the sysop).

  368. Rob Swindell
    Tue Feb 25 2025 20:22:34 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.cfg diff
    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    Merge branch 'dd_file_lister_extd_desc_filename_behavior' into 'master' DDFileLister filename behavior for extended descriptions See merge request main/sbbs!512

  369. Eric Oulashin
    Tue Feb 25 2025 20:22:34 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.cfg diff
    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    DDFileLister filename behavior for extended descriptions

  370. Rob Swindell
    Tue Feb 25 2025 18:39:49 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    Merge branch 'dd_file_lister_long_filename_in_desc_color_fix' into 'master' DDFileLister: Fix for color usage when a long filename is used in the description for some edge cases See merge request main/sbbs!509

  371. Eric Oulashin
    Tue Feb 25 2025 09:35:55 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    DDFileLister: Fix for color usage when a long filename is used in the description for some edge cases

  372. Deucе
    Tue Feb 25 2025 07:23:54 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    SGR has at least one (defaulted) parameter

  373. Deucе
    Tue Feb 25 2025 07:21:47 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    CSI < c only takes one manditory argument with default Fixes bug introduced in cc07b354 where the command without any parameters would not return anything.

  374. Deucе
    Tue Feb 25 2025 07:17:16 GMT-0800 (PST)
    Modified Files:
    

    exec/syncterm-bounce.js diff
    Add a timeout to checking if pixels work For when I break SyncTERM.

  375. Rob Swindell (on Windows 11)
    Mon Feb 24 2025 23:42:22 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sbbsecho.c diff
    Only log one warning per invocation about inability to auto-add sub Just the first sub that couldn't be auto-added.

  376. Deucе
    Mon Feb 24 2025 20:27:00 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/term.c diff
    Set up CP437 mode before zmodem auto up/download Fixes use of system font during up/downloads when auto-started. Ticket 194

  377. Rob Swindell
    Mon Feb 24 2025 11:26:36 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/defaultTheme.cfg diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    Merge branch 'dd_file_lister_filename_color_in_desc_and_refactor' into 'master' DDFileLister: New color option (filenameInDesc) for the color of the full filename when used in the description. Also, a refactor of the extended description toggle mechanism See merge request main/sbbs!507

  378. Eric Oulashin
    Sun Feb 23 2025 14:53:17 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    DDFileLister: Refactored the implementation of toggling extended descriptions

  379. Eric Oulashin
    Sat Feb 22 2025 21:14:19 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/defaultTheme.cfg diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    DDFileLister: New color option for the filename when used in the description: filenameInDesc

  380. Deucе
    Mon Feb 24 2025 09:51:29 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    Fix defaults for variable length sequences Only SGR was impacted, but this explicitly sets the rest of the defaults to zero. Closes ticket 193.

  381. Deucе
    Mon Feb 24 2025 09:10:43 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Fix crash when copying entry Resolves ticket 195

  382. Rob Swindell (on Windows 11)
    Mon Feb 24 2025 00:42:20 GMT-0800 (PST)
    Added Files:
    

    src/sbbs3/logfile.h diff
    Modified Files:

    src/sbbs3/ctrl/ConfigWizardUnit.cpp diff
    src/sbbs3/ctrl/ConfigWizardUnit.h diff
    src/sbbs3/ctrl/LoginAttemptsFormUnit.cpp diff
    src/sbbs3/ctrl/MainFormUnit.cpp diff
    src/sbbs3/ctrl/NodeFormUnit.cpp diff
    src/sbbs3/ctrl/UserListFormUnit.cpp diff
    src/sbbs3/sbbs.h diff
    ctrl/*.cpp no longer needs to #include sbbs.h Just needed to move the C-exported functions from logfile.cpp into their own header file (logfile.h) and #include-what-we-use in ctrl/*.cpp This should reduce the Borland C++ impact on sbbs.h and any files it includes.

  383. Rob Swindell (on Windows 11)
    Sun Feb 23 2025 20:30:55 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sbbsecho.c diff
    Address some MSVC static analysis warnings

  384. Rob Swindell (on Windows 11)
    Sun Feb 23 2025 16:24:04 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sbbsecho.c diff
    Log warning-level message when we can't auto-add a sub ... because there's no linked-node configured as the uplink for the parent message group.

  385. Rob Swindell (on Debian Linux)
    Sat Feb 22 2025 21:55:31 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/mailsrvr.c diff
    inet_ntoa() -> inet_ntop() conversion inet_ntoa() is deprecated

  386. Rob Swindell (on Debian Linux)
    Sat Feb 22 2025 20:35:51 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/mailsrvr.c diff
    Fix use of inet_ntop() in rblchk() Aren't void pointers fun!?!

  387. Rob Swindell (on Windows 11)
    Sat Feb 22 2025 20:31:05 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/mailsrvr.c diff
    Don't use deprecated function gethostbyname() in rblchk() Eliminated one more use of inet_ntoa() here while at it.

  388. Rob Swindell (on Windows 11)
    Sat Feb 22 2025 19:51:30 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/mailsrvr.c diff
    Fix previous commit: startup.outgoing4 is not a union xp_sockaddr *

  389. Rob Swindell (on Windows 11)
    Sat Feb 22 2025 19:45:51 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/mailsrvr.c diff
    Use inet_addrtop to convert socket addresses to strings to handle endianness Socket addresses are stored in network byte order (big endian) and this sprintf() logic here assumed little endian. This was a regression introduced in either commit 29b93c32 or commit db8bb221 (in the past 2 weeks) when we stopped using (some) of the deprecated IP address/resolution functions and fixed the socket address storage to always be in network byte order (as is the norm). This should fix the issue recently reported in IRC by BrokenMind.

  390. Rob Swindell
    Sat Feb 22 2025 15:27:44 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    Merge branch 'dd_file_lister_long_filenames_in_desc_and_extended_desc_toggle' into 'master' DDFileLister: Filenames too long for the menu now displayed above the (extended) description. User can now toggle extended descriptions by pressing X within DDFileLister. Requested by Nelgin. See merge request main/sbbs!504

  391. Eric Oulashin
    Sat Feb 22 2025 15:27:44 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    DDFileLister: Filenames too long for the menu now displayed above the (extended) description. User can now toggle extended descriptions by pressing X within DDFileLister. Requested by Nelgin.

  392. Deucе
    Fri Feb 21 2025 17:41:19 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CHANGES diff
    Document change

  393. Deucе
    Fri Feb 21 2025 17:39:55 GMT-0800 (PST)
    Modified Files:
    

    src/conio/utf8_codepages.c diff
    Broken vertical is 0xA6, not 0x86 Fix that, and also fix the cpstr_to_utf8() implementation that bypasses the lookup function.

  394. Deucе
    Fri Feb 21 2025 17:15:11 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Support YELLOW_IS_YELLOW in C128 80-column mode. C128 used CGA monitors, and at least the 1902 output yellow. An argument could be made that it should be the default.

  395. Deucе
    Fri Feb 21 2025 17:02:57 GMT-0800 (PST)
    Modified Files:
    

    src/conio/utf8_codepages.c diff
    src/conio/utf8_codepages.h diff
    Split codepages into _B (broken vertical) variants For the three codepages with fonts that do both broken and unbroken vertical bars, add a _B variant for the one with the broken vertical. This allows the broken vertical to be "correctly" in the codepage mapping.

  396. Deucе
    Fri Feb 21 2025 12:14:46 GMT-0800 (PST)
    Modified Files:
    

    src/conio/allfonts.c diff
    src/conio/ciolib.h diff
    Add flag to font data indicating a broken vertical bar Some different fonts in the same codepage use different glyphs, so this can't be a per-codepage setting. Not sure how I'm going to actually implement this properly, but at least the data is there now.

  397. Rob Swindell
    Fri Feb 21 2025 12:10:01 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.cfg diff
    Merge branch 'dd_file_lister_num_files_in_header_setting' into 'master' DDFileLister: New configuration option, displayNumFilesInHeader. Forgot to include it in the .cfg file in my last commit. See merge request main/sbbs!502

  398. Eric Oulashin
    Fri Feb 21 2025 08:47:25 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.cfg diff
    DDFileLister: New configuration option, displayNumFilesInHeader. Forgot to include it in the .cfg file in my last commit.

  399. Rob Swindell (on ChromeOS)
    Thu Feb 20 2025 20:46:09 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/unicode.c diff
    src/xpdev/unicode_defs.h diff
    Define/use UNICODE_VERTICAL_LINE Resolve GCC warning: case value ‘124’ not in enumerated type ‘enum unicode_codepoint’

  400. Rob Swindell (on Debian Linux)
    Thu Feb 20 2025 20:28:25 GMT-0800 (PST)
    Modified Files:
    

    exec/webfileindex.ssjs diff
    Fix links to filenames with spaces View images in a smaller viewport (I'm no CSS expert here, obviously)

  401. Rob Swindell (on Debian Linux)
    Thu Feb 20 2025 17:37:00 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/bat_xfer.cpp diff
    src/sbbs3/execfile.cpp diff
    src/sbbs3/file.cpp diff
    src/sbbs3/filedat.c diff
    src/sbbs3/filedat.h diff
    src/sbbs3/ftpsrvr.c diff
    src/sbbs3/listfile.cpp diff
    src/sbbs3/qwk.cpp diff
    src/sbbs3/upload.cpp diff
    src/sbbs3/userdat.c diff
    src/sbbs3/websrvr.c diff
    Add optional error/result outparam to highlevel filedat API functions - loadfile - addfile - removefile - updatefile As discovered via ftp server "error updating" file log message, no details could be logged since these functions just returned a simple bool. So, we now support passing an optional output parameter to capture the result/error value to be displayed or logged when these functions return false. Unrelated fixes to start_batch_download(): When passing a list of files on the command to the file transfer protocol driver (e.g. sz), if any filename contains spaces, that filename must be quoted or else sz will fail with error 'sz: can read only one file from stdin'. Also, the trailing whitespace from the list of filenames must be removed or else sz will report errors 'sz: cannot open : No such file or directory' and 'sz: Transfer incomplete'.

  402. Rob Swindell (on Debian Linux)
    Thu Feb 20 2025 17:32:20 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sexyz.c diff
    Bug fix for multi-file zmodem-send using wildcards If the first specified file in the list had a wildcard pattern, multiple ZRQINIT (request init) frames would be sent (one for each file matching the first list item file pattern). This was just found via code review, not in the wild.

  403. Rob Swindell
    Thu Feb 20 2025 17:18:14 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    Merge branch 'dd_file_lister_num_files_in_header' into 'master' DDFileLister: Now optionally displays the number of files in the header at the top of the list, confirtable with the displayNumFilesInHeader option in the config file See merge request main/sbbs!501

  404. Eric Oulashin
    Thu Feb 20 2025 12:50:13 GMT-0800 (PST)
    Modified Files:
    

    xtrn/ddfilelister/ddfilelister.js diff
    xtrn/ddfilelister/readme.txt diff
    xtrn/ddfilelister/revision_history.txt diff
    DDFileLister: Now optionally displays the number of files in the header at the top of the list, confirtable with the displayNumFilesInHeader option in the config file

  405. Deucе
    Thu Feb 20 2025 15:55:50 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CHANGES diff
    src/syncterm/bbslist.c diff
    Don't disable status line for Atari ST modes Atari ST modes are 25 rows, they don't need to have the status line turned off by default.

  406. Deucе
    Wed Feb 19 2025 22:45:39 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/unicode.c diff
    Add explicit | to | mapping. It's not clear exactly what will happen if I don't, so add it just in case.

  407. Deucе
    Wed Feb 19 2025 22:36:01 GMT-0800 (PST)
    Modified Files:
    

    src/conio/utf8_codepages.c diff
    CP437 needs to be a full table translation CP437 0x7C is U+00A6 It's likely this is true for a bunch of other codepages as well, so I'll need to dig through them soon.

  408. Deucе
    Wed Feb 19 2025 21:46:22 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/unicode.c diff
    CP437 0x7C is UNICODE_BROKEN_BAR (U+00A6) Contrary to pouplar belief CP437 does not encode US-ASCII. US-ASCII has UNICODE_VERTICAL_LINE (U+007C) there (which does match Unicode) Aren't you glad your C compiler didn't use CP437? if (x ??!??! y) is so much uglier than if (x || y) Of course, with C99 (or C90 with the 1995 ammendment), we would have seen a lot of iso646.h and the use of the or, bitor, and or_eq macros, and maybe that would have gotten that whole list of 11 macros promoted to keywords eventually (Likely in C23) since it's hard to eat just one peanut. Of course, that's all alternate history... it's unlikely that any compiler vendor would actually care, and | and ¦ (or | and ³ for those using CP437) would be "the same".

  409. Rob Swindell
    Wed Feb 19 2025 11:10:39 GMT-0800 (PST)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    Merge branch 'dd_msg_reader_post_msg_pause_quit' into 'master' DDMsgReader: After replying to a message, when status is shown and pauses for user input, Q or Ctrl-C will now exit, and not be ignored. Requested by Keyop. See merge request main/sbbs!500

  410. Eric Oulashin
    Tue Feb 18 2025 19:39:06 GMT-0800 (PST)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    DDMsgReader: After replying to a message, when status is shown and pauses for user input, Q or Ctrl-C will now exit, and not be ignored. Requested by Keyop.

  411. Deucе
    Tue Feb 18 2025 10:33:20 GMT-0800 (PST)
    Modified Files:
    

    exec/load/syncterm_cache.js diff
    console.inkey() returns empty string on timeout by default

  412. Rob Swindell (on Windows 11)
    Sun Feb 16 2025 22:05:49 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/logon.cpp diff
    Don't backup dsts.ini daily Looks like an unintentional debug-inclusion with commit 2064f3a4f71c6656693a1 as pointed about by Deuce in IRC.

  413. Rob Swindell (on Debian Linux)
    Sun Feb 16 2025 17:20:52 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ctrl/MailCfgDlgUnit.dfm diff
    Fix extraneous close paren added in previous commit

  414. Rob Swindell (on Debian Linux)
    Sun Feb 16 2025 17:07:07 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ctrl/MailCfgDlgUnit.cpp diff
    src/sbbs3/ctrl/MailCfgDlgUnit.dfm diff
    src/sbbs3/mailsrvr.c diff
    src/sbbs3/mailsrvr.h diff
    src/sbbs3/scfg/scfgsrvr.c diff
    Add option to no mark POP3-retrieved mail as READ When the option is not set, messages "READ" flag is set when the message is retrieved via POP3. Setting this option defeats that behavior - as requested by Keyop via IRC. Since I'm out of option flags, remove the "receive by user number" option. The receive by user number option was never a good idea and hopefully no one is actually depending on/using that setting. Uesr numbers in the alias.cfg file still work.

  415. Rob Swindell (on Windows 11)
    Sat Feb 15 2025 19:45:46 GMT-0800 (PST)
    Modified Files:
    

    src/sexpots/sexpots.c diff
    src/xpdev/ini_file.h diff
    iniRead/Get/SetIpAddress() functions now return/accept network byte order As a result of recent change to netwrap.c

  416. Rob Swindell (on Windows 11)
    Sat Feb 15 2025 19:35:58 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/execnet.cpp diff
    src/sbbs3/mailsrvr.c diff
    src/sbbs3/telgate.cpp diff
    src/xpdev/netwrap.c diff
    parseIPv4Address() and IPv4AddresstoStr() now return/accept network byte order Since that's the most used/assumed byte order for IP addresses, let's make that the default and eliminate a lot of unnecessary byte-swapping. This fixes the issue reported by Keyop in IRC, introduced in commit 29b93c32

  417. Deucе
    Sat Feb 15 2025 00:45:35 GMT-0800 (PST)
    Modified Files:
    

    src/conio/vidmodes.c diff
    Base the Prestel/Mode 7 aspect ratio on actual math It's a bit different than straight 4:3 due to Mode 7 not using the full line period or all the lines.

  418. Rob Swindell (on Debian Linux)
    Fri Feb 14 2025 21:54:11 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ftpsrvr.c diff
    Ignore MKD/XMKD commands from users (pretend successful) For non-Guest users (without the 'U' restriction), if the FTP client sends the MKD or XMKD command, just return the proper succcess result and do nothing (don't log as a hack attempt or return a syntax error result). Some FTP clients (e.g. Reolink Doorbell camera) just always try to blindly create a directory before uploading files, but if that command fails (as we would), the upload is aborted. So pretend to create the diretory whether it already exists or not, just so the client will proceed with the upload. For G or U restricted users, treat (log) as hack-attempt, as before.

  419. Rob Swindell (on Debian Linux)
    Fri Feb 14 2025 13:55:26 GMT-0800 (PST)
    Modified Files:
    

    exec/str_cmds.js diff
    If sbbs is configured with "NO_DOS" option, "exec" will assume native program <@Deuce> Filenames are always assumed to be DOS programs, despite not being able to run them. <nelgin> If sbbs was smart, it would know that if it's not a dos program then to use jsexec or whatever. There: sbbs is now more smarter

  420. Rob Swindell (on Windows 11)
    Fri Feb 14 2025 13:28:30 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/mailsrvr.c diff
    src/sbbs3/main.cpp diff
    Fix issue resolving "localhost" to IPv4 address on (some) IPv6-enabled systems We need to provide an address family "hint" to getaddrinfo() to limit the results to IPv4 addresses. Regression introduced in commit 29b93c3297c Reported by Keyop via IRC

  421. Deucе
    Fri Feb 14 2025 01:13:32 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/term.c diff
    Make F3 toggle reveal just like PgDown That's what Commstar uses in Prestel mode after all.

  422. Deucе
    Fri Feb 14 2025 01:09:52 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CHANGES diff
    Mention that the keybindings changed.

  423. Deucе
    Fri Feb 14 2025 01:05:56 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/term.c diff
    Fix up the Mode 7/Prestel key bindings to match Commstar This mostly just changes the arrow key bindings and adds support for Ctrl+Fx and Shift+Fx, and makes End Copy. The big change though is that Page Down, not Tab now toggles reveal mode. Sorry all you guys with 60% keyboards.

  424. Deucе
    Fri Feb 14 2025 00:35:07 GMT-0800 (PST)
    Modified Files:
    

    src/conio/ciolib.h diff
    Add some key macros for Shift+x and Control+x keys For use by SyncTERM in Mode 7/Prestel modes.

  425. Deucе
    Fri Feb 14 2025 00:34:23 GMT-0800 (PST)
    Modified Files:
    

    src/conio/x_events.c diff
    Fix some scancodes... It seems some of the Shift+x codes were incorrect (had unshifted as high byte and shifted as low byte).

  426. Deucе
    Thu Feb 13 2025 23:51:01 GMT-0800 (PST)
    Modified Files:
    

    src/conio/bitmap_con.c diff
    src/conio/ciolib.h diff
    src/conio/cterm.c diff
    Fix Mode 7 (ie: SAA5050) mode double-height handling Basically, the only thing the SAA5050 enforces is that characters on a bottom row need to be double-height, or they're displayed as spaces. The Prestel terminal now has an extra bit that indicates it is a prestel terminal, and the bitmap console hacks up the second row. While we're poking this, use macros for magic bits in FG/BG colours.

  427. Rob Swindell (on ChromeOS)
    Thu Feb 13 2025 22:14:45 GMT-0800 (PST)
    Modified Files:
    

    docs/v320_new.txt diff
    Document changes since v3.20b Needs clean-up still

  428. Rob Swindell (on Windows 11)
    Thu Feb 13 2025 16:20:38 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/syncterm.iss diff
    Update version number to 1.6 No other changes

  429. Deucе
    Thu Feb 13 2025 13:11:10 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/unicode.c diff
    Convert UNICODE_VIEWDATA_SQUARE to # for CP437. Since we do Mode7

  430. Deucе
    Thu Feb 13 2025 10:31:16 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/getstr.cpp diff
    Remove exascii literals. Replace with \xXX values

  431. Deucе
    Wed Feb 12 2025 21:47:35 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CHANGES diff
    Document blast-through change

  432. Rob Swindell (on Debian Linux)
    Wed Feb 12 2025 20:14:22 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Update case of msvc output directories This hopefully fixes the new CI pipeline issue

  433. Deucе
    Wed Feb 12 2025 18:53:17 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    Fix blast-through glyphs for high mosaics. The smooth mosaics aren't available with the SAA5050. Nothing to see here.

  434. Rob Swindell (on Windows 11)
    Wed Feb 12 2025 18:51:48 GMT-0800 (PST)
    Modified Files:
    

    src/conio/conio.vcxproj diff
    src/conio/conio_gdi.vcxproj diff
    src/conio/conio_sdl.vcxproj diff
    src/sbbs3/ans2asc.vcxproj diff
    src/sbbs3/asc2ans.vcxproj diff
    src/sbbs3/baja.vcxproj diff
    src/sbbs3/chksmb.vcxproj diff
    src/sbbs3/dupefind.vcxproj diff
    src/sbbs3/echocfg.vcxproj diff
    src/sbbs3/fixsmb.vcxproj diff
    src/sbbs3/fmsgdump.vcxproj diff
    src/sbbs3/ftpsrvr.vcxproj diff
    src/sbbs3/jsexec.vcxproj diff
    src/sbbs3/load_cfg.vcxproj diff
    src/sbbs3/mailsrvr.vcxproj diff
    src/sbbs3/makeuser.vcxproj diff
    src/sbbs3/node.vcxproj diff
    src/sbbs3/ntsvcs.vcxproj diff
    src/sbbs3/pktdump.vcxproj diff
    src/sbbs3/qwknodes.vcxproj diff
    src/sbbs3/sbbs.vcxproj diff
    src/sbbs3/sbbscon.vcxproj diff
    src/sbbs3/sbbsecho.vcxproj diff
    src/sbbs3/sbbsexec.vcxproj diff
    src/sbbs3/scfg/scfg.vcxproj diff
    src/sbbs3/services.vcxproj diff
    src/sbbs3/sexyz.vcxproj diff
    src/sbbs3/slog.vcxproj diff
    src/sbbs3/smbutil.vcxproj diff
    src/sbbs3/textgen.vcxproj diff
    src/sbbs3/trashman.vcxproj diff
    src/sbbs3/unbaja.vcxproj diff
    src/sbbs3/upgrade_to_v319.vcxproj diff
    src/sbbs3/upgrade_to_v320.vcxproj diff
    src/sbbs3/websrvr.vcxproj diff
    src/sftp/sftp.vcxproj diff
    src/smblib/smblib.vcxproj diff
    src/uifc/uifc.vcxproj diff
    src/xpdev/xpdev.vcxproj diff
    src/xpdev/xpdev_mt.vcxproj diff
    Use MSVS macros for output directories and target filenames This sets us up better for adding more platform support (e.g. x64) later.

  435. Rob Swindell (on Windows 11)
    Wed Feb 12 2025 18:18:19 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ars.c diff
    src/sbbs3/ars_defs.h diff
    src/sbbs3/chk_ar.cpp diff
    src/sbbs3/userdat.c diff
    Add LANG ARS keyword e.g. "LANG=ES" or "LANG ES" to check for Spanish language This makes ctrl/modopts/*.ini more useful for multiple language support

  436. Rob Swindell (on Windows 11)
    Wed Feb 12 2025 18:03:52 GMT-0800 (PST)
    Added Files:
    

    3rdp/win64.release/libarchive/bin/archive.lib diff
    Modified Files:

    src/conio/conio.vcxproj diff
    src/conio/conio_gdi.vcxproj diff
    src/conio/conio_sdl.vcxproj diff
    src/uifc/uifc.vcxproj diff
    Revert MSVC project files to commit da9512200016ce2 I accidentally committed an experimental x64 build configuration. I want to do that right when I do add the x64 build configuration.

  437. Rob Swindell (on Debian Linux)
    Wed Feb 12 2025 16:23:38 GMT-0800 (PST)
    Modified Files:
    

    exec/load/modopts.js diff
    Add support for ctrl/modopts/*.ini How these files differ from modopts.ini (and by extension, ctrl/modopts.d/*.ini): - The root section is always parsed, part of the returned object - [sections] denote ARS that if matched (current user meets requirements) then those key/values are added as properties of the returned object possibly overriding previously defined properties (options), this allows different users (or clients/hosts, terminals) to get different option values much more easily

  438. Deucе
    Wed Feb 12 2025 13:21:15 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    src/syncterm/CHANGES diff
    Fix APB and APU from top in BBC Micro Mode 7 Up from the top row scrolls down, does not wrap to bottom. Backspace from the top-left position scrolls down and moves the cursor to end end of the new top line, does not wrap to bottom.

  439. Rob Swindell (on Debian Linux)
    Tue Feb 11 2025 23:35:14 GMT-0800 (PST)
    Modified Files:
    

    exec/load/modopts.js diff
    Convert charset to lower case before using in section name (so, [modname:charset=mode7], not [modname:charset=MODE7])

  440. Rob Swindell (on Debian Linux)
    Tue Feb 11 2025 18:43:55 GMT-0800 (PST)
    Modified Files:
    

    exec/load/gettext.js diff
    Convert charset to lowercase, don't depend on file_getcase() to fix ... cause it won't (fix directory case in path).

  441. Rob Swindell (on Windows 11)
    Tue Feb 11 2025 18:22:18 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/str.cpp diff
    Fix case-sensitivity issue in charset element of path in last commit fexistcase() only corrects the case of the filename, not the directories in the path. So we'll just use the lowercase version of the charset string, always. Also, return false upon failure of any call to replace_text(), not just the last one.

  442. Rob Swindell (on Windows 11)
    Tue Feb 11 2025 17:50:25 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/getstr.cpp diff
    Save/restore the row number in insert_indicator() This was the cause of some very slight funkiness when displaying files after a save/restore (e.g. Ctrl-T or other global hot key) operation.

  443. Rob Swindell (on Debian Linux)
    Tue Feb 11 2025 17:39:34 GMT-0800 (PST)
    Modified Files:
    

    exec/load/modopts.js diff
    Support [modname:charset=<charset>] sections This is a getting a little kludgey I think doing something with ARS would be nicer, but then we get into the area of constructing a 'options' object out of keys from multiple sections and which sections should supercede which? This'll do for now for Nelgin's BBC mode7 terminal project.

  444. Rob Swindell (on Debian Linux)
    Tue Feb 11 2025 15:59:22 GMT-0800 (PST)
    Modified Files:
    

    exec/load/gettext.js diff
    src/sbbs3/str.cpp diff
    Support ctrl/<charset>/text.ini file For Nelgin's mode7 terminal project

  445. Deucе
    Tue Feb 11 2025 11:27:11 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Fail to parse https:// URIs when cryptlib is disabled No point in going any further and confusing users.

  446. Deucе
    Tue Feb 11 2025 11:10:50 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/GNUmakefile diff
    webget.o depends on cryptlib

  447. Deucе
    Tue Feb 11 2025 10:20:53 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CMakeLists.txt diff
    src/syncterm/Info.plist diff
    src/syncterm/Manual.txt diff
    src/syncterm/PackageInfo.in diff
    src/syncterm/dpkg-control.in diff
    src/syncterm/haiku.rdef diff
    src/syncterm/syncterm.c diff
    src/syncterm/syncterm.rc diff
    And thou art v1.7b

  448. Deucе
    Tue Feb 11 2025 10:19:30 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CHANGES diff
    src/syncterm/CMakeLists.txt diff
    src/syncterm/Info.plist diff
    src/syncterm/Manual.txt diff
    src/syncterm/PackageInfo.in diff
    src/syncterm/dpkg-control.in diff
    src/syncterm/haiku.rdef diff
    src/syncterm/syncterm.c diff
    src/syncterm/syncterm.rc diff
    I dub thee v1.6

  449. Rob Swindell (on Windows 11)
    Mon Feb 10 2025 20:40:22 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_file.c diff
    Use iniGetSectionList() instead of iniReadSectionList() ... in File.iniGetSections() method because iniReadSectionList() doesn't recognize !include directives. This fixes issue #871 whereby modopts.js couldn't find sections in modopts.d/*.ini files.

  450. Deucе
    Mon Feb 10 2025 15:48:19 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Remove summary thing.

  451. Deucе
    Mon Feb 10 2025 15:45:57 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Experimental summary thing... disabled, will be deleted I just want this in the history in case I ever want to play with the concept again.

  452. Deucе
    Mon Feb 10 2025 14:42:35 GMT-0800 (PST)
    Modified Files:
    

    src/uifc/uifc32.c diff
    Only base drag-select highlight on the legacy attribute. The fg/bg values all have multiple representations, and some bits have extra meanings, so inequality there doesn't mean they're not the same colour. This fixes an issue where the *second* drag select on a screen would not highlight blue backgrounds correctly. The background colour gets the "pixels set" bit flown because of how restorescreen() works, which caused this to "know" it's not blue and use a blue background. A (good) argument could be made that savescreen()/restorescreen() shouldn't result in any changes, but since uifc32 doesn't directly use colours that aren't represented by legacy attributes, there's no need for it to get tricky here.

  453. Rob Swindell
    Mon Feb 10 2025 11:27:31 GMT-0800 (PST)
    Added Files:
    

    ctrl/SlyEditStrings_En.cfg diff
    Modified Files:

    ctrl/SlyEdit.cfg diff
    docs/slyedit_readme.txt diff
    exec/SlyEdit.js diff
    exec/SlyEdit_Misc.js diff
    exec/slyedcfg.js diff
    Removed Files:

    docs/SlyEdit_DD_Message_Lister_notes.txt diff
    Merge branch 'slyedit_input_timeout_warning' into 'master' SlyEdit: Display a user inactivity warning message (configurable) See merge request main/sbbs!498

  454. Eric Oulashin
    Mon Feb 10 2025 11:27:31 GMT-0800 (PST)
    Added Files:
    

    ctrl/SlyEditStrings_En.cfg diff
    Modified Files:

    ctrl/SlyEdit.cfg diff
    docs/slyedit_readme.txt diff
    exec/SlyEdit.js diff
    exec/SlyEdit_Misc.js diff
    exec/slyedcfg.js diff
    Removed Files:

    docs/SlyEdit_DD_Message_Lister_notes.txt diff
    SlyEdit: Display a user inactivity warning message (configurable)

  455. Deucе
    Sun Feb 09 2025 23:58:02 GMT-0800 (PST)
    Modified Files:
    

    src/conio/ciolib.adoc diff
    src/syncterm/Manual.txt diff
    Mention that some screen modes change the emulation mode.

  456. Deucе
    Sun Feb 09 2025 16:22:50 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Fix harmless Coverity issue. There's no need to set line = NULL since it's always overwritten.

  457. Rob Swindell (on Debian Linux)
    Sun Feb 09 2025 14:42:29 GMT-0800 (PST)
    Modified Files:
    

    exec/mqtt_spy.js diff
    Parse/print the node_aux from the node status topic Fix for issue #870

  458. Deucе
    Sun Feb 09 2025 13:52:54 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    A couple more Atari ST VT52 fixes... FF and VT both move down one line, scrolling if necessary. The rest of the unsupported control characters have no effect (ie: work like NUL) Delete shows the delta.

  459. Deucе
    Sun Feb 09 2025 13:22:05 GMT-0800 (PST)
    Modified Files:
    

    src/conio/bitmap_con.c diff
    src/conio/cterm.c diff
    src/conio/vidmodes.c diff
    More Atari ST fixes... Add ESC L and ESC M for insert/delete line. Used by commando text. Use a block cursor that blinks at 1Hz. Discard invalid ESC codes.

  460. Deucе
    Sun Feb 09 2025 12:14:57 GMT-0800 (PST)
    Modified Files:
    

    src/conio/ciolib.c diff
    src/conio/vidmodes.c diff
    Fix Atari ST palettes and default attributes Thanks Kirkman!

  461. Rob Swindell (on Debian Linux)
    Sun Feb 09 2025 00:06:54 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/main.cpp diff
    Don't attempt to remove inbound QWK packet if doesn't exist (renamed?) Address error report by Greg Meckel (THEICECA) evnt QNET !ERROR 2 (No such file or directory) (EinError 2) in main.cpp line 3195 (event_thread) removing "C:\sbbs\data\VERT.qwk" access=0 ... this could happen after a bad QWK packet was detected and renamed.

  462. Rob Swindell (on Debian Linux)
    Sat Feb 08 2025 23:52:12 GMT-0800 (PST)
    Modified Files:
    

    exec/load/modopts.js diff
    Load section or keys form [module:lang=<user-lang>] if it exists This allow language-specific module options

  463. Deucе
    Sat Feb 08 2025 22:57:00 GMT-0800 (PST)
    Modified Files:
    

    src/conio/allfonts.c diff
    src/conio/ciolib.adoc diff
    src/conio/ciolib.c diff
    src/conio/ciolib.h diff
    src/conio/cterm.c diff
    src/conio/cterm.h diff
    src/conio/utf8_codepages.c diff
    src/conio/utf8_codepages.h diff
    src/conio/vidmodes.c diff
    src/conio/vidmodes.h diff
    src/syncterm/CHANGES diff
    src/syncterm/bbslist.c diff
    src/syncterm/bbslist.h diff
    src/syncterm/syncterm.c diff
    src/syncterm/term.c diff
    Add Atari ST VT52 modes Completes feature request #95 Have fun kids!

  464. Rob Swindell (on Debian Linux)
    Sat Feb 08 2025 22:55:48 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ver.cpp diff
    Display the libmosquitto version number too (which applicable)

  465. Rob Swindell
    Sat Feb 08 2025 16:05:27 GMT-0800 (PST)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/DefaultTheme.cfg diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    Merge branch 'dd_msg_reader_input_timeout_warning_text_display' into 'master' DDMsgReader: Input timeout warning improvement - Now displays warning text. Also, new areYouThere configurable string in the theme file. See merge request main/sbbs!496

  466. Eric Oulashin
    Sat Feb 08 2025 15:03:25 GMT-0800 (PST)
    Modified Files:
    

    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/DefaultTheme.cfg diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    DDMsgReader: Input timeout warning improvement - Now displays warning text. Also, new areYouThere configurable string in the theme file.

  467. Deucе
    Sat Feb 08 2025 14:22:07 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.adoc diff
    Document ECMA-35 nF Escape Sequences CTerm does not presently take any action for any of these, but it does parse and ignore them.

  468. Rob Swindell (on Windows 11)
    Sat Feb 08 2025 13:21:03 GMT-0800 (PST)
    Modified Files:
    

    src/conio/conio.vcxproj diff
    src/conio/conio_gdi.vcxproj diff
    src/conio/conio_sdl.vcxproj diff
    src/sbbs3/ans2asc.vcxproj diff
    src/sbbs3/asc2ans.vcxproj diff
    src/sbbs3/baja.vcxproj diff
    src/sbbs3/chksmb.vcxproj diff
    src/sbbs3/dupefind.vcxproj diff
    src/sbbs3/echocfg.vcxproj diff
    src/sbbs3/fixsmb.vcxproj diff
    src/sbbs3/fmsgdump.vcxproj diff
    src/sbbs3/ftpsrvr.vcxproj diff
    src/sbbs3/jsexec.vcxproj diff
    src/sbbs3/load_cfg.vcxproj diff
    src/sbbs3/mailsrvr.vcxproj diff
    src/sbbs3/makeuser.vcxproj diff
    src/sbbs3/node.vcxproj diff
    src/sbbs3/ntsvcs.vcxproj diff
    src/sbbs3/pktdump.vcxproj diff
    src/sbbs3/qwknodes.vcxproj diff
    src/sbbs3/sbbs.vcxproj diff
    src/sbbs3/sbbscon.vcxproj diff
    src/sbbs3/sbbsecho.vcxproj diff
    src/sbbs3/sbbsexec.vcxproj diff
    src/sbbs3/scfg/scfg.vcxproj diff
    src/sbbs3/services.vcxproj diff
    src/sbbs3/sexyz.vcxproj diff
    src/sbbs3/slog.vcxproj diff
    src/sbbs3/smbutil.vcxproj diff
    src/sbbs3/textgen.vcxproj diff
    src/sbbs3/trashman.vcxproj diff
    src/sbbs3/unbaja.vcxproj diff
    src/sbbs3/upgrade_to_v319.vcxproj diff
    src/sbbs3/upgrade_to_v320.vcxproj diff
    src/sbbs3/websrvr.vcxproj diff
    src/sftp/sftp.vcxproj diff
    src/smblib/smblib.vcxproj diff
    src/uifc/uifc.vcxproj diff
    src/xpdev/xpdev.vcxproj diff
    src/xpdev/xpdev_mt.vcxproj diff
    Change target processor back to IA32 (no FP instruction set extensions used) <@Deuce> DigitalMan, also, as it turns out, Windows 7 was the last version of Windows that supported processors without SSE2. Since we're targeting Windows Vista and Windows 7 still, don't require FP extensions that SBBS really won't get much benefit from anyway.

  469. Rob Swindell (on Windows 11)
    Sat Feb 08 2025 13:21:02 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/dirwrap.c diff
    Use strlcpy instead of sprintf("%.*s") string truncation trick Resolves MSVC x64 build warnings. Also fixes a bug with wrong sizeof argument used in readdir() (!)

  470. Rob Swindell (on Windows 11)
    Sat Feb 08 2025 13:21:02 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/filewrap.c diff
    src/xpdev/filewrap.h diff
    Standard (POSIX) getdelim() returns ssize_t, not long int

  471. Rob Swindell (on Windows 11)
    Sat Feb 08 2025 13:21:02 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_bbs.cpp diff
    src/sbbs3/js_file.c diff
    src/sbbs3/js_filebase.c diff
    src/sbbs3/js_msgbase.c diff
    src/sbbs3/js_socket.c diff
    Native JS methods must return JS_FALSE for (Error) exceptions to be thrown I discovered the first case when FileBase.get_path() failed, but didn't (immediately) throw an exception. Reviewing the other instances of JS_RepoertError() calls found several that either reported a garbage (e.g. NULL) string value or returned JS_TRUE. The design pattern used a little in js_socket.c probably should be used more: if (JS_IsExceptionPending(cx)) return JS_FALSE; return JS_TRUE; ... but that's more of a refactor than I had the stomach for right now.

  472. Deucе
    Sat Feb 08 2025 12:15:19 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Fix memory leak in read_chunked()

  473. Deucе
    Fri Feb 07 2025 16:58:09 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Fix chunked transfer encoding of web lists It's Transfer-Encoding:, not Content-Transfer-Encoding:, and each chunk has a \r\n appended to it.

  474. Deucе
    Fri Feb 07 2025 16:42:48 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Terminate header parsing loop on \n as well as \r With the latest change, *val will be \n after the last item, so this avoids an extra loop through the loops.

  475. Deucе
    Fri Feb 07 2025 16:36:34 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Fix two (more) bugs with Web Lists 1 - If cache-control header had more than one option, an infinite loop would occur. 2 - For TLS, if the remote closes the connection after the transfer, a "Complete" error would occur. Together, these should fox ticket 191

  476. Deucе
    Thu Feb 06 2025 00:01:52 GMT-0800 (PST)
    Modified Files:
    

    src/conio/utf8_codepages.c diff
    src/conio/utf8_codepages.h diff
    src/syncterm/term.c diff
    Update prestel unicode tables for new font layout Pasting mosaics won't work properly, but it wouldn't anyway, so I'm not too worried about it. Also, I can't seem to find anything I can paste separated mosaics into, but that may just be due to Unicode 16 being so new.

  477. Deucе
    Wed Feb 05 2025 22:15:16 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    Fix handling of translated blast-through mosaics Since we're translating in ch[0], don't use buf[j] for mosaic or we'll lose the translation we just did.

  478. Deucе
    Wed Feb 05 2025 21:50:46 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    src/syncterm/CHANGES diff
    src/syncterm/term.c diff
    Fix mappings in Beeb and Prestel modes In Beeb mode, receiving the byte on the left prints the one on the right: # -> # _ -> — ` -> £ In Prestel: # -> £ _ -> # ` -> — Keyboard mappings adjusted so what you press is what you see.

  479. Deucе
    Wed Feb 05 2025 20:09:08 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    Character 127 in Beeb mode is destructive backspace.

  480. Deucе
    Wed Feb 05 2025 20:02:05 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    Split Prestel from Beeb emulation parsing, add VDU 7, 23, and 31 Prestel and Beeb emulations are different enough that using a shared switch statement doesn't really make sense. This adds Mode 7 support for VDU commands 7 (beep), 23 (cursor only), and 31 (move to X/Y, 0-based). The rest of the unsupported commands don't seem overly useful in a BBS context (disable/enable output) or I don't want to deal with documenting and implementing ("Page mode").

  481. Rob Swindell (on Windows 11)
    Wed Feb 05 2025 19:17:44 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/syncterm.iss diff
    Update for SyncTERM 1.5 and Inno Setup 6 Address warnings from Inno Setup 6, indluding support for both "administrative" and "non administrative" install modes (!). This means, if you have not installed SyncTERM previously, you should have an option to install for "All users" (requiring administrative rights) or "Just You". When installing in non-administrative mode ("Just You"), the program will be installed in your user "Programs" folder, e.g. C:\Users\<yourname>\AppData\Local\Programs\SyncTERM If you previously installed SyncTERM in the common "Program Files" or "Program File (x86)" directories (which assuming administrative mode, the only install mode previously), then the installer will install again to that same location (and require administrative access). I'm still including a syncterm.lst download option (using curl.exe) because the Web List feature is not working so great in v1.5. That option should go away in the next release.

  482. Rob Swindell (on Debian Linux)
    Wed Feb 05 2025 18:43:44 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/text_defaults.c diff
    CriticalErrors update

  483. Rob Swindell (on Debian Linux)
    Wed Feb 05 2025 18:42:25 GMT-0800 (PST)
    Modified Files:
    

    exec/irc.js diff
    Add some bbs.online checks to hopefully detect disconnected user better Seen disconnected users "stuck" in irc.js for long periods of time. Hopefully this helps.

  484. Rob Swindell (on Debian Linux)
    Wed Feb 05 2025 18:41:43 GMT-0800 (PST)
    Modified Files:
    

    exec/webfileindex.ssjs diff
    Handle files where the 'added' property is 0 or undefined

  485. Rob Swindell (on Debian Linux)
    Wed Feb 05 2025 18:40:04 GMT-0800 (PST)
    Modified Files:
    

    exec/jsdocs.js diff
    More consistent capitalization

  486. Rob Swindell (on Debian Linux)
    Wed Feb 05 2025 18:39:16 GMT-0800 (PST)
    Modified Files:
    

    exec/addfiles.js diff
    Log/output an alert if the max files for a dir has been reached or exceeded

  487. Rob Swindell (on Debian Linux)
    Wed Feb 05 2025 18:35:40 GMT-0800 (PST)
    Modified Files:
    

    exec/delfiles.js diff
    Catch and log exceptions if FileBase.get_path() fails I saw this in my error.log: evnt DELFILES !JavaScript /sbbs/exec/delfiles.js line 100: Error: -110 loading file 'somefile.name' Which would terminate the script. We don't need to do that, just log it and continue on. Other changes of no consequence.

  488. Deucе
    Wed Feb 05 2025 16:12:00 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CHANGES diff
    I've enabled the cursor for Mode 7... document that.

  489. Deucе
    Wed Feb 05 2025 16:10:22 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    Mode 7 terminals (ie: Commstar) do not support cursor control Specifically, \x11 is not cursor on, and \x14 is not cursor off.

  490. Deucе
    Wed Feb 05 2025 14:37:50 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CHANGES diff
    src/syncterm/webget.c diff
    Ignore errors removing old list file If there's a problem, we'll catch it on the rename(), no need to add a race condition by checking if it exists first. Should fix issue 190

  491. Deucе
    Wed Feb 05 2025 14:21:51 GMT-0800 (PST)
    Modified Files:
    

    src/conio/cterm.c diff
    src/syncterm/CHANGES diff
    Disable Prestel ENQ/Memory in BBC Micro Mode 7 There's very little evidence that Prestel terminals supported this, and zero evidence that BBC Micro terminals did. ESC and ENQ are ignored like all other control characters in Mode 7 now.

  492. Rob Swindell (on Debian Linux)
    Wed Feb 05 2025 13:03:11 GMT-0800 (PST)
    Modified Files:
    

    exec/load/sbbsdefs.js diff
    Define K_WRAP as a legacy alias for K_WORDWRAP

  493. Rob Swindell (on Debian Linux)
    Wed Feb 05 2025 13:02:18 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/umonitor/umonitor.c diff
    Don't use K_WRAP here, it's not even a UIFC "thing"

  494. Rob Swindell (on Windows 11)
    Wed Feb 05 2025 12:39:35 GMT-0800 (PST)
    Modified Files:
    

    exec/default.js diff
    exec/load/sbbsdefs.js diff
    src/sbbs3/chat.cpp diff
    src/sbbs3/getstr.cpp diff
    src/sbbs3/js_bbs.cpp diff
    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/writemsg.cpp diff
    src/uifc/uifc.h diff
    Add K_LINEWRAP getstr() mode flag, rename K_WRAP to K_WORDWRAP For 10 years (commit e212e2c5fe9), sbbs_t/console.getstr() has limited length of string input to the available columns of the terminal. To fix issue #869, rather than change getstr()'s default behavior, add a new mode flag: K_LINEWRAP which does not limit the string length input based on the terminal width (and the current column) (e.g. for use with ;string commands from the default command shell). Ideally, I'd like to have a marquee-style option (K_mode flag) where longer strings just side-scroll to accommodate strings longer than the terminal width, but in the mean-time, this'll do. So anywhere we think a narrow (e.g. 40 column) terminal is being excessively restricted in string input width and starting the input in the first column is not an option/solution, adding the K_LINEWRAP flag to the getstr() call is the proposed solution.

  495. Rob Swindell (on Debian Linux)
    Wed Feb 05 2025 11:48:06 GMT-0800 (PST)
    Modified Files:
    

    exec/str_cmds.js diff
    Reload text.<lang>.ini file upon ;RELOAD command

  496. Rob Swindell (on Windows 11)
    Wed Feb 05 2025 11:15:46 GMT-0800 (PST)
    Modified Files:
    

    exec/load/text.js diff
    5 new (mostly QWK-related) text.dat string ID definitions

  497. Rob Swindell (on Windows 11)
    Wed Feb 05 2025 11:14:29 GMT-0800 (PST)
    Modified Files:
    

    ctrl/text.dat diff
    Add condition newline to CriticalErrors string Fix issue #868 - pretty this string for 40 col terminals

  498. Deucе
    Wed Feb 05 2025 10:36:49 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CHANGES diff
    src/syncterm/CMakeLists.txt diff
    src/syncterm/Info.plist diff
    src/syncterm/Manual.txt diff
    src/syncterm/PackageInfo.in diff
    src/syncterm/dpkg-control.in diff
    src/syncterm/haiku.rdef diff
    src/syncterm/syncterm.c diff
    src/syncterm/syncterm.rc diff
    src/syncterm/term.c diff
    Fix regression in Atari auto-login In v1.5, it was changed to sending an ASCII CR instead of an ATASCII one, breaking auto-login.

  499. Deucе
    Wed Feb 05 2025 09:45:18 GMT-0800 (PST)
    Modified Files:
    

    src/conio/ciolib.adoc diff
    Add missing cell

  500. Deucе
    Wed Feb 05 2025 09:35:33 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CMakeLists.txt diff
    src/syncterm/Info.plist diff
    src/syncterm/Manual.txt diff
    src/syncterm/PackageInfo.in diff
    src/syncterm/dpkg-control.in diff
    src/syncterm/haiku.rdef diff
    src/syncterm/syncterm.c diff
    src/syncterm/syncterm.rc diff
    And now master is 1.6a

  501. Deucе
    Wed Feb 05 2025 09:18:02 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CHANGES diff
    src/syncterm/CMakeLists.txt diff
    src/syncterm/Info.plist diff
    src/syncterm/Manual.txt diff
    src/syncterm/PackageInfo.in diff
    src/syncterm/dpkg-control.in diff
    src/syncterm/haiku.rdef diff
    src/syncterm/syncterm.c diff
    src/syncterm/syncterm.rc diff
    SyncTERM 1.5

  502. Deucе
    Wed Feb 05 2025 08:22:13 GMT-0800 (PST)
    Modified Files:
    

    src/conio/Common.gmake diff
    src/conio/win32cio.c diff
    We don't need to dynamically load [GS]etConsoleMode()

  503. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 21:25:06 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/mailsrvr.c diff
    Don't MSVC warning suppression

  504. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 21:23:55 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ntsvcs.c diff
    Assume Windows XP / Server 2003 or later No need to use LoadLibrary() and GetProcAddress() here

  505. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 21:20:15 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/dirwrap.c diff
    Remove pre-WinXP support from getdiskspace() No need to use LoadLibrary and GetProcessAddress here any more either

  506. Deucе
    Tue Feb 04 2025 20:56:09 GMT-0800 (PST)
    Modified Files:
    

    src/build/Common.gmake diff
    Actually, bump Gmake builds to Windows 7. Vista ended support before XP did, and it doesn't seem to show up on any usage lists (while XP still has 0.27% of all Windows systems... which are 25.46% of systems on the internet) https://gs.statcounter.com/os-market-share

  507. Deucе
    Tue Feb 04 2025 19:50:13 GMT-0800 (PST)
    Modified Files:
    

    src/build/Common.gmake diff
    Default GNUmake to Vista/IE7 as well

  508. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 19:28:12 GMT-0800 (PST)
    Modified Files:
    

    src/sexpots/sexpots.vcxproj diff
    src/vdmodem/vdmodem.vcxproj diff
    Target Windows Vista (not Windows XP)

  509. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 19:15:35 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/mailsrvr.c diff
    Fix bug that broken mail received header RBL check 9 years ago in commit dbbfabf1b133b4116d69d4a13c38acfe1607a500

  510. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 19:14:19 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/qwk.cpp diff
    Address MSVC warnings: check return value of sscanf Insure that msgcnt is initialized.

  511. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 19:12:43 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/mailsrvr.c diff
    src/sbbs3/main.cpp diff
    Don't use deprecated functions: inet_addr() and gethostbyname()

  512. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 18:52:49 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_socket.c diff
    Don't use deprecated function: inet_addr()

  513. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 18:52:01 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ftpsrvr.c diff
    Addrss some new MSVC warnings Check sscanf() result Don't use deprecated function: inet_addr()

  514. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 18:48:28 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/netwrap.c diff
    malloc() result check, suppress MSVC warning

  515. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 18:47:57 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/genwrap.c diff
    Use strlcpy instead of strncpy to insure termination, suppress MSVC warning

  516. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 16:55:05 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/text_defaults.c diff
    Correct text.dat string number (comment) for QWKBadControlCommand

  517. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 16:54:24 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/genwrap.c diff
    Fix common typo in comments

  518. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 16:43:24 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/genwrap.c diff
    When building for Windows Vista+, use GetTickCount64() through-out At one point while migrating off the Windows XP compatible WinSDK and toolset, I was getting nice deprecation warnings in this file about uses of GetTickCount() and the 49 day roll-over isuse. I stopped getting those deprecation warnings (not sure when/why), but I'm still doing the right thing here/now and using the newer Win32 API function when it's available (always, for the versions of Windows we're building Synchronet and friends for).

  519. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 16:40:02 GMT-0800 (PST)
    Added Files:
    

    src/build/target_winver.props diff
    Modified Files:

    src/conio/conio.vcxproj diff
    src/conio/conio_gdi.vcxproj diff
    src/conio/conio_sdl.vcxproj diff
    src/sbbs3/ans2asc.vcxproj diff
    src/sbbs3/asc2ans.vcxproj diff
    src/sbbs3/baja.vcxproj diff
    src/sbbs3/chksmb.vcxproj diff
    src/sbbs3/dupefind.vcxproj diff
    src/sbbs3/echocfg.vcxproj diff
    src/sbbs3/fixsmb.vcxproj diff
    src/sbbs3/fmsgdump.vcxproj diff
    src/sbbs3/ftpsrvr.vcxproj diff
    src/sbbs3/jsexec.vcxproj diff
    src/sbbs3/load_cfg.vcxproj diff
    src/sbbs3/mailsrvr.vcxproj diff
    src/sbbs3/makeuser.vcxproj diff
    src/sbbs3/node.vcxproj diff
    src/sbbs3/ntsvcs.vcxproj diff
    src/sbbs3/pktdump.vcxproj diff
    src/sbbs3/qwknodes.vcxproj diff
    src/sbbs3/sbbs.vcxproj diff
    src/sbbs3/sbbscon.vcxproj diff
    src/sbbs3/sbbsecho.vcxproj diff
    src/sbbs3/scfg/scfg.vcxproj diff
    src/sbbs3/services.vcxproj diff
    src/sbbs3/sexyz.vcxproj diff
    src/sbbs3/slog.vcxproj diff
    src/sbbs3/smbutil.vcxproj diff
    src/sbbs3/textgen.vcxproj diff
    src/sbbs3/trashman.vcxproj diff
    src/sbbs3/unbaja.vcxproj diff
    src/sbbs3/upgrade_to_v319.vcxproj diff
    src/sbbs3/upgrade_to_v320.vcxproj diff
    src/sbbs3/websrvr.vcxproj diff
    src/sftp/sftp.vcxproj diff
    src/smblib/smblib.vcxproj diff
    src/uifc/uifc.vcxproj diff
    src/xpdev/xpdev.vcxproj diff
    src/xpdev/xpdev_mt.vcxproj diff
    Target Windows Vista+ (not Windows XP) and enable enhanced instruction sets Synchronet v3.20 doesn't actually work on Windows XP due to depenendies in 3rd party libraries we link with and more recent ciolib improvements. So, no need to use an ancient WinSDK (7.0) or toolset anymore. Hooray! I'm not changing the versions of C or C++ language enabled (yet), but that's something we should consider doing. Also, re-enable enhanced x86 processor extensions (e.g. SSE2) as I doubt very much you can run Windows Vista on a pre-2000 CPU anyway. If this is a problem for anyone, it's trivial to disable the processor extensions again.

  520. Rob Swindell (on Windows 11)
    Tue Feb 04 2025 13:17:42 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/objects.mk diff
    src/sbbs3/sbbs3.sln diff
    src/sbbs3/targets.mk diff
    Removed Files:

    src/sbbs3/addfiles.c diff
    src/sbbs3/addfiles.vcxproj diff
    src/sbbs3/delfiles.c diff
    src/sbbs3/delfiles.vcxproj diff
    src/sbbs3/filelist.c diff
    src/sbbs3/filelist.vcxproj diff
    Remove deprecated projects (with JS equivalents) No need to continue to carry this baggage dupefind is another candidate for removal (soon)

  521. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 18:55:53 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sbbsecho.c diff
    Add debug-level log messages when import_netmail() returns a non-zero value To help debug any situations where import_netmail() might silently fail (though I don't anticipate there are any, Accession suggested there was).

  522. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 18:55:53 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_bbs.cpp diff
    bbs.load_text() can now be used to load text*.ini file For sysops that don't want to use the user's chosen language to auto-load alternate text strings, they can specify some other filename from the ctrl directory (so long as it ends in .ini). I wouldn't use text.*.ini however, since those filenames are assumed to be language translations and will automatically appear in user_settings.js as a user-selectable language. text-*.ini would be fine though as an alternate text.ini filename: not colliding with text.ini or text.*.ini

  523. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 18:55:53 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/prntfile.cpp diff
    Fix random menu/display file selection when some files can't be displayed When one or more files that match the menu file pattern can't be displayed (e.g. the user's terminal is not wide enough or there's any other menu file open/read error), pick another random menu file and try displaying that one, until either a menu file has been displayed successfully or all files (matching the pattern) have been attempted. For example, you have text/menu/random1.c80.msg and random2.msg, if the first file (random1.c80.msg) is selected at random but the user's terminal isn't at least 80 columns wide, another file will be picked at random. Since only random2.msg remains in the list (matching the pattern "random*"), that's the only file that will always be displayed.

  524. Rob Swindell (on Debian Linux)
    Mon Feb 03 2025 18:37:22 GMT-0800 (PST)
    Added Files:
    

    text/menu/random_sync_5m.c80.msg diff
    text/menu/random_sync_5m_fire.c80.msg diff
    New random Sync/Synchronet splash screens, by Smooth of Phenom Productions Thank you 5mooth!

  525. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 17:13:09 GMT-0800 (PST)
    Added Files:
    

    text/menu/random_sync_abs_blue.c80.msg diff
    text/menu/random_sync_abs_dark.c80.msg diff
    text/menu/random_sync_abs_light.c80.msg diff
    text/menu/random_sync_starwars1.c80.msg diff
    text/menu/random_sync_starwars2.c80.msg diff
    text/menu/random_synch_gj_splash.c80.msg diff
    Rename random logon block-art splash screens to *.c80.msg Fix issue #867 Renamed to .msg to make for easier preview/edit with PabloDraw

  526. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 11:20:26 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/userdat.c diff
    Fix ERROR 2 (...) in putnode.cpp ... opening "node.exb" Need the O_CREAT mode flag. Broken with commit d116f3622: I started using opennodeext() (created 5 years ago with commit 710bb23c1bd) rather than nopen(), and I didn't realize that opennodeext() was not including O_CREAT. Once the ctrl/node.exb was created (by anything), this error wouldn't happen. And it'd only be an issues for systems with text.dat's that included custom node status (NodeAction*) strings. Good catch Nelgin!

  527. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 11:04:11 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/putmsg.cpp diff
    Correctly center lines of text that contain @-codes, after @center@ @-codes weren't expanded before the text length calculation, so the centering logic (offset in the user's terminal screen) would usually be incorrect as pointed out by Nelgin in #synchronet when we were discussing the |C @-code modifier (which is to center an @-code value in a field, not the screen). This issue was a known limitation of the fix to issue #418 (commit 8987150bd) but now that we have the expand_atcodes() function (hooray!), this is an easily solvable problem. Note: we're now calling center() withOUT the 'msg' parameter set to true, which means the @center@ code goes back to the previous (to issue #418 fix) behavior of just using bputs() for the centered text (we don't need the recursive call to pustmsg() to support @-codes any longer). This was the only reason that center() grew the optional 'msg' parameter so we likely can remove that option/feature at some date.

  528. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 10:51:51 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/mailsrvr.c diff
    text/menu/restrict.asc diff
    Add new I-restriction, to disallow receipt of Internet mail to specific users (mail received from authenticated SMTP clients is still allowed) Previously, the M-restriction also prevent receipt of Internet mail from authenticated SMTP clients, so separate that restriction into the new 'I' restriction. This fixes issue #865

  529. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 01:12:15 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Remove the PATH debug Also add cryptlib to PATH for jsexec smoke test, just in case

  530. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 01:04:34 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    CI_PROJECT_DIR looks like the more correct variable to use here

  531. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 00:56:03 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Add an echo PATH debug statement again <sigh>

  532. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 00:47:26 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    We need the original PATH directories too

  533. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 00:26:58 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Do the more powershell thing

  534. Rob Swindell (on Windows 11)
    Mon Feb 03 2025 00:03:52 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    This PowerShell, not cmd.exe, as Deuce pointed out Oops.

  535. Rob Swindell (on Windows 11)
    Sun Feb 02 2025 23:55:57 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Try using quotes not clear why this would be required, but exampels seem to use 'em

  536. Rob Swindell (on Windows 11)
    Sun Feb 02 2025 23:45:35 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/logon.cpp diff
    Actually use the (first) shell we found that the user meets the requirements As discovered and reported by Deuce and Nelgin

  537. Rob Swindell (on Windows 11)
    Sun Feb 02 2025 23:45:14 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Echo the path for debugging

  538. Rob Swindell (on Windows 11)
    Sun Feb 02 2025 23:32:42 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Try setting the PATH to point to the win32.release/cryptlib/bin dir ... so we always use the correct cl32.dll when running the jsexec test suite on Windows.

  539. Rob Swindell (on Windows 11)
    Sun Feb 02 2025 23:01:48 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_cryptcert.c diff
    src/sbbs3/js_cryptcon.c diff
    src/sbbs3/js_cryptkeyset.c diff
    Throw a JS exception if do_cryptInit() fails Catch cryptlib version mismatch gracefully

  540. Deucе
    Sun Feb 02 2025 21:42:07 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_socket.c diff
    Remove accidental whitespace No functional change.

  541. Rob Swindell (on Windows 11)
    Sun Feb 02 2025 20:28:21 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_socket.c diff
    Correct JSDOCS for TLS PSK properties The wrong version nubmer was specified for these new properties - these properties were added in v3.20c which is represented numerically as 32002 in decimal. The description of the tls_psk_id property was missing socket_prop_desc.

  542. Rob Swindell (on Windows 11)
    Sun Feb 02 2025 19:55:59 GMT-0800 (PST)
    Modified Files:
    

    3rdp/win32.release/cryptlib/bin/cl32.dll diff
    3rdp/win32.release/cryptlib/bin/cl32.lib diff
    3rdp/win32.release/cryptlib/include/cryptlib.h diff
    The latest cryptlib patched and built for win32-x86 release

  543. Deucе
    Sun Feb 02 2025 19:09:20 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    Support uid/pw only auth There are now two ways to authenticate with the broker: 1) TLS PSK with a sysop account, and set the password field at the MQTT level to the system password (user field, if present is ignored). This is the prefered method as it provides mutual authentication and you simply can't steal credentials with MITM. 2) Synchronet TLS certificate, sysop username and the users password followed by a colon, followed by the system password. The server authentication will now depend on the appropriate trust chain in the client. If using a Let's Encrypt certificate for example, you can' securely connect to localhost with this method. tools and libraries tend to allow TLS-PSK with password at the MQTT level, many GUI tools do not allow TLS-PSK.

  544. Deucе
    Sun Feb 02 2025 19:09:20 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_socket.c diff
    Use the new TLS PSK flag to control if sock.tls_psk_id is set Now both the "regular" certificate, and PSK will be supported on a TLS socket, and it's up to the client to check which was used.

  545. Deucе
    Sun Feb 02 2025 19:09:20 GMT-0800 (PST)
    Added Files:
    

    3rdp/build/cl-add-psk-flag.patch diff
    Modified Files:

    3rdp/build/CMakeLists-cl.txt diff
    3rdp/build/CMakeLists.txt diff
    3rdp/build/GNUmakefile diff
    Add patch to flag PSK TLS sessions

  546. Rob Swindell (on ChromeOS)
    Sun Feb 02 2025 14:53:24 GMT-0800 (PST)
    Modified Files:
    

    ctrl/text.dat diff
    Fix number of QWKBadControlCommand trimmed some trailing whitespace

  547. Deucе
    Sun Feb 02 2025 12:14:55 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sbbs.version diff
    Make sad linkers happy.

  548. Deucе
    Sun Feb 02 2025 11:56:08 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sbbs.version diff
    Hide more Cryptlib symbols

  549. Deucе
    Sun Feb 02 2025 10:07:55 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    It appears the Windows won't allow rename()ing a file over top of an existing one.

  550. Deucе
    Sun Feb 02 2025 00:05:20 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_socket.c diff
    Add Socket.tls_psk_id property If tls_psk is used, indicates which entry in tls_psk was used by the remote.

  551. Deucе
    Sat Feb 01 2025 22:52:43 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_mqtt.c diff
    Lower-case password in JS as well

  552. Deucе
    Sat Feb 01 2025 15:35:28 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Fix webget of chunked responses Broken with the paranoid_strtoul() addition

  553. Rob Swindell (on Debian Linux)
    Sat Feb 01 2025 15:00:33 GMT-0800 (PST)
    Modified Files:
    

    exec/user_settings.js diff
    Default "Foward email to netmail" answer to the current setting As much as possible, ENTER should mean "no change".

  554. Rob Swindell (on Windows 11)
    Sat Feb 01 2025 14:49:27 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/useredit.cpp diff
    text/menu/uedit.asc diff
    Add user NetMail address edit option ('N' command) to UEDIT A sysop can do the same by going through the 'I' (user config/settings command), but that's a bit more convoluted.

  555. Rob Swindell (on Debian Linux)
    Sat Feb 01 2025 13:56:21 GMT-0800 (PST)
    Modified Files:
    

    exec/load/newsutil.js diff
    Use the from_net_addr even if the from_net_type is 0/NONE Since it's technically a "local post", but the user/sysop wants their client- provided email address to appear in the header, use it, if provided (don't use a made-up BBS email address that may not be valid). For Accession

  556. Deucе
    Sat Feb 01 2025 13:49:20 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_mqtt.c diff
    src/sbbs3/mqtt.c diff
    src/sbbs3/scfg/scfgnet.c diff
    src/sbbs3/scfgdefs.h diff
    src/sbbs3/scfglib1.c diff
    Add new "Synchronet Broker" MQTT TLS type With this, you don't need a username, password, PSK, or PSK ID, certs, CAs, etc, and things just work by magic (when using the Synchronet broker)

  557. Deucе
    Sat Feb 01 2025 12:40:58 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    Call client_add()/client_remove() as appropriate For when running as a service.

  558. Deucе
    Sat Feb 01 2025 12:14:41 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    src/sbbs3/js_socket.c diff
    Don't allow public key auth if tls_psk is set

  559. Deucе
    Fri Jan 31 2025 23:55:25 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    Add some documentation about how the script works. As always when writing documentation, fix things that aren't quite right... we now schedule nextPacket, but run each packet to completion as long as we have all the bytes.

  560. Deucе
    Fri Jan 31 2025 22:33:37 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Remove extra set of errno. We don't need this anymore because the paranoid wrapper does it.

  561. Deucе
    Fri Jan 31 2025 22:27:40 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Add an use new strtou?ll?() wrappers in webget.c This is kind of a prototype for xpdev... but it's a bit klunky. The issue these fix is that some C libraries (Windows and GLibC) will return 0 and leave errno unset when no digits are converted, while other libraries (FreeBSD and musl) will set errno if no digits are converted. This means that even setting errno to zero before calling, then checking it if the return value is zero is not enough to catch errors. This actually led to Windows and (most) Linux systems not being able to download the web lists because of a bug where it was converting starting in the middle of the string rather than where the numbers are. It worked fine on Alpine Linux and FreeBSD though.

  562. Deucе
    Fri Jan 31 2025 21:45:43 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Fix header parsing... content-length: and content-transfer-encoding: were badly broken.

  563. Rob Swindell (on Windows 11)
    Fri Jan 31 2025 21:10:52 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/scfg/scfgxtrn.c diff
    Fix bug with fixed event toggles I'm totally perplexed that none of the compilers we have warned about this obvious incorrect usage of the toggle_flag() function. Not warning about passing false (0/NULL) for a char* makes some sense, but not the passing of a const char* in place of a bool (int)? Maybe we should be building with -Wall?

  564. Deucе
    Fri Jan 31 2025 20:55:12 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    fclose() newfile before renaming. Thanks Microsoft!

  565. Deucе
    Fri Jan 31 2025 20:52:11 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_socket.c diff
    Fix last commit. If we called accept(), it's not datagram, and if you're using SCTP and Synchronet lies to you, you can fix it yourself.

  566. Deucе
    Fri Jan 31 2025 19:58:23 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_socket.c diff
    Set Socket.type correctly on accept() from multisock

  567. Deucе
    Fri Jan 31 2025 19:58:23 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    Make broker.js capable of running as a static service.

  568. Deucе
    Fri Jan 31 2025 19:58:23 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    src/sbbs3/js_socket.c diff
    src/sbbs3/js_socket.h diff
    Add support for TLS PSK auth For use by broker.js which now requires a Sysop User ID and password as the TLS PSK, and requires the system password in the MQTT password field.

  569. Rob Swindell (on Debian Linux)
    Fri Jan 31 2025 18:18:04 GMT-0800 (PST)
    Modified Files:
    

    exec/mqtt_spy.js diff
    Catch and print exceptions Because of the way this script is invoked from str_cmds.js (using js.exec) any exceptions were just silent failures, making debugging issues (e.g. the recent regression with the global ascii() function) difficult.

  570. Rob Swindell (on Debian Linux)
    Fri Jan 31 2025 18:16:26 GMT-0800 (PST)
    Modified Files:
    

    exec/irc.js diff
    Increase connect timeout from 15 to 30 seconds vert.synchro.net is taking > 15 seconds after initial IRC version notice

  571. Rob Swindell (on Windows 11)
    Fri Jan 31 2025 18:14:57 GMT-0800 (PST)
    Modified Files:
    

    ctrl/text.dat diff
    src/sbbs3/msgtoqwk.cpp diff
    src/sbbs3/qwk.cpp diff
    src/sbbs3/telgate.cpp diff
    src/sbbs3/text.h diff
    src/sbbs3/text_defaults.c diff
    src/sbbs3/text_id.c diff
    Replace some hard-coded strings with Ctrl-A codes with text.dat strings As Nelgin pointed out, there are a few hard-coded strings in the C++ source with attribute (Ctrl-A) codes still. This commit takes care of 5 of them: - TelnetGatewayPrompt - QWKEndOfMessage - QWKTagLineFmt - QWKControlCommand - QWKBadControlCommand

  572. Rob Swindell (on Windows 11)
    Fri Jan 31 2025 18:14:57 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/logon.cpp diff
    src/sbbs3/main.cpp diff
    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/scfg/scfgxtrn.c diff
    src/sbbs3/scfgdefs.h diff
    src/sbbs3/scfglib1.c diff
    src/sbbs3/scfgsave.c diff
    Add an optional weekly fixed system event Yes, you can do the same thing with timed events, pretty much

  573. Rob Swindell (on Windows 11)
    Fri Jan 31 2025 18:14:56 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/getnode.cpp diff
    src/sbbs3/main.cpp diff
    src/sbbs3/sbbsdefs.h diff
    Rename SS_NEWDAY to SS_DATE_CHANGED Embarassingly, I'd added SS_NEW_DAY recently (for a different purpose) with such a similiar name. So let's rename this flag since it serves a very different purpose and avoid the confusion between the two flags.

  574. Rob Swindell (on Windows 11)
    Fri Jan 31 2025 18:14:56 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/useredit.cpp diff
    Eliminate SS_INUEDIT This hasn't done anything SBBSv3 - no way to enter internal user editor recursively.

  575. Rob Swindell (on Windows 11)
    Fri Jan 31 2025 18:14:56 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/execfunc.cpp diff
    src/sbbs3/sbbsdefs.h diff
    Eliminate SS_ANSCAP - never did anything in SBBS v3, that I recall

  576. Rob Swindell (on Windows 11)
    Fri Jan 31 2025 18:14:56 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/websrvr.c diff
    More use of errprintf() to reduce duplicate error log messages

  577. Rob Swindell (on Windows 11)
    Fri Jan 31 2025 18:14:56 GMT-0800 (PST)
    Modified Files:
    

    exec/tests/global/except.js diff
    src/sbbs3/js_global.c diff
    mqtt_spy.js depends on the previous behavior of ascii() When passed null or undefined, it needs to return null or undefined. Document that behavior.

  578. Deucе
    Fri Jan 31 2025 16:48:08 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_cryptcert.c diff
    Fix JSDOCS It's CryptCert.FORMAT.XXX

  579. Deucе
    Fri Jan 31 2025 16:10:59 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    Fix inverted comparisons in SUB and UNSUB messages

  580. Deucе
    Fri Jan 31 2025 14:59:20 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    Do some of that refactor Add a nextPacket() method that will get the next packet Add a Connection.parseBytes() method to consume the rx_buf Simplify Packet.newBytes() to only do socket recv() Clear RX buffer when closing socket

  581. Deucе
    Fri Jan 31 2025 14:28:18 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    ... But only if it's not null already.

  582. Deucе
    Fri Jan 31 2025 14:27:35 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    Set sock to null *after* closing it.

  583. Deucе
    Fri Jan 31 2025 14:25:02 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    More fixes... it seems broadly usefulish now - Increment bytes required for every extra VBI byte we learn about - If sock is null, don't look at sock.connection - Set sock to null after close - Don't read from sock unless we need some bytes - If we already have some bytes, parse them There's a couple hacks in here that should be refactored though.

  584. Deucе
    Fri Jan 31 2025 13:04:44 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    Log who packets are going to/from, fix potential leak in previous commit

  585. Deucе
    Fri Jan 31 2025 12:50:28 GMT-0800 (PST)
    Modified Files:
    

    exec/broker.js diff
    After receiving all packet data, receive the next packet. This appears to be why it was hanging. :D

  586. Deucе
    Fri Jan 31 2025 12:36:11 GMT-0800 (PST)
    Added Files:
    

    exec/broker.js diff
    Add a pure-JS MQTT broker This is not nearly ready for full-time yet, but it seems to mostly limp along fine... there's some issues with the callbacks and such, and the TLS support isn't currently usable by Synchronet. Worth committing though.

  587. Rob Swindell (on Debian Linux)
    Fri Jan 31 2025 12:24:46 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_user.c diff
    src/sbbs3/scfg/scfg.c diff
    src/sbbs3/scfg/scfgmsg.c diff
    src/sbbs3/scfg/scfgsub.c diff
    src/sbbs3/scfg/scfgxfr2.c diff
    src/sbbs3/scfg/scfgxtrn.c diff
    src/sbbs3/scfglib.h diff
    src/sbbs3/scfglib1.c diff
    src/sbbs3/userdat.c diff
    Better duplicate "key value" detection/rejection for configuration settings Internal codes are always treated as keys (in a database sense) and should be unique, but they weren't always enforced to be unique in SCFG. There's still a few config items with internal codes that aren't forced unique (e.g. chat channels). File Library short names and Mesage Group short names are also key values and must be unique and that's now enforced as well. Remove the default name for new File Libraries and Message Groups (which are likely duplicate anyway).

  588. Rob Swindell (on Debian Linux)
    Fri Jan 31 2025 12:14:19 GMT-0800 (PST)
    Modified Files:
    

    src/uifc/uifc.h diff
    src/uifc/uifc32.c diff
    Add K_CHANGED mode flag for uifc.input() Used in combination with K_EDIT, if the string isn't actually changed, return -1 (same as abort/ESC). This allows the elimination of some save/compare/copy code in SCFG where we only care to even look at the string if it was changed from its existing value.

  589. Deucе
    Thu Jan 30 2025 10:42:52 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/menu.c diff
    Fix attempt to free static const string in online menu Broken when I removed the ALT-X shortcuts for ANSI/Curses modes. Should fix issue #188

  590. Deucе
    Wed Jan 29 2025 20:56:59 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    More suppressions

  591. Deucе
    Wed Jan 29 2025 19:52:21 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Attempt to silence Coverity a bit harder

  592. Deucе
    Tue Jan 28 2025 20:14:18 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Whoops, add the string

  593. Deucе
    Tue Jan 28 2025 20:05:18 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    src/syncterm/webget.c diff
    A bit more Coverity follow-on

  594. Deucе
    Tue Jan 28 2025 19:29:37 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    src/syncterm/syncterm.c diff
    src/syncterm/term.c diff
    src/syncterm/webget.c diff
    src/xpdev/named_str_list.c diff
    Fix all the new issues Coverity complains about A couple were valid issues, but the majority were impossible.

  595. Deucе
    Tue Jan 28 2025 17:17:26 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CHANGES diff
    Mention the removal of login delays. 20ms, so you wouldn't notice, but it may be the cause of problem reports in the future, so best to have it logged somewhere.

  596. Deucе
    Tue Jan 28 2025 17:13:58 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/term.c diff
    Send login info in a single conn_send() call Should "fix" the timing difference in login info between modes. This removes a 10ms SLEEP() between the different pieces of data, and would likely have resolved ticket 185 if it wasn't already closed.

  597. Deucе
    Tue Jan 28 2025 15:32:12 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Reload the lists after the list list is modified

  598. Deucе
    Tue Jan 28 2025 15:29:17 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Add defaults for first BBS list

  599. Deucе
    Tue Jan 28 2025 15:13:45 GMT-0800 (PST)
    Modified Files:
    

    exec/sbbslist.js diff
    Add syncterm-ssh and syncterm-telnet commands These prefer the protocol after the - and only include one listing per BBS entry.

  600. Deucе
    Tue Jan 28 2025 15:12:39 GMT-0800 (PST)
    Modified Files:
    

    exec/load/sbbslist_lib.js diff
    Add options to specify a preferred order of services Default is SSH, then Telnet, then RLogin The most preferred one is the one that doesn't get the protocol as part of the BBS name. Also, add an "onlyone" parameter (defaults to false) that requests each BBS only gets one entry.

  601. Deucе
    Tue Jan 28 2025 11:56:16 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci-unix.yml diff
    Add -S to jsdoor too

  602. Deucе
    Tue Jan 28 2025 11:55:20 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci-unix.yml diff
    Add -S to jsexec commandlines so we get status info

  603. Deucе
    Tue Jan 28 2025 11:32:25 GMT-0800 (PST)
    Modified Files:
    

    exec/tests/test.js diff
    Flush stdout after each test. This makes watching the valgrind tests more entertaining. Likely makes it easier to tell what test crashed too, but let's face it, I'm doing this to be entertained.

  604. Deucе
    Tue Jan 28 2025 11:26:05 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/suppressions.vg diff
    Add suppression for FreeBSD pthread_cond_init()

  605. Deucе
    Tue Jan 28 2025 11:07:38 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CHANGES diff
    Mention the telnet defer negotiation option

  606. Deucе
    Tue Jan 28 2025 09:44:53 GMT-0800 (PST)
    Modified Files:
    

    src/conio/retro.c diff
    Don't call env cb if it's NULL

  607. Deucе
    Tue Jan 28 2025 09:44:17 GMT-0800 (PST)
    Modified Files:
    

    src/conio/retro.c diff
    Don't call video_cb() if it's NULL

  608. Deucе
    Tue Jan 28 2025 09:42:19 GMT-0800 (PST)
    Modified Files:
    

    src/conio/retro.c diff
    Call exit() rather than sleep forever in retro_deinit() This doesn't fix anything since calling exit() from a DLL is nonsense, but at least it's less wrong than just waiting forever. Also, when main() returns, tell the frontent to shut down. It's most likely that this ends up causing the frontend to crash, but if the stars align, it may exit instead.

  609. Deucе
    Tue Jan 28 2025 08:56:30 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    src/syncterm/bbslist.h diff
    src/syncterm/conn_telnet.c diff
    src/syncterm/conn_telnet.h diff
    src/syncterm/telnets.c diff
    Add option to defer telnet negotiation. Some BBSs (ms.bsrealm.net) have a mailer running on the initial socket, and telnet negotiations with that disconnect. Other systems could potentially perform the negotiation then fail to pass the telnet state to the next program. With the new "Defer Negotiate" telnet option, SyncTERM won't send any telnet negotiations until it receives a telnet command from the remote first.

  610. Deucе
    Mon Jan 27 2025 23:21:46 GMT-0800 (PST)
    Added Files:
    

    src/conio/libretro.h diff
    It seems everyone is expected to vendor libretro.h

  611. Deucе
    Mon Jan 27 2025 23:20:18 GMT-0800 (PST)
    Modified Files:
    

    src/conio/retro.c diff
    Heh, fix codes over 255 as well.

  612. Deucе
    Mon Jan 27 2025 23:12:01 GMT-0800 (PST)
    Modified Files:
    

    src/conio/retro.c diff
    Derp, map the raw key too.

  613. Deucе
    Mon Jan 27 2025 22:17:20 GMT-0800 (PST)
    Modified Files:
    

    src/conio/retro.c diff
    Don't export keyval Win32CIO already does that.

  614. Deucе
    Mon Jan 27 2025 22:14:25 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Fix WITHOUT_CRYPTLIB

  615. Deucе
    Mon Jan 27 2025 22:14:17 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/GNUmakefile diff
    Fix WITH_RETRO for Win32

  616. Deucе
    Mon Jan 27 2025 21:46:07 GMT-0800 (PST)
    Modified Files:
    

    src/conio/retro.c diff
    src/syncterm/ssh.c diff
    A bit more work on retro... get keyboard map working But, this is incompatible with a bunch of things, including cryptlib, so shelve it for now.

  617. Deucе
    Mon Jan 27 2025 20:44:51 GMT-0800 (PST)
    Modified Files:
    

    src/conio/CMakeLists.txt diff
    src/syncterm/CMakeLists.txt diff
    Add libretro support to CMake

  618. Deucе
    Mon Jan 27 2025 20:27:41 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    src/xpdev/named_str_list.c diff
    Fix the many crashes when there are no web lists configured. Heh, whoops.

  619. Rob Swindell (on Debian Linux)
    Mon Jan 27 2025 18:30:32 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/uedit/uedit.c diff
    Remember the current menu option/selection for each sub-menu (list)

  620. Rob Swindell (on Windows 11)
    Mon Jan 27 2025 18:30:21 GMT-0800 (PST)
    Added Files:
    

    text/menu/random_sync_abs_blue.asc diff
    text/menu/random_sync_abs_dark.asc diff
    text/menu/random_sync_abs_light.asc diff
    Some more random sync logos, these by abstrakt (fire), circa 2023 These use column 80 so I had to use the '-80' switch with ans2asc (which is a really nice feature!) or else they didn't display correctly on wider terminals.

  621. Rob Swindell (on Windows 11)
    Mon Jan 27 2025 18:30:21 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/useredit/MainFormUnit.cpp diff
    Use the new userdat api functions: del_user() and undel_user() Display the user's deletion date (when available) - always displayed in numeric format because datestr() takes a time_t argument and Borland's time_t is just 32-bits still. Fix typo in "Active User" string

  622. Deucе
    Mon Jan 27 2025 18:02:39 GMT-0800 (PST)
    Added Files:
    

    src/conio/retro.c diff
    src/conio/retro.h diff
    Modified Files:

    src/conio/Common.gmake diff
    src/conio/GNUmakefile diff
    src/conio/ciolib.c diff
    src/conio/ciolib.h diff
    src/syncterm/GNUmakefile diff
    src/syncterm/ssh.c diff
    Initial hack of libretro build. Does output and "normal" keys work. That was easy. :)

  623. Rob Swindell
    Mon Jan 27 2025 13:40:03 GMT-0800 (PST)
    Modified Files:
    

    docs/slyedit_readme.txt diff
    Removed Files:

    ctrl/slyedit_readme.txt diff
    Merge branch 'slyedit_readme_location' into 'master' SlyEdit: The readme should only be in docs (not ctrl). Also, updated the version history of the correct one so that it's complete. See merge request main/sbbs!495

  624. Eric Oulashin
    Mon Jan 27 2025 13:40:03 GMT-0800 (PST)
    Modified Files:
    

    docs/slyedit_readme.txt diff
    Removed Files:

    ctrl/slyedit_readme.txt diff
    SlyEdit: The readme should only be in docs (not ctrl). Also, updated the version history of the correct one so that it's complete.

  625. Deucе
    Mon Jan 27 2025 13:31:38 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Re-enable Valgrind on FreeBSD. I have hacked up a patch to Valgrind.

  626. Deucе
    Mon Jan 27 2025 11:01:56 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/conn.c diff
    src/syncterm/conn.h diff
    src/syncterm/conn_telnet.c diff
    src/syncterm/rlogin.c diff
    src/syncterm/ssh.c diff
    src/syncterm/telnets.c diff
    src/syncterm/webget.c diff
    Use a 5 second connect() timeout when updating the cache

  627. Deucе
    Mon Jan 27 2025 11:01:00 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Initialize sess->sock INVALID_SOCKET != 0, so this potentially ended up closing stdin and breaking ANSI and Curses modes.

  628. Deucе
    Mon Jan 27 2025 09:25:51 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/menu.c diff
    Don't show Alt shortcuts in modes that don't support them. "Fixes" ticket 184.

  629. Deucе
    Mon Jan 27 2025 09:07:28 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/term.c diff
    Fix legacy attributes when redrawing status bar legacy_attr is the CGA attribute, not ANSI colours. :D Fixes ticket 183.

  630. Deucе
    Sun Jan 26 2025 23:06:04 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci.yml diff
    Disable Valgrind on FreeBSD for now. I'm out of ideas and want the pipes flowing.

  631. Deucе
    Sun Jan 26 2025 23:03:33 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_global.c diff
    src/sbbs3/js_user.c diff
    Fix all the "Not in request" assertions with debug JS This still appears to not fix valgrind on FreeBSD. :( The background thread thing is interesting though because there's an implication that the thread ID matters to GC in the assertion, and we were very sloppy about requests in there.

  632. Deucе
    Sun Jan 26 2025 22:45:18 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_file.c diff
    Fix spurious call to JS_THIS_OBJECT() This appears to be why valgrind on FreeBSD was failing. You can't actually call this in a constructor because creating this is the whole point of calling it.

  633. Rob Swindell (on ChromeOS)
    Sun Jan 26 2025 21:05:55 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/scfg/scfgxfr2.c diff
    src/sbbs3/scfgdefs.h diff
    src/sbbs3/scfgsave.c diff
    Store the configured values in the SMB status header of file bases when changed (in SCFG). This is a fix for issue #861

  634. Rob Swindell (on ChromeOS)
    Sun Jan 26 2025 20:21:18 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sbbsdefs.h diff
    src/sbbs3/scfg/scfgmsg.c diff
    src/sbbs3/scfg/scfgsub.c diff
    src/sbbs3/scfgdefs.h diff
    src/sbbs3/scfgsave.c diff
    Replace SUB_HDRMOD sub_t.misc flag with bool cfg_modified No reason waste a (stored) config/settings flag (bit) for this purpose

  635. Deucе
    Sun Jan 26 2025 18:47:48 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/suppressions.vg diff
    Add a wildcard so these work in debug builds too

  636. Deucе
    Sun Jan 26 2025 18:34:19 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/suppressions.vg diff
    Fix last commit. Put the "fun" back in malloc()!

  637. Deucе
    Sun Jan 26 2025 18:32:07 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/suppressions.vg diff
    New JS suppressions for FreeBSD 14 and updated Valgrind

  638. Deucе
    Sun Jan 26 2025 18:25:08 GMT-0800 (PST)
    Modified Files:
    

    src/conio/ciolib.adoc diff
    src/conio/sdl_con.c diff
    src/conio/win32gdi.c diff
    src/conio/x_events.c diff
    src/syncterm/CHANGES diff
    src/syncterm/Manual.txt diff
    Add Alt+Home to centre window on screen Works in SDL mode and X11 mode with an appropriate Window Manager (I was going to use center window gravity, but since my WM doesn't support that, I just assume that all the good ones dont). Not tested in Win32-GDI mode, but should likely work I suppose.

  639. Rob Swindell
    Sun Jan 26 2025 14:54:48 GMT-0800 (PST)
    Modified Files:
    

    ctrl/SlyEdit.cfg diff
    ctrl/slyedit_readme.txt diff
    docs/slyedit_readme.txt diff
    exec/SlyEdit.js diff
    exec/SlyEdit_DCTStuff.js diff
    exec/SlyEdit_IceStuff.js diff
    exec/SlyEdit_Misc.js diff
    exec/slyedcfg.js diff
    Merge branch 'slyedit_input_timeout_with_getkey' into 'master' SlyEdit: User activity timeout improvement (via use of console.getkey() instead of the custom function that was being used) See merge request main/sbbs!494

  640. Eric Oulashin
    Sun Jan 26 2025 14:54:48 GMT-0800 (PST)
    Modified Files:
    

    ctrl/SlyEdit.cfg diff
    ctrl/slyedit_readme.txt diff
    docs/slyedit_readme.txt diff
    exec/SlyEdit.js diff
    exec/SlyEdit_DCTStuff.js diff
    exec/SlyEdit_IceStuff.js diff
    exec/SlyEdit_Misc.js diff
    exec/slyedcfg.js diff
    SlyEdit: User activity timeout improvement (via use of console.getkey() instead of the custom function that was being used)

  641. Deucе
    Sun Jan 26 2025 14:19:33 GMT-0800 (PST)
    Added Files:
    

    3rdp/build/js-map-aligned.patch diff
    Modified Files:

    3rdp/build/GNUmakefile diff
    Fix egregious race/infinite loop bug for FreeBSD and NetBSD The allocator has a loop trying to map an aligned page, and there's an obvious (and commented-on) race condition in it. The purpose is apparently to get an aligned allocation using mmap(). For FreeBSD and NetBSD, we can simply pass the desired alignment to mmap() and we're good. Other platforms are still hosed though. This generally didn't happen, but something about FreeBSD 14.2 on a many core (16+HT) system causes it to park in the loop and stay there, adding new threads to to fun as it goes along. This uses MAP_ALLOCED() if defined avoid the loop completely. We'll see if it works soon enough.

  642. Deucе
    Sun Jan 26 2025 11:15:49 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci-unix.yml diff
    Now that I know about GIT_STRATEGY, use it everywhere! The docs suggest there's a place to set the default, but I don't see it other than the "Variables", which I don't really want to do. Regardless, switch to explicit "fetch" (which falls back to clone)

  643. Deucе
    Sun Jan 26 2025 10:53:05 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci-unix.yml diff
    Fix path in previous commit.

  644. Deucе
    Sun Jan 26 2025 10:48:28 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci-unix.yml diff
    Make the tests and cleanup phase not require a git checkout Archive the ctrl and exec dirs during sbbs-build for the tests. Also, fix use of sbbs-build archive... on FreeBSD, there are two, we need to use the right one.

  645. Deucе
    Sun Jan 26 2025 10:17:40 GMT-0800 (PST)
    Modified Files:
    

    src/conio/ciolib.c diff
    src/conio/ciolib.h diff
    src/conio/mouse.c diff
    src/syncterm/CHANGES diff
    src/syncterm/bbslist.c diff
    src/syncterm/syncterm.c diff
    src/syncterm/syncterm.h diff
    Add toggle to invert mouse wheel. It actually inverts buttons four and five, but we're not going to tell people that. Implements feature request 75.

  646. Deucе
    Sun Jan 26 2025 09:07:25 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/Manual.txt diff
    src/syncterm/bbslist.c diff
    src/syncterm/webget.c diff
    Add help, documentation, and better error messages Feature is likely "done" at this point.

  647. Rob Swindell
    Sat Jan 25 2025 22:17:09 GMT-0800 (PST)
    Modified Files:
    

    exec/load/dd_lightbar_menu.js diff
    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    Merge branch 'dd_msg_reader_timeout_disconnect_and_dd_lightbar_menu_console_getkey' into 'master' DDMsgReader: Inactivity disconnection more consistent with Synchronet behavior. DDLightbarMenu: Use console.getkey() instead of getKeyWithESCChars(), as getKeyWithESCChars() is no longer needed. See merge request main/sbbs!493

  648. Eric Oulashin
    Sat Jan 25 2025 22:17:09 GMT-0800 (PST)
    Modified Files:
    

    exec/load/dd_lightbar_menu.js diff
    xtrn/DDMsgReader/DDMsgReader.js diff
    xtrn/DDMsgReader/ddmr_cfg.js diff
    xtrn/DDMsgReader/readme.txt diff
    xtrn/DDMsgReader/revision_history.txt diff
    DDMsgReader: Inactivity disconnection more consistent with Synchronet behavior. DDLightbarMenu: Use console.getkey() instead of getKeyWithESCChars(), as getKeyWithESCChars() is no longer needed.

  649. Rob Swindell (on ChromeOS)
    Sat Jan 25 2025 21:48:32 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_bbs.cpp diff
    bbs.revert_text() (called with no args) is supposed to revert all text strings and not throw and exception. :-( This was broken in commit 6dbd2fec644cd1f153137bc27432cf3e127ca81a Caught by code review.

  650. Rob Swindell (on ChromeOS)
    Sat Jan 25 2025 20:40:54 GMT-0800 (PST)
    Modified Files:
    

    ctrl/file.ini diff
    Read and rewrote with SCFG (no functional changes) Just adds new keys/default values

  651. Rob Swindell (on ChromeOS)
    Sat Jan 25 2025 20:36:52 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/scfg/scfgxfr1.c diff
    Add more details on what the Supported Archive Formats option controls (and doesn't control)

  652. Rob Swindell (on ChromeOS)
    Sat Jan 25 2025 18:53:25 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    A typecast to suppress GCC warning about loss of constiness

  653. Deucе
    Sat Jan 25 2025 18:48:59 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Use the new iniAppendSectionWithNamedStrings() function Should be better than what I was doing.

  654. Rob Swindell (on ChromeOS)
    Sat Jan 25 2025 18:41:39 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/ini_file.c diff
    src/xpdev/ini_file.h diff
    Add iniAppendSectionWithNamedStrings() If you have list of named strings (named_string_t) and want to add them as a section of key/value pairs to a [section] in .ini formatted string list, this is the function you want to use. I'm not sure if this is exactly what Deuce had in mind (for use in SyncTERM), but it wasn't a lot of code to write and might be useful to someone someday.

  655. Deucе
    Sat Jan 25 2025 18:27:08 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Add the thing to save the web lists.

  656. Deucе
    Sat Jan 25 2025 18:09:22 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    src/syncterm/syncterm.c diff
    src/syncterm/syncterm.h diff
    Have get_syncterm_filename() get the system cache path too Now we can easily try downloading a URI when it's configured. Still can't save the changes though.

  657. Rob Swindell (on Windows 11)
    Sat Jan 25 2025 17:48:54 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/sbbscon.vcxproj diff
    sbbscon include ver.cpp which needs to (now) #include archive.h so needs the libarchive property sheet to get that include dir added

  658. Rob Swindell (on Windows 11)
    Sat Jan 25 2025 17:48:30 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_console.cpp diff
    Resolve MSVC warning

  659. Rob Swindell (on Debian Linux)
    Sat Jan 25 2025 17:33:38 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ver.cpp diff
    archive.h is a system header, use the right #include syntax should fix MSVC build error: ver.cpp(29): fatal error C1083: Cannot open include file: 'archive.h': No such file or directory

  660. Rob Swindell (on Debian Linux)
    Sat Jan 25 2025 17:26:03 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_archive.c diff
    src/sbbs3/jsdoor.c diff
    Don't bother creating Archive.supported_formtsf or jsdoor

  661. Rob Swindell (on Debian Linux)
    Sat Jan 25 2025 17:22:16 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/js_console.cpp diff
    Add getkey_inactivity_warning property (alias: inactivity warning) Configured duration in seconds before warning about pending disconnection due to user/keyboard inactivity (or 0 if disabled).

  662. Deucе
    Sat Jan 25 2025 17:08:02 GMT-0800 (PST)
    Modified Files:
    

    src/conio/allfonts.c diff
    Fix build without fonts

  663. Rob Swindell (on Debian Linux)
    Sat Jan 25 2025 16:37:01 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/ver.cpp diff
    Display the libarchive version details along with the other libs we use

  664. Rob Swindell (on Debian Linux)
    Sat Jan 25 2025 16:36:39 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/scfglib2.c diff
    Free the supported_archive_formats str_list in the right function

  665. Rob Swindell (on Debian Linux)
    Sat Jan 25 2025 16:18:18 GMT-0800 (PST)
    Modified Files:
    

    exec/newuser.js diff
    Fix misuse of system.trashcan() caught by new parameter validation exceptions newuser.js line 57: Error: Insufficient Arguments (1 provided, a minimum of 2 expected)

  666. Rob Swindell (on ChromeOS)
    Sat Jan 25 2025 16:17:50 GMT-0800 (PST)
    Modified Files:
    

    src/sbbs3/filedat.c diff
    src/sbbs3/js_archive.c diff
    src/sbbs3/main.cpp diff
    src/sbbs3/pack_qwk.cpp diff
    src/sbbs3/pack_rep.cpp diff
    src/sbbs3/qwk.cpp diff
    src/sbbs3/sbbs.h diff
    src/sbbs3/scfg/scfgxfr1.c diff
    src/sbbs3/scfgdefs.h diff
    src/sbbs3/scfglib2.c diff
    src/sbbs3/scfgsave.c diff
    src/sbbs3/useredit.cpp diff
    Make the fully-supported (lib)archive file types/formats configurable Before now, the archive formats/types (e.g. for creating QWK/REP packets or temp file download archives) supported by libarchive have been *hard-coded* in Synchronet to "zip, 7z, tgz", but if you really want to support the creation of more archive formats using the internal (libarchive) support in Synchronet, and your system supports it (e.g. confirmed using archive.js), you can add those types to this list or remove any that are problematic. This list does not impact the archive types that can be viewed or extracted using libarchive.

  667. Deucе
    Sat Jan 25 2025 13:51:13 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/xpdev.vcxproj diff
    src/xpdev/xpdev_mt.vcxproj diff
    Hack some files into the thing...

  668. Deucе
    Sat Jan 25 2025 13:47:32 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/named_str_list.c diff
    Missed a speck...

  669. Deucе
    Sat Jan 25 2025 13:44:00 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/named_str_list.c diff
    More Borland happiness Sadness for the rest of the world.

  670. Deucе
    Sat Jan 25 2025 13:41:07 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/named_str_list.c diff
    src/xpdev/named_str_list.h diff
    Some Borland fixups Not all of them though... I just mr IRC history. :)

  671. Deucе
    Sat Jan 25 2025 13:40:04 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/CMakeLists.txt diff
    Fix CMake builds

  672. Rob Swindell (on ChromeOS)
    Sat Jan 25 2025 11:53:10 GMT-0800 (PST)
    Modified Files:
    

    exec/tests/system/rtypes.js diff
    src/sbbs3/js_system.c diff
    Revert system.get_node_message() and system.get_telegram() to return null ... upon failure/no message waiting. Some scripts (e.g. ecWebv4) explicitly check for a null return value. So document the return value will be null when there's no message waiting. This isue was introduced in commit f300a32ef58f0340ce60f and reported via DOVE-Net by kk4qbn (KK4QBN)

  673. Deucе
    Sat Jan 25 2025 11:38:22 GMT-0800 (PST)
    Added Files:
    

    src/xpdev/named_str_list.c diff
    src/xpdev/named_str_list.h diff
    Modified Files:

    src/syncterm/bbslist.c diff
    src/syncterm/syncterm.c diff
    src/xpdev/gen_defs.h diff
    src/xpdev/objects.mk diff
    Some more work on the Web Lists interface in SyncTERM I've added a new named_str_list.[ch] thing to xpdev which allows manipulation the lists you get back from ini_file.c. Still need to do a thing to write the changes back, and write all the help text, but it's coming together. Also, fix formatting errors in the download status window.

  674. Deucе
    Sat Jan 25 2025 01:02:44 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Start of a menu to edit web lists. Goodnight.

  675. Deucе
    Sat Jan 25 2025 00:34:01 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/syncterm.c diff
    Don't show a size until we get the content-length or start getting bytes Prevents cached lists from showing zero.

  676. Deucе
    Sat Jan 25 2025 00:09:40 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Ensure some settings aren't loaded from system lists. Paths, passwords, user IDs, log settings, etc.

  677. Deucе
    Fri Jan 24 2025 23:52:55 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    src/syncterm/syncterm.c diff
    src/syncterm/syncterm.h diff
    Add support for actually downloading files. Just add this to your syncterm.ini: [WebLists] Synchronet=http://synchro.net/syncterm.lst AtariAge=http://www.sfhqbbs.org/ataribbslist-syncterm.php

  678. Deucе
    Fri Jan 24 2025 23:49:07 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    src/syncterm/webget.h diff
    Add TLS support and a cb_data field I think I fixed a bug or two too, but I can't remember and you can't run this code yet, so it doesn't matter.

  679. Deucе
    Fri Jan 24 2025 21:08:54 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Fix duplicate data in cacheinfo file Since the cache file is opened for append, truncate it before calling iniWriteFile(). This isn't create because if it fails, it will leave the file empty, which will cause the next time this function is called to do a full request, but at least if fails safe.

  680. Deucе
    Fri Jan 24 2025 20:59:04 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/webget.c diff
    Do all the caching, chunking, and fetching stuff. This should now be ready for use... it will not connect if the data is still fresh (default freshness period is one day), and will use If-Modified-Since and If-None-Match conditions depending on the cached data as well. All that's left is configuring it, fetching the lists, and loading them.

  681. Deucе
    Fri Jan 24 2025 20:59:04 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Add a TODO comment

  682. Rob Swindell
    Fri Jan 24 2025 19:56:36 GMT-0800 (PST)
    Modified Files:
    

    exec/load/dd_lightbar_menu.js diff
    Merge branch 'dd_lightbar_menu_use_console_inactivity_hangup' into 'master' DDLightbarMenu: Remove the inputTimeoutMS property; use console.inactivity_hangup instead. See merge request main/sbbs!492

  683. Eric Oulashin
    Fri Jan 24 2025 19:48:22 GMT-0800 (PST)
    Modified Files:
    

    exec/load/dd_lightbar_menu.js diff
    DDLightbarMenu: Remove the inputTimeoutMS property; use console.inactivity_hangup instead.

  684. Rob Swindell (on macOS)
    Fri Jan 24 2025 18:34:17 GMT-0800 (PST)
    Modified Files:
    

    src/build/Common.gmake diff
    Revert "macOS Clang linker - don't warn about duplicate libraries" This reverts commit abdeb48fa0ef12e4513a9db5d469878e8b79756d. Apparently the Clang on the x86 Mac mini build node doesn't support this option

  685. Rob Swindell (on macOS)
    Fri Jan 24 2025 18:22:04 GMT-0800 (PST)
    Modified Files:
    

    src/build/Common.gmake diff
    macOS Clang linker - don't warn about duplicate libraries

  686. Deucе
    Fri Jan 24 2025 16:10:48 GMT-0800 (PST)
    Modified Files:
    

    src/xpdev/ini_file.c diff
    fseek() after ftruncate() Ensure the stream is in a meaningful place. Fixes a bug, but one we're unlikely to have ever seen the way we use this.

  687. Deucе
    Fri Jan 24 2025 11:28:00 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/bbslist.c diff
    Allow "reserving" names The SyncTERM cache uses the BBS name as the directory name, so any system-level caching needs to either be in the cache root directory or in a directory whose name is guaranteed to not collide with an entry name. This leaves two options... either prevent a list of suffixes from being used on BBS names, or have a separate system cache whose name cannot be used as a BBS name. I've taken the second route here... SyncTERM will not load a BBS entry with the (case insensitive) name "syncterm-system-cache" and will not allow creating one. This is the directory where "global" cache files will be stored (ie: scripts, internet dialing directories, etc.)

  688. Deucе
    Fri Jan 24 2025 10:42:01 GMT-0800 (PST)
    Modified Files:
    

    .gitlab-ci-unix.yml diff
    Add sync after extracting archive It looks like at least one bus error was when the linker was loading the .so. Maybe a sync(8) here will "fix" that?

  689. Deucе
    Fri Jan 24 2025 10:38:30 GMT-0800 (PST)
    Modified Files:
    

    src/conio/bitmap_con.c diff
    Add silly check to make coverity happy. This is in the fastpath, but it's on the slow side where I don't mind the occasional extra silly check.

  690. Deucе
    Fri Jan 24 2025 10:33:22 GMT-0800 (PST)
    Modified Files:
    

    src/syncterm/CMakeLists.txt diff
    Fix path

AuthorCommitsLatest
Rob Swindell394Mon May 12 2025 22:37:24 GMT-0700 (PDT)
Eric Oulashin36Sat May 10 2025 12:03:44 GMT-0700 (PDT)
Nigel Reed4Thu May 08 2025 18:26:25 GMT-0700 (PDT)
Deucе253Wed Apr 23 2025 16:22:34 GMT-0700 (PDT)
Craig Hendricks2Tue Apr 15 2025 05:10:46 GMT-0700 (PDT)
mcmlxxix1Fri Mar 21 2025 13:02:41 GMT-0700 (PDT)

For older commits (in CVS), click here

Dynamically generated in 554 milliseconds