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

  1. 08 Jul, 2019 3 commits
  2. 12 Apr, 2019 1 commit
    • rswindell's avatar
      Define and use a new external message editor option: SAVECOLUMNS · ee00b5f8
      rswindell authored
      (default: off) - when enabled, the current terminal width (columns) will be
      saved in the msg header.
      When using the internal msg editor or raw intput mode, the columns are always
      saved in the message editor. fseditor.js should have this option enabled.
  3. 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).
    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().
  4. 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.
  5. 17 Feb, 2019 3 commits
  6. 06 Nov, 2018 1 commit
    • rswindell's avatar
      Don't generate FTN message-IDs for messages imported via FTN that are missing a · b1692861
      rswindell authored
      message-ID (e.g. when exporting from SBBSecho).
      This addresses compliance with this [editorialized] clause in FTS-9:
           No system
           should ever add an MSGID and/or REPLY to,  or modify an existing
           MSGID / REPLY contained in,  a message not originating on that [FTN]
      Messages gated from other networks (technically coming from another system,
      but originating into an FTN from this system) will still have an FTN Message-ID
      Since SBBSecho normally tosses to downlinks directly from packets, this adding
      of generated Message-IDs would no normally occur. However, if a downlink
      rescanned an area, any messages missing Message-IDs would get them generated
      automatically and they would appear to have originating on the local system.
      This was never the intention, so this is just a long standing but infrequently
      observed (and never reported) bug.
  7. 30 Oct, 2018 1 commit
  8. 04 Oct, 2018 1 commit
  9. 03 Oct, 2018 2 commits
    • rswindell's avatar
      Define and use a new getstr() mode flag: K_TRIM, to trim white-space · 48d31b27
      rswindell authored
      from both ends of the input string automatically and disallow (ignore)
      more than one consecutive space character mid-string.
      The returned value is still the non-trimmed string length - perhaps that
      should be changed.
    • rswindell's avatar
      Allow message "tagging" (ala hashtags, without the hash). · 14b116bc
      rswindell authored
      If a message sub-board is configured to "Allow Message Tagging"
      (under Toggle Options in SCFG->Message Areas), then after a message is
      posted (via the terminal server), the user will be prompted if they
      want to tag the message with one or more space-separated tags. The no/yes
      prompt can be skipp if desired by setting the TagMessageQ line in the
      text.dat file to an empty string. There is currently no provision for
      regular users to actually see/view the message tags (yet), but the sysop
      or sub-op can view the tags in the message header with the 'H' sys/sub-op
  10. 06 Sep, 2018 1 commit
  11. 29 Aug, 2018 1 commit
  12. 03 Aug, 2018 1 commit
  13. 24 Nov, 2017 1 commit
  14. 12 Oct, 2017 1 commit
  15. 27 Nov, 2016 1 commit
  16. 20 Nov, 2016 2 commits
    • rswindell's avatar
      Solved the networked-voting "ordering problem". QWK/REP packets that contained · 3258eca3
      rswindell authored
      normal messages along with voting data (polls, ballots, etc.) would always be
      imported in this order: msgs, polls, ballots/votes, and then poll-closures.
      This could result in a confusing order of messages in the local msg base where
      there were messages in reply to a poll before the poll appears and other
      oddities. Anyway, this is now resolved by placing a msg "header block" for each
      vote-data item in the MESSAGES.DAT file. Since there is no body/text blocks,
      it should be ignored under normal circumstances, but these header blocks are
      only created if VOTING.DAT is enabled anyway.
      And now, the VOTING.DAT contains an extra line (empty .ini section) with the
      HEADERS.DAT offset associated with the chronology of the item. The format
      is still backwards compatible with the earlier builds that included VOTING.DAT
      Also, fixed the vote/poll/closure Message-IDs containing a msg number of 0
      (while not technically a problem, it wasn't the intention) with the use of the
      new function: get_new_msg_number().
    • rswindell's avatar
      Automatic REPLY-ID fixup: · 396b931b
      rswindell authored
      If a message header has a thread_back value (it's a reply to another msg), but
      there is no Reply-ID header field, when converting QWK, look-up the
      original message-ID (to use for the relpy/vote Reply-ID value). If the original
      message doesn't have a message-ID, use the normal auto-generation scheme.
      This isn't normally necessary, but I posted a poll with a message-ID on
      DOVE-Net / Sysops and then voted on the poll, creating a vote with no Reply-ID
      which causes an SMB "writing" error (access=-105) on the QWKnet node BBSes
      (because the required header field is missing).
  17. 19 Nov, 2016 1 commit
  18. 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().
  19. 16 Nov, 2016 1 commit
  20. 13 Nov, 2016 2 commits
    • rswindell's avatar
      Replaced text.dat line MsgVoteNotice with 2 new strings: MsgUpVoteNotice and · 7c17c5f2
      rswindell authored
      Also moved the R_Voting string, so the last few voting related strings in the
      text.dat have been re-arranged (sorry about the thrash) - if you don't have
      these new 8 lines, the default strings are used and you're fine.
      When listing messages from the "Reading" prompt, the vote status and Replied
      attribute flag are now indicated: 'V' = voted up (more than down), 'v' = voted
      down (more than up), and 'R' = replied-to. Unread/new messages still show a '*'
      in the A (for attributes) column.
      Voting via JS still does not automatically send a notice to the poster, that
      still needs to be worked out.
    • rswindell's avatar
      Created a wrapper around smb_addvote() called votemsg() which (optionally) · b18764d1
      rswindell authored
      sends a short message (telegram) to the poster of the vote. It also confirms
      this is not a duplicate vote.
  21. 26 Nov, 2015 1 commit
    • rswindell's avatar
      Don't add .sig file to messages posted or emailed anonymously (duh!). · f78ff5f9
      rswindell authored
      writemsg() now handles the anonymous name in the drop files (using WM_ANON
      for the first time?).
      A little mixed-case NETMAIL.MSG paranoia (for case-sensitive file systems).
      More use of SAFEPRINTF().
      More use of removecase().
      More attribute flags represented (with a single character) in the 'A' column
      of mail and sub-board message listings.
  22. 25 Nov, 2015 1 commit
    • rswindell's avatar
      Bug-fix: pass the 'from' name to writemsg() and editor_inf() so that the drop · 6b39f6f3
      rswindell authored
      files and editors have the correct sender name in all situations (not just
      when posting on "real name only" sub-boards).
      "ANONYMOUS" postings work too, but mainly Internet & FidoNet Netmail were fixed.
      Use removecase() for NETMAIL.MSG (in case there's a lowercase version).
      Use subj in place of title and to in place of dest in argument names.
      Some constification of argument types.
  23. 24 Nov, 2015 2 commits
    • rswindell's avatar
      Added one comment. · 1e44fc8f
      rswindell authored
    • rswindell's avatar
      Cool new feature {tm}: · c3ae3857
      rswindell authored
      FidoNet NetMail can now be gated to an SMTP client (as before), but replies are
      now successfully gated back to FTN NetMail. This uses a new more RFC-compliant
      To/From address header field format, so older messages (previously gated to
      an SMTP client) cannot be successfully replied-to. Tested with Microsoft
      "Windows Live Mail 2012" (previously known as Outlook Express).
      Test reports/results with other SMTP mail clients would be welcome.
      Requires SBBSecho v2.30 or later. File attachments are not yet supported.
  24. 06 May, 2015 1 commit
  25. 06 Sep, 2014 2 commits
    • rswindell's avatar
      Fix bug introduced in previous commit: create the message base if it doesn't · 8942c635
      rswindell authored
      exist in msgbase_open(), called from sbbs_t::postmsg().
    • rswindell's avatar
      Take care of long-standing "ToDo" comment/itemt: · cd80a95a
      rswindell authored
      Replace a lot of hand-rolled/pasted SMB message text creation code
      in sbbs_t::postmsg() with a call to smb_addmsg(). This fixes the problem of
      messages posted using the terminal server were not subject to message hash
      create or dupe checking.
      Also created a (currently private) helper function called msgbase_open() which
      contains a lot of boilerplate code that is usually pasted around/before/after a
      call to smb_open(), so I plan to use this more later.
  26. 20 Oct, 2012 1 commit
  27. 07 Mar, 2012 2 commits
    • rswindell's avatar
      Fixed typo in previous commit. · 94f3fd1d
      rswindell authored
    • rswindell's avatar
      Created new SMB fixed header field: thread_id which contains the message number · bdfe0f79
      rswindell authored
      of the first message in the thread, or 0 if unknown (e.g. legacy message). When
      a new message is created, the thread_id value of the message being replied-to
      will be used, else if the new msg is not a reply, then the new message's number
      will be the value used for the thread_id.
      This "thread-id" feature (Deuce's idea) allows threads with a common parent to
      remain logically grouped after the original messages in the thread have been
      purged (though the original hiearchy will start to be lost).
  28. 04 Nov, 2011 1 commit
  29. 19 Oct, 2011 1 commit
  30. 09 Oct, 2011 1 commit