diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2019-09-11 13:10:44 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2019-09-11 13:10:44 +0300 |
commit | cf8100abb84b8ba92f6a3d33c60c2dbce950e119 (patch) | |
tree | 356777c49e88c176fe900a0877e79c91de667077 | |
parent | e8c4245e1a4c8e2cb130cfcefa4474909bcb7906 (diff) | |
download | mailutils-cf8100abb84b8ba92f6a3d33c60c2dbce950e119.tar.gz mailutils-cf8100abb84b8ba92f6a3d33c60c2dbce950e119.tar.bz2 |
mail: new message specification :s
* NEWS: Update.
* doc/texinfo/programs/mail.texi: Update.
* mail/mailline.c (msgtype_generator): Recogize 's'
* mail/msgset.y (select_type): Recognize 's'
-rw-r--r-- | NEWS | 12 | ||||
-rw-r--r-- | doc/texinfo/programs/mail.texi | 14 | ||||
-rw-r--r-- | mail/mailline.c | 2 | ||||
-rw-r--r-- | mail/msgset.y | 8 |
4 files changed, 24 insertions, 12 deletions
@@ -1,13 +1,13 @@ -GNU mailutils NEWS -- history of user-visible changes. 2019-09-03 +GNU mailutils NEWS -- history of user-visible changes. 2019-09-11 Copyright (C) 2002-2019 Free Software Foundation, Inc. See the end of file for copying conditions. Please send mailutils bug reports to <bug-mailutils@gnu.org>. Version 3.7.90 (git) * Use of TLS in pop3d run from inetd New global configuration statement "tls-mode" configures the TLS for use in inetd mode. @@ -18,25 +18,33 @@ Example configuration (pop3s server): mode inetd; tls-mode connection; tls { ssl-key-file /etc/ssl/key.pem; ssl-certificate-file /etc/ssl/cert.pem; } * comsatd --test The --test option takes optional argument: name of the tty or file to use for reporting. - + +* mail + +** fix the semantics of 'hold' and 'keepsave' variables + +** New message type specification ":s" + +Selects messages in state 'saved'. + Version 3.7 - 2019-06-21 * Support for the new mailbox format - dotmail Dotmail is a replacement for traditional mbox format, proposed by Kurt Hackenberg. A dotmail mailbox is a single disk file, where messages are stored sequentially. Each message ends with a single dot (similar to the format used in the SMTP DATA command). Any dot appearing at the start of the line is doubled, to prevent it from being interpreted as end of message marker. diff --git a/doc/texinfo/programs/mail.texi b/doc/texinfo/programs/mail.texi index b4c68a100..accd89148 100644 --- a/doc/texinfo/programs/mail.texi +++ b/doc/texinfo/programs/mail.texi @@ -423,36 +423,38 @@ of This specifier addresses the message with the given ordinal number in the mailbox. @item @var{n}-@var{m} All messages with ordinal numbers between @var{n} and @var{m}, inclusive. @item :@var{t} All messages of type @var{t}, where @var{t} can be any of: @table @samp @item d Deleted messages. -@item :n +@item n New messages. -@item :o +@item o Old messages (any message not in state @samp{read} or @samp{new}). -@item :r +@item r Messages in state @samp{read}. -@item :u +@item u Messages in state @samp{unread}. -@item :t +@item t Selects all tagged messages. -@item :T +@item T Selects all untagged messages. +@item s +Selects all messages in state @samp{saved}. @end table @item [@var{header}:]/@var{string}[/] Header match. Selects all messages that contain header field @var{header} matching given @var{string}. If the variable @code{regex} is set, the @var{string} is assumed to be a POSIX regexp. (All comparison is case-insensitive in either case). If @var{header}: part is omitted, it is assumed to be @samp{Subject:}. diff --git a/mail/mailline.c b/mail/mailline.c index 647cb1e17..d6cef37df 100644 --- a/mail/mailline.c +++ b/mail/mailline.c @@ -681,25 +681,25 @@ folder_generator (const char *text, int state) free (path); if (rc) return NULL; } return filegen_next (&fg); } static char * msgtype_generator (const char *text, int state) { /* Allowed message types, plus '/'. The latter can folow a colon, meaning body lookup */ - static char types[] = "dnorTtu/"; + static char types[] = "dnorsTtu/"; static int i; char c; if (!state) { i = 0; } while ((c = types[i])) { i++; if (!text[1] || text[1] == c) { diff --git a/mail/msgset.y b/mail/msgset.y index 8011dc779..6f31325dd 100644 --- a/mail/msgset.y +++ b/mail/msgset.y @@ -157,25 +157,25 @@ msg : header REGEXP /* /.../ */ } | BODY { $$ = msgset_select (select_body, $1, 0, 0); if (!$$) { mu_error (_("No applicable messages from {:/%s}"), $1); YYERROR; } } | TYPE /* :n, :d, etc */ { - if (strchr ("dnorTtu", $1) == NULL) + if (strchr ("dnorsTtu", $1) == NULL) { yyerror (_("unknown message type")); YYERROR; } $$ = msgset_select (select_type, (void *)&$1, 0, 0); if (!$$) { mu_error (_("No messages satisfy :%c"), $1); YYERROR; } } | IDENT /* Sender name */ @@ -737,30 +737,32 @@ select_type (mu_message_t msg, void *closure) mu_message_get_attribute (msg, &attr); switch (type) { case 'd': return mu_attribute_is_deleted (attr); case 'n': return mu_attribute_is_recent (attr); case 'o': return mu_attribute_is_seen (attr); case 'r': return mu_attribute_is_read (attr); - case 'u': - return !mu_attribute_is_read (attr); + case 's': + return mu_attribute_is_userflag (attr, MAIL_ATTRIBUTE_SAVED); case 't': return mu_attribute_is_userflag (attr, MAIL_ATTRIBUTE_TAGGED); case 'T': return !mu_attribute_is_userflag (attr, MAIL_ATTRIBUTE_TAGGED); + case 'u': + return !mu_attribute_is_read (attr); } return 0; } int select_deleted (mu_message_t msg, void *closure MU_ARG_UNUSED) { mu_attribute_t attr= NULL; int rc; mu_message_get_attribute (msg, &attr); rc = mu_attribute_is_deleted (attr); |