summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS12
-rw-r--r--doc/texinfo/programs/mail.texi14
-rw-r--r--mail/mailline.c2
-rw-r--r--mail/msgset.y8
4 files changed, 24 insertions, 12 deletions
diff --git a/NEWS b/NEWS
index 50eadb89a..f23851e62 100644
--- a/NEWS
+++ b/NEWS
@@ -1,13 +1,13 @@
1GNU mailutils NEWS -- history of user-visible changes. 2019-09-03 1GNU mailutils NEWS -- history of user-visible changes. 2019-09-11
2Copyright (C) 2002-2019 Free Software Foundation, Inc. 2Copyright (C) 2002-2019 Free Software Foundation, Inc.
3See the end of file for copying conditions. 3See the end of file for copying conditions.
4 4
5Please send mailutils bug reports to <bug-mailutils@gnu.org>. 5Please send mailutils bug reports to <bug-mailutils@gnu.org>.
6 6
7Version 3.7.90 (git) 7Version 3.7.90 (git)
8 8
9* Use of TLS in pop3d run from inetd 9* Use of TLS in pop3d run from inetd
10 10
11New global configuration statement "tls-mode" configures the TLS for 11New global configuration statement "tls-mode" configures the TLS for
12use in inetd mode. 12use in inetd mode.
13 13
@@ -18,25 +18,33 @@ Example configuration (pop3s server):
18 18
19 mode inetd; 19 mode inetd;
20 tls-mode connection; 20 tls-mode connection;
21 tls { 21 tls {
22 ssl-key-file /etc/ssl/key.pem; 22 ssl-key-file /etc/ssl/key.pem;
23 ssl-certificate-file /etc/ssl/cert.pem; 23 ssl-certificate-file /etc/ssl/cert.pem;
24 } 24 }
25 25
26* comsatd --test 26* comsatd --test
27 27
28The --test option takes optional argument: name of the tty or file to 28The --test option takes optional argument: name of the tty or file to
29use for reporting. 29use for reporting.
30 30
31* mail
32
33** fix the semantics of 'hold' and 'keepsave' variables
34
35** New message type specification ":s"
36
37Selects messages in state 'saved'.
38
31 39
32Version 3.7 - 2019-06-21 40Version 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
36Dotmail is a replacement for traditional mbox format, proposed by 44Dotmail is a replacement for traditional mbox format, proposed by
37Kurt Hackenberg. A dotmail mailbox is a single disk file, where 45Kurt Hackenberg. A dotmail mailbox is a single disk file, where
38messages are stored sequentially. Each message ends with a single 46messages are stored sequentially. Each message ends with a single
39dot (similar to the format used in the SMTP DATA command). Any dot 47dot (similar to the format used in the SMTP DATA command). Any dot
40appearing at the start of the line is doubled, to prevent it from 48appearing at the start of the line is doubled, to prevent it from
41being interpreted as end of message marker. 49being interpreted as end of message marker.
42 50
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
423This specifier addresses the message with the given ordinal number 423This specifier addresses the message with the given ordinal number
424in the mailbox. 424in the mailbox.
425 425
426@item @var{n}-@var{m} 426@item @var{n}-@var{m}
427All messages with ordinal numbers between @var{n} and @var{m}, inclusive. 427All messages with ordinal numbers between @var{n} and @var{m}, inclusive.
428 428
429@item :@var{t} 429@item :@var{t}
430All messages of type @var{t}, where @var{t} can be any of: 430All 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
434Deleted messages. 434Deleted messages.
435@item :n 435@item n
436New messages. 436New messages.
437@item :o 437@item o
438Old messages (any message not in state @samp{read} or @samp{new}). 438Old messages (any message not in state @samp{read} or @samp{new}).
439@item :r 439@item r
440Messages in state @samp{read}. 440Messages in state @samp{read}.
441@item :u 441@item u
442Messages in state @samp{unread}. 442Messages in state @samp{unread}.
443@item :t 443@item t
444Selects all tagged messages. 444Selects all tagged messages.
445@item :T 445@item T
446Selects all untagged messages. 446Selects all untagged messages.
447@item s
448Selects 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}[/]
450Header match. 452Header match.
451 453
452Selects all messages that contain header field @var{header} matching 454Selects all messages that contain header field @var{header} matching
453given @var{string}. If the variable @code{regex} is set, the 455given @var{string}. If the variable @code{regex} is set, the
454@var{string} is assumed to be a POSIX regexp. (All comparison is 456@var{string} is assumed to be a POSIX regexp. (All comparison is
455case-insensitive in either case). 457case-insensitive in either case).
456 458
457If @var{header}: part is omitted, it is assumed to be @samp{Subject:}. 459If @var{header}: part is omitted, it is assumed to be @samp{Subject:}.
458 460
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)
681 free (path); 681 free (path);
682 if (rc) 682 if (rc)
683 return NULL; 683 return NULL;
684 } 684 }
685 return filegen_next (&fg); 685 return filegen_next (&fg);
686} 686}
687 687
688static char * 688static char *
689msgtype_generator (const char *text, int state) 689msgtype_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;
700 } 700 }
701 while ((c = types[i])) 701 while ((c = types[i]))
702 { 702 {
703 i++; 703 i++;
704 if (!text[1] || text[1] == c) 704 if (!text[1] || text[1] == c)
705 { 705 {
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 /* /.../ */
157 } 157 }
158 | BODY 158 | BODY
159 { 159 {
160 $$ = msgset_select (select_body, $1, 0, 0); 160 $$ = msgset_select (select_body, $1, 0, 0);
161 if (!$$) 161 if (!$$)
162 { 162 {
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 (!$$)
176 { 176 {
177 mu_error (_("No messages satisfy :%c"), $1); 177 mu_error (_("No messages satisfy :%c"), $1);
178 YYERROR; 178 YYERROR;
179 } 179 }
180 } 180 }
181 | IDENT /* Sender name */ 181 | IDENT /* Sender name */
@@ -737,30 +737,32 @@ select_type (mu_message_t msg, void *closure)
737 mu_message_get_attribute (msg, &attr); 737 mu_message_get_attribute (msg, &attr);
738 738
739 switch (type) 739 switch (type)
740 { 740 {
741 case 'd': 741 case 'd':
742 return mu_attribute_is_deleted (attr); 742 return mu_attribute_is_deleted (attr);
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 }