Vsevolod Volkov <vvv@mutt.org.ua>
-diff -udprP mutt-1.5.16.orig/ChangeLog.nntp mutt-1.5.16/ChangeLog.nntp
---- mutt-1.5.16.orig/ChangeLog.nntp 1970-01-01 03:00:00.000000000 +0300
-+++ mutt-1.5.16/ChangeLog.nntp 2007-06-15 17:14:18.000000000 +0300
-@@ -0,0 +1,350 @@
+diff -udprP mutt-1.5.21.orig/ChangeLog.nntp mutt-1.5.21/ChangeLog.nntp
+--- mutt-1.5.21.orig/ChangeLog.nntp 1970-01-01 03:00:00.000000000 +0300
++++ mutt-1.5.21/ChangeLog.nntp 2010-09-16 13:14:39.000000000 +0300
+@@ -0,0 +1,375 @@
++* Wed Sep 16 2010 Vsevolod Volkov <vvv@mutt.org.ua>
++- update to 1.5.21
++
++* Thu Aug 13 2009 Vsevolod Volkov <vvv@mutt.org.ua>
++- fixed writting references in nntp_save_cache_group()
++
++* Tue Jun 15 2009 Vsevolod Volkov <vvv@mutt.org.ua>
++- update to 1.5.20
++
++* Tue Mar 20 2009 Vsevolod Volkov <vvv@mutt.org.ua>
++- save Date: header of recorded outgoing articles
++
++* Tue Jan 6 2009 Vsevolod Volkov <vvv@mutt.org.ua>
++- update to 1.5.19
++
++* Mon May 19 2008 Vsevolod Volkov <vvv@mutt.org.ua>
++- update to 1.5.18
++- fixed SIGSEGV when followup or forward to newsgroup
++
++* Sun Nov 4 2007 Vsevolod Volkov <vvv@mutt.org.ua>
++- update to 1.5.17
++
++* Tue Jul 3 2007 Vsevolod Volkov <vvv@mutt.org.ua>
++- fixed arguments of nntp_format_str()
++
+* Fri Jun 15 2007 Vsevolod Volkov <vvv@mutt.org.ua>
+- fixed error selecting news group
+
+
+* Fri Jan 28 2000 Vsevolod Volkov <vvv@mutt.kiev.ua>
+- update to 1.1.2
-diff -udprP mutt-1.5.16.orig/Makefile.am mutt-1.5.16/Makefile.am
---- mutt-1.5.16.orig/Makefile.am 2007-06-04 07:20:01.000000000 +0300
-+++ mutt-1.5.16/Makefile.am 2007-06-15 17:12:26.000000000 +0300
-@@ -62,6 +62,7 @@ EXTRA_mutt_SOURCES = account.c md5c.c mu
- smtp.c browser.h mbyte.h remailer.h url.h \
- crypt-mod-pgp-classic.c crypt-mod-smime-classic.c \
- pgppacket.c mutt_idna.h hcache.h hcache.c bcache.c bcache.h mutt_ssl_gnutls.c \
-+ nntp.c newsrc.c \
- crypt-gpgme.c crypt-mod-pgp-gpgme.c crypt-mod-smime-gpgme.c \
- utf8.c wcwidth.c
+diff -udprP mutt-1.5.21.orig/OPS mutt-1.5.21/OPS
+--- mutt-1.5.21.orig/OPS 2010-03-01 19:56:19.000000000 +0200
++++ mutt-1.5.21/OPS 2010-09-16 13:14:39.000000000 +0300
+@@ -8,14 +8,16 @@ OP_BOUNCE_MESSAGE "remail a message to a
+ OP_BROWSER_NEW_FILE "select a new file in this directory"
+ OP_BROWSER_VIEW_FILE "view file"
+ OP_BROWSER_TELL "display the currently selected file's name"
+-OP_BROWSER_SUBSCRIBE "subscribe to current mailbox (IMAP only)"
+-OP_BROWSER_UNSUBSCRIBE "unsubscribe from current mailbox (IMAP only)"
++OP_BROWSER_SUBSCRIBE "subscribe to current mbox (IMAP/NNTP only)"
++OP_BROWSER_UNSUBSCRIBE "unsubscribe from current mbox (IMAP/NNTP only)"
+ OP_BROWSER_TOGGLE_LSUB "toggle view all/subscribed mailboxes (IMAP only)"
+ OP_BUFFY_LIST "list mailboxes with new mail"
++OP_CATCHUP "mark all articles in newsgroup as read"
+ OP_CHANGE_DIRECTORY "change directories"
+ OP_CHECK_NEW "check mailboxes for new mail"
+ OP_COMPOSE_ATTACH_FILE "attach file(s) to this message"
+ OP_COMPOSE_ATTACH_MESSAGE "attach message(s) to this message"
++OP_COMPOSE_ATTACH_NEWS_MESSAGE "attach newsmessage(s) to this message"
+ OP_COMPOSE_EDIT_BCC "edit the BCC list"
+ OP_COMPOSE_EDIT_CC "edit the CC list"
+ OP_COMPOSE_EDIT_DESCRIPTION "edit attachment description"
+@@ -26,7 +28,10 @@ OP_COMPOSE_EDIT_FROM "edit the from fiel
+ OP_COMPOSE_EDIT_HEADERS "edit the message with headers"
+ OP_COMPOSE_EDIT_MESSAGE "edit the message"
+ OP_COMPOSE_EDIT_MIME "edit attachment using mailcap entry"
++OP_COMPOSE_EDIT_NEWSGROUPS "edit the newsgroups list"
+ OP_COMPOSE_EDIT_REPLY_TO "edit the Reply-To field"
++OP_COMPOSE_EDIT_FOLLOWUP_TO "edit the Followup-To field"
++OP_COMPOSE_EDIT_X_COMMENT_TO "edit the X-Comment-To field"
+ OP_COMPOSE_EDIT_SUBJECT "edit the subject of this message"
+ OP_COMPOSE_EDIT_TO "edit the TO list"
+ OP_CREATE_MAILBOX "create a new mailbox (IMAP only)"
+@@ -85,8 +90,13 @@ OP_EXIT "exit this menu"
+ OP_FILTER "filter attachment through a shell command"
+ OP_FIRST_ENTRY "move to the first entry"
+ OP_FLAG_MESSAGE "toggle a message's 'important' flag"
++OP_FOLLOWUP "followup to newsgroup"
++OP_FORWARD_TO_GROUP "forward to newsgroup"
+ OP_FORWARD_MESSAGE "forward a message with comments"
+ OP_GENERIC_SELECT_ENTRY "select the current entry"
++OP_GET_CHILDREN "get all children of the current message"
++OP_GET_MESSAGE "get message with Message-Id"
++OP_GET_PARENT "get parent of the current message"
+ OP_GROUP_REPLY "reply to all recipients"
+ OP_HALF_DOWN "scroll down 1/2 page"
+ OP_HALF_UP "scroll up 1/2 page"
+@@ -94,11 +104,14 @@ OP_HELP "this screen"
+ OP_JUMP "jump to an index number"
+ OP_LAST_ENTRY "move to the last entry"
+ OP_LIST_REPLY "reply to specified mailing list"
++OP_LOAD_ACTIVE "load active file from NNTP server"
+ OP_MACRO "execute a macro"
+ OP_MAIL "compose a new mail message"
+ OP_MAIN_BREAK_THREAD "break the thread in two"
+ OP_MAIN_CHANGE_FOLDER "open a different folder"
+ OP_MAIN_CHANGE_FOLDER_READONLY "open a different folder in read only mode"
++OP_MAIN_CHANGE_GROUP "open a different newsgroup"
++OP_MAIN_CHANGE_GROUP_READONLY "open a different newsgroup in read only mode"
+ OP_MAIN_CLEAR_FLAG "clear a status flag from a message"
+ OP_MAIN_DELETE_PATTERN "delete messages matching a pattern"
+ OP_MAIN_IMAP_FETCH "force retrieval of mail from IMAP server"
+@@ -138,6 +151,7 @@ OP_PAGER_HIDE_QUOTED "toggle display of
+ OP_PAGER_SKIP_QUOTED "skip beyond quoted text"
+ OP_PAGER_TOP "jump to the top of the message"
+ OP_PIPE "pipe message/attachment to a shell command"
++OP_POST "post message to newsgroup"
+ OP_PREV_ENTRY "move to the previous entry"
+ OP_PREV_LINE "scroll up one line"
+ OP_PREV_PAGE "move to the previous page"
+@@ -146,6 +160,7 @@ OP_QUERY "query external program for add
+ OP_QUERY_APPEND "append new query results to current results"
+ OP_QUIT "save changes to mailbox and quit"
+ OP_RECALL_MESSAGE "recall a postponed message"
++OP_RECONSTRUCT_THREAD "reconstruct thread containing current message"
+ OP_REDRAW "clear and redraw the screen"
+ OP_REFORMAT_WINCH "{internal}"
+ OP_RENAME_MAILBOX "rename the current mailbox (IMAP only)"
+@@ -160,18 +175,22 @@ OP_SEARCH_TOGGLE "toggle search pattern
+ OP_SHELL_ESCAPE "invoke a command in a subshell"
+ OP_SORT "sort messages"
+ OP_SORT_REVERSE "sort messages in reverse order"
++OP_SUBSCRIBE_PATTERN "subscribe to newsgroups matching a pattern"
+ OP_TAG "tag the current entry"
+ OP_TAG_PREFIX "apply next function to tagged messages"
+ OP_TAG_PREFIX_COND "apply next function ONLY to tagged messages"
+ OP_TAG_SUBTHREAD "tag the current subthread"
+ OP_TAG_THREAD "tag the current thread"
+ OP_TOGGLE_NEW "toggle a message's 'new' flag"
++OP_TOGGLE_READ "toggle view of read messages"
+ OP_TOGGLE_WRITE "toggle whether the mailbox will be rewritten"
+ OP_TOGGLE_MAILBOXES "toggle whether to browse mailboxes or all files"
+ OP_TOP_PAGE "move to the top of the page"
++OP_UNCATCHUP "mark all articles in newsgroup as unread"
+ OP_UNDELETE "undelete the current entry"
+ OP_UNDELETE_THREAD "undelete all messages in thread"
+ OP_UNDELETE_SUBTHREAD "undelete all messages in subthread"
++OP_UNSUBSCRIBE_PATTERN "unsubscribe from newsgroups matching a pattern"
+ OP_VERSION "show the Mutt version number and date"
+ OP_VIEW_ATTACH "view attachment using mailcap entry if necessary"
+ OP_VIEW_ATTACHMENTS "show MIME attachments"
+diff -udprP mutt-1.5.21.orig/PATCHES mutt-1.5.21/PATCHES
+--- mutt-1.5.21.orig/PATCHES 2008-03-19 22:07:06.000000000 +0200
++++ mutt-1.5.21/PATCHES 2010-09-16 13:14:39.000000000 +0300
+@@ -0,0 +1 @@
++vvv.nntp
+diff -udprP mutt-1.5.21.orig/account.c mutt-1.5.21/account.c
+--- mutt-1.5.21.orig/account.c 2009-08-25 22:08:52.000000000 +0300
++++ mutt-1.5.21/account.c 2010-09-16 13:14:39.000000000 +0300
+@@ -51,6 +51,11 @@ int mutt_account_match (const ACCOUNT* a
+ user = PopUser;
+ #endif
+
++#ifdef USE_NNTP
++ if (a1->type == M_ACCT_TYPE_NNTP && NntpUser)
++ user = NntpUser;
++#endif
++
+ if (a1->flags & a2->flags & M_ACCT_USER)
+ return (!strcmp (a1->user, a2->user));
+ if (a1->flags & M_ACCT_USER)
+@@ -130,6 +135,16 @@ void mutt_account_tourl (ACCOUNT* accoun
+ }
+ #endif
-@@ -73,6 +74,7 @@ EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP O
- mutt_regex.h mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h \
- mx.h pager.h pgp.h pop.h protos.h rfc1524.h rfc2047.h \
- rfc2231.h rfc822.h rfc3676.h sha1.h sort.h mime.types VERSION prepare \
-+ nntp.h ChangeLog.nntp \
- _regex.h OPS.MIX README.SECURITY remailer.c remailer.h browser.h \
- mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h Muttrc.head Muttrc \
- makedoc.c makedoc-defs.h stamp-doc-rc README.SSL smime.h \
-diff -udprP mutt-1.5.16.orig/Makefile.in mutt-1.5.16/Makefile.in
---- mutt-1.5.16.orig/Makefile.in 2007-06-10 05:43:26.000000000 +0300
-+++ mutt-1.5.16/Makefile.in 2007-06-15 17:12:26.000000000 +0300
-@@ -331,6 +331,7 @@ EXTRA_mutt_SOURCES = account.c md5c.c mu
- smtp.c browser.h mbyte.h remailer.h url.h \
- crypt-mod-pgp-classic.c crypt-mod-smime-classic.c \
- pgppacket.c mutt_idna.h hcache.h hcache.c bcache.c bcache.h mutt_ssl_gnutls.c \
-+ nntp.c newsrc.c \
- crypt-gpgme.c crypt-mod-pgp-gpgme.c crypt-mod-smime-gpgme.c \
- utf8.c wcwidth.c
-
-@@ -342,6 +343,7 @@ EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP O
- mutt_regex.h mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h \
- mx.h pager.h pgp.h pop.h protos.h rfc1524.h rfc2047.h \
- rfc2231.h rfc822.h rfc3676.h sha1.h sort.h mime.types VERSION prepare \
-+ nntp.h ChangeLog.nntp \
- _regex.h OPS.MIX README.SECURITY remailer.c remailer.h browser.h \
- mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h Muttrc.head Muttrc \
- makedoc.c makedoc-defs.h stamp-doc-rc README.SSL smime.h \
-@@ -557,6 +559,8 @@ distclean-compile:
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutt_tunnel.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/muttlib.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mx.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newsrc.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nntp.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pager.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/patchlist.Po@am__quote@
---- mutt-1.5.18.orig/doc/Muttrc 2007-06-10 06:29:25.000000000 +0300
-+++ mutt-1.5.18/doc/Muttrc 2007-06-15 17:12:26.000000000 +0300
-@@ -266,6 +266,28 @@ attachments -I message/external-body
- # if included.
- #
- #
-+# set ask_follow_up=no
-+#
-+# Name: ask_follow_up
-+# Type: boolean
-+# Default: no
-+#
-+#
-+# If set, Mutt will prompt you for follow-up groups before editing
-+# the body of an outgoing message.
-+#
-+#
-+# set ask_x_comment_to=no
-+#
-+# Name: ask_x_comment_to
-+# Type: boolean
-+# Default: no
-+#
-+#
-+# If set, Mutt will prompt you for x-comment-to field before editing
-+# the body of an outgoing message.
-+#
-+#
- # set attach_format="%u%D%I %t%4n %T%.40d%> [%.7m/%.10M, %.6e%?C?, %C?, %s] "
- #
- # Name: attach_format
-@@ -433,6 +455,17 @@ attachments -I message/external-body
- # access time when checking for new mail.
- #
- #
-+# set catchup_newsgroup=ask-yes
-+#
-+# Name: catchup_newsgroup
-+# Type: quadoption
-+# Default: ask-yes
-+#
-+#
-+# If this variable is set, Mutt will mark all articles in newsgroup
-+# as read when you quit the newsgroup (catchup newsgroup).
-+#
-+#
- # set charset=""
- #
- # Name: charset
-@@ -930,6 +963,19 @@ attachments -I message/external-body
- # of the same email for you.
- #
- #
-+# set followup_to_poster=ask-yes
-+#
-+# Name: followup_to_poster
-+# Type: quadoption
-+# Default: ask-yes
-+#
-+#
-+# If this variable is set and the keyword "poster" is present in
-+# Followup-To header, follow-up to newsgroup function is not
-+# permitted. The message will be mailed to the submitter of the
-+# message via mail.
-+#
-+#
- # set force_name=no
- #
- # Name: force_name
-@@ -1027,6 +1073,28 @@ attachments -I message/external-body
- # "Franklin" to "Franklin, Steve".
- #
- #
-+# set group_index_format="%4C %M%N %5s %-45.45f %d"
-+#
-+# Name: group_index_format
-+# Type: string
-+# Default: "%4C %M%N %5s %-45.45f %d"
-+#
-+#
-+# This variable allows you to customize the newsgroup browser display to
-+# your personal taste. This string is similar to ``index_format'', but
-+# has its own set of printf()-like sequences:
-+#
-+# %C current newsgroup number
-+# %d description of newsgroup (becomes from server)
-+# %f newsgroup name
-+# %M - if newsgroup not allowed for direct post (moderated for example)
-+# %N N if newsgroup is new, u if unsubscribed, blank otherwise
-+# %n number of new articles in newsgroup
-+# %s number of unread articles in newsgroup
-+# %>X right justify the rest of the string and pad with character "X"
-+# %|X pad to the end of the line with character "X"
-+#
-+#
- # set hdrs=yes
- #
- # Name: hdrs
-@@ -1472,6 +1540,7 @@ attachments -I message/external-body
- # %E number of messages in current thread
- # %f entire From: line (address + real name)
- # %F author name, or recipient name if the message is from you
-+# %g newsgroup name (if compiled with nntp support)
- # %H spam attribute(s) of this message
- # %i message-id of the current message
- # %l number of lines in the message (does not work with maildir,
-@@ -1486,12 +1555,14 @@ attachments -I message/external-body
- # %O (_O_riginal save folder) Where mutt would formerly have
- # stashed the message: list name or recipient name if no list
- # %P progress indicator for the builtin pager (how much of the file has been displayed)
-+# %R `x-comment-to:' field (if present and compiled with nntp support)
- # %s subject of the message
- # %S status of the message (N/D/d/!/r/*)
- # %t `to:' field (recipients)
- # %T the appropriate character from the $to_chars string
- # %u user (login) name of the author
- # %v first name of the author, or the recipient if the message is from you
-+# %W name of organization of author (`organization:' field)
- # %X number of attachments
- # (please see the ``attachments'' section for possible speed effects)
- # %y `x-label:' field, if present
-@@ -1517,6 +1588,22 @@ attachments -I message/external-body
- # See also: ``$to_chars''.
- #
- #
-+# set inews=""
-+#
-+# Name: inews
-+# Type: path
-+# Default: ""
-+#
-+#
-+# If set, specifies the program and arguments used to deliver news posted
-+# by Mutt. Otherwise, mutt posts article using current connection to
-+# news server. The following printf-style sequence is understood:
-+#
-+# %s newsserver name
-+#
-+# Example: set inews="/usr/local/bin/inews -hS"
-+#
-+#
- # set ispell="ispell"
- #
- # Name: ispell
-@@ -1860,6 +1947,18 @@ attachments -I message/external-body
- # be attached to the newly composed message if this option is set.
- #
- #
-+# set mime_subject=yes
-+#
-+# Name: mime_subject
-+# Type: boolean
-+# Default: yes
-+#
-+#
-+# If unset, 8-bit ``subject:'' line in article header will not be
-+# encoded according to RFC2047 to base64. This is useful when message
-+# is Usenet article, because MIME for news is nonstandard feature.
-+#
-+#
- # set mix_entry_format="%4n %c %-16s %a"
- #
- # Name: mix_entry_format
-@@ -1964,6 +2063,118 @@ attachments -I message/external-body
- # See also ``$read_inc'' and ``$write_inc''.
- #
- #
-+# set news_cache_dir="~/.mutt"
-+#
-+# Name: news_cache_dir
-+# Type: path
-+# Default: "~/.mutt"
-+#
-+#
-+# This variable pointing to directory where Mutt will save cached news
-+# articles headers in. If unset, headers will not be saved at all
-+# and will be reloaded each time when you enter to newsgroup.
-+#
-+#
-+# set news_server=""
-+#
-+# Name: news_server
-+# Type: string
-+# Default: ""
-+#
-+#
-+# This variable specifies domain name or address of NNTP server. It
-+# defaults to the newsserver specified in the environment variable
-+# $NNTPSERVER or contained in the file /etc/nntpserver. You can also
-+# specify username and an alternative port for each newsserver, ie:
-+#
-+# [news[s]://][username[:password]@]newsserver[:port]
-+#
-+#
-+# set newsrc="~/.newsrc"
-+#
-+# Name: newsrc
-+# Type: path
-+# Default: "~/.newsrc"
-+#
-+#
-+# The file, containing info about subscribed newsgroups - names and
-+# indexes of read articles. The following printf-style sequence
-+# is understood:
-+#
-+# %s newsserver name
-+#
-+#
-+# set nntp_context=1000
-+#
-+# Name: nntp_context
-+# Type: number
-+# Default: 1000
-+#
-+#
-+# This variable defines number of articles which will be in index when
-+# newsgroup entered. If active newsgroup have more articles than this
-+# number, oldest articles will be ignored. Also controls how many
-+# articles headers will be saved in cache when you quit newsgroup.
-+#
-+#
-+# set nntp_load_description=yes
-+#
-+# Name: nntp_load_description
-+# Type: boolean
-+# Default: yes
-+#
-+#
-+# This variable controls whether or not descriptions for each newsgroup
-+# must be loaded when newsgroup is added to list (first time list
-+# loading or new newsgroup adding).
-+#
-+#
-+# set nntp_user=""
-+#
-+# Name: nntp_user
-+# Type: string
-+# Default: ""
-+#
-+#
-+# Your login name on the NNTP server. If unset and NNTP server requires
-+# authentification, Mutt will prompt you for your account name when you
-+# connect to newsserver.
-+#
-+#
-+# set nntp_pass=""
-+#
-+# Name: nntp_pass
-+# Type: string
-+# Default: ""
-+#
-+#
-+# Your password for NNTP account.
-+#
-+#
-+# set nntp_poll=60
-+#
-+# Name: nntp_poll
-+# Type: number
-+# Default: 60
-+#
-+#
-+# The time in seconds until any operations on newsgroup except post new
-+# article will cause recheck for new news. If set to 0, Mutt will
-+# recheck newsgroup on each operation in index (stepping, read article,
-+# etc.).
-+#
-+#
-+# set nntp_reconnect=ask-yes
-+#
-+# Name: nntp_reconnect
-+# Type: quadoption
-+# Default: ask-yes
-+#
-+#
-+# Controls whether or not Mutt will try to reconnect to newsserver when
-+# connection lost.
-+#
-+#
- # set pager="builtin"
- #
- # Name: pager
-@@ -3167,6 +3378,19 @@ attachments -I message/external-body
- # string after the inclusion of a message which is being replied to.
- #
- #
-+# set post_moderated=ask-yes
-+#
-+# Name: post_moderated
-+# Type: quadoption
-+# Default: ask-yes
-+#
-+#
-+# If set to yes, Mutt will post article to newsgroup that have
-+# not permissions to posting (e.g. moderated). Note: if newsserver
-+# does not support posting to that newsgroup or totally read-only, that
-+# posting will not have an effect.
-+#
-+#
- # set postpone=ask-yes
- #
- # Name: postpone
-@@ -3692,6 +3916,41 @@ attachments -I message/external-body
- # shell from /etc/passwd is used.
- #
- #
-+# set save_unsubscribed=no
-+#
-+# Name: save_unsubscribed
-+# Type: boolean
-+# Default: no
-+#
-+#
-+# When set, info about unsubscribed newsgroups will be saved into
-+# ``newsrc'' file and into cache.
-+#
-+#
-+# set show_new_news=yes
-+#
-+# Name: show_new_news
-+# Type: boolean
-+# Default: yes
-+#
-+#
-+# If set, newsserver will be asked for new newsgroups on entering
-+# the browser. Otherwise, it will be done only once for a newsserver.
-+# Also controls whether or not number of new articles of subscribed
-+# newsgroups will be then checked.
-+#
-+#
-+# set show_only_unread=no
-+#
-+# Name: show_only_unread
-+# Type: boolean
-+# Default: no
-+#
-+#
-+# If set, only subscribed newsgroups that contain unread articles
-+# will be displayed in browser.
-+#
-+#
- # set sig_dashes=yes
- #
- # Name: sig_dashes
-@@ -4405,3 +4664,14 @@ attachments -I message/external-body
- # in this case.
- #
- #
-+# set x_comment_to=no
-+#
-+# Name: x_comment_to
-+# Type: boolean
-+# Default: no
-+#
-+#
-+# If set, Mutt will add ``X-Comment-To:'' field (that contains full
-+# name of original article author) to article that followuped to newsgroup.
-+#
-+#
-diff -udprP mutt-1.5.16.orig/OPS mutt-1.5.16/OPS
---- mutt-1.5.16.orig/OPS 2007-05-14 20:09:59.000000000 +0300
-+++ mutt-1.5.16/OPS 2007-06-15 17:12:26.000000000 +0300
-@@ -8,14 +8,16 @@ OP_BOUNCE_MESSAGE "remail a message to a
- OP_BROWSER_NEW_FILE "select a new file in this directory"
- OP_BROWSER_VIEW_FILE "view file"
- OP_BROWSER_TELL "display the currently selected file's name"
--OP_BROWSER_SUBSCRIBE "subscribe to current mailbox (IMAP only)"
--OP_BROWSER_UNSUBSCRIBE "unsubscribe from current mailbox (IMAP only)"
-+OP_BROWSER_SUBSCRIBE "subscribe to current mbox (IMAP/NNTP only)"
-+OP_BROWSER_UNSUBSCRIBE "unsubscribe from current mbox (IMAP/NNTP only)"
- OP_BROWSER_TOGGLE_LSUB "toggle view all/subscribed mailboxes (IMAP only)"
- OP_BUFFY_LIST "list mailboxes with new mail"
-+OP_CATCHUP "mark all articles in newsgroup as read"
- OP_CHANGE_DIRECTORY "change directories"
- OP_CHECK_NEW "check mailboxes for new mail"
- OP_COMPOSE_ATTACH_FILE "attach file(s) to this message"
- OP_COMPOSE_ATTACH_MESSAGE "attach message(s) to this message"
-+OP_COMPOSE_ATTACH_NEWS_MESSAGE "attach newsmessage(s) to this message"
- OP_COMPOSE_EDIT_BCC "edit the BCC list"
- OP_COMPOSE_EDIT_CC "edit the CC list"
- OP_COMPOSE_EDIT_DESCRIPTION "edit attachment description"
-@@ -26,7 +28,10 @@ OP_COMPOSE_EDIT_FROM "edit the from fiel
- OP_COMPOSE_EDIT_HEADERS "edit the message with headers"
- OP_COMPOSE_EDIT_MESSAGE "edit the message"
- OP_COMPOSE_EDIT_MIME "edit attachment using mailcap entry"
-+OP_COMPOSE_EDIT_NEWSGROUPS "edit the newsgroups list"
- OP_COMPOSE_EDIT_REPLY_TO "edit the Reply-To field"
-+OP_COMPOSE_EDIT_FOLLOWUP_TO "edit the Followup-To field"
-+OP_COMPOSE_EDIT_X_COMMENT_TO "edit the X-Comment-To field"
- OP_COMPOSE_EDIT_SUBJECT "edit the subject of this message"
- OP_COMPOSE_EDIT_TO "edit the TO list"
- OP_CREATE_MAILBOX "create a new mailbox (IMAP only)"
-@@ -85,8 +90,13 @@ OP_EXIT "exit this menu"
- OP_FILTER "filter attachment through a shell command"
- OP_FIRST_ENTRY "move to the first entry"
- OP_FLAG_MESSAGE "toggle a message's 'important' flag"
-+OP_FOLLOWUP "followup to newsgroup"
-+OP_FORWARD_TO_GROUP "forward to newsgroup"
- OP_FORWARD_MESSAGE "forward a message with comments"
- OP_GENERIC_SELECT_ENTRY "select the current entry"
-+OP_GET_CHILDREN "get all children of the current message"
-+OP_GET_MESSAGE "get message with Message-Id"
-+OP_GET_PARENT "get parent of the current message"
- OP_GROUP_REPLY "reply to all recipients"
- OP_HALF_DOWN "scroll down 1/2 page"
- OP_HALF_UP "scroll up 1/2 page"
-@@ -94,11 +104,14 @@ OP_HELP "this screen"
- OP_JUMP "jump to an index number"
- OP_LAST_ENTRY "move to the last entry"
- OP_LIST_REPLY "reply to specified mailing list"
-+OP_LOAD_ACTIVE "load active file from NNTP server"
- OP_MACRO "execute a macro"
- OP_MAIL "compose a new mail message"
- OP_MAIN_BREAK_THREAD "break the thread in two"
- OP_MAIN_CHANGE_FOLDER "open a different folder"
- OP_MAIN_CHANGE_FOLDER_READONLY "open a different folder in read only mode"
-+OP_MAIN_CHANGE_GROUP "open a different newsgroup"
-+OP_MAIN_CHANGE_GROUP_READONLY "open a different newsgroup in read only mode"
- OP_MAIN_CLEAR_FLAG "clear a status flag from a message"
- OP_MAIN_DELETE_PATTERN "delete messages matching a pattern"
- OP_MAIN_IMAP_FETCH "force retrieval of mail from IMAP server"
-@@ -137,6 +150,7 @@ OP_PAGER_HIDE_QUOTED "toggle display of
- OP_PAGER_SKIP_QUOTED "skip beyond quoted text"
- OP_PAGER_TOP "jump to the top of the message"
- OP_PIPE "pipe message/attachment to a shell command"
-+OP_POST "post message to newsgroup"
- OP_PREV_ENTRY "move to the previous entry"
- OP_PREV_LINE "scroll up one line"
- OP_PREV_PAGE "move to the previous page"
-@@ -145,6 +159,7 @@ OP_QUERY "query external program for add
- OP_QUERY_APPEND "append new query results to current results"
- OP_QUIT "save changes to mailbox and quit"
- OP_RECALL_MESSAGE "recall a postponed message"
-+OP_RECONSTRUCT_THREAD "reconstruct thread containing current message"
- OP_REDRAW "clear and redraw the screen"
- OP_REFORMAT_WINCH "{internal}"
- OP_RENAME_MAILBOX "rename the current mailbox (IMAP only)"
-@@ -159,18 +174,22 @@ OP_SEARCH_TOGGLE "toggle search pattern
- OP_SHELL_ESCAPE "invoke a command in a subshell"
- OP_SORT "sort messages"
- OP_SORT_REVERSE "sort messages in reverse order"
-+OP_SUBSCRIBE_PATTERN "subscribe to newsgroups matching a pattern"
- OP_TAG "tag the current entry"
- OP_TAG_PREFIX "apply next function to tagged messages"
- OP_TAG_PREFIX_COND "apply next function ONLY to tagged messages"
- OP_TAG_SUBTHREAD "tag the current subthread"
- OP_TAG_THREAD "tag the current thread"
- OP_TOGGLE_NEW "toggle a message's 'new' flag"
-+OP_TOGGLE_READ "toggle view of read messages"
- OP_TOGGLE_WRITE "toggle whether the mailbox will be rewritten"
- OP_TOGGLE_MAILBOXES "toggle whether to browse mailboxes or all files"
- OP_TOP_PAGE "move to the top of the page"
-+OP_UNCATCHUP "mark all articles in newsgroup as unread"
- OP_UNDELETE "undelete the current entry"
- OP_UNDELETE_THREAD "undelete all messages in thread"
- OP_UNDELETE_SUBTHREAD "undelete all messages in subthread"
-+OP_UNSUBSCRIBE_PATTERN "unsubscribe from newsgroups matching a pattern"
- OP_VERSION "show the Mutt version number and date"
- OP_VIEW_ATTACH "view attachment using mailcap entry if necessary"
- OP_VIEW_ATTACHMENTS "show MIME attachments"
-diff -udprP mutt-1.5.16.orig/PATCHES mutt-1.5.16/PATCHES
---- mutt-1.5.16.orig/PATCHES 2007-04-30 05:07:48.000000000 +0300
-+++ mutt-1.5.16/PATCHES 2007-06-15 17:12:26.000000000 +0300
-@@ -0,0 +1 @@
-+vvv.nntp
-diff -udprP mutt-1.5.16.orig/account.c mutt-1.5.16/account.c
---- mutt-1.5.16.orig/account.c 2007-04-11 23:28:23.000000000 +0300
-+++ mutt-1.5.16/account.c 2007-06-15 17:12:26.000000000 +0300
-@@ -54,6 +54,11 @@ int mutt_account_match (const ACCOUNT* a
- user = PopUser;
- #endif
-
-+#ifdef USE_NNTP
-+ if (a1->type == M_ACCT_TYPE_NNTP && NntpUser)
-+ user = NntpUser;
-+#endif
-+
- if (a1->flags & a2->flags & M_ACCT_USER)
- return (!strcmp (a1->user, a2->user));
- if (a1->flags & M_ACCT_USER)
-@@ -133,6 +138,16 @@ void mutt_account_tourl (ACCOUNT* accoun
- }
- #endif
-
-+#ifdef USE_NNTP
-+ if (account->type == M_ACCT_TYPE_NNTP)
-+ {
-+ if (account->flags & M_ACCT_SSL)
-+ url->scheme = U_NNTPS;
-+ else
-+ url->scheme = U_NNTP;
-+ }
-+#endif
-+
- url->host = account->host;
- if (account->flags & M_ACCT_PORT)
- url->port = account->port;
-@@ -158,6 +173,10 @@ int mutt_account_getuser (ACCOUNT* accou
- else if ((account->type == M_ACCT_TYPE_POP) && PopUser)
- strfcpy (account->user, PopUser, sizeof (account->user));
- #endif
-+#ifdef USE_NNTP
-+ else if ((account->type == M_ACCT_TYPE_NNTP) && NntpUser)
-+ strfcpy (account->user, NntpUser, sizeof (account->user));
-+#endif
- /* prompt (defaults to unix username), copy into account->user */
- else
- {
-@@ -218,6 +237,10 @@ int mutt_account_getpass (ACCOUNT* accou
- else if ((account->type == M_ACCT_TYPE_SMTP) && SmtpPass)
- strfcpy (account->pass, SmtpPass, sizeof (account->pass));
- #endif
-+#ifdef USE_NNTP
-+ else if ((account->type == M_ACCT_TYPE_NNTP) && NntpPass)
-+ strfcpy (account->pass, NntpPass, sizeof (account->pass));
-+#endif
- else
- {
- snprintf (prompt, sizeof (prompt), _("Password for %s@%s: "),
-diff -udprP mutt-1.5.16.orig/account.h mutt-1.5.16/account.h
---- mutt-1.5.16.orig/account.h 2007-04-02 00:58:55.000000000 +0300
-+++ mutt-1.5.16/account.h 2007-06-15 17:12:26.000000000 +0300
-@@ -29,7 +29,8 @@ enum
- M_ACCT_TYPE_NONE = 0,
- M_ACCT_TYPE_IMAP,
- M_ACCT_TYPE_POP,
-- M_ACCT_TYPE_SMTP
-+ M_ACCT_TYPE_SMTP,
-+ M_ACCT_TYPE_NNTP
- };
++#ifdef USE_NNTP
++ if (account->type == M_ACCT_TYPE_NNTP)
++ {
++ if (account->flags & M_ACCT_SSL)
++ url->scheme = U_NNTPS;
++ else
++ url->scheme = U_NNTP;
++ }
++#endif
++
+ url->host = account->host;
+ if (account->flags & M_ACCT_PORT)
+ url->port = account->port;
+@@ -155,6 +170,10 @@ int mutt_account_getuser (ACCOUNT* accou
+ else if ((account->type == M_ACCT_TYPE_POP) && PopUser)
+ strfcpy (account->user, PopUser, sizeof (account->user));
+ #endif
++#ifdef USE_NNTP
++ else if ((account->type == M_ACCT_TYPE_NNTP) && NntpUser)
++ strfcpy (account->user, NntpUser, sizeof (account->user));
++#endif
+ else if (option (OPTNOCURSES))
+ return -1;
+ /* prompt (defaults to unix username), copy into account->user */
+@@ -217,6 +236,10 @@ int mutt_account_getpass (ACCOUNT* accou
+ else if ((account->type == M_ACCT_TYPE_SMTP) && SmtpPass)
+ strfcpy (account->pass, SmtpPass, sizeof (account->pass));
+ #endif
++#ifdef USE_NNTP
++ else if ((account->type == M_ACCT_TYPE_NNTP) && NntpPass)
++ strfcpy (account->pass, NntpPass, sizeof (account->pass));
++#endif
+ else if (option (OPTNOCURSES))
+ return -1;
+ else
+diff -udprP mutt-1.5.21.orig/account.h mutt-1.5.21/account.h
+--- mutt-1.5.21.orig/account.h 2008-03-19 22:07:06.000000000 +0200
++++ mutt-1.5.21/account.h 2010-09-16 13:14:39.000000000 +0300
+@@ -29,7 +29,8 @@ enum
+ M_ACCT_TYPE_NONE = 0,
+ M_ACCT_TYPE_IMAP,
+ M_ACCT_TYPE_POP,
+- M_ACCT_TYPE_SMTP
++ M_ACCT_TYPE_SMTP,
++ M_ACCT_TYPE_NNTP
+ };
/* account flags */
-diff -udprP mutt-1.5.16.orig/attach.h mutt-1.5.16/attach.h
---- mutt-1.5.16.orig/attach.h 2007-04-02 00:58:55.000000000 +0300
-+++ mutt-1.5.16/attach.h 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/attach.h mutt-1.5.21/attach.h
+--- mutt-1.5.21.orig/attach.h 2008-03-19 22:07:06.000000000 +0200
++++ mutt-1.5.21/attach.h 2010-09-16 13:14:39.000000000 +0300
@@ -50,7 +50,7 @@ void mutt_print_attachment_list (FILE *f
void mutt_attach_bounce (FILE *, HEADER *, ATTACHPTR **, short, BODY *);
void mutt_attach_reply (FILE *, HEADER *, ATTACHPTR **, short, BODY *, int);
#endif /* _ATTACH_H_ */
-diff -udprP mutt-1.5.16.orig/browser.c mutt-1.5.16/browser.c
---- mutt-1.5.16.orig/browser.c 2007-04-16 02:56:26.000000000 +0300
-+++ mutt-1.5.16/browser.c 2007-06-15 17:12:38.000000000 +0300
+diff -udprP mutt-1.5.21.orig/browser.c mutt-1.5.21/browser.c
+--- mutt-1.5.21.orig/browser.c 2010-08-25 19:31:40.000000000 +0300
++++ mutt-1.5.21/browser.c 2010-09-16 13:14:39.000000000 +0300
@@ -32,6 +32,9 @@
#ifdef USE_IMAP
#include "imap.h"
#include <stdlib.h>
#include <dirent.h>
-@@ -49,6 +52,19 @@ static struct mapping_t FolderHelp[] = {
- { NULL }
+@@ -50,6 +53,19 @@ static struct mapping_t FolderHelp[] = {
+ { NULL, 0 }
};
+#ifdef USE_NNTP
typedef struct folder_t
{
struct folder_file *ff;
-@@ -114,9 +130,17 @@ static void browser_sort (struct browser
+@@ -115,9 +131,17 @@ static void browser_sort (struct browser
case SORT_ORDER:
return;
case SORT_DATE:
f = browser_compare_size;
break;
case SORT_SUBJECT:
-@@ -307,8 +331,106 @@ folder_format_str (char *dest, size_t de
+@@ -324,8 +348,106 @@ folder_format_str (char *dest, size_t de
return (src);
}
{
if (state->entrylen == state->entrymax)
{
-@@ -337,6 +459,10 @@ static void add_folder (MUTTMENU *m, str
+@@ -354,6 +476,10 @@ static void add_folder (MUTTMENU *m, str
#ifdef USE_IMAP
(state->entry)[state->entrylen].imap = 0;
#endif
(state->entrylen)++;
}
-@@ -352,9 +478,35 @@ static void init_state (struct browser_s
+@@ -369,9 +495,35 @@ static void init_state (struct browser_s
menu->data = state->entry;
}
struct stat s;
DIR *dp;
struct dirent *de;
-@@ -415,17 +567,40 @@ static int examine_directory (MUTTMENU *
+@@ -432,17 +584,40 @@ static int examine_directory (MUTTMENU *
tmp = Incoming;
while (tmp && mutt_strcmp (buffer, tmp->path))
tmp = tmp->next;
BUFFY *tmp = Incoming;
#ifdef USE_IMAP
struct mailbox_state mbox;
-@@ -443,14 +618,21 @@ static int examine_mailboxes (MUTTMENU *
+@@ -460,14 +635,21 @@ static int examine_mailboxes (MUTTMENU *
if (mx_is_imap (tmp->path))
{
imap_mailbox_state (tmp->path, &mbox);
continue;
}
#endif
-@@ -464,15 +646,20 @@ static int examine_mailboxes (MUTTMENU *
+@@ -496,15 +678,20 @@ static int examine_mailboxes (MUTTMENU *
strfcpy (buffer, NONULL(tmp->path), sizeof (buffer));
- mutt_pretty_mailbox (buffer);
+ mutt_pretty_mailbox (buffer, sizeof (buffer));
- add_folder (menu, state, buffer, &s, tmp->new);
+ add_folder (menu, state, buffer, &s, NULL, tmp->new);
return (regexec (re, ((struct folder_file *) menu->data)[n].name, 0, NULL, 0));
}
-@@ -483,6 +670,12 @@ static void folder_entry (char *s, size_
+@@ -515,6 +702,12 @@ static void folder_entry (char *s, size_
folder.ff = &((struct folder_file *) menu->data)[num];
folder.num = num;
mutt_FormatString (s, slen, 0, NONULL(FolderFormat), folder_format_str,
(unsigned long) &folder, M_FORMAT_ARROWCURSOR);
}
-@@ -503,6 +696,17 @@ static void init_menu (struct browser_st
+@@ -535,6 +728,17 @@ static void init_menu (struct browser_st
menu->tagged = 0;
if (buffy)
snprintf (title, titlelen, _("Mailboxes [%d]"), mutt_buffy_check (0));
else
-@@ -558,6 +762,31 @@ void _mutt_select_file (char *f, size_t
+@@ -590,6 +794,31 @@ void _mutt_select_file (char *f, size_t
if (!folder)
strfcpy (LastDirBackup, LastDir, sizeof (LastDirBackup));
if (*f)
{
mutt_expand_path (f, flen);
-@@ -655,6 +884,9 @@ void _mutt_select_file (char *f, size_t
+@@ -686,6 +915,9 @@ void _mutt_select_file (char *f, size_t
menu->tag = file_tag;
menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_FOLDER,
FolderHelp);
init_menu (&state, menu, title, sizeof (title), buffy);
-@@ -793,7 +1025,11 @@ void _mutt_select_file (char *f, size_t
+@@ -824,7 +1056,11 @@ void _mutt_select_file (char *f, size_t
}
}
{
strfcpy (f, state.entry[menu->current].name, flen);
mutt_expand_path (f, flen);
-@@ -851,14 +1087,6 @@ void _mutt_select_file (char *f, size_t
+@@ -882,14 +1118,6 @@ void _mutt_select_file (char *f, size_t
break;
#ifdef USE_IMAP
-
case OP_BROWSER_TOGGLE_LSUB:
if (option (OPTIMAPLSUB))
- {
-@@ -957,6 +1185,11 @@ void _mutt_select_file (char *f, size_t
+ unset_option (OPTIMAPLSUB);
+@@ -990,6 +1218,11 @@ void _mutt_select_file (char *f, size_t
case OP_CHANGE_DIRECTORY:
strfcpy (buf, LastDir, sizeof (buf));
#ifdef USE_IMAP
if (!state.imap_browse)
-@@ -1213,6 +1446,190 @@ void _mutt_select_file (char *f, size_t
+@@ -1255,6 +1488,190 @@ void _mutt_select_file (char *f, size_t
else
mutt_error _("Error trying to view file");
}
}
}
---- mutt-1.5.18/browser.h.orig 2008-01-30 05:26:49.000000000 +0100
-+++ mutt-1.5.18/browser.h 2008-07-25 17:49:27.844750139 +0200
-@@ -20,6 +20,10 @@
+diff -udprP mutt-1.5.21.orig/browser.h mutt-1.5.21/browser.h
+--- mutt-1.5.21.orig/browser.h 2009-01-05 21:20:53.000000000 +0200
++++ mutt-1.5.21/browser.h 2010-09-16 13:14:39.000000000 +0300
+@@ -19,6 +19,10 @@
#ifndef _BROWSER_H
#define _BROWSER_H 1
struct folder_file
{
mode_t mode;
-@@ -38,6 +42,9 @@
+@@ -37,6 +41,9 @@ struct folder_file
unsigned selectable : 1;
unsigned inferiors : 1;
#endif
unsigned tagged : 1;
};
-diff -udprP mutt-1.5.16.orig/buffy.c mutt-1.5.16/buffy.c
---- mutt-1.5.16.orig/buffy.c 2007-04-02 00:58:55.000000000 +0300
-+++ mutt-1.5.16/buffy.c 2007-06-15 17:12:26.000000000 +0300
-@@ -285,6 +285,9 @@ int mutt_buffy_check (int force)
- #ifdef USE_POP
- if (!Context || Context->magic != M_POP)
- #endif
+diff -udprP mutt-1.5.21.orig/buffy.c mutt-1.5.21/buffy.c
+--- mutt-1.5.21.orig/buffy.c 2010-09-13 20:19:55.000000000 +0300
++++ mutt-1.5.21/buffy.c 2010-09-16 13:14:39.000000000 +0300
+@@ -405,6 +405,9 @@ int mutt_buffy_check (int force)
+
+ /* check device ID and serial number instead of comparing paths */
+ if (!Context || Context->magic == M_IMAP || Context->magic == M_POP
+#ifdef USE_NNTP
-+ if (!Context || Context->magic != M_NNTP)
++ || Context->magic == M_NNTP
+#endif
- /* check device ID and serial number instead of comparing paths */
- if (!Context || !Context->path || stat (Context->path, &contex_sb) != 0)
+ || stat (Context->path, &contex_sb) != 0)
{
-@@ -308,6 +311,11 @@ int mutt_buffy_check (int force)
- tmp->magic = M_POP;
- else
+ contex_sb.st_dev=0;
+@@ -421,6 +424,11 @@ int mutt_buffy_check (int force)
+ tmp->magic = M_POP;
+ else
#endif
+#ifdef USE_NNTP
-+ if ((tmp->magic == M_NNTP) || mx_is_nntp (tmp->path))
-+ tmp->magic = M_NNTP;
-+ else
++ if ((tmp->magic == M_NNTP) || mx_is_nntp (tmp->path))
++ tmp->magic = M_NNTP;
++ else
+#endif
- if (stat (tmp->path, &sb) != 0 || sb.st_size == 0 ||
- (!tmp->magic && (tmp->magic = mx_get_magic (tmp->path)) <= 0))
- {
-@@ -325,25 +333,21 @@ int mutt_buffy_check (int force)
+ if (stat (tmp->path, &sb) != 0 || (S_ISREG(sb.st_mode) && sb.st_size == 0) ||
+ (!tmp->magic && (tmp->magic = mx_get_magic (tmp->path)) <= 0))
+ {
+@@ -436,8 +444,11 @@ int mutt_buffy_check (int force)
/* check to see if the folder is the currently selected folder
* before polling */
if (!Context || !Context->path ||
--#if defined USE_IMAP || defined USE_POP
-- ((
-+ (
-+ (0
- #ifdef USE_IMAP
-- tmp->magic == M_IMAP
-+ || tmp->magic == M_IMAP
- #endif
- #ifdef USE_POP
--#ifdef USE_IMAP
-- ||
--#endif
-- tmp->magic == M_POP
--#endif
-- ) ? mutt_strcmp (tmp->path, Context->path) :
-+ || tmp->magic == M_POP
- #endif
-- (sb.st_dev != contex_sb.st_dev || sb.st_ino != contex_sb.st_ino)
--#if defined USE_IMAP || defined USE_POP
-- )
+- (( tmp->magic == M_IMAP || tmp->magic == M_POP )
+- ? mutt_strcmp (tmp->path, Context->path) :
++ (( tmp->magic == M_IMAP || tmp->magic == M_POP
+#ifdef USE_NNTP
+ || tmp->magic == M_NNTP
- #endif
-- )
--
-+ ) ? mutt_strcmp (tmp->path, Context->path) :
-+ (sb.st_dev != contex_sb.st_dev || sb.st_ino != contex_sb.st_ino)
-+ )
-+ )
++#endif
++ ) ? mutt_strcmp (tmp->path, Context->path) :
+ (sb.st_dev != contex_sb.st_dev || sb.st_ino != contex_sb.st_ino)))
{
switch (tmp->magic)
- {
-diff -udprP mutt-1.5.16.orig/complete.c mutt-1.5.16/complete.c
---- mutt-1.5.16.orig/complete.c 2007-04-08 00:39:04.000000000 +0300
-+++ mutt-1.5.16/complete.c 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/complete.c mutt-1.5.21/complete.c
+--- mutt-1.5.21.orig/complete.c 2009-01-05 21:20:53.000000000 +0200
++++ mutt-1.5.21/complete.c 2010-09-16 13:14:39.000000000 +0300
@@ -25,6 +25,9 @@
#include "mailbox.h"
#include "imap.h"
/* we can use '/' as a delimiter, imap_complete rewrites it */
if (*s == '=' || *s == '+' || *s == '!')
{
-diff -udprP mutt-1.5.16.orig/compose.c mutt-1.5.16/compose.c
---- mutt-1.5.16.orig/compose.c 2007-04-16 02:56:26.000000000 +0300
-+++ mutt-1.5.16/compose.c 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/compose.c mutt-1.5.21/compose.c
+--- mutt-1.5.21.orig/compose.c 2010-04-14 21:50:19.000000000 +0300
++++ mutt-1.5.21/compose.c 2010-09-16 13:14:39.000000000 +0300
@@ -32,10 +32,15 @@
#include "mailbox.h"
#include "sort.h"
#include <errno.h>
#include <string.h>
-@@ -67,11 +72,17 @@ enum
+@@ -60,18 +65,21 @@
+ HDR_REPLYTO,
+ HDR_FCC,
+
+-#ifdef MIXMASTER
+- HDR_MIX,
+-#endif
+
HDR_CRYPT,
HDR_CRYPTINFO,
#define W (COLS - HDR_XOFFSET)
static char *Prompts[] =
-@@ -83,6 +91,16 @@ static char *Prompts[] =
+@@ -83,6 +91,16 @@
"Subject: ",
"Reply-To: ",
"Fcc: "
};
static struct mapping_t ComposeHelp[] = {
-@@ -97,6 +115,19 @@ static struct mapping_t ComposeHelp[] =
- { NULL }
+@@ -97,6 +115,19 @@
+ { NULL, 0 }
};
+#ifdef USE_NNTP
static void snd_entry (char *b, size_t blen, MUTTMENU *menu, int num)
{
mutt_FormatString (b, blen, 0, NONULL (AttachFormat), mutt_attach_fmt,
-@@ -115,16 +146,16 @@ static void redraw_crypt_lines (HEADER *
- if ((WithCrypto & APPLICATION_PGP) && (WithCrypto & APPLICATION_SMIME))
- {
- if (!msg->security)
-- mvaddstr (HDR_CRYPT, 0, "Security: ");
-+ mvaddstr (HDR_CRYPT, 0, " Security: ");
- else if (msg->security & APPLICATION_SMIME)
-- mvaddstr (HDR_CRYPT, 0, " S/MIME: ");
-+ mvaddstr (HDR_CRYPT, 0, " S/MIME: ");
- else if (msg->security & APPLICATION_PGP)
-- mvaddstr (HDR_CRYPT, 0, " PGP: ");
-+ mvaddstr (HDR_CRYPT, 0, " PGP: ");
+@@ -112,7 +143,7 @@
+ {
+ int off = 0;
+
+- mvaddstr (HDR_CRYPT, 0, "Security: ");
++ mvprintw (HDR_CRYPT, 0, TITLE_FMT, "Security: ");
+
+ if ((WithCrypto & (APPLICATION_PGP | APPLICATION_SMIME)) == 0)
+ {
+@@ -148,12 +179,15 @@
+ clrtoeol ();
+
+ if ((WithCrypto & APPLICATION_PGP)
+- && msg->security & APPLICATION_PGP && msg->security & SIGN)
+- printw ("%s%s", _(" sign as: "), PgpSignAs ? PgpSignAs : _("<default>"));
++ && msg->security & APPLICATION_PGP && msg->security & SIGN) {
++ printw (TITLE_FMT, _(" sign as: "));
++ printw ("%s", PgpSignAs ? PgpSignAs : _("<default>"));
++ }
+
+ if ((WithCrypto & APPLICATION_SMIME)
+ && msg->security & APPLICATION_SMIME && msg->security & SIGN) {
+- printw ("%s%s", _(" sign as: "), SmimeDefaultKey ? SmimeDefaultKey : _("<default>"));
++ printw (TITLE_FMT, _(" sign as: "));
++ printw ("%s", SmimeDefaultKey ? SmimeDefaultKey : _("<default>"));
}
- else if ((WithCrypto & APPLICATION_SMIME))
-- mvaddstr (HDR_CRYPT, 0, " S/MIME: ");
-+ mvaddstr (HDR_CRYPT, 0, " S/MIME: ");
- else if ((WithCrypto & APPLICATION_PGP))
-- mvaddstr (HDR_CRYPT, 0, " PGP: ");
-+ mvaddstr (HDR_CRYPT, 0, " PGP: ");
- else
- return;
-@@ -252,9 +283,28 @@ static void draw_envelope_addr (int line
+ if ((WithCrypto & APPLICATION_SMIME)
+@@ -175,7 +209,7 @@
+ int c;
+ char *t;
+
+- mvaddstr (HDR_MIX, 0, " Mix: ");
++ mvprintw (HDR_MIX, 0, TITLE_FMT, "Mix: ");
+
+ if (!chain)
+ {
+@@ -249,9 +283,28 @@
static void draw_envelope (HEADER *msg, char *fcc)
{
draw_envelope_addr (HDR_FROM, msg->env->from);
mvprintw (HDR_SUBJECT, 0, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);
mutt_paddstr (W, NONULL (msg->env->subject));
draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to);
-@@ -507,6 +557,12 @@ int mutt_compose_menu (HEADER *msg, /*
+@@ -504,6 +557,12 @@
/* Sort, SortAux could be changed in mutt_index_menu() */
int oldSort, oldSortAux;
struct stat st;
mutt_attach_init (msg->content);
idx = mutt_gen_attach_list (msg->content, -1, idx, &idxlen, &idxmax, 0, 1);
-@@ -518,10 +574,18 @@ int mutt_compose_menu (HEADER *msg, /*
+@@ -514,10 +573,18 @@
menu->make_entry = snd_entry;
menu->tag = mutt_tag_attach;
menu->data = idx;
switch (op = mutt_menuLoop (menu))
{
case OP_REDRAW:
-@@ -534,17 +598,87 @@ int mutt_compose_menu (HEADER *msg, /*
+@@ -530,17 +597,87 @@
mutt_message_hook (NULL, msg, M_SEND2HOOK);
break;
case OP_COMPOSE_EDIT_TO:
case OP_COMPOSE_EDIT_SUBJECT:
if (msg->env->subject)
strfcpy (buf, msg->env->subject, sizeof (buf));
-@@ -707,6 +841,9 @@ int mutt_compose_menu (HEADER *msg, /*
+@@ -703,6 +840,9 @@
break;
case OP_COMPOSE_ATTACH_MESSAGE:
{
char *prompt;
HEADER *h;
-@@ -714,7 +851,22 @@ int mutt_compose_menu (HEADER *msg, /*
+@@ -710,7 +850,22 @@
fname[0] = 0;
prompt = _("Open mailbox to attach message from");
+#endif
{
strfcpy (fname, NONULL (Context->path), sizeof (fname));
- mutt_pretty_mailbox (fname);
-@@ -723,6 +875,11 @@ int mutt_compose_menu (HEADER *msg, /*
+ mutt_pretty_mailbox (fname, sizeof (fname));
+@@ -719,6 +874,11 @@
if (mutt_enter_fname (prompt, fname, sizeof (fname), &menu->redraw, 1) == -1 || !fname[0])
break;
mutt_expand_path (fname, sizeof (fname));
#ifdef USE_IMAP
if (!mx_is_imap (fname))
-@@ -730,6 +887,9 @@ int mutt_compose_menu (HEADER *msg, /*
+@@ -726,6 +886,9 @@
#ifdef USE_POP
if (!mx_is_pop (fname))
#endif
/* check to make sure the file exists and is readable */
if (access (fname, R_OK) == -1)
{
-diff -udprP mutt-1.5.16.orig/config.h.in mutt-1.5.16/config.h.in
---- mutt-1.5.16.orig/config.h.in 2007-06-10 05:44:57.000000000 +0300
-+++ mutt-1.5.16/config.h.in 2007-06-15 17:12:26.000000000 +0300
-@@ -34,6 +34,9 @@
+diff -udprP mutt-1.5.21.orig/config.h.in mutt-1.5.21/config.h.in
+--- mutt-1.5.21.orig/config.h.in 2010-08-25 19:32:03.000000000 +0300
++++ mutt-1.5.21/config.h.in 2010-09-16 13:14:39.000000000 +0300
+@@ -37,6 +37,9 @@
significant more memory when defined. */
#undef EXACT_ADDRESS
/* program to use for shell commands */
#undef EXECSHELL
-diff -udprP mutt-1.5.16.orig/configure mutt-1.5.16/configure
---- mutt-1.5.16.orig/configure 2007-06-10 05:43:29.000000000 +0300
-+++ mutt-1.5.16/configure 2007-06-15 17:12:26.000000000 +0300
-@@ -1342,6 +1342,7 @@ Optional Features:
- Force use of an external dotlock program
- --enable-pop Enable POP3 support
- --enable-imap Enable IMAP support
-+ --enable-nntp Enable NNTP support
- --enable-smtp include internal SMTP relay support
- --enable-debug Enable debugging support
- --enable-flock Use flock() to lock files
-@@ -13919,6 +13920,20 @@ fi
- fi
- done
-
-+# Check whether --enable-nntp or --disable-nntp was given.
-+if test "${enable_nntp+set}" = set; then
-+ enableval="$enable_nntp"
-+ if test x$enableval = xyes ; then
-+ cat >>confdefs.h <<\_ACEOF
-+#define USE_NNTP 1
-+_ACEOF
-+
-+ MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS nntp.o newsrc.o"
-+ need_socket="yes"
-+ fi
-+
-+fi;
-+
-
-
- for ac_func in strftime
-diff -udprP mutt-1.5.16.orig/configure.ac mutt-1.5.16/configure.ac
---- mutt-1.5.16.orig/configure.ac 2007-06-04 07:20:01.000000000 +0300
-+++ mutt-1.5.16/configure.ac 2007-06-15 17:12:26.000000000 +0300
-@@ -584,6 +584,14 @@ if test x"$need_imap" = xyes -o x"$need_
+diff -udprP mutt-1.5.21.orig/configure.ac mutt-1.5.21/configure.ac
+--- mutt-1.5.21.orig/configure.ac 2010-08-24 19:34:21.000000000 +0300
++++ mutt-1.5.21/configure.ac 2010-09-16 13:14:39.000000000 +0300
+@@ -602,6 +602,14 @@ if test x"$need_imap" = xyes -o x"$need_
MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS bcache.o"
fi
dnl -- end socket dependencies --
if test "$need_socket" = "yes"
-diff -udprP mutt-1.5.16.orig/curs_main.c mutt-1.5.16/curs_main.c
---- mutt-1.5.16.orig/curs_main.c 2007-05-20 10:30:00.000000000 +0300
-+++ mutt-1.5.16/curs_main.c 2007-06-15 17:12:41.000000000 +0300
+diff -udprP mutt-1.5.21.orig/curs_main.c mutt-1.5.21/curs_main.c
+--- mutt-1.5.21.orig/curs_main.c 2010-09-13 20:19:55.000000000 +0300
++++ mutt-1.5.21/curs_main.c 2010-09-16 13:14:39.000000000 +0300
@@ -22,6 +22,7 @@
#include "mutt.h"
#include "mutt_curses.h"
+#include "mx.h"
#include "mutt_menu.h"
- #include "attach.h"
#include "mailbox.h"
-@@ -40,6 +41,10 @@
+ #include "mapping.h"
+@@ -38,6 +39,10 @@
#include "mutt_crypt.h"
#include <ctype.h>
#include <stdlib.h>
-@@ -415,12 +420,27 @@ struct mapping_t IndexHelp[] = {
- { NULL }
+@@ -413,12 +418,27 @@ static struct mapping_t IndexHelp[] = {
+ { NULL, 0 }
};
+#ifdef USE_NNTP
int op = OP_NULL;
int done = 0; /* controls when to exit the "event" loop */
int i = 0, j;
-@@ -442,7 +462,11 @@ int mutt_index_menu (void)
+@@ -439,7 +459,11 @@ int mutt_index_menu (void)
menu->make_entry = index_make_entry;
menu->color = index_color;
menu->current = ci_first_message ();
+ (Context && (Context->magic == M_NNTP)) ? IndexNewsHelp :
+#endif
+ IndexHelp);
-
- if (!attach_msg)
+
+ if (!attach_msg)
mutt_buffy_check(1); /* force the buffy check after we enter the folder */
-@@ -694,6 +718,9 @@ int mutt_index_menu (void)
+@@ -682,6 +706,9 @@ int mutt_index_menu (void)
mutt_curs_set (1); /* fallback from the pager */
}
switch (op)
{
-@@ -744,6 +771,120 @@ int mutt_index_menu (void)
+@@ -732,6 +759,120 @@ int mutt_index_menu (void)
menu_current_bottom (menu);
break;
case OP_JUMP:
CHECK_MSGCOUNT;
-@@ -841,11 +982,33 @@ int mutt_index_menu (void)
+@@ -828,11 +969,33 @@ int mutt_index_menu (void)
break;
case OP_MAIN_LIMIT:
{
if (menu->oldcurrent >= 0)
{
-@@ -1053,15 +1216,22 @@ int mutt_index_menu (void)
+@@ -1071,15 +1234,22 @@ int mutt_index_menu (void)
case OP_MAIN_CHANGE_FOLDER:
case OP_MAIN_NEXT_UNREAD_MAILBOX:
--
+-
- if (attach_msg)
- op = OP_MAIN_CHANGE_FOLDER_READONLY;
-
cp = _("Open mailbox in read-only mode");
else
cp = _("Open mailbox");
-@@ -1080,6 +1250,21 @@ int mutt_index_menu (void)
+@@ -1098,6 +1268,21 @@ int mutt_index_menu (void)
}
else
{
mutt_buffy (buf, sizeof (buf));
if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) == -1)
-@@ -1099,6 +1284,14 @@ int mutt_index_menu (void)
+@@ -1117,6 +1302,14 @@ int mutt_index_menu (void)
}
}
mutt_expand_path (buf, sizeof (buf));
if (mx_get_magic (buf) <= 0)
{
-@@ -1136,15 +1329,18 @@ int mutt_index_menu (void)
+@@ -1158,15 +1351,18 @@ int mutt_index_menu (void)
CurrentMenu = MENU_MAIN;
mutt_folder_hook (buf);
-- if ((Context = mx_open_mailbox (buf,
+- if ((Context = mx_open_mailbox (buf,
- (option (OPTREADONLY) || op == OP_MAIN_CHANGE_FOLDER_READONLY) ?
- M_READONLY : 0, NULL)) != NULL)
+ if ((Context = mx_open_mailbox (buf, flags, NULL)) != NULL)
mutt_clear_error ();
mutt_buffy_check(1); /* force the buffy check after we have changed
the folder */
-@@ -1515,6 +1711,15 @@ int mutt_index_menu (void)
+@@ -1539,6 +1735,15 @@ int mutt_index_menu (void)
CHECK_READONLY;
CHECK_ACL(M_ACL_WRITE, _("flag message"));
if (tag)
{
for (j = 0; j < Context->vcount; j++)
-@@ -1862,6 +2067,17 @@ int mutt_index_menu (void)
+@@ -1886,6 +2091,17 @@ int mutt_index_menu (void)
}
break;
case OP_DISPLAY_ADDRESS:
CHECK_MSGCOUNT;
-@@ -1989,6 +2205,15 @@ int mutt_index_menu (void)
+@@ -2013,6 +2229,15 @@ int mutt_index_menu (void)
menu->redraw = (tag ? REDRAW_INDEX : REDRAW_CURRENT) | REDRAW_STATUS;
}
#endif
MAYBE_REDRAW (menu->redraw);
break;
-@@ -2060,6 +2285,37 @@ int mutt_index_menu (void)
-
+@@ -2090,6 +2315,41 @@ int mutt_index_menu (void)
menu->redraw = REDRAW_FULL;
break;
-+
+
+#ifdef USE_NNTP
-+ case OP_POST:
+ case OP_FOLLOWUP:
+ case OP_FORWARD_TO_GROUP:
+
++ CHECK_MSGCOUNT;
++ CHECK_VISIBLE;
++
++ case OP_POST:
++
+ CHECK_ATTACH;
+ if (op != OP_FOLLOWUP || !CURHDR->env->followup_to ||
+ mutt_strcasecmp (CURHDR->env->followup_to, "poster") ||
+ break;
+ }
+#endif
-
++
case OP_REPLY:
-@@ -2136,6 +2392,12 @@ int mutt_index_menu (void)
+ CHECK_ATTACH;
+@@ -2165,6 +2425,12 @@ int mutt_index_menu (void)
CHECK_READONLY;
CHECK_ACL(M_ACL_DELETE, _("undelete message(s)"));
rc = mutt_thread_set_flag (CURHDR, M_DELETE, 0,
op == OP_UNDELETE_THREAD ? 0 : 1);
-diff -udprP mutt-1.5.16.orig/doc/manual.xml.head mutt-1.5.16/doc/manual.xml.head
---- mutt-1.5.16.orig/doc/manual.xml.head 2007-04-04 08:37:13.000000000 +0300
-+++ mutt-1.5.16/doc/manual.xml.head 2007-06-15 17:12:26.000000000 +0300
-@@ -1295,6 +1295,22 @@ fo-table</literal> for details.
+diff -udprP mutt-1.5.21.orig/doc/manual.xml.head mutt-1.5.21/doc/manual.xml.head
+--- mutt-1.5.21.orig/doc/manual.xml.head 2010-08-24 19:34:21.000000000 +0300
++++ mutt-1.5.21/doc/manual.xml.head 2010-09-16 13:14:39.000000000 +0300
+@@ -1611,6 +1611,22 @@ fo-table</literal> for details.
</sect2>
</sect1>
<sect1 id="forwarding-mail">
-diff -udprP mutt-1.5.16.orig/doc/mutt.man mutt-1.5.16/doc/mutt.man
---- mutt-1.5.16.orig/doc/mutt.man 2007-04-04 08:37:13.000000000 +0300
-+++ mutt-1.5.16/doc/mutt.man 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/doc/mutt.man mutt-1.5.21/doc/mutt.man
+--- mutt-1.5.21.orig/doc/mutt.man 2010-08-24 19:34:21.000000000 +0300
++++ mutt-1.5.21/doc/mutt.man 2010-09-16 13:14:39.000000000 +0300
@@ -23,8 +23,8 @@ mutt \- The Mutt Mail User Agent
.SH SYNOPSIS
.PP
.B mutt
--[-nRyzZ]
--[-e \fIcmd\fP] [-F \fIfile\fP] [-m \fItype\fP] [-f \fIfile\fP]
-+[-GnRyzZ]
-+[-e \fIcmd\fP] [-F \fIfile\fP] [-g \fIserver\fP] [-m \fItype\fP] [-f \fIfile\fP]
+-[\-nRyzZ]
+-[\-e \fIcmd\fP] [\-F \fIfile\fP] [\-m \fItype\fP] [\-f \fIfile\fP]
++[\-GnRyzZ]
++[\-e \fIcmd\fP] [\-F \fIfile\fP] [\-g \fIserver\fP] [\-m \fItype\fP] [\-f \fIfile\fP]
.PP
.B mutt
- [-nx]
-@@ -83,6 +83,10 @@ files.
+ [\-nx]
+@@ -101,6 +101,10 @@ files.
Specify which mailbox to load.
.IP "-F \fImuttrc\fP"
Specify an initialization file to read instead of ~/.muttrc
.IP "-h"
Display help.
.IP "-H \fIdraft\fP"
-diff -udprP mutt-1.5.16.orig/functions.h mutt-1.5.16/functions.h
---- mutt-1.5.16.orig/functions.h 2007-05-14 20:10:00.000000000 +0300
-+++ mutt-1.5.16/functions.h 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/functions.h mutt-1.5.21/functions.h
+--- mutt-1.5.21.orig/functions.h 2010-08-24 19:34:21.000000000 +0300
++++ mutt-1.5.21/functions.h 2010-09-16 13:14:39.000000000 +0300
@@ -88,6 +88,10 @@ struct binding_t OpMain[] = { /* map: in
{ "break-thread", OP_MAIN_BREAK_THREAD, "#" },
{ "change-folder", OP_MAIN_CHANGE_FOLDER, "c" },
{ "change-folder-readonly", OP_MAIN_CHANGE_FOLDER_READONLY, "\033c" },
+#ifdef USE_NNTP
-+ { "change-newsgroup", OP_MAIN_CHANGE_GROUP, "I" },
++ { "change-newsgroup", OP_MAIN_CHANGE_GROUP, "i" },
+ { "change-newsgroup-readonly",OP_MAIN_CHANGE_GROUP_READONLY, "\033i" },
+#endif
{ "next-unread-mailbox", OP_MAIN_NEXT_UNREAD_MAILBOX, NULL },
{ "collapse-thread", OP_MAIN_COLLAPSE_THREAD, "\033v" },
{ "collapse-all", OP_MAIN_COLLAPSE_ALL, "\033V" },
-@@ -102,6 +106,14 @@ struct binding_t OpMain[] = { /* map: in
+@@ -101,7 +105,15 @@ struct binding_t OpMain[] = { /* map: in
+ { "edit", OP_EDIT_MESSAGE, "e" },
{ "edit-type", OP_EDIT_TYPE, "\005" },
{ "forward-message", OP_FORWARD_MESSAGE, "f" },
- { "flag-message", OP_FLAG_MESSAGE, "F" },
+- { "flag-message", OP_FLAG_MESSAGE, "F" },
+#ifdef USE_NNTP
+ { "forward-to-group", OP_FORWARD_TO_GROUP, "\033F" },
-+ { "followup-message", OP_FOLLOWUP, "\033f" },
++ { "followup-message", OP_FOLLOWUP, "F" },
+ { "get-children", OP_GET_CHILDREN, NULL },
+ { "get-message", OP_GET_MESSAGE, "\007" },
+ { "get-parent", OP_GET_PARENT, "\033G" },
+ { "reconstruct-thread", OP_RECONSTRUCT_THREAD, NULL },
+#endif
++ { "flag-message", OP_FLAG_MESSAGE, "\033f" },
{ "group-reply", OP_GROUP_REPLY, "g" },
#ifdef USE_POP
{ "fetch-mail", OP_MAIN_FETCH_MAIL, "G" },
-@@ -127,6 +139,9 @@ struct binding_t OpMain[] = { /* map: in
+@@ -128,6 +140,9 @@ struct binding_t OpMain[] = { /* map: in
{ "sort-mailbox", OP_SORT, "o" },
{ "sort-reverse", OP_SORT_REVERSE, "O" },
{ "print-message", OP_PRINT, "p" },
+#ifdef USE_NNTP
-+ { "post-message", OP_POST, "\033m" },
++ { "post-message", OP_POST, "P" },
+#endif
{ "previous-thread", OP_MAIN_PREV_THREAD, "\020" },
{ "previous-subthread", OP_MAIN_PREV_SUBTHREAD, "\033p" },
{ "recall-message", OP_RECALL_MESSAGE, "R" },
-@@ -146,6 +161,10 @@ struct binding_t OpMain[] = { /* map: in
+@@ -147,6 +162,10 @@ struct binding_t OpMain[] = { /* map: in
{ "show-version", OP_VERSION, "V" },
{ "set-flag", OP_MAIN_SET_FLAG, "w" },
{ "clear-flag", OP_MAIN_CLEAR_FLAG, "W" },
{ "display-message", OP_DISPLAY_MESSAGE, M_ENTER_S },
{ "buffy-list", OP_BUFFY_LIST, "." },
{ "sync-mailbox", OP_MAIN_SYNC_FOLDER, "$" },
-@@ -177,6 +196,10 @@ struct binding_t OpPager[] = { /* map: p
+@@ -158,7 +177,7 @@ struct binding_t OpMain[] = { /* map: in
+ { "previous-new-then-unread", OP_MAIN_PREV_NEW_THEN_UNREAD, "\033\t" },
+ { "next-unread", OP_MAIN_NEXT_UNREAD, NULL },
+ { "previous-unread", OP_MAIN_PREV_UNREAD, NULL },
+- { "parent-message", OP_MAIN_PARENT_MESSAGE, "P" },
++ { "parent-message", OP_MAIN_PARENT_MESSAGE, NULL },
+
+
+ { "extract-keys", OP_EXTRACT_KEYS, "\013" },
+@@ -178,6 +197,10 @@ struct binding_t OpPager[] = { /* map: p
{ "bounce-message", OP_BOUNCE_MESSAGE, "b" },
{ "change-folder", OP_MAIN_CHANGE_FOLDER, "c" },
{ "change-folder-readonly", OP_MAIN_CHANGE_FOLDER_READONLY, "\033c" },
+#ifdef USE_NNTP
-+ { "change-newsgroup", OP_MAIN_CHANGE_GROUP, "I" },
++ { "change-newsgroup", OP_MAIN_CHANGE_GROUP, "i" },
+ { "change-newsgroup-readonly",OP_MAIN_CHANGE_GROUP_READONLY, "\033i" },
+#endif
{ "next-unread-mailbox", OP_MAIN_NEXT_UNREAD_MAILBOX, NULL },
{ "copy-message", OP_COPY_MESSAGE, "C" },
{ "decode-copy", OP_DECODE_COPY, "\033C" },
-@@ -185,6 +208,10 @@ struct binding_t OpPager[] = { /* map: p
- { "delete-subthread", OP_DELETE_SUBTHREAD, "\033d" },
+@@ -188,8 +211,12 @@ struct binding_t OpPager[] = { /* map: p
+ { "clear-flag", OP_MAIN_CLEAR_FLAG, "W" },
{ "edit", OP_EDIT_MESSAGE, "e" },
{ "edit-type", OP_EDIT_TYPE, "\005" },
+#ifdef USE_NNTP
-+ { "followup-message", OP_FOLLOWUP, "\033f" },
++ { "followup-message", OP_FOLLOWUP, "F" },
+ { "forward-to-group", OP_FORWARD_TO_GROUP, "\033F" },
+#endif
{ "forward-message", OP_FORWARD_MESSAGE, "f" },
- { "flag-message", OP_FLAG_MESSAGE, "F" },
+- { "flag-message", OP_FLAG_MESSAGE, "F" },
++ { "flag-message", OP_FLAG_MESSAGE, "\033f" },
{ "group-reply", OP_GROUP_REPLY, "g" },
-@@ -205,6 +232,9 @@ struct binding_t OpPager[] = { /* map: p
- { "next-thread", OP_MAIN_NEXT_THREAD, "\016" },
- { "next-subthread", OP_MAIN_NEXT_SUBTHREAD, "\033n" },
+ #ifdef USE_IMAP
+ { "imap-fetch-mail", OP_MAIN_IMAP_FETCH, NULL },
+@@ -211,6 +238,9 @@ struct binding_t OpPager[] = { /* map: p
+ { "sort-mailbox", OP_SORT, "o" },
+ { "sort-reverse", OP_SORT_REVERSE, "O" },
{ "print-message", OP_PRINT, "p" },
+#ifdef USE_NNTP
-+ { "post-message", OP_POST, "\033m" },
++ { "post-message", OP_POST, "P" },
+#endif
{ "previous-thread", OP_MAIN_PREV_THREAD, "\020" },
{ "previous-subthread",OP_MAIN_PREV_SUBTHREAD, "\033p" },
{ "quit", OP_QUIT, "Q" },
-@@ -272,6 +302,10 @@ struct binding_t OpAttach[] = { /* map:
+@@ -258,7 +288,7 @@ struct binding_t OpPager[] = { /* map: p
+ { "half-down", OP_HALF_DOWN, NULL },
+ { "previous-line", OP_PREV_LINE, NULL },
+ { "bottom", OP_PAGER_BOTTOM, NULL },
+- { "parent-message", OP_MAIN_PARENT_MESSAGE, "P" },
++ { "parent-message", OP_MAIN_PARENT_MESSAGE, NULL },
+
+
+
+@@ -279,6 +309,10 @@ struct binding_t OpAttach[] = { /* map:
{ "bounce-message", OP_BOUNCE_MESSAGE, "b" },
{ "display-toggle-weed", OP_DISPLAY_HEADERS, "h" },
{ "edit-type", OP_EDIT_TYPE, "\005" },
+#ifdef USE_NNTP
-+ { "followup-message", OP_FOLLOWUP, "\033f" },
++ { "followup-message", OP_FOLLOWUP, "F" },
+ { "forward-to-group", OP_FORWARD_TO_GROUP, "\033F" },
+#endif
{ "print-entry", OP_PRINT, "p" },
{ "save-entry", OP_SAVE, "s" },
{ "pipe-entry", OP_PIPE, "|" },
-@@ -297,6 +331,7 @@ struct binding_t OpAttach[] = { /* map:
+@@ -304,6 +338,7 @@ struct binding_t OpAttach[] = { /* map:
struct binding_t OpCompose[] = { /* map: compose */
{ "attach-file", OP_COMPOSE_ATTACH_FILE, "a" },
{ "attach-message", OP_COMPOSE_ATTACH_MESSAGE, "A" },
{ "edit-bcc", OP_COMPOSE_EDIT_BCC, "b" },
{ "edit-cc", OP_COMPOSE_EDIT_CC, "c" },
{ "copy-file", OP_SAVE, "C" },
-@@ -316,6 +351,11 @@ struct binding_t OpCompose[] = { /* map:
+@@ -323,6 +358,11 @@ struct binding_t OpCompose[] = { /* map:
{ "print-entry", OP_PRINT, "l" },
{ "edit-mime", OP_COMPOSE_EDIT_MIME, "m" },
{ "new-mime", OP_COMPOSE_NEW_MIME, "n" },
{ "postpone-message", OP_COMPOSE_POSTPONE_MESSAGE, "P" },
{ "edit-reply-to", OP_COMPOSE_EDIT_REPLY_TO, "r" },
{ "rename-file", OP_COMPOSE_RENAME_FILE, "R" },
-@@ -367,14 +407,25 @@ struct binding_t OpBrowser[] = { /* map:
+@@ -374,14 +414,25 @@ struct binding_t OpBrowser[] = { /* map:
{ "select-new", OP_BROWSER_NEW_FILE, "N" },
{ "check-new", OP_CHECK_NEW, NULL },
{ "toggle-mailboxes", OP_TOGGLE_MAILBOXES, "\t" },
{ "toggle-subscribed", OP_BROWSER_TOGGLE_LSUB, "T" },
#endif
{ NULL, 0, NULL }
-diff -udprP mutt-1.5.16.orig/globals.h mutt-1.5.16/globals.h
---- mutt-1.5.16.orig/globals.h 2007-06-10 05:29:21.000000000 +0300
-+++ mutt-1.5.16/globals.h 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/globals.h mutt-1.5.21/globals.h
+--- mutt-1.5.21.orig/globals.h 2009-08-25 22:08:52.000000000 +0300
++++ mutt-1.5.21/globals.h 2010-09-16 13:14:39.000000000 +0300
@@ -95,6 +95,15 @@ WHERE char *MixEntryFormat;
#endif
WHERE char *Outbox;
WHERE char *Pager;
WHERE char *PagerFmt;
-@@ -190,6 +199,11 @@ extern unsigned char QuadOptions[];
+@@ -188,6 +197,11 @@ extern unsigned char QuadOptions[];
WHERE unsigned short Counter INITVAL (0);
WHERE short ConnectTimeout;
WHERE short HistSize;
WHERE short MenuContext;
-diff -udprP mutt-1.5.16.orig/hash.c mutt-1.5.16/hash.c
---- mutt-1.5.16.orig/hash.c 2007-04-02 00:58:56.000000000 +0300
-+++ mutt-1.5.16/hash.c 2007-06-15 17:12:26.000000000 +0300
-@@ -51,10 +51,35 @@ HASH *hash_create (int nelem)
+diff -udprP mutt-1.5.21.orig/hash.c mutt-1.5.21/hash.c
+--- mutt-1.5.21.orig/hash.c 2009-03-19 21:41:18.000000000 +0200
++++ mutt-1.5.21/hash.c 2010-09-16 13:14:39.000000000 +0300
+@@ -57,6 +57,7 @@ HASH *hash_create (int nelem, int lower)
if (nelem == 0)
nelem = 2;
table->nelem = nelem;
+ table->curnelem = 0;
table->table = safe_calloc (nelem, sizeof (struct hash_elem *));
+ if (lower)
+ {
+@@ -71,6 +72,29 @@ HASH *hash_create (int nelem, int lower)
return table;
}
-+HASH *hash_resize (HASH *ptr, int nelem)
++HASH *hash_resize (HASH *ptr, int nelem, int lower)
+{
+ HASH *table;
+ struct hash_elem *elem, *tmp;
+ int i;
+
-+ table = hash_create (nelem);
++ table = hash_create (nelem, lower);
+
+ for (i = 0; i < ptr->nelem; i++)
+ {
+ }
+ FREE (&ptr->table);
+ FREE (&ptr);
-+
+ return table;
+}
+
/* table hash table to update
* key key to hash on
* data data to associate with `key'
-@@ -74,6 +99,7 @@ int hash_insert (HASH * table, const cha
+@@ -90,6 +114,7 @@ int hash_insert (HASH * table, const cha
{
ptr->next = table->table[h];
table->table[h] = ptr;
}
else
{
-@@ -96,6 +122,7 @@ int hash_insert (HASH * table, const cha
+@@ -112,6 +137,7 @@ int hash_insert (HASH * table, const cha
else
table->table[h] = ptr;
ptr->next = tmp;
}
return h;
}
-@@ -126,6 +153,7 @@ void hash_delete_hash (HASH * table, int
+@@ -142,6 +168,7 @@ void hash_delete_hash (HASH * table, int
if (destroy)
destroy (ptr->data);
FREE (&ptr);
ptr = *last;
}
-diff -udprP mutt-1.5.16.orig/hash.h mutt-1.5.16/hash.h
---- mutt-1.5.16.orig/hash.h 2007-04-02 00:58:56.000000000 +0300
-+++ mutt-1.5.16/hash.h 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/hash.h mutt-1.5.21/hash.h
+--- mutt-1.5.21.orig/hash.h 2009-03-19 21:41:18.000000000 +0200
++++ mutt-1.5.21/hash.h 2010-09-16 13:14:39.000000000 +0300
@@ -28,7 +28,7 @@ struct hash_elem
typedef struct
- int nelem;
+ int nelem, curnelem;
struct hash_elem **table;
- }
- HASH;
-@@ -40,6 +40,7 @@ HASH;
- HASH *hash_create (int nelem);
- int hash_string (const unsigned char *s, int n);
+ unsigned int (*hash_string)(const unsigned char *, unsigned int);
+ int (*cmp_string)(const char *, const char *);
+@@ -41,6 +41,7 @@ HASH;
+
+ HASH *hash_create (int nelem, int lower);
int hash_insert (HASH * table, const char *key, void *data, int allow_dup);
-+HASH *hash_resize (HASH * table, int nelem);
++HASH *hash_resize (HASH * table, int nelem, int lower);
void *hash_find_hash (const HASH * table, int hash, const char *key);
void hash_delete_hash (HASH * table, int hash, const char *key, const void *data,
void (*destroy) (void *));
-diff -udprP mutt-1.5.16.orig/hdrline.c mutt-1.5.16/hdrline.c
---- mutt-1.5.16.orig/hdrline.c 2007-04-16 02:56:26.000000000 +0300
-+++ mutt-1.5.16/hdrline.c 2007-06-15 17:12:26.000000000 +0300
-@@ -209,6 +209,7 @@ int mutt_user_is_recipient (HEADER *h)
+diff -udprP mutt-1.5.21.orig/hdrline.c mutt-1.5.21/hdrline.c
+--- mutt-1.5.21.orig/hdrline.c 2009-04-11 02:45:19.000000000 +0300
++++ mutt-1.5.21/hdrline.c 2010-09-16 13:14:39.000000000 +0300
+@@ -211,6 +211,7 @@ int mutt_user_is_recipient (HEADER *h)
* %E = number of messages in current thread
* %f = entire from line
* %F = like %n, unless from self
* %i = message-id
* %l = number of lines in the message
* %L = like %F, except `lists' are displayed first
-@@ -217,12 +218,14 @@ int mutt_user_is_recipient (HEADER *h)
+@@ -219,12 +220,14 @@ int mutt_user_is_recipient (HEADER *h)
* %N = score
* %O = like %L, except using address instead of name
* %P = progress indicator for builtin pager
* %X = number of MIME attachments
* %y = `x-label:' field (if present)
* %Y = `x-label:' field (if present, tree unfolded, and != parent's x-label)
-@@ -455,6 +458,12 @@ hdr_format_str (char *dest,
+@@ -457,6 +460,12 @@ hdr_format_str (char *dest,
break;
case 'i':
mutt_format_s (dest, destlen, prefix, hdr->env->message_id ? hdr->env->message_id : "<no.id>");
break;
-@@ -546,6 +555,15 @@ hdr_format_str (char *dest,
+@@ -548,6 +557,15 @@ hdr_format_str (char *dest,
strfcpy(dest, NONULL(hfi->pager_progress), destlen);
break;
case 's':
if (flags & M_FORMAT_TREE && !hdr->collapsed)
-@@ -635,6 +653,13 @@ hdr_format_str (char *dest,
+@@ -637,6 +655,13 @@ hdr_format_str (char *dest,
mutt_format_s (dest, destlen, prefix, buf2);
break;
case 'Z':
ch = ' ';
-diff -udprP mutt-1.5.16.orig/headers.c mutt-1.5.16/headers.c
---- mutt-1.5.16.orig/headers.c 2007-04-10 07:33:44.000000000 +0300
-+++ mutt-1.5.16/headers.c 2007-06-15 17:12:26.000000000 +0300
-@@ -118,6 +118,9 @@ void mutt_edit_headers (const char *edit
- msg->env = n; n = NULL;
-
- if (!msg->env->in_reply_to)
+diff -udprP mutt-1.5.21.orig/headers.c mutt-1.5.21/headers.c
+--- mutt-1.5.21.orig/headers.c 2009-08-25 22:08:52.000000000 +0300
++++ mutt-1.5.21/headers.c 2010-09-16 13:14:39.000000000 +0300
+@@ -114,6 +114,9 @@ void mutt_edit_headers (const char *edit
+ $edit_headers set, we remove References: as they're likely invalid;
+ we can simply compare strings as we don't generate References for
+ multiple Message-Ids in IRT anyways */
+#ifdef USE_NNTP
+ if (!option (OPTNEWSSEND))
+#endif
- mutt_free_list (&msg->env->references);
-
- mutt_expand_aliases_env (msg->env);
-diff -udprP mutt-1.5.16.orig/init.c mutt-1.5.16/init.c
---- mutt-1.5.16.orig/init.c 2007-04-02 00:58:56.000000000 +0300
-+++ mutt-1.5.16/init.c 2007-06-15 17:12:26.000000000 +0300
-@@ -2859,6 +2859,28 @@ void mutt_init (int skip_sys_rc, LIST *c
+ if (!n->in_reply_to || (msg->env->in_reply_to &&
+ mutt_strcmp (n->in_reply_to->data,
+ msg->env->in_reply_to->data) != 0))
+diff -udprP mutt-1.5.21.orig/init.c mutt-1.5.21/init.c
+--- mutt-1.5.21.orig/init.c 2010-08-25 19:31:40.000000000 +0300
++++ mutt-1.5.21/init.c 2010-09-16 13:14:39.000000000 +0300
+@@ -2966,6 +2966,28 @@ void mutt_init (int skip_sys_rc, LIST *c
else
Fqdn = safe_strdup(NONULL(Hostname));
if ((p = getenv ("MAIL")))
Spoolfile = safe_strdup (p);
else if ((p = getenv ("MAILDIR")))
-diff -udprP mutt-1.5.16.orig/init.h mutt-1.5.16/init.h
---- mutt-1.5.16.orig/init.h 2007-06-10 05:29:21.000000000 +0300
-+++ mutt-1.5.16/init.h 2007-06-15 17:12:26.000000000 +0300
-@@ -169,6 +169,20 @@ struct option_t MuttVars[] = {
- ** If set, Mutt will prompt you for carbon-copy (Cc) recipients before
+diff -udprP mutt-1.5.21.orig/init.h mutt-1.5.21/init.h
+--- mutt-1.5.21.orig/init.h 2010-09-15 18:39:31.000000000 +0300
++++ mutt-1.5.21/init.h 2010-09-16 13:14:39.000000000 +0300
+@@ -176,6 +176,20 @@ struct option_t MuttVars[] = {
+ ** If \fIset\fP, Mutt will prompt you for carbon-copy (Cc) recipients before
** editing the body of an outgoing message.
- */
+ */
+#ifdef USE_NNTP
+ { "ask_follow_up", DT_BOOL, R_NONE, OPTASKFOLLOWUP, 0 },
+ /*
+ ** .pp
+ ** If set, Mutt will prompt you for follow-up groups before editing
+ ** the body of an outgoing message.
-+ */
++ */
+ { "ask_x_comment_to", DT_BOOL, R_NONE, OPTASKXCOMMENTTO, 0 },
+ /*
+ ** .pp
+ ** If set, Mutt will prompt you for x-comment-to field before editing
+ ** the body of an outgoing message.
-+ */
++ */
+#endif
{ "assumed_charset", DT_STR, R_NONE, UL &AssumedCharset, UL 0},
/*
** .pp
-@@ -308,6 +322,14 @@ struct option_t MuttVars[] = {
- ** When this variable is set, mutt will use file size attribute instead of
- ** access time when checking for new mail.
+@@ -322,6 +336,14 @@ struct option_t MuttVars[] = {
+ ** follow these menus. The option is \fIunset\fP by default because many
+ ** visual terminals don't permit making the cursor invisible.
*/
+#ifdef USE_NNTP
+ { "catchup_newsgroup", DT_QUAD, R_NONE, OPT_CATCHUP, M_ASKYES },
+ ** as read when you quit the newsgroup (catchup newsgroup).
+ */
+#endif
- { "charset", DT_STR, R_NONE, UL &Charset, UL 0 },
+ #if defined(USE_SSL)
+ { "certificate_file", DT_PATH, R_NONE, UL &SslCertFile, UL "~/.mutt_certificates" },
/*
- ** .pp
-@@ -635,6 +657,16 @@ struct option_t MuttVars[] = {
+@@ -798,6 +820,16 @@ struct option_t MuttVars[] = {
** sent to both the list and your address, resulting in two copies
** of the same email for you.
*/
{ "force_name", DT_BOOL, R_NONE, OPTFORCENAME, 0 },
/*
** .pp
-@@ -706,6 +738,27 @@ struct option_t MuttVars[] = {
+@@ -880,6 +912,27 @@ struct option_t MuttVars[] = {
** a regular expression that will match the whole name so mutt will expand
- ** "Franklin" to "Franklin, Steve".
+ ** ``Franklin'' to ``Franklin, Steve''.
*/
+#ifdef USE_NNTP
+ { "group_index_format", DT_STR, R_BOTH, UL &GroupFormat, UL "%4C %M%N %5s %-45.45f %d" },
{ "hdr_format", DT_SYN, R_NONE, UL "index_format", 0 },
/*
*/
-@@ -996,6 +1049,7 @@ struct option_t MuttVars[] = {
+@@ -1256,6 +1309,7 @@ struct option_t MuttVars[] = {
** .dt %E .dd number of messages in current thread
- ** .dt %f .dd entire From: line (address + real name)
+ ** .dt %f .dd sender (address + real name), either From: or Return-Path:
** .dt %F .dd author name, or recipient name if the message is from you
+ ** .dt %g .dd newsgroup name (if compiled with nntp support)
** .dt %H .dd spam attribute(s) of this message
** .dt %i .dd message-id of the current message
** .dt %l .dd number of lines in the message (does not work with maildir,
-@@ -1010,12 +1064,14 @@ struct option_t MuttVars[] = {
- ** .dt %O .dd (_O_riginal save folder) Where mutt would formerly have
- ** stashed the message: list name or recipient name if no list
- ** .dt %P .dd progress indicator for the builtin pager (how much of the file has been displayed)
-+ ** .dt %R .dd `x-comment-to:' field (if present and compiled with nntp support)
+@@ -1271,12 +1325,14 @@ struct option_t MuttVars[] = {
+ ** stashed the message: list name or recipient name
+ ** if not sent to a list
+ ** .dt %P .dd progress indicator for the built-in pager (how much of the file has been displayed)
++ ** .dt %R .dd ``x-comment-to:'' field (if present and compiled with nntp support)
** .dt %s .dd subject of the message
- ** .dt %S .dd status of the message (N/D/d/!/r/\(as)
- ** .dt %t .dd `to:' field (recipients)
+ ** .dt %S .dd status of the message (``N''/``D''/``d''/``!''/``r''/\(as)
+ ** .dt %t .dd ``To:'' field (recipients)
** .dt %T .dd the appropriate character from the $$to_chars string
** .dt %u .dd user (login) name of the author
** .dt %v .dd first name of the author, or the recipient if the message is from you
-+ ** .dt %W .dd name of organization of author (`organization:' field)
++ ** .dt %W .dd name of organization of author (``organization:'' field)
** .dt %X .dd number of attachments
** (please see the ``$attachments'' section for possible speed effects)
- ** .dt %y .dd `x-label:' field, if present
-@@ -1040,6 +1096,21 @@ struct option_t MuttVars[] = {
- ** .pp
- ** See also: ``$$to_chars''.
+ ** .dt %y .dd ``X-Label:'' field, if present
+@@ -1311,6 +1367,21 @@ struct option_t MuttVars[] = {
+ ** Note that these expandos are supported in
+ ** ``$save-hook'', ``$fcc-hook'' and ``$fcc-save-hook'', too.
*/
+#ifdef USE_NNTP
+ { "inews", DT_PATH, R_NONE, UL &Inews, UL "" },
{ "ispell", DT_PATH, R_NONE, UL &Ispell, UL ISPELL },
/*
** .pp
-@@ -1254,6 +1325,16 @@ struct option_t MuttVars[] = {
- ** be attached to the newly composed message if this option is set.
+@@ -1545,6 +1616,15 @@ struct option_t MuttVars[] = {
+ ** menu, attachments which cannot be decoded in a reasonable manner will
+ ** be attached to the newly composed message if this option is \fIset\fP.
*/
-
+#ifdef USE_NNTP
+ { "mime_subject", DT_BOOL, R_NONE, OPTMIMESUBJECT, 1 },
+ /*
+ ** is Usenet article, because MIME for news is nonstandard feature.
+ */
+#endif
-+
#ifdef MIXMASTER
{ "mix_entry_format", DT_STR, R_NONE, UL &MixEntryFormat, UL "%4n %c %-16s %a" },
/*
-@@ -1331,6 +1412,77 @@ struct option_t MuttVars[] = {
- ** See also ``$$read_inc'' and ``$$write_inc''.
+@@ -1592,6 +1672,77 @@ struct option_t MuttVars[] = {
+ ** See also $$read_inc, $$write_inc and $$net_inc.
*/
- #endif
+ #endif
+#ifdef USE_NNTP
+ { "news_cache_dir", DT_PATH, R_NONE, UL &NewsCacheDir, UL "~/.mutt" },
+ /*
{ "pager", DT_PATH, R_NONE, UL &Pager, UL "builtin" },
/*
** .pp
-@@ -2141,6 +2293,16 @@ struct option_t MuttVars[] = {
+@@ -2091,6 +2242,16 @@ struct option_t MuttVars[] = {
{ "post_indent_str", DT_SYN, R_NONE, UL "post_indent_string", 0 },
/*
*/
{ "postpone", DT_QUAD, R_NONE, OPT_POSTPONE, M_ASKYES },
/*
** .pp
-@@ -2497,6 +2659,28 @@ struct option_t MuttVars[] = {
+@@ -2494,6 +2655,28 @@ struct option_t MuttVars[] = {
** Command to use when spawning a subshell. By default, the user's login
- ** shell from /etc/passwd is used.
+ ** shell from \fC/etc/passwd\fP is used.
*/
+#ifdef USE_NNTP
+ { "save_unsubscribed",DT_BOOL, R_NONE, OPTSAVEUNSUB, 0 },
{ "sig_dashes", DT_BOOL, R_NONE, OPTSIGDASHES, 1 },
/*
** .pp
-@@ -3005,6 +3189,14 @@ struct option_t MuttVars[] = {
- ** option does nothing: mutt will never write out the BCC header
- ** in this case.
+@@ -3364,6 +3547,14 @@ struct option_t MuttVars[] = {
+ ** Also see the $$read_inc, $$net_inc and $$time_inc variables and the
+ ** ``$tuning'' section of the manual for performance considerations.
*/
+#ifdef USE_NNTP
+ { "x_comment_to", DT_BOOL, R_NONE, OPTXCOMMENTTO, 0 },
+ */
+#endif
/*--*/
- { NULL }
+ { NULL, 0, 0, 0, 0 }
};
-diff -udprP mutt-1.5.16.orig/mailbox.h mutt-1.5.16/mailbox.h
---- mutt-1.5.16.orig/mailbox.h 2007-04-02 00:58:56.000000000 +0300
-+++ mutt-1.5.16/mailbox.h 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/keymap.c mutt-1.5.21/keymap.c
+--- mutt-1.5.21.orig/keymap.c 2010-09-13 20:19:55.000000000 +0300
++++ mutt-1.5.21/keymap.c 2010-09-16 13:14:39.000000000 +0300
+@@ -780,7 +780,6 @@ void km_init (void)
+ km_bindkey ("<enter>", MENU_MAIN, OP_DISPLAY_MESSAGE);
+
+ km_bindkey ("x", MENU_PAGER, OP_EXIT);
+- km_bindkey ("i", MENU_PAGER, OP_EXIT);
+ km_bindkey ("<backspace>", MENU_PAGER, OP_PREV_LINE);
+ km_bindkey ("<pagedown>", MENU_PAGER, OP_NEXT_PAGE);
+ km_bindkey ("<pageup>", MENU_PAGER, OP_PREV_PAGE);
+diff -udprP mutt-1.5.21.orig/mailbox.h mutt-1.5.21/mailbox.h
+--- mutt-1.5.21.orig/mailbox.h 2009-04-30 20:33:48.000000000 +0300
++++ mutt-1.5.21/mailbox.h 2010-09-16 13:14:39.000000000 +0300
@@ -74,6 +74,9 @@ int mx_is_imap (const char *);
#ifdef USE_POP
int mx_is_pop (const char *);
int mx_access (const char*, int);
int mx_check_empty (const char *);
-diff -udprP mutt-1.5.16.orig/main.c mutt-1.5.16/main.c
---- mutt-1.5.16.orig/main.c 2007-04-10 23:53:08.000000000 +0300
-+++ mutt-1.5.16/main.c 2007-06-15 17:12:26.000000000 +0300
-@@ -56,6 +56,10 @@
+diff -udprP mutt-1.5.21.orig/main.c mutt-1.5.21/main.c
+--- mutt-1.5.21.orig/main.c 2010-09-13 20:19:55.000000000 +0300
++++ mutt-1.5.21/main.c 2010-09-16 13:14:39.000000000 +0300
+@@ -60,6 +60,10 @@
#include <stringprep.h>
#endif
static const char *ReachingUs = N_("\
To contact the developers, please mail to <mutt-dev@mutt.org>.\n\
To report a bug, please visit http://bugs.mutt.org/.\n");
-@@ -127,6 +131,8 @@ options:\n\
+@@ -134,6 +138,8 @@ options:\n\
" -e <command>\tspecify a command to be executed after initialization\n\
-f <file>\tspecify which mailbox to read\n\
-F <file>\tspecify an alternate muttrc file\n\
-H <file>\tspecify a draft file to read header and body from\n\
-i <file>\tspecify a file which Mutt should include in the body\n\
-m <type>\tspecify a default mailbox type\n\
-@@ -253,6 +259,12 @@ static void show_version (void)
+@@ -254,6 +260,12 @@ static void show_version (void)
"-USE_POP "
#endif
#ifdef USE_IMAP
"+USE_IMAP "
#else
-@@ -521,6 +533,9 @@ static void start_curses (void)
+@@ -522,6 +534,9 @@ init_extended_keys();
#define M_NOSYSRC (1<<2) /* -n */
#define M_RO (1<<3) /* -R */
#define M_SELECT (1<<4) /* -y */
int main (int argc, char **argv)
{
-@@ -577,7 +592,11 @@ int main (int argc, char **argv)
- break;
+@@ -594,7 +609,11 @@ int main (int argc, char **argv)
+ argv[nargc++] = argv[optind];
}
+#ifdef USE_NNTP
-+ while ((i = getopt (argc, argv, "A:a:b:F:f:c:Dd:e:g:GH:s:i:hm:npQ:RvxyzZ")) != EOF)
++ if ((i = getopt (argc, argv, "+A:a:b:F:f:c:Dd:e:g:GH:s:i:hm:npQ:RvxyzZ")) != EOF)
+#else
- while ((i = getopt (argc, argv, "A:a:b:F:f:c:Dd:e:H:s:i:hm:npQ:RvxyzZ")) != EOF)
+ if ((i = getopt (argc, argv, "+A:a:b:F:f:c:Dd:e:H:s:i:hm:npQ:RvxyzZ")) != EOF)
+#endif
- switch (i)
- {
+ switch (i)
+ {
case 'A':
-@@ -670,6 +689,20 @@ int main (int argc, char **argv)
+@@ -691,6 +710,20 @@ int main (int argc, char **argv)
flags |= M_SELECT;
break;
case 'z':
flags |= M_IGNORE;
break;
-@@ -947,6 +980,18 @@ int main (int argc, char **argv)
+@@ -978,6 +1011,18 @@ int main (int argc, char **argv)
}
else if (flags & M_SELECT)
{
if (!Incoming) {
mutt_endwin _("No incoming mailboxes defined.");
exit (1);
-@@ -962,6 +1007,15 @@ int main (int argc, char **argv)
+@@ -993,6 +1038,15 @@ int main (int argc, char **argv)
if (!folder[0])
strfcpy (folder, NONULL(Spoolfile), sizeof (folder));
mutt_expand_path (folder, sizeof (folder));
mutt_str_replace (&CurrentFolder, folder);
-diff -udprP mutt-1.5.16.orig/mutt.h mutt-1.5.16/mutt.h
---- mutt-1.5.16.orig/mutt.h 2007-04-11 06:14:01.000000000 +0300
-+++ mutt-1.5.16/mutt.h 2007-06-15 17:12:26.000000000 +0300
-@@ -243,6 +243,9 @@ enum
+diff -udprP mutt-1.5.21.orig/mutt.h mutt-1.5.21/mutt.h
+--- mutt-1.5.21.orig/mutt.h 2010-09-13 20:19:55.000000000 +0300
++++ mutt-1.5.21/mutt.h 2010-09-16 13:14:39.000000000 +0300
+@@ -229,6 +229,9 @@ enum
M_PGP_KEY,
M_XLABEL,
M_MIMEATTACH,
/* Options for Mailcap lookup */
M_EDIT,
-@@ -298,6 +301,12 @@ enum
+@@ -285,6 +288,12 @@ enum
#endif
OPT_SUBJECT,
OPT_VERIFYSIG, /* verify PGP signatures */
/* THIS MUST BE THE LAST VALUE. */
OPT_MAX
-@@ -313,6 +322,7 @@ enum
+@@ -300,6 +309,7 @@ enum
#define SENDMAILX (1<<6)
#define SENDKEY (1<<7)
#define SENDRESEND (1<<8)
/* flags to _mutt_select_file() */
#define M_SEL_BUFFY (1<<0)
-@@ -332,6 +342,8 @@ enum
+@@ -319,6 +329,8 @@ enum
OPTASCIICHARS,
OPTASKBCC,
OPTASKCC,
OPTATTACHSPLIT,
OPTAUTOEDIT,
OPTAUTOTAG,
-@@ -407,6 +419,9 @@ enum
+@@ -397,6 +409,9 @@ enum
OPTMETOO,
OPTMHPURGE,
OPTMIMEFORWDECODE,
OPTNARROWTREE,
OPTPAGERSTOP,
OPTPIPEDECODE,
-@@ -488,6 +503,16 @@ enum
+@@ -478,6 +493,16 @@ enum
OPTPGPAUTOINLINE,
OPTPGPREPLYINLINE,
/* pseudo options */
OPTAUXSORT, /* (pseudo) using auxillary sort function */
-@@ -508,6 +533,7 @@ enum
+@@ -498,6 +523,7 @@ enum
OPTSORTSUBTHREADS, /* (pseudo) used when $sort_aux changes */
OPTNEEDRESCORE, /* (pseudo) set when the `score' command is used */
OPTATTACHMSG, /* (pseudo) used by attach-message */
OPTKEEPQUIET, /* (pseudo) shut up the message and refresh
* functions while we are executing an
* external program.
-@@ -518,6 +544,12 @@ enum
+@@ -508,6 +534,12 @@ enum
OPTDONTHANDLEPGPKEYS, /* (pseudo) used to extract PGP keys */
OPTUNBUFFEREDINPUT, /* (pseudo) don't use key buffer */
OPTMAX
};
-@@ -595,6 +627,13 @@ typedef struct envelope
+@@ -587,6 +619,13 @@ typedef struct envelope
char *supersedes;
char *date;
char *x_label;
BUFFER *spam;
LIST *references; /* message references (in reverse order) */
LIST *in_reply_to; /* in-reply-to header content */
-@@ -761,6 +800,9 @@ typedef struct header
+@@ -756,6 +795,9 @@ typedef struct header
ENVELOPE *env; /* envelope information */
BODY *content; /* list of MIME parts */
char *path;
+#endif
char *tree; /* character string to print thread tree */
- struct thread *thread;
-@@ -776,7 +818,7 @@ typedef struct header
+ THREAD *thread;
+@@ -771,7 +813,7 @@ typedef struct header
int refno; /* message number on server */
#endif
void *data; /* driver-specific data */
#endif
-diff -udprP mutt-1.5.16.orig/muttlib.c mutt-1.5.16/muttlib.c
---- mutt-1.5.16.orig/muttlib.c 2007-05-14 20:10:00.000000000 +0300
-+++ mutt-1.5.16/muttlib.c 2007-06-15 17:12:26.000000000 +0300
-@@ -286,7 +286,7 @@ void mutt_free_header (HEADER **h)
+diff -udprP mutt-1.5.21.orig/muttlib.c mutt-1.5.21/muttlib.c
+--- mutt-1.5.21.orig/muttlib.c 2010-08-25 19:31:40.000000000 +0300
++++ mutt-1.5.21/muttlib.c 2010-09-16 13:14:39.000000000 +0300
+@@ -337,7 +337,7 @@ void mutt_free_header (HEADER **h)
#ifdef MIXMASTER
mutt_free_list (&(*h)->chain);
#endif
FREE (&(*h)->data);
#endif
FREE (h); /* __FREE_CHECKED__ */
-@@ -674,6 +674,13 @@ void mutt_free_envelope (ENVELOPE **p)
+@@ -722,6 +722,13 @@ void mutt_free_envelope (ENVELOPE **p)
FREE (&(*p)->supersedes);
FREE (&(*p)->date);
FREE (&(*p)->x_label);
mutt_buffer_free (&(*p)->spam);
-@@ -1394,6 +1401,14 @@ int mutt_save_confirm (const char *s, st
+@@ -1525,6 +1532,14 @@ int mutt_save_confirm (const char *s, st
}
}
if (stat (s, st) != -1)
{
if (magic == -1)
-diff -udprP mutt-1.5.16.orig/mx.c mutt-1.5.16/mx.c
---- mutt-1.5.16.orig/mx.c 2007-04-03 20:41:14.000000000 +0300
-+++ mutt-1.5.16/mx.c 2007-06-15 17:12:26.000000000 +0300
-@@ -348,6 +348,22 @@ int mx_is_pop (const char *p)
+diff -udprP mutt-1.5.21.orig/mx.c mutt-1.5.21/mx.c
+--- mutt-1.5.21.orig/mx.c 2010-09-13 20:19:55.000000000 +0300
++++ mutt-1.5.21/mx.c 2010-09-16 13:14:39.000000000 +0300
+@@ -343,6 +343,22 @@ int mx_is_pop (const char *p)
}
#endif
int mx_get_magic (const char *path)
{
struct stat st;
-@@ -365,6 +381,11 @@ int mx_get_magic (const char *path)
+@@ -360,6 +376,11 @@ int mx_get_magic (const char *path)
return M_POP;
#endif /* USE_POP */
if (stat (path, &st) == -1)
{
dprint (1, (debugfile, "mx_get_magic(): unable to stat %s: %s (errno %d).\n",
-@@ -704,6 +725,12 @@ CONTEXT *mx_open_mailbox (const char *pa
+@@ -668,6 +689,12 @@ CONTEXT *mx_open_mailbox (const char *pa
break;
#endif /* USE_POP */
default:
rc = -1;
break;
-@@ -796,6 +823,12 @@ static int sync_mailbox (CONTEXT *ctx, i
+@@ -764,6 +791,12 @@ static int sync_mailbox (CONTEXT *ctx, i
rc = pop_sync_mailbox (ctx, index_hint);
break;
#endif /* USE_POP */
}
#if 0
-@@ -822,6 +855,16 @@ int mx_close_mailbox (CONTEXT *ctx, int
+@@ -790,6 +823,16 @@ int mx_close_mailbox (CONTEXT *ctx, int
ctx->closing = 1;
if (ctx->readonly || ctx->dontwrite)
{
/* mailbox is readonly or we don't want to write */
-@@ -1359,6 +1402,11 @@ int mx_check_mailbox (CONTEXT *ctx, int
+@@ -1341,6 +1384,11 @@ int mx_check_mailbox (CONTEXT *ctx, int
case M_POP:
return (pop_check_mailbox (ctx, index_hint));
#endif /* USE_POP */
}
}
-@@ -1419,6 +1467,15 @@ MESSAGE *mx_open_message (CONTEXT *ctx,
+@@ -1401,6 +1449,15 @@ MESSAGE *mx_open_message (CONTEXT *ctx,
}
#endif /* USE_POP */
default:
dprint (1, (debugfile, "mx_open_message(): function not implemented for mailbox type %d.\n", ctx->magic));
FREE (&msg);
-@@ -1500,6 +1557,9 @@ int mx_close_message (MESSAGE **msg)
- #ifdef USE_POP
- || (*msg)->magic == M_POP
- #endif
+@@ -1476,6 +1533,9 @@ int mx_close_message (MESSAGE **msg)
+ int r = 0;
+
+ if ((*msg)->magic == M_MH || (*msg)->magic == M_MAILDIR
+#ifdef USE_NNTP
+ || (*msg)->magic == M_NNTP
+#endif
- )
+ || (*msg)->magic == M_IMAP || (*msg)->magic == M_POP)
{
r = safe_fclose (&(*msg)->fp);
-diff -udprP mutt-1.5.16.orig/mx.h mutt-1.5.16/mx.h
---- mutt-1.5.16.orig/mx.h 2007-04-02 00:58:56.000000000 +0300
-+++ mutt-1.5.16/mx.h 2007-06-15 17:12:26.000000000 +0300
-@@ -40,6 +40,9 @@ enum
- #ifdef USE_POP
- , M_POP
- #endif
-+#ifdef USE_NNTP
-+ , M_NNTP
-+#endif
+diff -udprP mutt-1.5.21.orig/mx.h mutt-1.5.21/mx.h
+--- mutt-1.5.21.orig/mx.h 2009-08-25 22:08:52.000000000 +0300
++++ mutt-1.5.21/mx.h 2010-09-16 13:14:39.000000000 +0300
+@@ -34,6 +34,9 @@ enum
+ M_MMDF,
+ M_MH,
+ M_MAILDIR,
++#ifdef USE_NNTP
++ M_NNTP,
++#endif
+ M_IMAP,
+ M_POP
};
-
- WHERE short DefaultMagic INITVAL (M_MBOX);
-diff -udprP mutt-1.5.16.orig/newsrc.c mutt-1.5.16/newsrc.c
---- mutt-1.5.16.orig/newsrc.c 1970-01-01 03:00:00.000000000 +0300
-+++ mutt-1.5.16/newsrc.c 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/newsrc.c mutt-1.5.21/newsrc.c
+--- mutt-1.5.21.orig/newsrc.c 1970-01-01 03:00:00.000000000 +0300
++++ mutt-1.5.21/newsrc.c 2010-09-16 13:14:39.000000000 +0300
@@ -0,0 +1,1170 @@
+/*
+ * Copyright (C) 1998 Brandon Long <blong@fiction.net>
+ * Copyright (C) 1999 Andrej Gritsenko <andrej@lucky.net>
-+ * Copyright (C) 2000-2007 Vsevolod Volkov <vvv@mutt.org.ua>
++ * Copyright (C) 2000-2009 Vsevolod Volkov <vvv@mutt.org.ua>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ data->nserv = news;
+ data->deleted = 1;
+ if (news->newsgroups->nelem < news->newsgroups->curnelem * 2)
-+ news->newsgroups = hash_resize (news->newsgroups, news->newsgroups->nelem * 2);
++ news->newsgroups = hash_resize (news->newsgroups, news->newsgroups->nelem * 2, 0);
+ hash_insert (news->newsgroups, data->group, data, 0);
+ nntp_add_to_list (news, data);
+ }
+ data->nserv = news;
+ data->deleted = 1;
+ if (news->newsgroups->nelem < news->newsgroups->curnelem * 2)
-+ news->newsgroups = hash_resize (news->newsgroups, news->newsgroups->nelem * 2);
++ news->newsgroups = hash_resize (news->newsgroups, news->newsgroups->nelem * 2, 0);
+ hash_insert (news->newsgroups, data->group, data, 0);
+ nntp_add_to_list (news, data);
+ }
+}
+
+const char *
-+nntp_format_str (char *dest, size_t destlen, char op, const char *src,
++nntp_format_str (char *dest, size_t destlen, size_t col, char op, const char *src,
+ const char *fmt, const char *ifstring, const char *elsestring,
+ unsigned long data, format_flag flags)
+{
+ serv = safe_calloc (1, sizeof (NNTP_SERVER));
+ serv->conn = conn;
+ serv->newsrc = safe_strdup (file);
-+ serv->newsgroups = hash_create (1009);
++ serv->newsgroups = hash_create (1009, 0);
+ slurp_newsrc (serv); /* load .newsrc */
+ nntp_parse_cacheindex (serv); /* load .index */
+ if (option (OPTNEWSCACHE) && serv->cache && nntp_get_cache_all (serv) >= 0)
+ tm->tm_sec, h->env->message_id);
+ fputs (buf, f);
+ if (h->env->references)
-+ mutt_write_references (h->env->references, f);
++ mutt_write_references (h->env->references, f, -10);
+ snprintf (buf, sizeof(buf), "\t%ld\t%d\tXref: %s\n", (long int) h->content->length,
+ (int) h->lines, NONULL(h->env->xref));
+ if (fputs (buf, f) == EOF)
+ data->nserv = news;
+ data->deleted = 1;
+ if (news->newsgroups->nelem < news->newsgroups->curnelem * 2)
-+ news->newsgroups = hash_resize (news->newsgroups, news->newsgroups->nelem * 2);
++ news->newsgroups = hash_resize (news->newsgroups, news->newsgroups->nelem * 2, 0);
+ hash_insert (news->newsgroups, data->group, data, 0);
+ nntp_add_to_list (news, data);
+ }
+ }
+ }
+}
-diff -udprP mutt-1.5.16.orig/nntp.c mutt-1.5.16/nntp.c
---- mutt-1.5.16.orig/nntp.c 1970-01-01 03:00:00.000000000 +0300
-+++ mutt-1.5.16/nntp.c 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/nntp.c mutt-1.5.21/nntp.c
+--- mutt-1.5.21.orig/nntp.c 1970-01-01 03:00:00.000000000 +0300
++++ mutt-1.5.21/nntp.c 2010-09-16 13:15:46.000000000 +0300
@@ -0,0 +1,1588 @@
+/*
+ * Copyright (C) 1998 Brandon Long <blong@fiction.net>
+ int ret;
+ HEADER *h = ctx->hdrs[ctx->msgcount];
+
-+ mutt_mktemp (tempfile);
++ mutt_mktemp (tempfile, sizeof(tempfile));
+ if (!(f = safe_fopen (tempfile, "w+")))
+ return -1;
+
+ mutt_message (m);
+
+ cache->index = ctx->hdrs[msgno]->index;
-+ mutt_mktemp (path);
++ mutt_mktemp (path, sizeof(path));
+ cache->path = safe_strdup (path);
+ if (!(msg->fp = safe_fopen (path, "w+")))
+ {
+ strcpy (nntp_data->group, group);
+ nntp_data->nserv = s;
+ if (s->newsgroups->nelem < s->newsgroups->curnelem * 2)
-+ s->newsgroups = hash_resize (s->newsgroups, s->newsgroups->nelem * 2);
++ s->newsgroups = hash_resize (s->newsgroups, s->newsgroups->nelem * 2, 0);
+ hash_insert (s->newsgroups, nntp_data->group, nntp_data, 0);
+ nntp_add_to_list (s, nntp_data);
+ }
+ FREE (&cc.child);
+ return ret;
+}
-diff -udprP mutt-1.5.16.orig/nntp.h mutt-1.5.16/nntp.h
---- mutt-1.5.16.orig/nntp.h 1970-01-01 03:00:00.000000000 +0300
-+++ mutt-1.5.16/nntp.h 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/nntp.h mutt-1.5.21/nntp.h
+--- mutt-1.5.21.orig/nntp.h 1970-01-01 03:00:00.000000000 +0300
++++ mutt-1.5.21/nntp.h 2010-09-16 13:14:39.000000000 +0300
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 1998 Brandon Long <blong@fiction.net>
+void nntp_buffy (char *);
+void nntp_expand_path (char *, size_t, ACCOUNT *);
+void nntp_logout_all ();
-+const char *nntp_format_str (char *, size_t, char, const char *, const char *,
++const char *nntp_format_str (char *, size_t, size_t, char, const char *, const char *,
+ const char *, const char *, unsigned long, format_flag);
+
+NNTP_SERVER *CurrentNewsSrv INITVAL (NULL);
+
+#endif /* _NNTP_H_ */
-diff -udprP mutt-1.5.16.orig/pager.c mutt-1.5.16/pager.c
---- mutt-1.5.16.orig/pager.c 2007-04-16 02:56:26.000000000 +0300
-+++ mutt-1.5.16/pager.c 2007-06-15 17:12:26.000000000 +0300
-@@ -1055,6 +1055,11 @@ fill_buffer (FILE *f, LOFF_T *last_pos,
+diff -udprP mutt-1.5.21.orig/pager.c mutt-1.5.21/pager.c
+--- mutt-1.5.21.orig/pager.c 2010-08-25 19:31:40.000000000 +0300
++++ mutt-1.5.21/pager.c 2010-09-16 13:14:39.000000000 +0300
+@@ -1084,6 +1084,11 @@ fill_buffer (FILE *f, LOFF_T *last_pos,
return b_read;
}
static int format_line (struct line_t **lineInfo, int n, unsigned char *buf,
int flags, ansi_attr *pa, int cnt,
-@@ -1490,6 +1495,16 @@ static struct mapping_t PagerHelpExtra[]
+@@ -1540,6 +1545,16 @@ static struct mapping_t PagerHelpExtra[]
{ NULL, 0 }
};
/* This pager is actually not so simple as it once was. It now operates in
-@@ -1531,6 +1546,10 @@ mutt_pager (const char *banner, const ch
+@@ -1581,6 +1596,10 @@ mutt_pager (const char *banner, const ch
int old_PagerIndexLines; /* some people want to resize it
* while inside the pager... */
if (!(flags & M_SHOWCOLOR))
flags |= M_SHOWFLAT;
-@@ -1570,7 +1589,11 @@ mutt_pager (const char *banner, const ch
+@@ -1620,7 +1639,11 @@ mutt_pager (const char *banner, const ch
if (IsHeader (extra))
{
strfcpy (tmphelp, helpstr, sizeof (tmphelp));
snprintf (helpstr, sizeof (helpstr), "%s %s", tmphelp, buffer);
}
if (!InHelp)
-@@ -2398,6 +2421,15 @@ search_next:
+@@ -2492,6 +2515,15 @@ search_next:
CHECK_READONLY;
CHECK_ACL(M_ACL_WRITE, "flag message");
mutt_set_flag (Context, extra->hdr, M_FLAG, !extra->hdr->flagged);
redraw = REDRAW_STATUS | REDRAW_INDEX;
if (option (OPTRESOLVE))
-@@ -2431,6 +2463,60 @@ search_next:
+@@ -2525,6 +2557,60 @@ search_next:
redraw = REDRAW_FULL;
break;
case OP_REPLY:
CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
CHECK_ATTACH;
-@@ -2477,7 +2563,7 @@ search_next:
+@@ -2571,7 +2657,7 @@ search_next:
CHECK_ATTACH;
if (IsMsgAttach (extra))
mutt_attach_forward (extra->fp, extra->hdr, extra->idx,
else
ci_send_message (SENDFORWARD, NULL, NULL, extra->ctx, extra->hdr);
redraw = REDRAW_FULL;
-diff -udprP mutt-1.5.16.orig/parse.c mutt-1.5.16/parse.c
---- mutt-1.5.16.orig/parse.c 2007-04-02 00:58:56.000000000 +0300
-+++ mutt-1.5.16/parse.c 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/parse.c mutt-1.5.21/parse.c
+--- mutt-1.5.21.orig/parse.c 2009-08-25 22:08:52.000000000 +0300
++++ mutt-1.5.21/parse.c 2010-09-16 13:14:39.000000000 +0300
@@ -89,7 +89,7 @@ char *mutt_read_rfc822_line (FILE *f, ch
/* not reached */
}
+LIST *mutt_parse_references (char *s, int in_reply_to)
{
LIST *t, *lst = NULL;
- int m, n = 0;
-@@ -1068,6 +1068,17 @@ int mutt_parse_rfc822_line (ENVELOPE *e,
+ char *m;
+@@ -1067,6 +1067,17 @@ int mutt_parse_rfc822_line (ENVELOPE *e,
e->from = rfc822_parse_adrlist (e->from, p);
matched = 1;
}
break;
case 'i':
-@@ -1152,6 +1163,27 @@ int mutt_parse_rfc822_line (ENVELOPE *e,
+@@ -1149,6 +1160,27 @@ int mutt_parse_rfc822_line (ENVELOPE *e,
}
break;
case 'r':
if (!ascii_strcasecmp (line + 1, "eferences"))
{
-@@ -1260,6 +1292,20 @@ int mutt_parse_rfc822_line (ENVELOPE *e,
+@@ -1257,6 +1289,20 @@ int mutt_parse_rfc822_line (ENVELOPE *e,
e->x_label = safe_strdup(p);
matched = 1;
}
default:
break;
-diff -udprP mutt-1.5.16.orig/pattern.c mutt-1.5.16/pattern.c
---- mutt-1.5.16.orig/pattern.c 2007-04-08 02:36:55.000000000 +0300
-+++ mutt-1.5.16/pattern.c 2007-06-15 17:12:26.000000000 +0300
-@@ -91,6 +91,9 @@ Flags[] =
+diff -udprP mutt-1.5.21.orig/pattern.c mutt-1.5.21/pattern.c
+--- mutt-1.5.21.orig/pattern.c 2010-08-24 19:34:21.000000000 +0300
++++ mutt-1.5.21/pattern.c 2010-09-16 13:14:39.000000000 +0300
+@@ -92,6 +92,9 @@ Flags[] =
{ 'U', M_UNREAD, 0, NULL },
{ 'v', M_COLLAPSED, 0, NULL },
{ 'V', M_CRYPT_VERIFIED, 0, NULL },
{ 'x', M_REFERENCE, 0, eat_regexp },
{ 'X', M_MIMEATTACH, 0, eat_range },
{ 'y', M_XLABEL, 0, eat_regexp },
-@@ -1214,6 +1217,10 @@ mutt_pattern_exec (struct pattern_t *pat
+@@ -1213,6 +1216,10 @@ mutt_pattern_exec (struct pattern_t *pat
}
case M_UNREFERENCED:
return (pat->not ^ (h->thread && !h->thread->child));
}
mutt_error (_("error: unknown op %d (report this error)."), pat->op);
return (-1);
-@@ -1282,6 +1289,7 @@ int mutt_pattern_func (int op, char *pro
+@@ -1294,6 +1301,7 @@ int mutt_pattern_func (int op, char *pro
progress_t progress;
strfcpy (buf, NONULL (Context->pattern), sizeof (buf));
if (mutt_get_field (prompt, buf, sizeof (buf), M_PATTERN | M_CLEAR) != 0 || !buf[0])
return (-1);
-diff -udprP mutt-1.5.16.orig/po/POTFILES.in mutt-1.5.16/po/POTFILES.in
---- mutt-1.5.16.orig/po/POTFILES.in 2007-04-02 00:58:57.000000000 +0300
-+++ mutt-1.5.16/po/POTFILES.in 2007-06-15 17:12:26.000000000 +0300
-@@ -47,6 +47,8 @@ mutt_ssl_gnutls.c
+diff -udprP mutt-1.5.21.orig/po/POTFILES.in mutt-1.5.21/po/POTFILES.in
+--- mutt-1.5.21.orig/po/POTFILES.in 2008-03-19 22:07:57.000000000 +0200
++++ mutt-1.5.21/po/POTFILES.in 2010-09-16 13:14:39.000000000 +0300
+@@ -46,6 +46,8 @@ mutt_ssl_gnutls.c
mutt_tunnel.c
muttlib.c
mx.c
pager.c
parse.c
pattern.c
-diff -udprP mutt-1.5.16.orig/postpone.c mutt-1.5.16/postpone.c
---- mutt-1.5.16.orig/postpone.c 2007-04-02 00:58:57.000000000 +0300
-+++ mutt-1.5.16/postpone.c 2007-06-15 17:12:26.000000000 +0300
-@@ -126,15 +126,26 @@ int mutt_num_postponed (int force)
+diff -udprP mutt-1.5.21.orig/postpone.c mutt-1.5.21/postpone.c
+--- mutt-1.5.21.orig/postpone.c 2010-08-24 19:34:21.000000000 +0300
++++ mutt-1.5.21/postpone.c 2010-09-16 13:14:39.000000000 +0300
+@@ -125,15 +125,26 @@ int mutt_num_postponed (int force)
if (LastModify < st.st_mtime)
{
}
return (PostCount);
-diff -udprP mutt-1.5.16.orig/protos.h mutt-1.5.16/protos.h
---- mutt-1.5.16.orig/protos.h 2007-04-16 02:56:26.000000000 +0300
-+++ mutt-1.5.16/protos.h 2007-06-15 17:12:26.000000000 +0300
-@@ -113,6 +113,7 @@ HASH *mutt_make_id_hash (CONTEXT *);
+diff -udprP mutt-1.5.21.orig/protos.h mutt-1.5.21/protos.h
+--- mutt-1.5.21.orig/protos.h 2010-08-24 19:34:21.000000000 +0300
++++ mutt-1.5.21/protos.h 2010-09-16 13:14:39.000000000 +0300
+@@ -110,6 +110,7 @@ HASH *mutt_make_id_hash (CONTEXT *);
HASH *mutt_make_subj_hash (CONTEXT *);
LIST *mutt_make_references(ENVELOPE *e);
char *mutt_read_rfc822_line (FILE *, char *, size_t *);
ENVELOPE *mutt_read_rfc822_header (FILE *, HEADER *, short, short);
-@@ -256,6 +257,7 @@ void mutt_unblock_signals_system (int);
- void mutt_update_encoding (BODY *a);
- void mutt_version (void);
- void mutt_view_attachments (HEADER *);
-+void mutt_write_references (LIST *, FILE *);
- void mutt_write_address_list (ADDRESS *adr, FILE *fp, int linelen, int display);
- void mutt_set_virtual (CONTEXT *);
-
-diff -udprP mutt-1.5.16.orig/recvattach.c mutt-1.5.16/recvattach.c
---- mutt-1.5.16.orig/recvattach.c 2007-04-16 02:56:26.000000000 +0300
-+++ mutt-1.5.16/recvattach.c 2007-06-15 17:12:26.000000000 +0300
-@@ -1088,6 +1088,15 @@ void mutt_view_attachments (HEADER *hdr)
+diff -udprP mutt-1.5.21.orig/recvattach.c mutt-1.5.21/recvattach.c
+--- mutt-1.5.21.orig/recvattach.c 2010-09-13 20:19:55.000000000 +0300
++++ mutt-1.5.21/recvattach.c 2010-09-16 13:14:39.000000000 +0300
+@@ -1119,6 +1119,15 @@ void mutt_view_attachments (HEADER *hdr)
}
#endif
if (WithCrypto && hdr->security & ~PGP_TRADITIONAL_CHECKED)
{
mutt_message _(
-@@ -1179,10 +1188,33 @@ void mutt_view_attachments (HEADER *hdr)
+@@ -1210,10 +1219,33 @@ void mutt_view_attachments (HEADER *hdr)
case OP_FORWARD_MESSAGE:
CHECK_ATTACH;
mutt_attach_forward (fp, hdr, idx, idxlen,
case OP_REPLY:
case OP_GROUP_REPLY:
case OP_LIST_REPLY:
-diff -udprP mutt-1.5.16.orig/recvcmd.c mutt-1.5.16/recvcmd.c
---- mutt-1.5.16.orig/recvcmd.c 2007-04-02 00:58:57.000000000 +0300
-+++ mutt-1.5.16/recvcmd.c 2007-06-15 17:12:26.000000000 +0300
-@@ -377,7 +377,7 @@ static BODY ** copy_problematic_attachme
+diff -udprP mutt-1.5.21.orig/recvcmd.c mutt-1.5.21/recvcmd.c
+--- mutt-1.5.21.orig/recvcmd.c 2010-09-13 20:19:55.000000000 +0300
++++ mutt-1.5.21/recvcmd.c 2010-09-16 13:14:39.000000000 +0300
+@@ -401,7 +401,7 @@ static BODY ** copy_problematic_attachme
static void attach_forward_bodies (FILE * fp, HEADER * hdr,
ATTACHPTR ** idx, short idxlen,
BODY * cur,
{
short i;
short mime_fwd_all = 0;
-@@ -523,7 +523,7 @@ _("Can't decode all tagged attachments.
+@@ -547,7 +547,7 @@ _("Can't decode all tagged attachments.
tmpfp = NULL;
/* now that we have the template, send it. */
return;
bail:
-@@ -550,7 +550,7 @@ _("Can't decode all tagged attachments.
+@@ -574,7 +574,7 @@ _("Can't decode all tagged attachments.
*/
static void attach_forward_msgs (FILE * fp, HEADER * hdr,
{
HEADER *curhdr = NULL;
HEADER *tmphdr;
-@@ -655,23 +655,23 @@ static void attach_forward_msgs (FILE *
+@@ -679,23 +679,23 @@ static void attach_forward_msgs (FILE *
else
mutt_free_header (&tmphdr);
}
}
-@@ -729,28 +729,40 @@ attach_reply_envelope_defaults (ENVELOPE
+@@ -753,28 +753,40 @@ attach_reply_envelope_defaults (ENVELOPE
return -1;
}
mutt_make_misc_reply_headers (env, Context, curhdr, curenv);
if (parent)
-@@ -811,6 +823,13 @@ void mutt_attach_reply (FILE * fp, HEADE
+@@ -835,6 +847,13 @@ void mutt_attach_reply (FILE * fp, HEADE
char prefix[SHORT_STRING];
int rc;
if (check_all_msg (idx, idxlen, cur, 0) == -1)
{
nattach = count_tagged (idx, idxlen);
-diff -udprP mutt-1.5.16.orig/rfc1524.c mutt-1.5.16/rfc1524.c
---- mutt-1.5.16.orig/rfc1524.c 2007-04-02 00:58:58.000000000 +0300
-+++ mutt-1.5.16/rfc1524.c 2007-06-15 17:12:26.000000000 +0300
-@@ -569,13 +569,13 @@ int rfc1524_expand_filename (char *namet
+diff -udprP mutt-1.5.21.orig/rfc1524.c mutt-1.5.21/rfc1524.c
+--- mutt-1.5.21.orig/rfc1524.c 2010-03-01 19:56:19.000000000 +0200
++++ mutt-1.5.21/rfc1524.c 2010-09-16 13:14:39.000000000 +0300
+@@ -570,13 +570,13 @@ int rfc1524_expand_filename (char *namet
* safe_fopen().
*/
return 2;
if ((ofp = fopen (oldfile,"r")) == NULL)
return 3;
-@@ -590,3 +590,8 @@ int mutt_rename_file (char *oldfile, cha
+@@ -591,3 +591,8 @@ int mutt_rename_file (char *oldfile, cha
mutt_unlink (oldfile);
return 0;
}
+{
+ return _mutt_rename_file (oldfile, newfile, 0);
+}
-diff -udprP mutt-1.5.16.orig/rfc1524.h mutt-1.5.16/rfc1524.h
---- mutt-1.5.16.orig/rfc1524.h 2007-04-02 00:58:58.000000000 +0300
-+++ mutt-1.5.16/rfc1524.h 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/rfc1524.h mutt-1.5.21/rfc1524.h
+--- mutt-1.5.21.orig/rfc1524.h 2008-03-19 22:07:06.000000000 +0200
++++ mutt-1.5.21/rfc1524.h 2010-09-16 13:14:39.000000000 +0300
@@ -40,5 +40,6 @@ int rfc1524_expand_command (BODY *, char
int rfc1524_expand_filename (char *, char *, char *, size_t);
int rfc1524_mailcap_lookup (BODY *, char *, rfc1524_entry *, int);
+int _mutt_rename_file (char *, char *, int);
#endif /* _RFC1524_H */
-diff -udprP mutt-1.5.16.orig/send.c mutt-1.5.16/send.c
---- mutt-1.5.16.orig/send.c 2007-04-10 07:34:53.000000000 +0300
-+++ mutt-1.5.16/send.c 2007-06-15 17:12:26.000000000 +0300
-@@ -45,6 +45,10 @@
+diff -udprP mutt-1.5.21.orig/send.c mutt-1.5.21/send.c
+--- mutt-1.5.21.orig/send.c 2010-09-13 20:19:55.000000000 +0300
++++ mutt-1.5.21/send.c 2010-09-16 13:14:39.000000000 +0300
+@@ -44,6 +44,11 @@
#include <sys/types.h>
#include <utime.h>
+#ifdef USE_NNTP
+#include "nntp.h"
++#include "mx.h"
+#endif
+
#ifdef MIXMASTER
#include "remailer.h"
#endif
-@@ -214,17 +218,51 @@ static int edit_address (ADDRESS **a, /*
+@@ -213,17 +218,51 @@ static int edit_address (ADDRESS **a, /*
return 0;
}
if (en->subject)
{
-@@ -260,6 +298,14 @@ static int edit_envelope (ENVELOPE *en)
+@@ -259,6 +298,14 @@ static int edit_envelope (ENVELOPE *en)
return 0;
}
static void process_user_recips (ENVELOPE *env)
{
LIST *uh = UserHeader;
-@@ -272,6 +318,14 @@ static void process_user_recips (ENVELOP
+@@ -271,6 +318,14 @@ static void process_user_recips (ENVELOP
env->cc = rfc822_parse_adrlist (env->cc, uh->data + 3);
else if (ascii_strncasecmp ("bcc:", uh->data, 4) == 0)
env->bcc = rfc822_parse_adrlist (env->bcc, uh->data + 4);
}
}
-@@ -302,6 +356,12 @@ static void process_user_header (ENVELOP
+@@ -309,6 +364,12 @@ static void process_user_header (ENVELOP
else if (ascii_strncasecmp ("to:", uh->data, 3) != 0 &&
ascii_strncasecmp ("cc:", uh->data, 3) != 0 &&
ascii_strncasecmp ("bcc:", uh->data, 4) != 0 &&
+ ascii_strncasecmp ("x-comment-to:", uh->data, 13) != 0 &&
+#endif
+ ascii_strncasecmp ("supersedes:", uh->data, 11) != 0 &&
- ascii_strncasecmp ("subject:", uh->data, 8) != 0)
+ ascii_strncasecmp ("subject:", uh->data, 8) != 0 &&
+ ascii_strncasecmp ("return-path:", uh->data, 12) != 0)
{
- if (last)
-@@ -645,6 +705,10 @@ void mutt_add_to_reference_headers (ENVE
+@@ -657,6 +718,10 @@ void mutt_add_to_reference_headers (ENVE
if (pp) *pp = p;
if (qq) *qq = q;
}
static void
-@@ -701,6 +765,16 @@ envelope_defaults (ENVELOPE *env, CONTEX
+@@ -719,6 +784,16 @@ envelope_defaults (ENVELOPE *env, CONTEX
if (flags & SENDREPLY)
{
if (tag)
{
HEADER *h;
-@@ -847,7 +921,18 @@ void mutt_set_followup_to (ENVELOPE *e)
+@@ -865,7 +940,18 @@ void mutt_set_followup_to (ENVELOPE *e)
* it hasn't already been set
*/
{
if (mutt_is_list_cc (0, e->to, e->cc))
{
-@@ -1008,6 +1093,9 @@ static int send_message (HEADER *msg)
+@@ -1027,6 +1113,9 @@ static int send_message (HEADER *msg)
#endif
#if USE_SMTP
if (SmtpUrl)
return mutt_smtp_send (msg->env->from, msg->env->to, msg->env->cc,
msg->env->bcc, tempfile,
-@@ -1100,6 +1188,13 @@ ci_send_message (int flags, /* send mod
+@@ -1138,6 +1227,13 @@ ci_send_message (int flags, /* send mod
int rv = -1;
if (!flags && !msg && quadoption (OPT_RECALL) != M_NO &&
mutt_num_postponed (1))
{
-@@ -1130,6 +1225,22 @@ ci_send_message (int flags, /* send mod
+@@ -1168,6 +1264,22 @@ ci_send_message (int flags, /* send mod
{
if ((flags = mutt_get_postponed (ctx, msg, &cur, fcc, sizeof (fcc))) < 0)
goto cleanup;
}
if (flags & (SENDPOSTPONED|SENDRESEND))
-@@ -1237,11 +1348,16 @@ ci_send_message (int flags, /* send mod
+@@ -1262,11 +1374,16 @@ ci_send_message (int flags, /* send mod
if (flags & SENDREPLY)
mutt_fix_reply_recipients (msg->env);
+ msg->env->newsgroups = safe_strdup (((NNTP_DATA *)ctx->data)->group);
+#endif
+
- if (! (flags & SENDMAILX) &&
+ if (! (flags & (SENDMAILX|SENDBATCH)) &&
! (option (OPTAUTOEDIT) && option (OPTEDITHDRS)) &&
! ((flags & SENDREPLY) && option (OPTFASTREPLY)))
{
goto cleanup;
}
-@@ -1495,6 +1611,11 @@ main_loop:
+@@ -1534,6 +1651,11 @@ main_loop:
if (i == -1)
{
/* abort */
mutt_message _("Mail not sent.");
goto cleanup;
}
-@@ -1527,6 +1648,9 @@ main_loop:
+@@ -1566,6 +1688,9 @@ main_loop:
}
}
+#ifdef USE_NNTP
+ if (!(flags & SENDNEWS))
+#endif
- if (!msg->env->to && !msg->env->cc && !msg->env->bcc)
+ if (!has_recips (msg->env->to) && !has_recips (msg->env->cc) &&
+ !has_recips (msg->env->bcc))
{
- if (! (flags & SENDBATCH))
-@@ -1559,6 +1683,19 @@ main_loop:
+@@ -1599,6 +1724,19 @@ main_loop:
mutt_error _("No subject specified.");
goto main_loop;
}
if (msg->content->next)
msg->content = mutt_make_multipart (msg->content);
-@@ -1764,7 +1901,12 @@ full_fcc:
+@@ -1805,7 +1943,12 @@ full_fcc:
}
}
else if (!option (OPTNOCURSES) && ! (flags & SENDMAILX))
if (WithCrypto && (msg->security & ENCRYPT))
FREE (&pgpkeylist);
-diff -udprP mutt-1.5.16.orig/sendlib.c mutt-1.5.16/sendlib.c
---- mutt-1.5.16.orig/sendlib.c 2007-06-10 01:12:38.000000000 +0300
-+++ mutt-1.5.16/sendlib.c 2007-06-15 17:12:26.000000000 +0300
-@@ -45,6 +45,10 @@
+diff -udprP mutt-1.5.21.orig/sendlib.c mutt-1.5.21/sendlib.c
+--- mutt-1.5.21.orig/sendlib.c 2010-09-13 20:19:55.000000000 +0300
++++ mutt-1.5.21/sendlib.c 2010-09-16 13:14:39.000000000 +0300
+@@ -46,6 +46,10 @@
#include <sys/wait.h>
#include <fcntl.h>
#ifdef HAVE_SYSEXITS_H
#include <sysexits.h>
#else /* Make sure EX_OK is defined <philiph@pobox.com> */
-@@ -1525,7 +1529,7 @@ void mutt_write_address_list (ADDRESS *a
- /* need to write the list in reverse because they are stored in reverse order
- * when parsed to speed up threading
- */
--static void write_references (LIST *r, FILE *f)
-+void mutt_write_references (LIST *r, FILE *f)
+@@ -1543,6 +1547,14 @@ void mutt_write_references (LIST *r, FIL
{
LIST **ref = NULL;
int refcnt = 0, refmax = 0;
-@@ -1750,6 +1754,9 @@ int mutt_write_rfc822_header (FILE *fp,
- LIST *tmp = env->userhdrs;
- int has_agent = 0; /* user defined user-agent header field exists */
-
-+#ifdef USE_NNTP
-+ if (!option (OPTNEWSSEND))
-+#endif
- if (mode == 0 && !privacy)
- fputs (mutt_make_date (buffer, sizeof(buffer)), fp);
++ int multiline = 1;
++ int space = 0;
++
++ if (trim < 0)
++ {
++ trim = -trim;
++ multiline = 0;
++ }
+
+ for ( ; (trim == 0 || refcnt < trim) && r ; r = r->next)
+ {
+@@ -1553,9 +1565,11 @@ void mutt_write_references (LIST *r, FIL
-@@ -1776,6 +1783,9 @@ int mutt_write_rfc822_header (FILE *fp,
+ while (refcnt-- > 0)
+ {
+- fputc (' ', f);
++ if (multiline || space)
++ fputc (' ', f);
++ space = 1;
+ fputs (ref[refcnt]->data, f);
+- if (refcnt >= 1)
++ if (multiline && refcnt >= 1)
+ fputc ('\n', f);
+ }
+
+@@ -1962,6 +1976,9 @@ int mutt_write_rfc822_header (FILE *fp,
mutt_write_address_list (env->to, fp, 4, 0);
}
else if (mode > 0)
fputs ("To: \n", fp);
if (env->cc)
-@@ -1784,6 +1794,9 @@ int mutt_write_rfc822_header (FILE *fp,
+@@ -1970,6 +1987,9 @@ int mutt_write_rfc822_header (FILE *fp,
mutt_write_address_list (env->cc, fp, 4, 0);
}
else if (mode > 0)
fputs ("Cc: \n", fp);
if (env->bcc)
-@@ -1795,8 +1808,28 @@ int mutt_write_rfc822_header (FILE *fp,
+@@ -1981,8 +2001,28 @@ int mutt_write_rfc822_header (FILE *fp,
}
}
else if (mode > 0)
+#endif
+
if (env->subject)
- mutt_write_one_header (fp, "Subject", env->subject, NULL, 0);
+ mutt_write_one_header (fp, "Subject", env->subject, NULL, 0, 0);
else if (mode == 1)
-@@ -1815,6 +1848,9 @@ int mutt_write_rfc822_header (FILE *fp,
+@@ -2001,6 +2041,9 @@ int mutt_write_rfc822_header (FILE *fp,
fputs ("Reply-To: \n", fp);
if (env->mail_followup_to)
{
fputs ("Mail-Followup-To: ", fp);
mutt_write_address_list (env->mail_followup_to, fp, 18, 0);
-@@ -1825,7 +1861,7 @@ int mutt_write_rfc822_header (FILE *fp,
- if (env->references)
- {
- fputs ("References:", fp);
-- write_references (env->references, fp);
-+ mutt_write_references (env->references, fp);
- fputc('\n', fp);
- }
-
-@@ -1837,7 +1873,7 @@ int mutt_write_rfc822_header (FILE *fp,
- if (env->in_reply_to)
- {
- fputs ("In-Reply-To:", fp);
-- write_references (env->in_reply_to, fp);
-+ mutt_write_references (env->in_reply_to, fp);
- fputc ('\n', fp);
- }
-
-@@ -2153,11 +2189,30 @@ mutt_invoke_sendmail (ADDRESS *from, /*
+@@ -2339,11 +2382,30 @@ mutt_invoke_sendmail (ADDRESS *from, /*
const char *msg, /* file containing message */
int eightbit) /* message contains 8bit chars */
{
ps = s;
i = 0;
while ((ps = strtok (ps, " ")))
-@@ -2181,6 +2236,10 @@ mutt_invoke_sendmail (ADDRESS *from, /*
+@@ -2367,6 +2429,10 @@ mutt_invoke_sendmail (ADDRESS *from, /*
i++;
}
if (eightbit && option (OPTUSE8BITMIME))
args = add_option (args, &argslen, &argsmax, "-B8BITMIME");
-@@ -2212,6 +2271,9 @@ mutt_invoke_sendmail (ADDRESS *from, /*
+@@ -2398,6 +2464,9 @@ mutt_invoke_sendmail (ADDRESS *from, /*
args = add_args (args, &argslen, &argsmax, to);
args = add_args (args, &argslen, &argsmax, cc);
args = add_args (args, &argslen, &argsmax, bcc);
if (argslen == argsmax)
safe_realloc (&args, sizeof (char *) * (++argsmax));
-@@ -2344,6 +2406,9 @@ void mutt_prepare_envelope (ENVELOPE *en
- rfc2047_encode_adrlist (env->reply_to, "Reply-To");
+@@ -2478,6 +2547,9 @@ void mutt_prepare_envelope (ENVELOPE *en
+ rfc2047_encode_string (&env->x_label);
if (env->subject)
+#ifdef USE_NNTP
{
rfc2047_encode_string (&env->subject);
}
-@@ -2449,6 +2514,10 @@ int mutt_bounce_message (FILE *fp, HEADE
+@@ -2598,6 +2670,10 @@ int mutt_bounce_message (FILE *fp, HEADE
}
rfc822_write_address (resent_from, sizeof (resent_from), from, 0);
ret = _mutt_bounce_message (fp, h, to, resent_from, from);
rfc822_free_address (&from);
-diff -udprP mutt-1.5.16.orig/sort.c mutt-1.5.16/sort.c
---- mutt-1.5.16.orig/sort.c 2007-06-06 19:02:56.000000000 +0300
-+++ mutt-1.5.16/sort.c 2007-06-15 17:12:26.000000000 +0300
-@@ -151,6 +151,15 @@ int compare_order (const void *a, const
+diff -udprP mutt-1.5.21.orig/sort.c mutt-1.5.21/sort.c
+--- mutt-1.5.21.orig/sort.c 2008-10-29 00:29:44.000000000 +0200
++++ mutt-1.5.21/sort.c 2010-09-16 13:14:39.000000000 +0300
+@@ -151,6 +151,15 @@ static int compare_order (const void *a,
HEADER **ha = (HEADER **) a;
HEADER **hb = (HEADER **) b;
/* no need to auxsort because you will never have equality here */
return (SORTCODE ((*ha)->index - (*hb)->index));
}
-diff -udprP mutt-1.5.16.orig/url.c mutt-1.5.16/url.c
---- mutt-1.5.16.orig/url.c 2007-04-11 02:15:42.000000000 +0300
-+++ mutt-1.5.16/url.c 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/url.c mutt-1.5.21/url.c
+--- mutt-1.5.21.orig/url.c 2010-08-24 19:34:21.000000000 +0300
++++ mutt-1.5.21/url.c 2010-09-16 13:14:39.000000000 +0300
@@ -39,6 +39,8 @@ static struct mapping_t UrlMap[] =
{ "imaps", U_IMAPS },
{ "pop", U_POP },
{ "mailto", U_MAILTO },
{ "smtp", U_SMTP },
{ "smtps", U_SMTPS },
-diff -udprP mutt-1.5.16.orig/url.h mutt-1.5.16/url.h
---- mutt-1.5.16.orig/url.h 2007-04-11 02:16:09.000000000 +0300
-+++ mutt-1.5.16/url.h 2007-06-15 17:12:26.000000000 +0300
+diff -udprP mutt-1.5.21.orig/url.h mutt-1.5.21/url.h
+--- mutt-1.5.21.orig/url.h 2009-08-25 22:08:52.000000000 +0300
++++ mutt-1.5.21/url.h 2010-09-16 13:14:39.000000000 +0300
@@ -8,6 +8,8 @@ typedef enum url_scheme
U_POPS,
U_IMAP,
U_SMTP,
U_SMTPS,
U_MAILTO,
+diff -udprP mutt-1.5.21.orig/Makefile.am mutt-1.5.21/Makefile.am
+--- mutt-1.5.21.orig/Makefile.am 2010-08-24 19:34:21.000000000 +0300
++++ mutt-1.5.21/Makefile.am 2010-09-16 13:14:39.000000000 +0300
+@@ -57,6 +57,7 @@ EXTRA_mutt_SOURCES = account.c bcache.c
+ mutt_idna.c mutt_sasl.c mutt_socket.c mutt_ssl.c mutt_ssl_gnutls.c \
+ mutt_tunnel.c pgp.c pgpinvoke.c pgpkey.c pgplib.c pgpmicalg.c \
+ pgppacket.c pop.c pop_auth.c pop_lib.c remailer.c resize.c sha1.c \
++ nntp.c newsrc.c \
+ smime.c smtp.c utf8.c wcwidth.c \
+ bcache.h browser.h hcache.h mbyte.h mutt_idna.h remailer.h url.h
+
+@@ -68,6 +69,7 @@ EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP O
+ mutt_regex.h mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h \
+ mx.h pager.h pgp.h pop.h protos.h rfc1524.h rfc2047.h \
+ rfc2231.h rfc822.h rfc3676.h sha1.h sort.h mime.types VERSION prepare \
++ nntp.h ChangeLog.nntp \
+ _regex.h OPS.MIX README.SECURITY remailer.c remailer.h browser.h \
+ mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h \
+ README.SSL smime.h group.h \
+diff -udprP mutt-1.5.21.orig/Makefile.in mutt-1.5.21/Makefile.in
+--- mutt-1.5.21.orig/Makefile.in 2010-08-25 19:31:48.000000000 +0300
++++ mutt-1.5.21/Makefile.in 2010-09-16 13:14:39.000000000 +0300
+@@ -375,6 +375,7 @@ EXTRA_mutt_SOURCES = account.c bcache.c
+ mutt_idna.c mutt_sasl.c mutt_socket.c mutt_ssl.c mutt_ssl_gnutls.c \
+ mutt_tunnel.c pgp.c pgpinvoke.c pgpkey.c pgplib.c pgpmicalg.c \
+ pgppacket.c pop.c pop_auth.c pop_lib.c remailer.c resize.c sha1.c \
++ nntp.c newsrc.c \
+ smime.c smtp.c utf8.c wcwidth.c \
+ bcache.h browser.h hcache.h mbyte.h mutt_idna.h remailer.h url.h
+
+@@ -386,6 +387,7 @@ EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP O
+ mutt_regex.h mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h \
+ mx.h pager.h pgp.h pop.h protos.h rfc1524.h rfc2047.h \
+ rfc2231.h rfc822.h rfc3676.h sha1.h sort.h mime.types VERSION prepare \
++ nntp.h ChangeLog.nntp \
+ _regex.h OPS.MIX README.SECURITY remailer.c remailer.h browser.h \
+ mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h \
+ README.SSL smime.h group.h \
+@@ -640,6 +642,8 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutt_tunnel.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/muttlib.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mx.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newsrc.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nntp.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pager.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/patchlist.Po@am__quote@
+diff -udprP mutt-1.5.21.orig/configure mutt-1.5.21/configure
+--- mutt-1.5.21.orig/configure 2010-08-25 19:31:47.000000000 +0300
++++ mutt-1.5.21/configure 2010-09-16 13:14:39.000000000 +0300
+@@ -1427,6 +1427,7 @@ Optional Features:
+ Force use of an external dotlock program
+ --enable-pop Enable POP3 support
+ --enable-imap Enable IMAP support
++ --enable-nntp Enable NNTP support
+ --enable-smtp include internal SMTP relay support
+ --enable-debug Enable debugging support
+ --enable-flock Use flock() to lock files
+@@ -10823,6 +10824,20 @@ _ACEOF
+ fi
+ done
+
++# Check whether --enable-nntp or --disable-nntp was given.
++if test "${enable_nntp+set}" = set; then
++ enableval="$enable_nntp"
++ if test x$enableval = xyes ; then
++ cat >>confdefs.h <<\_ACEOF
++#define USE_NNTP 1
++_ACEOF
++
++ MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS nntp.o newsrc.o"
++ need_socket="yes"
++ fi
++
++fi;
++
+
+
+
+diff -udprP mutt-1.5.21.orig/doc/Muttrc mutt-1.5.21/doc/Muttrc
+--- mutt-1.5.21.orig/doc/Muttrc 2010-09-15 20:07:19.000000000 +0300
++++ mutt-1.5.21/doc/Muttrc 2010-09-16 13:14:39.000000000 +0300
+@@ -281,6 +281,28 @@ attachments -I message/external-body
+ # of the value as shown above if included.
+ #
+ #
++# set ask_follow_up=no
++#
++# Name: ask_follow_up
++# Type: boolean
++# Default: no
++#
++#
++# If set, Mutt will prompt you for follow-up groups before editing
++# the body of an outgoing message.
++#
++#
++# set ask_x_comment_to=no
++#
++# Name: ask_x_comment_to
++# Type: boolean
++# Default: no
++#
++#
++# If set, Mutt will prompt you for x-comment-to field before editing
++# the body of an outgoing message.
++#
++#
+ # set attach_format="%u%D%I %t%4n %T%.40d%> [%.7m/%.10M, %.6e%?C?, %C?, %s] "
+ #
+ # Name: attach_format
+@@ -466,6 +488,17 @@ attachments -I message/external-body
+ # set certificate_file=~/.mutt/certificates
+ #
+ #
++# set catchup_newsgroup=ask-yes
++#
++# Name: catchup_newsgroup
++# Type: quadoption
++# Default: ask-yes
++#
++#
++# If this variable is set, Mutt will mark all articles in newsgroup
++# as read when you quit the newsgroup (catchup newsgroup).
++#
++#
+ # set charset=""
+ #
+ # Name: charset
+@@ -1122,6 +1155,19 @@ attachments -I message/external-body
+ # of the same email for you.
+ #
+ #
++# set followup_to_poster=ask-yes
++#
++# Name: followup_to_poster
++# Type: quadoption
++# Default: ask-yes
++#
++#
++# If this variable is set and the keyword "poster" is present in
++# Followup-To header, follow-up to newsgroup function is not
++# permitted. The message will be mailed to the submitter of the
++# message via mail.
++#
++#
+ # set force_name=no
+ #
+ # Name: force_name
+@@ -1232,6 +1278,28 @@ attachments -I message/external-body
+ # ``Franklin'' to ``Franklin, Steve''.
+ #
+ #
++# set group_index_format="%4C %M%N %5s %-45.45f %d"
++#
++# Name: group_index_format
++# Type: string
++# Default: "%4C %M%N %5s %-45.45f %d"
++#
++#
++# This variable allows you to customize the newsgroup browser display to
++# your personal taste. This string is similar to ``index_format'', but
++# has its own set of printf()-like sequences:
++#
++# %C current newsgroup number
++# %d description of newsgroup (becomes from server)
++# %f newsgroup name
++# %M - if newsgroup not allowed for direct post (moderated for example)
++# %N N if newsgroup is new, u if unsubscribed, blank otherwise
++# %n number of new articles in newsgroup
++# %s number of unread articles in newsgroup
++# %>X right justify the rest of the string and pad with character "X"
++# %|X pad to the end of the line with character "X"
++#
++#
+ # set hdrs=yes
+ #
+ # Name: hdrs
+@@ -1780,6 +1848,7 @@ attachments -I message/external-body
+ # %E number of messages in current thread
+ # %f sender (address + real name), either From: or Return-Path:
+ # %F author name, or recipient name if the message is from you
++# %g newsgroup name (if compiled with nntp support)
+ # %H spam attribute(s) of this message
+ # %i message-id of the current message
+ # %l number of lines in the message (does not work with maildir,
+@@ -1795,12 +1864,14 @@ attachments -I message/external-body
+ # stashed the message: list name or recipient name
+ # if not sent to a list
+ # %P progress indicator for the built-in pager (how much of the file has been displayed)
++# %R ``x-comment-to:'' field (if present and compiled with nntp support)
+ # %s subject of the message
+ # %S status of the message (``N''/``D''/``d''/``!''/``r''/*)
+ # %t ``To:'' field (recipients)
+ # %T the appropriate character from the $to_chars string
+ # %u user (login) name of the author
+ # %v first name of the author, or the recipient if the message is from you
++# %W name of organization of author (``organization:'' field)
+ # %X number of attachments
+ # (please see the ``attachments'' section for possible speed effects)
+ # %y ``X-Label:'' field, if present
+@@ -1836,6 +1907,22 @@ attachments -I message/external-body
+ # ``save-hook'', ``fcc-hook'' and ``fcc-save-hook'', too.
+ #
+ #
++# set inews=""
++#
++# Name: inews
++# Type: path
++# Default: ""
++#
++#
++# If set, specifies the program and arguments used to deliver news posted
++# by Mutt. Otherwise, mutt posts article using current connection to
++# news server. The following printf-style sequence is understood:
++#
++# %s newsserver name
++#
++# Example: set inews="/usr/local/bin/inews -hS"
++#
++#
+ # set ispell="ispell"
+ #
+ # Name: ispell
+@@ -2205,6 +2292,18 @@ attachments -I message/external-body
+ # be attached to the newly composed message if this option is set.
+ #
+ #
++# set mime_subject=yes
++#
++# Name: mime_subject
++# Type: boolean
++# Default: yes
++#
++#
++# If unset, 8-bit ``subject:'' line in article header will not be
++# encoded according to RFC2047 to base64. This is useful when message
++# is Usenet article, because MIME for news is nonstandard feature.
++#
++#
+ # set mix_entry_format="%4n %c %-16s %a"
+ #
+ # Name: mix_entry_format
+@@ -2271,6 +2370,118 @@ attachments -I message/external-body
+ # See also $read_inc, $write_inc and $net_inc.
+ #
+ #
++# set news_cache_dir="~/.mutt"
++#
++# Name: news_cache_dir
++# Type: path
++# Default: "~/.mutt"
++#
++#
++# This variable pointing to directory where Mutt will save cached news
++# articles headers in. If unset, headers will not be saved at all
++# and will be reloaded each time when you enter to newsgroup.
++#
++#
++# set news_server=""
++#
++# Name: news_server
++# Type: string
++# Default: ""
++#
++#
++# This variable specifies domain name or address of NNTP server. It
++# defaults to the newsserver specified in the environment variable
++# $NNTPSERVER or contained in the file /etc/nntpserver. You can also
++# specify username and an alternative port for each newsserver, ie:
++#
++# [news[s]://][username[:password]@]newsserver[:port]
++#
++#
++# set newsrc="~/.newsrc"
++#
++# Name: newsrc
++# Type: path
++# Default: "~/.newsrc"
++#
++#
++# The file, containing info about subscribed newsgroups - names and
++# indexes of read articles. The following printf-style sequence
++# is understood:
++#
++# %s newsserver name
++#
++#
++# set nntp_context=1000
++#
++# Name: nntp_context
++# Type: number
++# Default: 1000
++#
++#
++# This variable defines number of articles which will be in index when
++# newsgroup entered. If active newsgroup have more articles than this
++# number, oldest articles will be ignored. Also controls how many
++# articles headers will be saved in cache when you quit newsgroup.
++#
++#
++# set nntp_load_description=yes
++#
++# Name: nntp_load_description
++# Type: boolean
++# Default: yes
++#
++#
++# This variable controls whether or not descriptions for each newsgroup
++# must be loaded when newsgroup is added to list (first time list
++# loading or new newsgroup adding).
++#
++#
++# set nntp_user=""
++#
++# Name: nntp_user
++# Type: string
++# Default: ""
++#
++#
++# Your login name on the NNTP server. If unset and NNTP server requires
++# authentification, Mutt will prompt you for your account name when you
++# connect to newsserver.
++#
++#
++# set nntp_pass=""
++#
++# Name: nntp_pass
++# Type: string
++# Default: ""
++#
++#
++# Your password for NNTP account.
++#
++#
++# set nntp_poll=60
++#
++# Name: nntp_poll
++# Type: number
++# Default: 60
++#
++#
++# The time in seconds until any operations on newsgroup except post new
++# article will cause recheck for new news. If set to 0, Mutt will
++# recheck newsgroup on each operation in index (stepping, read article,
++# etc.).
++#
++#
++# set nntp_reconnect=ask-yes
++#
++# Name: nntp_reconnect
++# Type: quadoption
++# Default: ask-yes
++#
++#
++# Controls whether or not Mutt will try to reconnect to newsserver when
++# connection lost.
++#
++#
+ # set pager="builtin"
+ #
+ # Name: pager
+@@ -2986,6 +3197,19 @@ attachments -I message/external-body
+ # string after the inclusion of a message which is being replied to.
+ #
+ #
++# set post_moderated=ask-yes
++#
++# Name: post_moderated
++# Type: quadoption
++# Default: ask-yes
++#
++#
++# If set to yes, Mutt will post article to newsgroup that have
++# not permissions to posting (e.g. moderated). Note: if newsserver
++# does not support posting to that newsgroup or totally read-only, that
++# posting will not have an effect.
++#
++#
+ # set postpone=ask-yes
+ #
+ # Name: postpone
+@@ -3563,6 +3787,41 @@ attachments -I message/external-body
+ # shell from /etc/passwd is used.
+ #
+ #
++# set save_unsubscribed=no
++#
++# Name: save_unsubscribed
++# Type: boolean
++# Default: no
++#
++#
++# When set, info about unsubscribed newsgroups will be saved into
++# ``newsrc'' file and into cache.
++#
++#
++# set show_new_news=yes
++#
++# Name: show_new_news
++# Type: boolean
++# Default: yes
++#
++#
++# If set, newsserver will be asked for new newsgroups on entering
++# the browser. Otherwise, it will be done only once for a newsserver.
++# Also controls whether or not number of new articles of subscribed
++# newsgroups will be then checked.
++#
++#
++# set show_only_unread=no
++#
++# Name: show_only_unread
++# Type: boolean
++# Default: no
++#
++#
++# If set, only subscribed newsgroups that contain unread articles
++# will be displayed in browser.
++#
++#
+ # set sig_dashes=yes
+ #
+ # Name: sig_dashes
+@@ -4785,3 +5044,14 @@ attachments -I message/external-body
+ # ``tuning'' section of the manual for performance considerations.
+ #
+ #
++# set x_comment_to=no
++#
++# Name: x_comment_to
++# Type: boolean
++# Default: no
++#
++#
++# If set, Mutt will add ``X-Comment-To:'' field (that contains full
++# name of original article author) to article that followuped to newsgroup.
++#
++#