Skip to content
Snippets Groups Projects
  1. Sep 24, 2023
  2. Jun 09, 2023
    • Rob Swindell's avatar
      <Deuce> ... billion-and-one result of comparison of constant 100000 warnings. · 2b087b8b
      Rob Swindell authored
      So Clang-FreeBSD was warning (in compiles of scfg/scfg*.c by Deuce):
      result of comparison of constant 100000 with expression of type 'uint16_t'
      (aka 'unsigned short') is always true
      
      Why? Cause a uint16_t's max value is 65535 (less than 100000). Sure we could
      have just lowered the UIFC max number of config items to 65535, but that would
      have been too easy. And why are these compared-with values of type uint16_t to
      begin with? Because most ctrl/*.cnf lists (of configuration items) were
      limited to 65535 entries cause ... 16-bit DOS, historically. Now that *.cnf
      files aren't used, we could just increase these scfg_t.*_total type sizes from
      16 to 32-bits, yeah? The result is this commit.
      
      I went to (signed) int so we could still keep -1 as the special illegal
      sub/dir num value (e.g. INVALID_SUB, which is sometimes used to indicate the
      email message base). Theoretically, 2 billion configuration items could be
      supported in these lists, but SCFG will limit you to 100000 anyway. So there's
      a whole lot of s/uint/int in this commit.
      
      I'd be very surprised if this doesn't result in some new GCC/Clang warnings,
      but at least the old "comparison of constant 100000" warnings are now gone!
      2b087b8b
  3. Jun 05, 2023
  4. Jun 02, 2022
  5. Apr 30, 2022
    • Rob Swindell's avatar
      Fix DIZ extraction/use for FTP uploads · 77d72d0e
      Rob Swindell authored
      1. Was not setting f->dir to the correct directory number, so only ftp-uploads to the *first* directory (dirnum = 0) would extract DIZ files of uploaded files.
      
      Removing the 'dirnum' parameter to addfile() since that implied that you did not have to initialize the 'dir' element of the passed file_t, but you do: to get the correct file path for file size/date detection and the DIZ extraction.
      
      2. Was getting heap-corruption when freeing the imported/formatted DIZ text on Windows once the above problem was fixed: can't free() in one DLL memory that was allocated in another DLL. Created and now using free_diz() to free the memory allocated in read_diz().
      
      format_diz() handles a NULL 'lines' argument correctly/gracefully, so no need for the NULL lines check in sbbs_t::uploadfile().
      
      Added FTP server log messages for successful file upload or update by user.
      77d72d0e
  6. Mar 28, 2022
    • Rob Swindell's avatar
      Overhaul statistics files · f963dcbf
      Rob Swindell authored
      */dsts.dab (daily statistics and running totals) -> */dsts.ini
      */csts.dab (cumulative statistics / log) -> */csts.tab
      
      * dsts.ini now has both daily and total stats for all fields (not just timeon and logons).
      * dsts.ini is now an easily modifiable text file - no longer need dstsedit (here-by deprecated and soon to be deleted)
      * dsts.ini and csts.tab support 64-bit upload/download byte stats and are very extensible for future fields to be added or extended > 32-bit (this was the main inspiration for this overhaul, but it was overdue and already designed for v4, pretty much)
      * csts.tab is a tab-delimited fixed length record format suitable for easy import to a spreadsheet program or parsing with scripts. Each day is a 128-character LF-delimited record with tab-delimited fields of plain ASCII text.
      * All fields except timeon in dsts.ini files are updated immediately and by more non-terminal servers (e.g. post statistics from web UI scripts).
      * New user stats are tracked more than just for "today".
      
      The upgrade of these files is automatic and built-into SBBS.
      
      Still to do: overhaul the slog utility to support the new csts.tab file format.
      f963dcbf
  7. Mar 04, 2022
  8. Jan 13, 2022
  9. May 14, 2021
  10. May 02, 2021
    • Rob Swindell's avatar
      Store contents (list) of archive files in filebase (in the "msg tail") · 875a92d8
      Rob Swindell authored
      This will allow fast/easy display of archive contents without actually reading the archive files.
      
      Introduces some new functions:
      - list_archive_contents()
      - smb_adddfile_withlist()
      
      A new SMB convenience variable ("tail", aliased as "content" for a file).
      A new file detail level ("file_detail_content", exposed in JS as FileBase.DETAIL.CONTENTS) which adds a "content" array property to file metadata objects for JS FileBase.get().
      
      Files already added to the new filebases won't have this archive content automatically - I'm looking into that now (likely a new or updated JS script to run).
      875a92d8
  11. Apr 26, 2021
  12. Apr 24, 2021
    • Rob Swindell's avatar
      DIZ enhancements: Read/use SAUCE data, support ANSI, increase max 1->4K · ef4eb8da
      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.
      ef4eb8da
  13. Apr 22, 2021
  14. Apr 17, 2021
  15. Apr 16, 2021
  16. Apr 04, 2021
    • Rob Swindell's avatar
      A poll() failure with EINTR does not mean a socket is closed. · 925e3b0a
      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...
      925e3b0a
  17. Feb 15, 2021
  18. Feb 14, 2021
  19. Jan 18, 2021
    • Rob Swindell's avatar
      Safe string handling with config-load error messages · 4a13b65d
      Rob Swindell authored
      We were just trusting that the error strings would be shorter than 256 (usually), but since we're including paths and strerror() results, we really have no control over the length of the error strings. So enforce some healthy boundaries. This could explain the crashes that Divarin of Mutiny is seeing with SCFG on WinXP or maybe it was the truncsp(strerror()) stuff that was just removed as well. We'll see...
      4a13b65d
  20. Dec 03, 2020
  21. Nov 23, 2020
    • Rob Swindell's avatar
      The great C function dependency refactor of 2020 · cee2d280
      Rob Swindell authored
      The goal of this commit is that: only modules that either are part-of sbbs.dll/libsbbs.so or need to link with/use that library, will #include "sbbs.h" and thus be dependent on its subsequent includes (e.g. cryptlib.h, jsapi.h). This should mean extdeps.mk can be trimmed way down.
      
      I also removed CVS keyword/comments and trimmed up the boilerplate copyright notice in modified and added source/header files in this commit.
      
      There is no functional change in behavior in this comment.
      cee2d280
  22. Nov 06, 2020
    • Rob Swindell's avatar
      Replace ctype.h function calls with new MSVC-safe XPDEV macros · ec20d959
      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.
      ec20d959
  23. Sep 19, 2020
  24. Aug 17, 2020
  25. Aug 16, 2020
    • Rob Swindell's avatar
      Fix issue with jsexec being used for CGI scripts · 54431b31
      Rob Swindell authored
      If jsexec is used for a CGI script and the SBBSCTRL env var was not
      set, a warning would be printed (to stderr), even if the -c option
      was used to specify the path to the ctrl dir.
      
      get_ctrl_dir() now accepts a boolean argument to specify whether to
      print a warning when the default value ("/sbbs/ctrl") is used.
      Pass FALSE for jsexec, TRUE for other callers (currently).
      54431b31
    • Rob Swindell's avatar
      Commit with CVS Keywords expanded. · dfa1a0a4
      Rob Swindell authored
      dfa1a0a4
  26. May 12, 2020
  27. Jan 03, 2020
    • 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
  28. Aug 19, 2019
    • rswindell's avatar
      Address issue reported by Clogan: · 4472e206
      rswindell authored
      In *nix builds of addfiles, when adding a file list (e.g. files.bbs), the
      case (capitalization) of the filenames is taken literally from the file list,
      and that may be incorrect in same cases. Detect the correct case of the
      filename and use it when importing into the filebases.
      4472e206
  29. Aug 12, 2019
    • rswindell's avatar
      Added -F (capital 'F') option to specify the format of the date/time stamp · a4c3f383
      rswindell authored
      to put in the description (in strftime() format). Can also be used in
      combination with '-t' if you want today's date/time instead.
      It's not very clear from the help/usage output, but if you specify both -f
      (or -F) and -t, you'll *only* get today's date in the description (not both
      the file date and today's date).
      a4c3f383
  30. Jul 18, 2019
  31. Mar 16, 2019
    • rswindell's avatar
      When adding a listfile (e.g. files.bbs), be a bit more strict: · e27d4a8f
      rswindell authored
      - filenames must begin with an alpha-numeric char. Might want to relax this in
        the future if it's a problem, but generally filenames on BBSes do begin with
        alpha-numeric characters and this will help us to identify an ignore
        "garbage" filenames in listfiles.
      - always check if the file actually exists, even when parsing the length of
        the file from the listfile. This will also help us to ignore garbage
        filenames.
      - also removed an inexplicable unpadfname() call. Filenames in file lists
        should *not* normally be padded (like "this    .txt") - so I'm not sure why
        this was in there. Perhaps for lists generated from filelist.exe (?). Anyway,
        out of an abundance of caution, removed it. Padded filenames are going away.
      e27d4a8f
  32. Mar 13, 2019
  33. Jul 09, 2017
  34. Jul 07, 2017
    • rswindell's avatar
      Added option for Deepthaw: -p · 001ac875
      rswindell authored
      When using this option, the file's timestamp is compared with the stored upload
      timestamp. If the file is the same or older than the upload date/time, it is
      skipped. I think this is what he was asking for.
      001ac875
Loading