diff options
-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,7 +1,7 @@ | |||
1 | GNU mailutils NEWS -- history of user-visible changes. 2019-09-03 | 1 | GNU mailutils NEWS -- history of user-visible changes. 2019-09-11 |
2 | Copyright (C) 2002-2019 Free Software Foundation, Inc. | 2 | Copyright (C) 2002-2019 Free Software Foundation, Inc. |
3 | See the end of file for copying conditions. | 3 | See the end of file for copying conditions. |
4 | 4 | ||
5 | Please send mailutils bug reports to <bug-mailutils@gnu.org>. | 5 | Please send mailutils bug reports to <bug-mailutils@gnu.org>. |
6 | 6 | ||
7 | Version 3.7.90 (git) | 7 | Version 3.7.90 (git) |
@@ -24,13 +24,21 @@ Example configuration (pop3s server): | |||
24 | } | 24 | } |
25 | 25 | ||
26 | * comsatd --test | 26 | * comsatd --test |
27 | 27 | ||
28 | The --test option takes optional argument: name of the tty or file to | 28 | The --test option takes optional argument: name of the tty or file to |
29 | use for reporting. | 29 | use for reporting. |
30 | 30 | ||
31 | |||
32 | |||
33 | ** fix the semantics of 'hold' and 'keepsave' variables | ||
34 | |||
35 | ** New message type specification ":s" | ||
36 | |||
37 | Selects messages in state 'saved'. | ||
38 | |||
31 | 39 | ||
32 | Version 3.7 - 2019-06-21 | 40 | Version 3.7 - 2019-06-21 |
33 | 41 | ||
34 | * Support for the new mailbox format - dotmail | 42 | * Support for the new mailbox format - dotmail |
35 | 43 | ||
36 | Dotmail is a replacement for traditional mbox format, proposed by | 44 | Dotmail is a replacement for traditional mbox format, proposed by |
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 | |||
@@ -429,24 +429,26 @@ All messages with ordinal numbers between @var{n} and @var{m}, inclusive. | |||
429 | @item :@var{t} | 429 | @item :@var{t} |
430 | All messages of type @var{t}, where @var{t} can be any of: | 430 | All messages of type @var{t}, where @var{t} can be any of: |
431 | 431 | ||
432 | @table @samp | 432 | @table @samp |
433 | @item d | 433 | @item d |
434 | Deleted messages. | 434 | Deleted messages. |
435 | @item :n | 435 | @item n |
436 | New messages. | 436 | New messages. |
437 | @item :o | 437 | @item o |
438 | Old messages (any message not in state @samp{read} or @samp{new}). | 438 | Old messages (any message not in state @samp{read} or @samp{new}). |
439 | @item :r | 439 | @item r |
440 | Messages in state @samp{read}. | 440 | Messages in state @samp{read}. |
441 | @item :u | 441 | @item u |
442 | Messages in state @samp{unread}. | 442 | Messages in state @samp{unread}. |
443 | @item :t | 443 | @item t |
444 | Selects all tagged messages. | 444 | Selects all tagged messages. |
445 | @item :T | 445 | @item T |
446 | Selects all untagged messages. | 446 | Selects all untagged messages. |
447 | @item s | ||
448 | Selects all messages in state @samp{saved}. | ||
447 | @end table | 449 | @end table |
448 | 450 | ||
449 | @item [@var{header}:]/@var{string}[/] | 451 | @item [@var{header}:]/@var{string}[/] |
450 | Header match. | 452 | Header match. |
451 | 453 | ||
452 | Selects all messages that contain header field @var{header} matching | 454 | Selects all messages that contain header field @var{header} matching |
diff --git a/mail/mailline.c b/mail/mailline.c index 647cb1e17..d6cef37df 100644 --- a/mail/mailline.c +++ b/mail/mailline.c | |||
@@ -687,13 +687,13 @@ folder_generator (const char *text, int state) | |||
687 | 687 | ||
688 | static char * | 688 | static char * |
689 | msgtype_generator (const char *text, int state) | 689 | msgtype_generator (const char *text, int state) |
690 | { | 690 | { |
691 | /* Allowed message types, plus '/'. The latter can folow a colon, | 691 | /* Allowed message types, plus '/'. The latter can folow a colon, |
692 | meaning body lookup */ | 692 | meaning body lookup */ |
693 | static char types[] = "dnorTtu/"; | 693 | static char types[] = "dnorsTtu/"; |
694 | static int i; | 694 | static int i; |
695 | char c; | 695 | char c; |
696 | 696 | ||
697 | if (!state) | 697 | if (!state) |
698 | { | 698 | { |
699 | i = 0; | 699 | i = 0; |
diff --git a/mail/msgset.y b/mail/msgset.y index 8011dc779..6f31325dd 100644 --- a/mail/msgset.y +++ b/mail/msgset.y | |||
@@ -163,13 +163,13 @@ msg : header REGEXP /* /.../ */ | |||
163 | mu_error (_("No applicable messages from {:/%s}"), $1); | 163 | mu_error (_("No applicable messages from {:/%s}"), $1); |
164 | YYERROR; | 164 | YYERROR; |
165 | } | 165 | } |
166 | } | 166 | } |
167 | | TYPE /* :n, :d, etc */ | 167 | | TYPE /* :n, :d, etc */ |
168 | { | 168 | { |
169 | if (strchr ("dnorTtu", $1) == NULL) | 169 | if (strchr ("dnorsTtu", $1) == NULL) |
170 | { | 170 | { |
171 | yyerror (_("unknown message type")); | 171 | yyerror (_("unknown message type")); |
172 | YYERROR; | 172 | YYERROR; |
173 | } | 173 | } |
174 | $$ = msgset_select (select_type, (void *)&$1, 0, 0); | 174 | $$ = msgset_select (select_type, (void *)&$1, 0, 0); |
175 | if (!$$) | 175 | if (!$$) |
@@ -743,18 +743,20 @@ select_type (mu_message_t msg, void *closure) | |||
743 | case 'n': | 743 | case 'n': |
744 | return mu_attribute_is_recent (attr); | 744 | return mu_attribute_is_recent (attr); |
745 | case 'o': | 745 | case 'o': |
746 | return mu_attribute_is_seen (attr); | 746 | return mu_attribute_is_seen (attr); |
747 | case 'r': | 747 | case 'r': |
748 | return mu_attribute_is_read (attr); | 748 | return mu_attribute_is_read (attr); |
749 | case 'u': | 749 | case 's': |
750 | return !mu_attribute_is_read (attr); | 750 | return mu_attribute_is_userflag (attr, MAIL_ATTRIBUTE_SAVED); |
751 | case 't': | 751 | case 't': |
752 | return mu_attribute_is_userflag (attr, MAIL_ATTRIBUTE_TAGGED); | 752 | return mu_attribute_is_userflag (attr, MAIL_ATTRIBUTE_TAGGED); |
753 | case 'T': | 753 | case 'T': |
754 | return !mu_attribute_is_userflag (attr, MAIL_ATTRIBUTE_TAGGED); | 754 | return !mu_attribute_is_userflag (attr, MAIL_ATTRIBUTE_TAGGED); |
755 | case 'u': | ||
756 | return !mu_attribute_is_read (attr); | ||
755 | } | 757 | } |
756 | return 0; | 758 | return 0; |
757 | } | 759 | } |
758 | 760 | ||
759 | int | 761 | int |
760 | select_deleted (mu_message_t msg, void *closure MU_ARG_UNUSED) | 762 | select_deleted (mu_message_t msg, void *closure MU_ARG_UNUSED) |