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. 18 Nov, 2021 1 commit
    • Rob Swindell's avatar
      Add text.dat lines for "All" and the List key ('L'), used in quoting · 064b602f
      Rob Swindell authored
      The internal line editor's quoting feature add some hard-coded strings ("Done" and "All") and the (L)ist key was hard-coded. Use the text.dat string (new and pre-existing) for these now.
      
      Also, use the new sbbs_t *_key() methods for referencing the configured key bindings (via text.dat) for these common key-stroke commands.
      Convert the text.dat strings for keys (e.g. YNQP) to uppercase always as well.
      064b602f
  2. 06 Oct, 2021 2 commits
    • Rob Swindell's avatar
      New @-code: !x to perform Ctrl-A style terminal/attribute control · 87731220
      Rob Swindell authored
      Most Ctrl-A code terminal/attribute effects can now be invoked via @!x@ where x is one or more Ctrl-A sequence operands (e.g. @!B@ to set the current attribute to blue, @!P@ to pause the terminal). Multiple attribute codes may be specified in a single @!x@ sequence. Both upper and lowercase attribute codes are supported. The "^A@" sequence is not supported, but there's already an @-code to perform the equivalent operation ("SHOW:20").
      
      Rationale: when using PabloDraw to edit display (e.g. .msg) files, there was no easy way to explicitly clear (set to "normal") the current attributes at the end of a line of text. If that line of text contained a background color and the line caused the terminal to scroll, that background color would fill the next/new line resulting in some potential undesirable effects. There are 2 common solutions to this problem: either clear the screen before displaying the file (not always desirable) or clear the attributes at the end of the line (before the CR/LF). This can now be achieved by adding a @!N@ (the equivalent of Ctrl-AN for "normal" attributes) to the end of a line. There's no way to insert custom Ctrl-A sequences or other way to force PabloDraw to clear the attributes at the end of a line, that I found.
      
      I chose the '!' character because it's (on my keyboard anyway) the Shift-1 key and Ctrl-A is ASCII 1. I considered a sequence such as @A:x@, but that's one more character and since this sequence usually won't display anything, a shorter sequence is likely preferred. For the shortest-possible sequence, use Ctrl-A sequences instead. However, for many consecutive Ctrl-A sequences, the @-code equivalent might actually end up being shorter(!). @-codes aren't support in as many places in Synchronet where Ctrl-A codes are supported (for security reasons), so it's not like this is going to replace the use of Ctrl-A codes everywhere.
      87731220
    • Rob Swindell's avatar
      New @-codes SEX and GENDERS · 0e270c4e
      Rob Swindell authored
      SEX is the user's sex/gender
      GENDERS is the list of system-supported genders for new users to choose from.
      0e270c4e
  3. 25 Sep, 2021 1 commit
  4. 15 Aug, 2021 1 commit
  5. 04 Apr, 2021 3 commits
    • Rob Swindell's avatar
      New @-code: CONTINUE · 7257b432
      Rob Swindell authored
      CONTINUE is like GETKEY except it'll set the display-abort flag if 'N' or 'Q' are typed.
      
      Make the WAIT:<n> argument 10ths of a second (instead of milliseconds) to be more consistent with DELAY:<n>.
      7257b432
    • Rob Swindell's avatar
      New @-codes: GETKEY and WAIT:<milliseconds> · fee3fdd0
      Rob Swindell authored
      GETKEY waits indefinitely for any key press by the user (resolves issue #245).
      WAIT:<n> waits for up to n-milliseconds for a key press and then continues on.
      
      For both cases, the key pressed is not echoed or acted upon in any way. Ctrl-keys could be handled by global or built-in ctrl-key handlers, so those would be the exception.
      fee3fdd0
    • 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
  6. 15 Feb, 2021 2 commits
  7. 12 Dec, 2020 1 commit
  8. 09 Dec, 2020 1 commit
    • Rob Swindell's avatar
      Make read/unread mail-waiting stats easier to access · bd17a29f
      Rob Swindell authored
      New JS User.stats properties:
      - read_mail_waiting
      - unread_mail_waiting
      - spam_waiting
      
      New @-codes:
      - MAILR (read mail waiting)
      - MAILU (unread mail waiting)
      
      And the corresponding MAILR# and MAILU# codes (for non-current user's stats).
      
      Addresses feature request #191.
      bd17a29f
  9. 06 Dec, 2020 2 commits
  10. 25 Nov, 2020 2 commits
  11. 06 Nov, 2020 1 commit
    • Rob Swindell's avatar
      Replace ctype.h function calls with new MSVC-safe XPDEV macros · 8a7b7308
      Rob Swindell authored
      I'm fed-up with MSVC assertions in ctype functions (e.g. isdigit, isprint, isspace, etc.) when called with out-of-range (e.g. negative) values.
      
      This problem only affects MSVC debug builds, but if you run them (like I do), these things are like little time bombs that can drive you crazy (knocking your board out of service).
      
      The new macros names are bit more descriptive as well.
      8a7b7308
  12. 16 Oct, 2020 1 commit
    • Rob Swindell's avatar
      New @-code TEXT:<num> to display text.dat string #num · 82018810
      Rob Swindell authored
      Also, don't truncate strings to accommodate screen width when the string contains a new-line character.
      This is so ScottD (from irc.synchro.net) can use TEXT:556 @-code to print the Ctrl-K menu (text.dat string) via a command shell written in Baja.
      82018810
  13. 15 Oct, 2020 2 commits
    • Rob Swindell's avatar
      New @-code: BIRTH for full-format user birthdate · 5cf2dd26
      Rob Swindell authored
      Use BIRTH instead of BDATE if you want MM/DD/YYYY (or DD/MM/YYYY) instead of MM/DD/YY or DD/MM/YY formatted birthdate display.
      
      New aliases (for consistency): BIRTHFMT -> BDATEFMT and BIRTH:<fmt> -> BDATE:<fmt>
      5cf2dd26
    • Rob Swindell's avatar
      People don't like YYYY/MM/DD for entering birthdates · 9e6f9042
      Rob Swindell authored
      Can't say I don't blame them, it is a little unnatural. So instead, use either MM/DD/YYYY (the default) or DD/MM/YYYY (European date mode). This required the use of a new @-code: BDATEFMT and the update of a couple of text.dat lines (in next commit).
      9e6f9042
  14. 05 Oct, 2020 1 commit
  15. 04 Oct, 2020 2 commits
  16. 29 Sep, 2020 1 commit
  17. 28 Sep, 2020 1 commit
    • Rob Swindell's avatar
      New user-related @-codes: NETMAIL, FWD, TMP, NOTE, LASTIP · f5c5187d
      Rob Swindell authored
      NETMAIL: user's personal netmail or email address - for WitNik
      FWD: "On" if the user has opted for forwarding their mail to netmail or "Off"
      TMP: user's chosen temporay file type (e.g. "ZIP")
      NOTE: user's note (same as MEMO1)
      LASTIP: user's most recent IP address at time of logoff
      f5c5187d
  18. 17 Sep, 2020 1 commit
    • Rob Swindell's avatar
      Better sysop availability (for chat) visibility/toggleability · e59866e3
      Rob Swindell authored
      - JS system.operator_available property (read/writeable)
      - SYSAVAIL @-code which expands to LiSysopAvailable or LiSysopNotAvailable
        (use the new SYSAVAIL @-code in the chat menu to show availabilty to chat)
      - ;avail sysop command (in str_cmds.js) to toggle sysop availability
      - Changed LiSysopIs text.dat string to be a format string (include %s) and
        the trailing \r\n, so that it can be used in str_cmds.js or anywhere else
        to report sysop availability to chat, or can be set to blank string to
        display nothing (this would not work previously).
      e59866e3
  19. 07 Sep, 2020 1 commit
    • Rob Swindell's avatar
      Fix observed race-condition resulting in the HOSTNAME @-code being blank. · dee21ed6
      Rob Swindell authored
      Eliminate the hack in each server where it will over-write startup host_name
      (with the configured Internet email address), if it's blank. This hack was
      subject to a race condition where the parent app (e.g. sbbsctrl.exe) would
      clear or re-initialize the host_name after the sever threads had initialized.
      Instead, just use a function which will return either the startup->host_name
      or (fallback to) scfg.inet_addr.
      dee21ed6
  20. 16 Aug, 2020 1 commit
  21. 10 May, 2020 1 commit
  22. 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
  23. 08 May, 2020 4 commits
    • rswindell's avatar
      2 more uses of the "HOT" @-code: · b468feda
      rswindell authored
      - "HOT" by itself will set the hot-spot attribute to the *current* attribute
        (just colorize the @-code in your editor the same as you do your cmd keys
        no need to memorize color-code mnemonics)
      - "HOT:OFF" will turn off the hot-spot attribute through the end of the text or   util re-enabled
      - Use a more greedy/liberal hot-spot matching algoirthm so that hot spots can overlap and the "best" one will be chosen. No way to opt-out of this algorithm (e.g. to use a conservative matching algo) currently.
      - Earlier parse of @~ codes to keep text prestine
      b468feda
    • rswindell's avatar
      A more convenient method of creating mouse hot spots in a display (e.g. menu)... · 192dea0e
      rswindell authored
      A more convenient method of creating mouse hot spots in a display (e.g. menu) file: New "HOT:<attr>" @-code allows you to define a specific combination of attributes (colors) that will be used to exclusively create clickable command keys or words in a file. Every set of charcters in the display file that uses that specific combination of attributes will become an automatic mouse hot spot. The <attr> is specified using a set of attribte mnemonics (e.g. "YH" for high-intensity yellow), the same set used in attr.cfg and other places in sbbs.
      
      This allows more WYSIWYG style menu editing (e.g. use PabloDraw), you just need to be careful with your choice of colors. You cannot send white-space or control characters with this method and the clickable text is the exact text that will be put in the keyboard buffer.
      192dea0e
    • rswindell's avatar
      More mouse hot spot stuff: · e821783a
      rswindell authored
      - User Defaults menu mousified
      - When all hot spots have scrolled off the screen, clear the hot spot list
      - Insert new hot spots in the front of the list so they will take precedence
        over any previously defined duplicate hot spots
      - Numeric hot spot commands end in a carriage-return
      - No auto-acceptence of numbers when there are keys in the keyboard buffer
      - Baja UNGETKEY function now inserts keys into the "front" of the keyboard
        buffer (next to be consumed)
      - Hot key @-code command text supports C-style escape sequences
        (allows encoding of ctrl chars, spaces, etc.)
      e821783a
    • 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
  24. 01 May, 2020 1 commit
  25. 30 Apr, 2020 2 commits
  26. 28 Apr, 2020 2 commits
    • rswindell's avatar
      Add STRVAR:<variable-name> @-code · 4ca595c8
      rswindell authored
      It's a hack, but since both Nelgin *and* Mortifis asked for it...
      If a string variable is defined in the current command-shell, you may display
      that variable's current value using this @-code. This does not work for integer
      variables (do you need that too?) and does not work for any other Baja modules
      that are executed (e.g. executed *from* a command shell).
      Note that Baja, by defaults converts variables names to all-CAPS during the
      "compilation" phase (unless the "baja -c" option is used), so you'll want to
      either specify the variable name in ALL-CAPS or (if "baja -c" was used), match
      the capitalization used in the .src file.
      4ca595c8
    • rswindell's avatar
      The FILL @-code now takes the centered (C) modifier into account, so if the · e97d4610
      rswindell authored
      current column is > 0, it'll maintain that same margin on the right-edge of the
      screen (shortening the fill length).
      This allows you to create nice dynamic horizontal lines/dividers with margins.
      e97d4610
  27. 26 Apr, 2020 1 commit