1. 24 Feb, 2022 1 commit
  2. 20 Dec, 2020 1 commit
  3. 09 Dec, 2020 1 commit
  4. 16 Aug, 2020 1 commit
  5. 11 May, 2020 2 commits
  6. 11 Apr, 2020 1 commit
  7. 19 Mar, 2020 1 commit
  8. 01 Mar, 2020 1 commit
    • rswindell's avatar
      Added support for a "list messages module" which is an optional module (Baja or · 56059107
      rswindell authored
      JS) which will be executed when a users uses the the (L)ist msgs command from
      the "Reading" sub or "Reading E-mail" prompt.
      The arguments passed to the module are: <sub-code> [which]  [usernum]  [lm_mode]
      The additional optional arguments are the same values as would be passed to a
      readmail_mod, if one were to be used instead.
  9. 08 Aug, 2019 1 commit
  10. 04 Aug, 2019 1 commit
    • rswindell's avatar
      More UTF-8 fun: · 3313a87e
      rswindell authored
      - bstrlen() moved to sbbs_t, accepts an option pmode argument so it can account
        for UTF-8 encoded strings correctly
      - JS console.strlen() now accepts an optional pmode argument (e.g. P_UTF8)
      - Renamed sbbs_t::utf8_to_cp437 to sbbs_t::print_utf8_as_cp437
      - Create/use msghdr_hfield() to perform UTF-8->CP437 conversions as needed for
        printing/copying UTF-8 encoded message header fields.
      - Defined XTRN_UTF8 misc setting flag. If a message editor does *not* have this
        flag, it is assumed to *not* support UTF-8. Will likely use this for UTF-8
        doors as some point too (none known to exist, yet).
  11. 03 Aug, 2019 1 commit
    • rswindell's avatar
      When listing messages: · 09a87ec7
      rswindell authored
      - Use the P_TRUNCATE pmode flag to prevent long msg subj from wrapping the
      - Use msghdr_text() to do the magic UTF-8/CP437 dance for messages with UTF-8
        header fields (e.g. to/from/subject)
      This is why I assigned MSG_HFIELDS_UTF8 the same bit-flag value as P_UTF8. :-)
  12. 02 May, 2019 1 commit
  13. 10 Apr, 2019 3 commits
  14. 24 Mar, 2019 1 commit
    • 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
      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.
  15. 20 Feb, 2019 1 commit
    • rswindell's avatar
      Reversed course on the WM_QUOTE mode handling in sbbs_t::postmsg() · 57424543
      rswindell authored
      (JS bbs.post_msg()): If the WM_QUOTE mode flag is *not* set, then it will auto-
      create the quote file (quotes.txt) and add the WM_QUOTE mode bit before calling
      sbbs_t::writemsg(). So if existing JS scripts call bbs.post_msg(..., WM_QUOTE)
      with a custom-created quote file (e.g. with msg tails), that'll still work as
      before (e.g. DDMsgReader.js).
      bbs.email() and bbs.netmail() now support an optional reply_header_object
      argument which works like bbs.post_msg(). These methods (and the underlying
      C++ methods: sbbs_t::email(), netmail(), inetmail(), all auto-create the
      quote file now, when the WM_QUOTE mode flag is *not* set.
      The auto-created quotes.txt now includes the plain-text version of MIME-encoded
      the bbs.post_msg(), email(), and netmail() methods now all support reply
      header objects that came directly from bbs.get_msg_header() *or* copies of
      such header objects (but the auto-quoting feature won't work when supplied
      this type of header object). So if passed a header object returned from
      bbs.get_msg_header(), we can now use the message base (for auto-quoting) and
      the underlying msg storage directly (no JS parsing necessary). This is what
      the new js_GetMsgHeaderObjectPrivates() function is used for.
      js_ParseMsgHeaderObject() (and the underlying parse_header_object() function)
      now supports either an actual internally-generated msg header object (e.g.
      returned from bbs.get_msg_header()) or one that is a copy or hand-constructed.
      quotemsg() no longer tries to get a copy of the msg index/header. It shouldn't
      have to since we can now get to underlying msg storage in the js_msgbase.c
      via js_GetMsgHeaderObjectPrivates().
      quotemsg() now reads only the plain-text portion of MIME-encoded messages.
      As part of this effort, I modernized the method prototypes using default
      argument values (e.g. WM_NONE for wm_mode arguments) and removed some
      extraneous WM_EMAIL and WM_NETMAIL specifications (these wm_mode flags are
      automatically added by the sbbs_t::email() and *netmail() functions).
      savemsg() now *does* support reply-IDs/thread-linkage via the additional
      'remsg' argument (when non-NULL).
      Replaced some use of nulstr with NULL.
      Replaced more boilerplate SMB open code with calls to smb_open_sub().
  16. 19 Feb, 2019 1 commit
    • rswindell's avatar
      sbbs_t::postmsg() and JS's bbs.post_msg() changes: · d95d30ea
      rswindell authored
      When the WM_QUOTE mode flag is set and the 'remsg' is specified, the original
      message will quoted (excluding message tails, using the proper word-wrapping).
      If the quote file already exists before calling postmsg()/bbs.post_msg(), it
      will be over-written. This allows JS script to initiate reply-posts with quoted
      text without having to create their own quotes file. It also means there's no
      need to call sbbs_t::quotemsg() before calling sbbs_t::postmsg().
      sbbs_t::quotemsg() now takes an smb_t* arg (stop using the sbbs_t 'global'
      smb) and now returns bool.
  17. 02 Feb, 2019 1 commit
  18. 31 Dec, 2018 1 commit
  19. 30 Dec, 2018 3 commits
  20. 23 Oct, 2018 1 commit
  21. 03 Aug, 2018 1 commit
  22. 07 Jul, 2018 1 commit
    • rswindell's avatar
      Restore the 'U' command back to "User Edit" and commented-out the · 5b629cc7
      rswindell authored
      experimental 'U' (View Unread-Only toggle) command. The 'U' command from
      the e-mail menu (e.g. email_sec.js) works better than the toggle approach and
      is probably all that is needed.
      Also, the user number lookup in the User Edit bit is better at finding the
      proper user account (e.g. for received netmail).
  23. 10 Jun, 2018 1 commit
    • rswindell's avatar
      JS bbs object changes: · a32a52cb
      rswindell authored
      - finduser() method no longer prints "Unknown user" upon failure (the calling
        script can do this if/when it wants).
      - read_mail() method now accepts an optional 3rd argumnet (loadmail_mode)
        which may be used to load *only* un-read mail (for example), see LM_* in
      Pass the lm_mode as a 4th argument to any readmail mod (if one is installed) -
      this correlates with the LM_* mode flag values (0 is normal/usual).
      File attachments can also be in a file/####.out directory (e.g. outbound
      Internet email attachments), so try deleting from there too when deleting
      mail with attachments.
  24. 09 Jun, 2018 2 commits
  25. 08 Jun, 2018 1 commit
  26. 27 Nov, 2017 1 commit
  27. 26 Nov, 2017 1 commit
  28. 15 Nov, 2017 1 commit
  29. 14 Nov, 2017 1 commit
  30. 13 Nov, 2017 1 commit
    • rswindell's avatar
      New feature: control of SPAM visibility when reading mail on the Terminal · d18bd3bd
      rswindell authored
      Server via the new 'V' command from the Reading Mail prompt allows you to
      toggle between all mail (including SPAM, the default), SPAM only, or HAM only.
      Also added a new '/' (search text) command from the reading mail prompts.
      Mail imported before the mailsrvr added support (recently) for the MSG_SPAM
      attribute flag will not be counted/filtered as SPAM.
      SBBSecho will have a commit (next) to support the new loadmail() usage, it
      will not compile until then.
  31. 18 Nov, 2016 1 commit
    • rswindell's avatar
      Introduced 2 new poll concepts: · 0ac4f937
      rswindell authored
      - Closures (polls can be closed for new voting by the pollster)
      - Results can have configurable visibility:
        a. Only to voters (and the pollster) - the default
        b. Everyone
        c. Everyone once the poll has closed
        d. Only the pollster
      Changes to smb_getmsgtxt():
      Main change: poll questions can now be quoted when replying to a posted poll
      (the results cannot be quoted).
      Also: there's now automatically a blank line inserted between comment header
      fields and poll answers or the msg body text.
      Also: upon any malloc failure, the function now returns NULL.
      New functions: smb_msg_is_from() and smb_addpollclosure().
  32. 16 Nov, 2016 1 commit
    • rswindell's avatar
      loadmsg() now returns < 0 on error, >= 0 on success, this change was necessary · 742f1901
      rswindell authored
      to be able to delete messages that have no hfields, for example, with sub-op
      'D' command.
      Now support polls with comments (displayed before the poll answers).
      Poll results/statistics are only displayed to sub-ops and users who have voted
      already. This may be optoinal behavior determined by the pollster in the future.
      Sub-ops can now add comments to any post using the 'A' command from the
      [O]perator menu - use with caution.
  33. 04 Dec, 2015 1 commit
  34. 26 Nov, 2015 1 commit