Skip to content
Snippets Groups Projects
  1. Nov 07, 2018
  2. Oct 22, 2018
    • 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:
          TelnetInterface=71.95.196.34,71.95.196.34:64,71.95.196.34:128
        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)
      31303187
  3. Oct 06, 2018
  4. Oct 05, 2018
  5. Jul 26, 2018
    • rswindell's avatar
      getuserdat() - if this function fails to open the user.dat file (e.g. it does · 425d42b3
      rswindell authored
      not exist), set the user->number to 0 before returning as many callers of this
      function do not check the return value, just the value of user->number after
      it returns (ugh). This problem was discovered when running a fresh install,
      typing "1" at the Login prompt and immediately getting a "Time's Up" message
      and a disconnect - only happens when there's no data/user.dat file.
      
      getnodedat() - don't try to unlock the node.dab file unless the read() fails.
      When using the MSVC2017 CRTL, an unlock() of a region that was not previously
      locked is a blocking call causing major slowness in the MSVC2017 build.
      
      putmsgptrs() - cleans up obsolete sections in the data/user/*.subs files now.
      So if you go from say 10,000 sub-boards to 2,000, it won't have to load and
      search through the extra 8,000 invalid subs (once the file is re-written upon
      log-off). This requires an updated xpdev build (for iniAppendSectionWithKeys)
      
      fixmsgptrs() - if the msgbase index can't be opened or the last index record
      cannot be read (e.g. there isn't one), insure the msg-scan pointer value is
      set to 0 (not ~0).
      425d42b3
  6. Jul 24, 2018
  7. Jul 08, 2018
  8. Jun 10, 2018
  9. Apr 04, 2018
  10. Mar 26, 2018
  11. Mar 25, 2018
    • rswindell's avatar
      putmsgptrs(): · e5018aea
      rswindell authored
      Fix-up the user/####.subs ini style (only one blank line between sections).
      Also, don't re-write the .subs file if nothing has changed.
      e5018aea
    • rswindell's avatar
      Address GCC warning: "/*" within comment · 4bd39bba
      rswindell authored
      4bd39bba
    • rswindell's avatar
      Changed user' message pointer/last-read/scan-config storage to a new file · 721c7167
      rswindell authored
      (data/user/*.subs - in familar .ini syntax)
      indexed by the sub-board internal rather than the old flat binary file using
      the troublesome "pointer index" (ptridx) as an offset. The old files
      (data/user/ptrs/*.ixb) will still be read in when the new file doesn't exist,
      for upgrading users automatically to the new method of pointer storage.
      This should resolve long-standing issues around users' new-scan pointers and
      configurations getting corrupted when the sysop inserts/remove sub-boards.
      However, if you change a sub-board's internal code, that invalidates the users'
      pointers and scan configurations - so that may need to be addrsesed via SCFG.
      The subs' ptridx values are still be used for storing QWKnet hub pointers, for
      now, but that too will soon be addressed with a new file format for those ptrs
      too.
      721c7167
  12. Mar 23, 2018
  13. Mar 18, 2018
  14. Mar 16, 2018
  15. Mar 15, 2018
  16. Mar 10, 2018
  17. Mar 09, 2018
  18. Feb 25, 2018
  19. Feb 20, 2018
  20. Nov 24, 2017
  21. Oct 12, 2017
  22. Oct 10, 2017
  23. Dec 10, 2016
  24. Dec 02, 2016
  25. Nov 28, 2016
  26. Nov 27, 2016
    • rswindell's avatar
      Added new sub-scan mode: SCAN_POLLS (used to scan sub-boards for posted polls) · b14e9904
      rswindell authored
      Introduced a better progress indicator (similar to poll results), using the
      backfill() method. 2 new attr.cfg fields allow the progress indicator colors to
      be configured separately from poll results (though they default to the same
      white on magenta). This new progress indicator is used when loading msg ptrs
      and scanning for votes. I will be using it while performing other searches
      (e.g. file libraries/dirs) as well.
      b14e9904
  27. Nov 17, 2016
    • rswindell's avatar
      Fix getuserdat() bug introduced in rev 1.164: when failing to read a user · 6e7bf768
      rswindell authored
      record (e.g. the user number is invalid), the user number should be 0 after
      returning. This would cause, for example, sbbs_t::login() to accept a login
      string with an invalid usernumber (e.g. "12345") and do some strange things.
      The same side-effect was missing in the (new) fgetuserdat().
      6e7bf768
  28. Nov 16, 2016
    • rswindell's avatar
      Create fgetuserdat() (the 'f' stands for 'fast' or 'file) - · 1047cc54
      rswindell authored
      it just calls the (newer) functions readuserdat() and parseuserdat() in a easy
      replacement for getuserdat() for places where all users are read in a loop
      (the file is only opened one time, dramatically reducing the amount of time).
      Added an argument to openuserdat() so it can be used in more situations
      (i.e. where the file needs to be opened for modify/create acces).
      1047cc54
  29. Nov 08, 2016
  30. Oct 17, 2016
  31. Oct 06, 2016
  32. Aug 06, 2016
Loading