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

  1. 25 Oct, 2018 3 commits
    • rswindell's avatar
      Update display/menu file selection logic based current terminal capabilities. · 68e52292
      rswindell authored
      Newly supported files: text/menu/*.msg (higher priority than .asc when the
      terminal supports IBM extened ASCII, aka CP437). These are the same format
      as .asc files (and supported more readily by PabloDraw).
      Newly supported files: text/menu/*.seq - native PETSCII files for PETSCII
      terminals only. Support in the underlying putmsg() function is still
      Also, the text/*.msg files now supports alternative file formats for
      RIP/ANSI/PETSCII, if the files exist.
      WIP menu support removal.
      The new menu/display file selection priority will be detailed on, but rest assured, it's backwards compatible with
      the previous/old priority with the exception of the removal of WIP support
      and HTML support.
    • rswindell's avatar
      Work-around race condition causing NULL-pointer dereference: · d3b4fd09
      rswindell authored
      telnet_input_thread() is started before cterm_init() is called, so the
      global "cterm" pointer was (sometimes) NULL at the time that the input
      thread received a "do termina-type" request, and telnet_interpret would
      dereference cterm (to get the emulation type) and thus crash. This is
      an inelegant solution which halts the telnet_input_thread() until the
      cterm pointer has been initialized. Also, be sure to reset cterm to
      NULL after calling cterm_end() which free's it. This fixes the problem of
      the telnet_input_thread() potentially using a stale (free'd) copy of cterm
      for the terminal-type response on subsequent connects.
    • rswindell's avatar
      Added getuserdat() error checking with a search/replace macro. Now if · e4af92b9
      rswindell authored
      you run uedit and don't have access to the user.dat file, it will report
      an error rather than displaying a user with uninitialized values.
  2. 24 Oct, 2018 1 commit
  3. 23 Oct, 2018 4 commits
  4. 22 Oct, 2018 24 commits
    • rswindell's avatar
      Fixed typo (host, not addr) that caused: · 26c396ca
      rswindell authored
      (user@hostname): Digital Man@undefined
    • rswindell's avatar
      Another gcc printf warning fix. · 56f573c9
      rswindell authored
    • rswindell's avatar
      When logging event-thread error messages, include the "evnt " prefix before · ece4a33f
      rswindell authored
      the string (which starts with the event internal code).
    • rswindell's avatar
      Lower the "MAIL BASE LOCKED" SMTP log message severity from critical · d22291e5
      rswindell authored
      to warning - this is normal/expected (e.g. when mail base is being
    • rswindell's avatar
    • rswindell's avatar
      Indent received message text. · b09d5a20
      rswindell authored
    • rswindell's avatar
      Hitting Ctrl-C at the "Attach a file" prompt for netmail should abort. You have · 607105e6
      rswindell authored
      to hit it twice - not sure why just yet.
    • rswindell's avatar
      Fix the spinning cursor for PETSCII. · 0843ca35
      rswindell authored
      Added a send to "All" (inter-BBS broadcast) option.
    • rswindell's avatar
      When displaying additional terminal services, include the description if the · db6689bd
      rswindell authored
      protocol is repeated (e.g. Telnet).
      When adding/inserting in arrays of items, break the loop if they enter an
      empty string. Cancel the add item if the first field is blank.
    • rswindell's avatar
      Fixes for 40-column terminals. · b94c9a89
      rswindell authored
      Using new bbs.menu_exists() method.
    • rswindell's avatar
      Fix for 40-column terminals · 5c18c1f5
      rswindell authored
    • rswindell's avatar
      Truncate the last few callers list for the column width (don't wrap). · dbdcb847
      rswindell authored
      Also, insert a blank line when there's no auto.msg file.
    • rswindell's avatar
      Beautification for smaller (e.g. 40-column) terminals. · fedabb0b
      rswindell authored
      Also, allow the inactivity timeout value for connections without an
      auto-detected terminal to be set explicitly via modopts.ini
      [login] inactive_hangup = 30 (seconds)
      rather than deriving from the configured inactivity hangup value in
    • rswindell's avatar
      return an error if no address specified. · 35b297ac
      rswindell authored
    • rswindell's avatar
      5 new text.dat string defines. · 9c968972
      rswindell authored
    • rswindell's avatar
      Added USER_PETSCII and P_TRUNCATE definitions. · 0e9a8b40
      rswindell authored
    • rswindell's avatar
      Changes to better support 40-column terminals (use of new Ctrl-A\ code). · 0876624d
      rswindell authored
      Also replaced all embedded Ctrl-A chars with \1 to make editing easier.
    • rswindell's avatar
    • rswindell's avatar
      Added default Pet40/80Port values and comments about how to use them to · e58ca806
      rswindell authored
      support Commodore/PETSCII terminals.
    • rswindell's avatar
      New 40-column menus (e.g. suitable for Commodore 64 terminals) and · 38469ec9
      rswindell authored
      a message header file.
    • rswindell's avatar
      Numerous changes to better support smaller (e.g. 40-column) terminals, · ddbc76f5
      rswindell authored
      e.g. Commodore 64, using the new Ctrl-A\ code (conditional newline/cont)
      a lot.
      5 New strings at the end.
    • rswindell's avatar
      Address new GCC printf warnings. · 30e31922
      rswindell authored
    • rswindell's avatar
      The big PETSCII commit: · 31303187
      rswindell authored
      So Omegix recently asked in the Synchronet Discussion group whether or not
      a PETSCII (Commodore) terminal could be used to access his Synchronet BBS.
      Now, the answer is "Yes". :-)
      The major issues addressed:
      - detecting a PETSCII terminal, solved by assigning specific (configurable):
        TCP ports to be used for incoming PETSCII connections, by default:
        port 64 is for 40-column PETSCII and port 128 is for 80-column PETSCII,
        but if the terminal sends a Telnet Window Size reply (e.g. SyncTERM), then
        either size terminal should fine on either port.
        The port numbers are configurable in the [BBS] section of your sbbs.ini
        file using the new keys: PET40Port (default value: 64) and PET80Port
        (default value: 128). Having these keys set doesn't make make the terminal
        server listen on that additional port - you'll need to add more
        IP:port combinations to one of Interfaces values, example:
        And you don't have to use Telnet for the PETSCII connections - you could use
        RLogin or SSH instead (or in addition).
      - support for terminal widths < 80 columns:
        This was achieved through a combination of text.dat changes (numerous),
        new Ctrl-A and @-codes and new optional terminal-width-specific menu files
        (e.g. text/menu/main.40col.asc)
        A side effect of these changes is actually better support for terminals
        *wider* than 80 columns as well!
      - support for terminals that don't expand tabs to spaces (e.g. PETSCII):
        The terminal server now handles tab expansion with a run-time settable
        tab-size (default size: 8)
      - conditional access based on PETSCII (or small) terminal use (or not):
        + New PETSCII ARS keyword (boolean)
        + New COLS and ROWS ARS keywords (for terminal width and height requirements)
        + New TERM (string) ARS keyword
      New @-codes:
        - WORDWRAP, when placed at the top of a file, enables auto-wordwrap for
                    lines longer than the terminal width
        - CENTER, the text following before an end of line will be displayed centered
                  on the terminal (whatever the width, in columns)
        - CLEAR, like CLS, except it ignores (doesn't display) a CRLF that follows
        - COLS, current number of terminal columns (width)
        - ROWS, current number of terminal rows (height)
        - TERM, the auto-detected or reported terminal type (e.g. ANSI, TTY, etc.)
        - SYSONLY, toggles "echo" (display) off/back-on for non-sysops
                  similar to the Ctrl-A( and ) codes, but more convenient to use
                  (and PabloDraw won't strip the @-code from the file like it does
                   with Ctrl-A codes it doesn't support)
      New Ctrl-A codes:
        - \ conditional new-line/continuation when the terminal width is < 80 cols
            prints the new text.dat string LongLineContinuationPrefix
      yesno() will now return true if passed a blank string.
      noyes() will now return false if passed a blank string.
      getstr()'s input length limiting based on terminal width is more broadly
                 applied now (not just when using the K_LINE mode flag).
      New JS bbs object method: menu_exists(<base_filename>) returns Boolean
      New JS console object property: tabstop (Number)
      New JS console object methods: getbyte() and putbyte() to recv/send raw byte
          value with (very little) interpretation/intervention by the terminal server
      New JS console object method: creturn() - performs a carriage return
          (or equivalent)
      New JS (and C) printfile() mode flag: P_TRUNCATE, causes long lines to be
          truncated, rather than displaying causing a line-wrap.
      New text.dat strings:
        - NoAccessTerminal (for ARS check failures)
        - LongLineContinuationPrefix (for breaking long lines for 40col terminals)
        - Scanning (replaces a previously hard-coded "Scanning" string)
        - Done (replaces a previusly hard-coded "Done")
        - Scanned  (when finished scannning, clears the progress bar)
    • rswindell's avatar
      Fixed bug where if you used the /W (whisper) command in multi-node chat · dede8b35
      rswindell authored
      and then hit 'Q', it would kick you out of multi-node chat (because
      the abort flag was set).
  5. 21 Oct, 2018 6 commits
    • rswindell's avatar
    • rswindell's avatar
      Stop filtering non-translated Ctrl-Key combinations (from the local · db2a627a
      rswindell authored
      keyboard). PETSCII BBSes include prompts like "Hit Ctrl-X to abort", so
      they expect the terminal to be able to send control-key combinations.
      Both CGTerm and CBMTerm are able to send all the relevant control-key
      combinations (and their single-key equivalents, like ESC and TAB) as well.
    • rswindell's avatar
      Bug-fix for PETSCII modes: disable reverse video upon carriage-return (13). · 7d8f1404
      rswindell authored
      Should this also be done for 141 (shift-CR)? I'd love to know where you
      found the document which inspired the comment ("disabled reverse") - but
      the code just wasn't doing it and it was apparent when viewing PETSCII
      art and comparing the behavior with other emulators.
    • deuce's avatar
      Add missing brace. · 501384a1
      deuce authored
    • deuce's avatar
      Translate C128 colour codes to CGA palette. · f97fb96a
      deuce authored
      This may mess up colour hacks in other places, but should fix C128 colours
      in the terminal.
    • rswindell's avatar
      Bug-fix: when using Telnet, we would *always* send the terminal type · b2d98bb2
      rswindell authored
      (if the server supported the option), as "ANSI". Now, if the current cterm
      emualation is PETASCII [sic], or ATASCII, send "PETSCII" or "ATASCII"
      Now this brings up a couple of discussion points:
      1. Should that default Telnet term-type be "ANSI-BBS" (or "ansi-bbs") instead?
      2. Similarlly, RLogin connections *always* send the term-type as "ansi-bbs" -
         I think a similar change is needed in rlogin.c to be technically correct,
         but we should probably be consistent about how SyncTERM in ANSI-BBS emulation
         mode identifies itself ("ANSI", "ANSI-BBS", or "ansi-bbs").
      3. If there is terminal type advertised via SSH, that probably needs addressing
         as well.
  6. 20 Oct, 2018 2 commits