Synchronet now requires the libarchive development package (e.g. libarchive-dev on Debian-based Linux distros, libarchive.org for more info) to build successfully.

  1. 01 Dec, 2021 1 commit
    • Rob Swindell's avatar
      Remove the last remnants of Win9x/Me support · 717592bc
      Rob Swindell authored
      Allow "FOSSIL Only" as a configuration option for external programs in SCFG. This is a much easier method of disabling the virtual UART support in the Virtual UART/FOSSIL device driver (if/when necessary) than editing the sbbsexec.ini file (which is still supported).
      717592bc
  2. 23 Nov, 2021 1 commit
    • Rob Swindell's avatar
      Allow FOSSIL mode of the Win32 virtual UART/FOSSIL driver to be disabled · 5b36ab9a
      Rob Swindell authored
      When configuring an external program, a Win32 sysop can now choose to *only* enable the virtual UART (and not the FOSSIL driver) feature of the Synchronet virtual UART/FOSSIL driver (dosxtrn.exe/sbbsexec.dll). Some programs (e.g. TradeWars 2) will always use the FOSSIL driver if one is detected and in order to force the use of COM/UART driver for I/O (if that is desired), then one must disable the FOSSIL driver. It's a rare use case, but I can see the potential need.
      
      Renamed the "Intercept I/O" option in SCFG to "I/O Method" and make it clear that "Socket" (for native programs) and "FOSSIL or UART" (for 16-bit DOS programs) is the default method (what was previously identified as "No" I/O Interception).
      
      If a sysop want to disable the virtual UART support (on Win32, e.g. so *only* FOSSIL is available to one or all DOS programs), they do that via their sbbsexec.ini file.
      5b36ab9a
  3. 06 Sep, 2021 1 commit
    • Rob Swindell's avatar
      When searching for text in file descriptions, always search ext desc · f0d253ef
      Rob Swindell authored
      Since users can (and usually do) display extended descriptions in their normal file listings anyway, it makes sense to go ahead and search them for the text (e.g. with the 'F' command from the default command shell File menu/prompt). So the "search/display extended info" prompt has been changed to just "Display extended file info" since it no longer controls whether or not the extended description is searched for the text (it always is). The FL_EXFIND was renamed to FL_EXT and only controls whether the extended info is display (the FL_FIND mode flag, always renamed, must also be specified for a find with extended info).
      
      This closes feature request #285 by Phil (@plt).
      f0d253ef
  4. 06 Jun, 2021 2 commits
  5. 25 Apr, 2021 1 commit
  6. 24 Apr, 2021 1 commit
    • Rob Swindell's avatar
      DIZ enhancements: Read/use SAUCE data, support ANSI, increase max 1->4K · 2a8e1c11
      Rob Swindell authored
      Inspired by Blocktronics (and other ANSI art group) packs' FILE_ID.DIZ/ANS files:
      * Support (and prioritize) FILE_ID.ANS
      * Convert ANSI color/attribute sequences in DIZ files to Ctrl-A equivalent (uses SAUCE width and ICE color, if specified)
      * Don't treat DIZ as a series of lines, they're not always nowadays.
      * New putmsg() mode: P_INDENT to print files indented by current column
      * Display full (up to 64-char) filenames in lists when using 132+ column terminal.
      * Use the Author, Group, and Title fields from the SAUCE if present/non-blank
      * 2 new text.dat strings: 301 (FiAuthor) and 302 (FiGroup)
      * Also fix bug with repeated Cost header field on bulk-uploaded files.
      
      I know this'll break the *nix build (sauce.c dependency), but I'll fix that next.
      2a8e1c11
  7. 22 Apr, 2021 1 commit
  8. 17 Apr, 2021 1 commit
    • Rob Swindell's avatar
      Restore the user-to-user file transfer feature · bc883458
      Rob Swindell authored
      I forget who it was that said they were still using this feature in v3.18, but here you go, it's working again (the /D and /U commands). I'm not migrating any file sender/recipient info from v3.18, so only files added after upgrading to this will be downloadable from the "user" directory (if you have one).
      
      Something that I never implemented before but noticed is missing is the removal (or dereferencing) of user-to-user files that were sent from/to a user that is then deleted. So that's still a TODO item.
      bc883458
  9. 14 Apr, 2021 1 commit
  10. 04 Apr, 2021 1 commit
    • Rob Swindell's avatar
      A poll() failure with EINTR does not mean a socket is closed. · fcf58640
      Rob Swindell authored
      This won't impact Synchronet as it has a separate signal handling
      thread, but we still need to behave properly for processes that
      don't.  I'm also saying that ENOMEM does not indicate a disconnection,
      though it may be better to pretend it was disconnected...
      fcf58640
  11. 02 Apr, 2021 1 commit
    • Deucе's avatar
      Initial work on setTimeout() · ad635a64
      Deucе authored
      This appears to work and the event handler *should* work on other
      event types already.
      
      Note, this is *nix-only due to the use of poll().  select() will
      need to be used for Windows to keep XP compatability.
      ad635a64
  12. 07 Mar, 2021 1 commit
  13. 06 Mar, 2021 1 commit
    • Rob Swindell's avatar
      Allow fine-grained control over JavaScript compiler options via *.ini · 2c7f3bc6
      Rob Swindell authored
      JavaScriptOptions bit-field can be set in sbbs.ini and jsexec.ini to over-ride the default JS compiler options which have been changed from 0 to (options previously only used by JSDoor):
      JIT | METHODJIT | COMPILE_N_GO | PROFILING
      
      * JIT - TraceMonkey
      * METHODJIT - JägerMonkey
      * COMPILE_N_GO - compile-time scope chain resolution of consts
      * PROFILING - Choose between TraceMonkey and JägerMonkey at compile-time based on profiling results
      
      Other options available but not enabled by default:
      * STRICT - warn on debious practice (i.e. similar to "use strict")
      * WERROR - convert warnings to errors
      * VAROBJFIX -  use last object on scope chain as the ECMA 'variables object'
      * RELIMIT - Throw exception on any regular expression which backtracks more than n^3 times, where n is length of the input string
      * ANONFUNFIX - Disallow function () {} in statement context per ECMA-262 Edition 3.
      * METHODJIT_ALWAYS - Always whole-method JIT, don't tune at run-time.
      
      Also:
      - Fixed JS warning string formatting (missing space separator).
      - Removed an extraneous new-line in lprintf() call in mailsrvr.
      - Added basic assertEq() global method to jsexec, required when running SpiderMonkey test scripts.
      2c7f3bc6
  14. 22 Feb, 2021 1 commit
  15. 19 Feb, 2021 1 commit
  16. 22 Jan, 2021 1 commit
    • Rob Swindell's avatar
      Optionally distinguish between timeout and NUL inkey() result · bec4667e
      Rob Swindell authored
      Some terminals can send NUL (ASCII 0), e.g. hitting Ctrl-Space in Apple iTerm. Allow users of inkey() (in C++ or JS) to optionally detect the difference by specifying the K_NUL mode flag. In JS, console.inkey() will return null upon timeout (rather than "") when the K_NUL mode flag is used and return an empty string ("") upon receipt of NUL (ASCII 0).
      
      The default is the previous behavior where a timeout and the receipt of a NUL character appear the same to the caller of inkey().
      bec4667e
  17. 21 Dec, 2020 1 commit
  18. 01 Dec, 2020 1 commit
  19. 30 Nov, 2020 1 commit
    • Rob Swindell's avatar
      Better native vs. DOS cmd-line detection in cmdstr() · 94517fdf
      Rob Swindell authored
      Always check the command-line for a '*' or '?' prefix and compare the executed filename against the native program list. For DOSEMU magic drive/path name command-line specifier substitution, but only when invoking DOS programs. Reported by bobrob via IRC.
      94517fdf
  20. 25 Nov, 2020 3 commits
    • Rob Swindell's avatar
      More Linux-DOSemu ease of use-isms (cmdline specifier magic) · 53883886
      Rob Swindell authored
      Support temp_dir (%g) and text_dir %(z) expansion to magic DOSemu drives/paths.
      Use DOSemu-compatible temp_dir and text_dir paths in drop files.
      Automatically recognize native node_dir paths in %f (e.g. editor temp files) and replace with DOSemu equivalent.
      53883886
    • Rob Swindell's avatar
      Insure %j %k %n %! all expand special Linux-DOSEMU "drives" · ae36a7b4
      Rob Swindell authored
      ... when running DOS programs on Linux with a DOSEMU-enabled build.
      ae36a7b4
    • Rob Swindell's avatar
      Simplify Linux-DOSEMU door setup · 1b604da8
      Rob Swindell authored
      Allows %f (drop file) and %s (startup-directory) to be specified on the external program's command-line and expand to the paths that DOSEMU will understand. No more hard-coding "D:\" or "E:\" and the drop filename on the command-line required.
      
      Also (for all builds), include the door's startup directory for %s specifier on the clean-up command-line. This just seems like an oversight.
      1b604da8
  21. 24 Nov, 2020 1 commit
    • Rob Swindell's avatar
      Stop pretending to configure the JavaScript Context stack · c0cd8686
      Rob Swindell authored
      The argument to JS_NewContext that we were allowing to be configured was not the contest stack size, but rather:
      "The size, in bytes, of each "stack chunk". This is a memory management tuning parameter which most users should not adjust. 8192 is a good default value." - per Mozilla.
      
      So we're just going to use the suggested default, hard-coded.
      c0cd8686
  22. 02 Nov, 2020 2 commits
    • Rob Swindell's avatar
      Support PETSCII terminals connected to non-PETSCII ports · 0eaa6bbf
      Rob Swindell authored
      The reported problem (by John "Jay" Crutti) was:
      If autodetection of the terminal is used from the defaults menu I get stuck on the prompt to hit my Delete key because on the BBS, it keeps showing me login statistics every time I hit my delete key. 
      
      Add/use new K_CTRLKEYS mode to stop inkey() from handling/eating control-keys (e.g. Ctrl-T) when asking user to hit backspace during defaults->terminal settings.
      
      Allow PETSCII_DELETE (Ctrl-T) as a valid option when asking for the backspace/delete key and set the PETSCII flag in the autoterm variable if hit by the user.
      0eaa6bbf
    • Rob Swindell's avatar
      Support markup tags (optionally) when displaying posts · adb896c1
      Rob Swindell authored
      Defaults to "Off" ("No") and can be set per-sub-board to either:
      - "Yes" parse/apply markup style to displayed message text while still displaying the markup tags
      - "Hide" parse/apply markup style to displayed message text and hide (don't display) the markup tags
      - "No", treat marked-up messages the same as any other message text, same as before.
      
      The supported Markup tags at this time are:
      #bold text#
      /Italicized text/
      _underlined text_
      #inverse text#
      
      Now, ANSI-BBS terminals (and Synchronet) do not support the concept of italic or underlined text (at least, not yet) - so those styles become combinations of the blink and high-intensity attributes which can be used to choose alternate fonts and this works well.
      
      These 4 styles were chosen to be compatible with GoldEd's "Style Codes", though GoldEd is actually very configurable in its support of these tags/codes and its possible we're not 100% compatible. For example, GoldEd (and SemPoint) both support the combining of tags/codes to created combinations of styled text - Synchronet does not (this is consistent with Mozilla/Thunderbird's "Structured Text").
      
      Multiple words can be styled with a single set of tags, but the first and last word must be delimited by white-space (this is not consistent with Markdown).
      
      Multiple lines can be styled with a single set of tags, but not multiple paragraphs (this is consistent with Markdown).
      
      The rules I chose were to minimize false positives but maintain some interoperability with GoldEd and Thunderbird with a familiar/common tag syntax.
      adb896c1
  23. 25 Oct, 2020 1 commit
    • Rob Swindell's avatar
      Support manual terminal columns setting per user · 8afac993
      Rob Swindell authored
      The default terminal columns (still 0/auto) can be overridden with the 'L' command from the user defaults menu. 
      
      Also increased maximum manual terminal rows setting from 99 to 999 - this involved moving the record in user.dat, though the old record value is auto-migrated.
      8afac993
  24. 02 Oct, 2020 1 commit
    • Rob Swindell's avatar
      Add option to create drop files in node's temp directory. · 2014777c
      Rob Swindell authored
      Enabling this feature causes the node's temp directory to be cleared before
      running the external program and causes the drop file(s) to be created-in and
      read back from (when appropriate) the node's temp directory.
      
      Creating drop files in a node's temp directory eliminates the possiblity of
      an external program (e.g. door game) accidentally reading the wrong drop
      file (e.g. wrong-cased name or a stale file of a different type).
      
      Note: Synchronet/XSDK doors *always* read their drop file (xtrn.dat) from the
      node directory, so don't try to use this option with those doors. Only doors
      where you can configure the drop file path or specify on the command-line
      (e.g. %g for the temp dir or %f for the fullpath of the drop file) should
      potentially use this new feature.
      2014777c
  25. 23 Sep, 2020 1 commit
  26. 07 Sep, 2020 1 commit
  27. 16 Aug, 2020 1 commit
  28. 14 Aug, 2020 1 commit
  29. 04 Aug, 2020 1 commit
    • rswindell's avatar
      Some users have complained about moue support being enabled by default, · 077eadbc
      rswindell authored
      so made it enabled/disabled per-user-terminal settings. This means that if
      you were already enjoying mouse support, you're going to have to turn it on
      to keep enjoying it. It also means there's currently no way to enable/use
      mouse support pre-logon, but I have ideas about how to support that for
      sysops that want that.
      077eadbc
  30. 01 Aug, 2020 1 commit
    • rswindell's avatar
      An experimental external() mode flag that runs JS modules in their own... · b898eb73
      rswindell authored
      An experimental external() mode flag that runs JS modules in their own separate runtime and context - currently does not work (appears to corrupt the shared JS context). Not actually used currently.
      The reason I wanted to run a JS module (actually JS doorgame) in its own context was to get useful error messages (filenames and line numbers) when the module throws an exception. Currently, the error is just reported as occuring in xtrn_sec.js, which isn't helpful or correct.
      b898eb73
  31. 24 May, 2020 2 commits
  32. 12 May, 2020 1 commit
    • rswindell's avatar
      Use the SGR extended mouse coordinate reporting. · 36964b35
      rswindell authored
      Support a "mouse pass-through" console status flag to allow the pass-through of uncaptured mouse reports (e.g. for hot-spots) to other tasks/scripts. When there are no active hot-spots, this is the normal behavior.
      This commit leaves the legacy X10 mouse report handling/pass-through logic in. But I'll likely be removing that soon.
      36964b35
  33. 09 May, 2020 1 commit
    • rswindell's avatar
      Both hungry/liberal hot-spots and strict hot-spots can be defined now, at the... · 6f16fafe
      rswindell authored
      Both hungry/liberal hot-spots and strict hot-spots can be defined now, at the same time. For Nelgin.
      Use ^A` to define a single-char strict hot-spot using Ctrl-A codes. Unfortunately, this usurps the "home" Ctrl-A code which nothing seems to use but has now been changed to ^A'.
      Use ` instead of ~ in mnemonics to define strict single-char hot-spots (also displays the cmd key in [] instead () on non ANSI/PETSCII terms).
      Use @` instead of @~ codes to define strict hot-keys.
      Use HOT:STRICT @-code to declare a strict hot-key color.
      Use HOT:HUNGRY @-code to toggle back to hungry color-defined hot-keys (the default).
      New optional boolean argument to JS console.add_hotkey(), hungry = true by default.
      6f16fafe
  34. 08 May, 2020 1 commit
    • rswindell's avatar
      Add mouse hot spot support: · 87c9982c
      rswindell authored
      - hot spots are clickable screen areas (e.g. in menus and prompts) that   generate key-strokes
      - commands may be from 1 to 127 ASCII-characters in length
      - currently using the X10 mouse reporting mode, may change
      - all mnemonics strings (~Example) are automatically hot-spots
      - The new ~ @-code defines a hot spot
      - Any screen-clear operation clears all hot spots
      - sbbs now tracks the current screen (cursor position) row
      - eliminated the old "tos" (top-of-screen) boolean (row == 0 indicates "tos")
      - created an sbbs_t::ungetstr() method
      - keep track if in pause (hit a key) prompt, for special mouse behavior
      
      new JS console object:
      - row property
      - tos property is now read-only (and deprecated)
      - new methods:
        add_hotspot()
        clear_hotspots()
        scroll_hotspots()
      
      redrwstr() gets some UTF8 touch-ups as part of this commit. <shrug>
      87c9982c
  35. 04 May, 2020 1 commit