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. 19 Feb, 2021 1 commit
  2. 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
  3. 21 Dec, 2020 1 commit
  4. 01 Dec, 2020 1 commit
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 23 Sep, 2020 1 commit
  12. 07 Sep, 2020 1 commit
  13. 16 Aug, 2020 1 commit
  14. 14 Aug, 2020 1 commit
  15. 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
  16. 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
  17. 24 May, 2020 2 commits
  18. 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
  19. 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
  20. 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
  21. 04 May, 2020 1 commit
  22. 09 Apr, 2020 1 commit
    • rswindell's avatar
      Call the listmsgs_mod (List msgs module) when the bbs.list_msgs() method · 828dea3f
      rswindell authored
      is called without a "mode" specified. This uses the new default SCAN_INDEX
      mode. If you need the old behavior (does not invoke the listmsgs_mod), specify
      a different mode value (e.g. SCAN_READ). All of the mode values (other than
      SCAN_INDEX) will not start the list message module, but rather use the internal
      C++ logic.
      This provides an intuitive way to actually invoke the list messages module
      from JS without hard-coding bbs.exec("?module") into a cmd shell, for example.
      828dea3f
  23. 08 Apr, 2020 1 commit
  24. 01 Apr, 2020 1 commit
  25. 31 Mar, 2020 2 commits
  26. 19 Mar, 2020 1 commit
  27. 01 Mar, 2020 1 commit
  28. 03 Jan, 2020 1 commit
    • rswindell's avatar
      Add/use a new get_ctrl_dir() function to query the SBBSCTRL env var and if · b236be71
      rswindell authored
      not set (or blank), use the default ("/sbbs/ctrl") and print a warning to
      stderr. This resolves a FAQ for sysops that struggle with setting the SBBSCTRL
      env var, but do have sbbs install in /sbbs or a symlink from /sbbs to where
      sbbs is actually installed.
      
      Note: this function is different than the one previously defined in getctrl.c
      but never used. If/when we ever really need to support PREFIX, then perhaps
      we'll use that one (which copies a string to a buffer).
      b236be71
  29. 24 Oct, 2019 1 commit
  30. 17 Aug, 2019 1 commit
  31. 04 Aug, 2019 1 commit
    • rswindell's avatar
      More UTF-8 fun: · 3313a87e
      rswindell authored
      - bstrlen() moved to sbbs_t, accepts an option pmode argument so it can account
        for UTF-8 encoded strings correctly
      - JS console.strlen() now accepts an optional pmode argument (e.g. P_UTF8)
      - Renamed sbbs_t::utf8_to_cp437 to sbbs_t::print_utf8_as_cp437
      - Create/use msghdr_hfield() to perform UTF-8->CP437 conversions as needed for
        printing/copying UTF-8 encoded message header fields.
      - Defined XTRN_UTF8 misc setting flag. If a message editor does *not* have this
        flag, it is assumed to *not* support UTF-8. Will likely use this for UTF-8
        doors as some point too (none known to exist, yet).
      3313a87e
  32. 01 Aug, 2019 1 commit
  33. 26 Jul, 2019 1 commit
  34. 24 Jul, 2019 1 commit
    • rswindell's avatar
      More UTF-8 goodness: · 52d5659f
      rswindell authored
      - Export all FIDOCTRL (other FTN kludge lines) to the QWK HEADERS.DAT file.
        These should already be imported if they exist, but were never added during
        export, so untested/new behavior. The control paragraph (kludge line) of
        specific interest here is the "CHRS" (charset) kludge we need for UTF-8.
      
      - Don't use the QWK "newline" character (0xE3) when the message is UTF-8.
        Use bare-LF's instead. This is pretty untested at this point as I will need
        another QWKnet board to post or receive UTF-8 encoded messages to test,
        getting the code into CVS is the first step. At least for now, there's no
        opt-in/out for this behavior. If your BBS has UTF-8 encoded messages, some
        QWK nodes or offline readers may have trouble with packets which include
        those messages. Or they may work fine (but likely display garbage CP437
        chars in-place of the proper Unicode codepoint glyph).
      
      - The beginning of UTF-8 input support in getstr() - which needs more work,
        particularly around character and word deletion and insertion.
      - The internal message editor now supports UTF-8 messages and kind of somewhat
        supports inputting UTF-8 characters in message text.
      
      New put/print text flag: P_AUTO_UTF8 which can auto-detect UTF8 strings and
      do the "right thing" for the user's terminal. New associated sbbs_t method:
      auto_utf8() which automatically sets P_UTF8 for any stirng that begins with
      a UTF-8 BOM (ZWNBSP). Else, if the P_AUTO_UTF8 mode flag is set, then
      it checks to see if the string contains invalid US-ASCII chars but valid UTF-8
      sequences and then sets P_UTF8 accordingly. Used by putmsg() and bputs().
      
      There's a new permuation of bprintf() which accepts a mode argument
      (i.e. for P_UTF8) and passes it on to the new mode-capable bputs().
      52d5659f
  35. 16 Jul, 2019 1 commit
    • rswindell's avatar
      Move login username/number parsing into a the C++ code (from login.js) since we · be7a590d
      rswindell authored
      need that internal for SSH and RLogin support of fast-logons.
      So, now, even if logging in via SSH or Rlogin, the sys_status SS_FASTLOGON
      flag will be set when the user specifies "!username-or-number" during logon and
      then the logon.js can use that to determine what to display (or not) to the
      user, during logon.
      
      The QWK logon support ("*username-or-number") is also handled in this new
      sbbs_t method: parse_login().
      
      This means the fast_logon_char is no longer configurable (hard-coded to '!')
      and the modopts.ini options are going to be parsed by logon.js from the [logon]
      section (not the [login] section).
      
      You still must set fast_logon=true in the [logon] section of modopts.ini to
      enable the fast-logon option for users.
      be7a590d