Skip to content
Snippets Groups Projects
  1. Apr 11, 2019
  2. Apr 10, 2019
  3. Apr 09, 2019
  4. Apr 06, 2019
    • rswindell's avatar
      MsgBase.put_msg_header() now updates the internal (smbmsg_t) representation · 53c677c3
      rswindell authored
      of the message header so that functions that need it (e.g. bbs.show_msg_header)
      don't use/show stale data. This change requires the updated smb_copymsgmem()
      which clear/sets message convenience pointers upon copying hfields from one
      message header to another.
      53c677c3
    • rswindell's avatar
      smb_copymsgmem() fix: · 3debb32c
      rswindell authored
      Did not clear/set convenience pointers (e.g. msg.subj), so they would point
      to the source message hfield_dat buffers which may be freed or garbage.
      Apparently nothing that used smb_copymsgmem() used the convenience pointers
      (before now), so it hasn't been a problem before now. <shrug>
      It became a problem becaue I'm going to use this function in js_put_msg_header
      to fix a problem where the underlying smbmsg_t representation is not current
      even after MsgBase.put_msg_header() is used.
      3debb32c
    • rswindell's avatar
      New MsgBase method: get_index() - returns an array of all message index records · 75417a26
      rswindell authored
      (objects, in the same format as returned by the get_mgs_index() method)
      much faster than iterating through a loop, calling the get_msg_index() method
      for each message. If you want to load messages (e.g. headers, text), filtering
      by criteria found in the message index (attributes, to/from user, subject CRC)
      loading a list of indexes and filtering before calling get_msg_header() for the
      selected messages is much faster than previously available MsgBase object
      methods (e.g. get_all_msg_headers()). If you don't need to filter the loaded
      messages (you really want *all* message headers), then get_index() is of no
      benefit to you, the script-writer. This is most useful for the "mail" msgbase
      where selective loading of messages is more common.
      75417a26
  5. Apr 05, 2019
    • rswindell's avatar
      There appears to be a few places in this file that treat ^A^A as a literal · 0a5ea2e4
      rswindell authored
      Ctrl-A (ASCII 1) char. This is wrong. A literal Ctrl-A sequence is ^AA.
      I'm only addressing one of those instances in this commit since it *also*
      appears to be an off-by-one bug where it's treating *all* Ctrl-A sequences as
      though they were ^AA - so just #ifdef'ing out until Deuce takes a look at this.
      0a5ea2e4
  6. Apr 02, 2019
  7. Apr 01, 2019
  8. Mar 31, 2019
  9. Mar 26, 2019
  10. Mar 24, 2019
    • rswindell's avatar
      New JS bbs methods: · b4d31140
      rswindell authored
      - bbs.show_msg()
      - bbs.show_msg_header()
      Re-worked the JS bbs.netmail() implementation
      sbbs::show_msg(), show_msghdr(), msgtotxt() now take an smb_t* argument
      (don't use the pseudo-global 'smb' in these functions any longer)
      sbbs_t::putmsg() and JS console.putmsg() now accept an optional orig_columns
      argument to specify the original column width of a text for intelligent
      re-word-wrapping (e.g. as taken from a message header field). Previously, the
      original-column value was hard-coded to 80 columns (technically, 79).
      sbbs_t::show_msghdr() no longer sends a CRLF if the cursor is already at the
      top-of-screen (TOS).
      sbbs_t::show_msg() now uses the stored "columns" msg header fields to pass to
      putmsg() to intelligently re-word-wrap message bodies for display.
      sbbs_t::show_msg() and msgtotxt() return bool now instead of void.
      JS MsgBase.get_all_msg_headers() now supports an optional "expand_fields"
      argument (defaults to true). I contemplated just getting rid of the (few)
      expanding header fields (more like default-value-header fields, like 'id'), but
      decided against it, at least for now.
      JS MsgBase.put_msg_header(), the "number_or_offset" argument is optional and
      not needed if a header object argument is provided. Make this clear in this JS
      docs for this method
      
      Note:
      I sat on this commit for a while because I noticed occasional errors like this:
          Node 1 <Digital Man> !ERROR 2 (No such file or directory) (WinError 0) in
          readmsgs.cpp line 217 (sbbs_t::loadposts) locking
          "path/to/sub" access=-100 info=smb_locksmbhdr msgbase not open
      started cropping up after introducing these changes and which I never
      root-caused. But after a clean-build and waiting a week, I haven't seen it
      again, so hopefully it was just a incomplete rebuild issue and not a new bug.
      b4d31140
    • rswindell's avatar
    • rswindell's avatar
      Updated JS doc strings. · 079f2e69
      rswindell authored
      079f2e69
    • rswindell's avatar
      Support netmail addresses (e.g. Internet e-mail addresses) longer than the 35 · cd447d36
      rswindell authored
      character limit imposed by FidoNet message "to" fields, in sbbs_t::netmail().
      Use the regarding-message from_net field when a 'to' field is not passed to
      sbbs_t::netmail()
      cd447d36
    • rswindell's avatar
      Rename the 2 outbound interface keys that were introduced by Deuce in the big · cd883edd
      rswindell authored
      IPv6 commit of 2015:
      "OutgoingV4" is now "OutboundInterface" and
      "OutgoingV6" is now "OutboundV6Interface" (which is not yet used)
      cd883edd
  11. Mar 22, 2019
    • rswindell's avatar
      Use default calling convention (__cdecl) for DLL funcs in Borland builds. · bf82a889
      rswindell authored
      Fix age-old bug with Borland/C++Builder built executables (Windows):
      to achieve compatibility with  the default __cdecl symbol naming rules of
      Visual C++, we were using __stdcall convention for DLL functions when
      building code with Borland/C++Builder tools and using the default (__cdecl)
      convention when building with Microsoft (Visual C++) tools. Although this
      allowed symbols to be located when linking, the calling convention mismatch
      caused a stack cleanup issue that very rarely manifested itself in a bug
      (e.g. exception of some kind in sbbsctrl.exe, usually). Mismatching
      the calling conventions was unintentional (I thought the default for MSVC
      DLL functions was __stdcall) - but since the calls to MSVC-Built DLL functions
      worked 99% of the time, I didn't realize there was an underlying issue. So I
      now work-around the DLL symbol naming mismatch using a command-line option (-a)
      passed to implib in src/sbbs3/ctrl/makelibs.bat
      
      I had previously worked-around exceptions when calling MSVC DLL functions in
      sbbsctrl.exe by calling the problematic DLL functions from a timer tick handler
      rather than a user control (e.g. button) event handler. Those work-arounds can
      now be removed.
      
      The erroneous "DLLCALL" definition design pattern was replicated (copy/pasted)
      to many other projects' header files in cvs.synchro.net. In the future, we may
      want to just remove all instances of *CALL since they now serve no purpose and
      appear as useless "Kruft" (but do allow us to more-easily globally change DLL
      function calling conventions if/when necessary in the future).
      bf82a889
  12. Mar 19, 2019
Loading