Commit bd228fc3 bd228fc3d1f40f0f230db1d066fb5a330a0c35a9 by Sergey Poznyakoff

mh: set a compatible search path for format files; other minor fixes.

* mh/mh_format.c (builtin_friendly): If personal part is present,
return it.  Otherwise, leave the address untouched.
(builtin_pers): Do not quote the return.
* mh/tests/inc.at: Reflect the above changes.
* mh/tests/scan.at: Likewise.

* mh/mh_list.c (eval_body): Offset each line.
* mh/tests/mhl.at: Test this change.

* mh/mhl.c: Use mh_find_file to resolve the argument to -form.
* mh/repl.c: Likewise.
Same for replgroupcomps, mhl.repl and -filter.

* mh/mhl.repl: New file.
* mh/mhl.usenet: New file.
* mh/Makefile.am (mhlib_DATA, EXTRA_DIST): Add new files.
1 parent 3f323ca9
...@@ -98,9 +98,9 @@ BUILT_SOURCES= \ ...@@ -98,9 +98,9 @@ BUILT_SOURCES= \
98 MAINTAINERCLEANFILES=$(BUILT_SOURCES) 98 MAINTAINERCLEANFILES=$(BUILT_SOURCES)
99 99
100 mhlib_DATA = components replcomps replgroupcomps mhl.format mhl.forward\ 100 mhlib_DATA = components replcomps replgroupcomps mhl.format mhl.forward\
101 $(LISPSRC) 101 mhl.repl mhl.usenet $(LISPSRC)
102 EXTRA_DIST = components replcomps replgroupcomps mhl.format mhl.forward\ 102 EXTRA_DIST = components replcomps replgroupcomps mhl.format mhl.forward\
103 mailutils-mh.eli mh_fmtgram.y pick.y mh_alias.y mh_alias.l 103 mhl.repl mhl.usenet mailutils-mh.eli mh_fmtgram.y pick.y mh_alias.y mh_alias.l
104 DISTCLEANFILES = mailutils-mh.el 104 DISTCLEANFILES = mailutils-mh.el
105 105
106 SUFFIXES = .eli .el 106 SUFFIXES = .eli .el
......
...@@ -1583,7 +1583,20 @@ builtin_proper (struct mh_machine *mach) ...@@ -1583,7 +1583,20 @@ builtin_proper (struct mh_machine *mach)
1583 static void 1583 static void
1584 builtin_friendly (struct mh_machine *mach) 1584 builtin_friendly (struct mh_machine *mach)
1585 { 1585 {
1586 /*FIXME: noop*/ 1586 mu_address_t addr;
1587 const char *str;
1588 int rc;
1589
1590 rc = mu_address_create (&addr, strobj_ptr (&mach->arg_str));
1591 if (rc)
1592 return;
1593
1594 if (mu_address_sget_personal (addr, 1, &str) == 0 && str)
1595 {
1596 strobj_free (&mach->arg_str);
1597 strobj_create (&mach->arg_str, str);
1598 }
1599 mu_address_destroy (&addr);
1587 } 1600 }
1588 1601
1589 /* addr addr string mbox@host or host!mbox rendering*/ 1602 /* addr addr string mbox@host or host!mbox rendering*/
...@@ -1618,12 +1631,7 @@ builtin_pers (struct mh_machine *mach) ...@@ -1618,12 +1631,7 @@ builtin_pers (struct mh_machine *mach)
1618 return; 1631 return;
1619 1632
1620 if (mu_address_sget_personal (addr, 1, &str) == 0 && str) 1633 if (mu_address_sget_personal (addr, 1, &str) == 0 && str)
1621 { 1634 strobj_create (&mach->arg_str, str);
1622 char *p;
1623 mu_asprintf (&p, "\"%s\"", str);
1624 strobj_create (&mach->arg_str, p);
1625 free (p);
1626 }
1627 mu_address_destroy (&addr); 1635 mu_address_destroy (&addr);
1628 } 1636 }
1629 1637
......
...@@ -700,8 +700,6 @@ eval_body (struct eval_env *env) ...@@ -700,8 +700,6 @@ eval_body (struct eval_env *env)
700 if (env->bvar[B_DISABLE_BODY]) 700 if (env->bvar[B_DISABLE_BODY])
701 return 0; 701 return 0;
702 702
703 print_component_name (env);
704
705 env->prefix = env->svar[S_COMPONENT]; 703 env->prefix = env->svar[S_COMPONENT];
706 704
707 mu_message_get_body (env->msg, &body); 705 mu_message_get_body (env->msg, &body);
...@@ -728,7 +726,7 @@ eval_body (struct eval_env *env) ...@@ -728,7 +726,7 @@ eval_body (struct eval_env *env)
728 while (mu_stream_readline (input, buf, sizeof buf, &n) == 0 726 while (mu_stream_readline (input, buf, sizeof buf, &n) == 0
729 && n > 0) 727 && n > 0)
730 { 728 {
731 buf[n] = 0; 729 goto_offset (env, env->ivar[I_OFFSET]);
732 print (env, buf, 0); 730 print (env, buf, 0);
733 nl = buf[n-1] == '\n'; 731 nl = buf[n-1] == '\n';
734 } 732 }
......
...@@ -99,7 +99,7 @@ opt_handler (int key, char *arg, struct argp_state *state) ...@@ -99,7 +99,7 @@ opt_handler (int key, char *arg, struct argp_state *state)
99 break; 99 break;
100 100
101 case ARG_FORM: 101 case ARG_FORM:
102 formfile = arg; 102 mh_find_file (arg, &formfile);
103 break; 103 break;
104 104
105 case ARG_WIDTH: 105 case ARG_WIDTH:
......
1 ; Default format file for GNU repl
2 ;
3 ; GNU Mailutils -- a suite of utilities for electronic mail
4 ; Copyright (C) 2003, 2010 Free Software Foundation, Inc.
5 ; Distributed under GPLv3+. See <http://gnu.org/licenses/gpl.html>.
6 ;
7 :
8 body:nocomponent,offset=9
1 ; USENET-style format file for GNU repl
2 ;
3 ; GNU Mailutils -- a suite of utilities for electronic mail
4 ; Copyright (C) 2003, 2010 Free Software Foundation, Inc.
5 ; Distributed under GPLv3+. See <http://gnu.org/licenses/gpl.html>.
6 ;
7 :
8 message-id:nocomponent,nonewline,formatfield="In message %{text}, "
9 from:nocomponent,formatfield="%(friendly{text}) writes:"
10 body:component=">",overflowtext=">",overflowoffset=0
...@@ -55,6 +55,7 @@ static struct argp_option options[] = { ...@@ -55,6 +55,7 @@ static struct argp_option options[] = {
55 {"form", ARG_FORM, N_("FILE"), 0, N_("read format from given file")}, 55 {"form", ARG_FORM, N_("FILE"), 0, N_("read format from given file")},
56 {"format", ARG_FORMAT, N_("BOOL"), OPTION_ARG_OPTIONAL, 56 {"format", ARG_FORMAT, N_("BOOL"), OPTION_ARG_OPTIONAL,
57 N_("include a copy of the message being replied; the message will be processed using either the default filter \"mhl.reply\", or the filter specified by --filter option") }, 57 N_("include a copy of the message being replied; the message will be processed using either the default filter \"mhl.reply\", or the filter specified by --filter option") },
58 {"noformat", ARG_NOFORMAT, 0, OPTION_HIDDEN, "" },
58 {"inplace", ARG_INPLACE, N_("BOOL"), OPTION_ARG_OPTIONAL, 59 {"inplace", ARG_INPLACE, N_("BOOL"), OPTION_ARG_OPTIONAL,
59 N_("* annotate the message in place")}, 60 N_("* annotate the message in place")},
60 {"query", ARG_QUERY, N_("BOOL"), OPTION_ARG_OPTIONAL, 61 {"query", ARG_QUERY, N_("BOOL"), OPTION_ARG_OPTIONAL,
...@@ -178,17 +179,15 @@ opt_handler (int key, char *arg, struct argp_state *state) ...@@ -178,17 +179,15 @@ opt_handler (int key, char *arg, struct argp_state *state)
178 case ARG_FORM: 179 case ARG_FORM:
179 free (format_str); 180 free (format_str);
180 format_str = NULL; 181 format_str = NULL;
181 s = mh_expand_name (MHLIBDIR, arg, 0); 182 if (mh_read_formfile (arg, &format_str))
182 mh_read_formfile (s, &format_str); 183 exit (1);
183 free (s);
184 break; 184 break;
185 185
186 case ARG_GROUP: 186 case ARG_GROUP:
187 if (is_true (arg)) 187 if (is_true (arg))
188 { 188 {
189 s = mh_expand_name (MHLIBDIR, "replgroupcomps", 0); 189 if (mh_read_formfile ("replgroupcomps", &format_str))
190 mh_read_formfile (s, &format_str); 190 exit (1);
191 free (s);
192 rcpt_mask |= RCPT_ALL; 191 rcpt_mask |= RCPT_ALL;
193 } 192 }
194 else 193 else
...@@ -229,19 +228,20 @@ opt_handler (int key, char *arg, struct argp_state *state) ...@@ -229,19 +228,20 @@ opt_handler (int key, char *arg, struct argp_state *state)
229 break; 228 break;
230 229
231 case ARG_FILTER: 230 case ARG_FILTER:
232 mhl_filter = arg; 231 mh_find_file (arg, &mhl_filter);
233 break; 232 break;
234 233
235 case ARG_FORMAT: 234 case ARG_FORMAT:
236 if (is_true (arg)) 235 if (is_true (arg))
237 { 236 mh_find_file ("mhl.repl", &mhl_filter);
238 if (!mhl_filter)
239 mhl_filter = mh_expand_name (MHLIBDIR, "mhl.repl", 0);
240 }
241 else 237 else
242 mhl_filter = NULL; 238 mhl_filter = NULL;
243 break; 239 break;
244 240
241 case ARG_NOFORMAT:
242 mhl_filter = NULL;
243 break;
244
245 case ARG_FCC: 245 case ARG_FCC:
246 if (!has_fcc) 246 if (!has_fcc)
247 { 247 {
......
...@@ -22,8 +22,8 @@ inc -notruncate -file ./mbox1 | sed 's/ *$//' ...@@ -22,8 +22,8 @@ inc -notruncate -file ./mbox1 | sed 's/ *$//'
22 cmp $abs_top_srcdir/testsuite/spool/mbox1 mbox1 22 cmp $abs_top_srcdir/testsuite/spool/mbox1 mbox1
23 ], 23 ],
24 [0], 24 [0],
25 [ 1+ 12/28 Foo Bar <foobar@n Jabberwocky<<`Twas brillig, and the slithy toves 25 [ 1+ 12/28 Foo Bar Jabberwocky<<`Twas brillig, and the slithy toves
26 2 12/28 Bar <bar@dontmail Re: Jabberwocky<<It seems very pretty, but it's 26 2 12/28 Bar Re: Jabberwocky<<It seems very pretty, but it's
27 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type: 27 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type:
28 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type: 28 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type:
29 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content- 29 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content-
...@@ -36,8 +36,8 @@ echo "Next" ...@@ -36,8 +36,8 @@ echo "Next"
36 inc -truncate -file ./mbox1 | sed 's/ *$//' 36 inc -truncate -file ./mbox1 | sed 's/ *$//'
37 ], 37 ],
38 [0], 38 [0],
39 [ 1+ 12/28 Foo Bar <foobar@n Jabberwocky<<`Twas brillig, and the slithy toves 39 [ 1+ 12/28 Foo Bar Jabberwocky<<`Twas brillig, and the slithy toves
40 2 12/28 Bar <bar@dontmail Re: Jabberwocky<<It seems very pretty, but it's 40 2 12/28 Bar Re: Jabberwocky<<It seems very pretty, but it's
41 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type: 41 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type:
42 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type: 42 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type:
43 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content- 43 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content-
...@@ -50,8 +50,8 @@ mkdir Mail/new ...@@ -50,8 +50,8 @@ mkdir Mail/new
50 inc +new -file ./mbox1 | sed 's/ *$//' 50 inc +new -file ./mbox1 | sed 's/ *$//'
51 ], 51 ],
52 [0], 52 [0],
53 [ 1+ 12/28 Foo Bar <foobar@n Jabberwocky<<`Twas brillig, and the slithy toves 53 [ 1+ 12/28 Foo Bar Jabberwocky<<`Twas brillig, and the slithy toves
54 2 12/28 Bar <bar@dontmail Re: Jabberwocky<<It seems very pretty, but it's 54 2 12/28 Bar Re: Jabberwocky<<It seems very pretty, but it's
55 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type: 55 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type:
56 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type: 56 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type:
57 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content- 57 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content-
...@@ -63,8 +63,8 @@ MUT_MBCOPY([$abs_top_srcdir/testsuite/spool/mbox1]) ...@@ -63,8 +63,8 @@ MUT_MBCOPY([$abs_top_srcdir/testsuite/spool/mbox1])
63 inc -changecur -file ./mbox1 | sed 's/ *$//' 63 inc -changecur -file ./mbox1 | sed 's/ *$//'
64 ], 64 ],
65 [0], 65 [0],
66 [ 6+ 12/28 Foo Bar <foobar@n Jabberwocky<<`Twas brillig, and the slithy toves 66 [ 6+ 12/28 Foo Bar Jabberwocky<<`Twas brillig, and the slithy toves
67 7 12/28 Bar <bar@dontmail Re: Jabberwocky<<It seems very pretty, but it's 67 7 12/28 Bar Re: Jabberwocky<<It seems very pretty, but it's
68 8 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type: 68 8 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type:
69 9 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type: 69 9 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type:
70 10 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content- 70 10 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content-
...@@ -78,8 +78,8 @@ inc -nochangecur -file ./mbox1 | sed 's/ *$//' ...@@ -78,8 +78,8 @@ inc -nochangecur -file ./mbox1 | sed 's/ *$//'
78 grep ^cur: Mail/inbox/.mh_sequences 78 grep ^cur: Mail/inbox/.mh_sequences
79 ], 79 ],
80 [0], 80 [0],
81 [ 6 12/28 Foo Bar <foobar@n Jabberwocky<<`Twas brillig, and the slithy toves 81 [ 6 12/28 Foo Bar Jabberwocky<<`Twas brillig, and the slithy toves
82 7 12/28 Bar <bar@dontmail Re: Jabberwocky<<It seems very pretty, but it's 82 7 12/28 Bar Re: Jabberwocky<<It seems very pretty, but it's
83 8 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type: 83 8 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type:
84 9 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type: 84 9 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type:
85 10 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content- 85 10 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content-
......
...@@ -34,5 +34,28 @@ X-Envelope-Sender: alice@wonder.land ...@@ -34,5 +34,28 @@ X-Envelope-Sender: alice@wonder.land
34 I don't see any wine 34 I don't see any wine
35 ]) 35 ])
36 36
37 MH_CHECK([mhl repl],[mhl01 mhl.repl],[
38 MUT_MBCOPY($abs_top_srcdir/testsuite/mh/teaparty,[Mail/inbox])
39 mhl -form $abs_top_srcdir/mh/mhl.repl Mail/inbox/15
40 ],
41 [0],
42 [
43 Not the same thing a bit! You might just
44 as well say that "I see what I eat" is the same thing as "I eat
45 what I see"!
46 ])
47
48 MH_CHECK([mhl usenet],[mhl02 mhl.usenet],[
49 MUT_MBCOPY($abs_top_srcdir/testsuite/mh/teaparty,[Mail/inbox])
50 mhl -form $abs_top_srcdir/mh/mhl.usenet Mail/inbox/15
51 ],
52 [0],
53 [
54 In message <200207292200.3315@wonder.land>, Hatter writes:
55 >Not the same thing a bit! You might just
56 >as well say that "I see what I eat" is the same thing as "I eat
57 >what I see"!
58 ])
59
37 m4_popdef[MH_KEYWORDS]) 60 m4_popdef[MH_KEYWORDS])
38 # End of mhl.at 61 # End of mhl.at
......
...@@ -22,8 +22,8 @@ echo "Current-Folder: inbox" > Mail/context ...@@ -22,8 +22,8 @@ echo "Current-Folder: inbox" > Mail/context
22 scan | sed 's/ *$//' 22 scan | sed 's/ *$//'
23 ], 23 ],
24 [0], 24 [0],
25 [ 1 12/28 Foo Bar <foobar@n Jabberwocky<<`Twas brillig, and the slithy toves 25 [ 1 12/28 Foo Bar Jabberwocky<<`Twas brillig, and the slithy toves
26 2 12/28 Bar <bar@dontmail Re: Jabberwocky<<It seems very pretty, but it's 26 2 12/28 Bar Re: Jabberwocky<<It seems very pretty, but it's
27 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type: 27 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type:
28 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type: 28 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type:
29 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content- 29 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content-
...@@ -34,8 +34,8 @@ MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail/inbox]) ...@@ -34,8 +34,8 @@ MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail/inbox])
34 scan +inbox | sed 's/ *$//' 34 scan +inbox | sed 's/ *$//'
35 ], 35 ],
36 [0], 36 [0],
37 [ 1 12/28 Foo Bar <foobar@n Jabberwocky<<`Twas brillig, and the slithy toves 37 [ 1 12/28 Foo Bar Jabberwocky<<`Twas brillig, and the slithy toves
38 2 12/28 Bar <bar@dontmail Re: Jabberwocky<<It seems very pretty, but it's 38 2 12/28 Bar Re: Jabberwocky<<It seems very pretty, but it's
39 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type: 39 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type:
40 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type: 40 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type:
41 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content- 41 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content-
...@@ -43,7 +43,7 @@ scan +inbox | sed 's/ *$//' ...@@ -43,7 +43,7 @@ scan +inbox | sed 's/ *$//'
43 43
44 MH_CHECK([scan -format],[scan02 scan-format],[ 44 MH_CHECK([scan -format],[scan02 scan-format],[
45 MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail]) 45 MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail])
46 scan +mbox1 -format '%4(msg) %(decode(friendly{from})) - %(decode(friendly{to}))' 46 scan +mbox1 -format '%4(msg) %{from} - %{to}'
47 ], 47 ],
48 [0], 48 [0],
49 [ 1 Foo Bar <foobar@nonexistent.net> - Bar <bar@dontmailme.org> 49 [ 1 Foo Bar <foobar@nonexistent.net> - Bar <bar@dontmailme.org>
...@@ -59,11 +59,11 @@ echo '%4(msg) %(decode(friendly{from})) - %(decode(friendly{to}))' > formfile ...@@ -59,11 +59,11 @@ echo '%4(msg) %(decode(friendly{from})) - %(decode(friendly{to}))' > formfile
59 scan +mbox1 -form formfile 59 scan +mbox1 -form formfile
60 ], 60 ],
61 [0], 61 [0],
62 [ 1 Foo Bar <foobar@nonexistent.net> - Bar <bar@dontmailme.org> 62 [ 1 Foo Bar - Bar
63 2 Bar <bar@dontmailme.org> - Foo Bar <foobar@nonexistent.net> 63 2 Bar - Foo Bar
64 3 Sergey Poznyakoff <gray@example.net> - Foo Bar <foobar@nonexistent.net> 64 3 Sergey Poznyakoff - Foo Bar
65 4 Sergey Poznyakoff <gray@example.net> - Foo Bar <foobar@nonexistent.net> 65 4 Sergey Poznyakoff - Foo Bar
66 5 Sergey Poznyakoff <gray@example.net> - Foo Bar <foobar@nonexistent.net> 66 5 Sergey Poznyakoff - Foo Bar
67 ]) 67 ])
68 68
69 MH_CHECK([scan -reverse],[scan04 scan-reverse],[ 69 MH_CHECK([scan -reverse],[scan04 scan-reverse],[
...@@ -74,8 +74,8 @@ scan +mbox1 -reverse | sed 's/ *$//' ...@@ -74,8 +74,8 @@ scan +mbox1 -reverse | sed 's/ *$//'
74 [ 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content- 74 [ 5 07/13 Sergey Poznyakoff Empty MIME Parts<<------- =_aaaaaaaaaa0 Content-
75 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type: 75 4 07/13 Sergey Poznyakoff Nested MIME<<------- =_aaaaaaaaaa0 Content-Type:
76 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type: 76 3 07/13 Sergey Poznyakoff Simple MIME<<------- =_aaaaaaaaaa0 Content-Type:
77 2 12/28 Bar <bar@dontmail Re: Jabberwocky<<It seems very pretty, but it's 77 2 12/28 Bar Re: Jabberwocky<<It seems very pretty, but it's
78 1 12/28 Foo Bar <foobar@n Jabberwocky<<`Twas brillig, and the slithy toves 78 1 12/28 Foo Bar Jabberwocky<<`Twas brillig, and the slithy toves
79 ]) 79 ])
80 80
81 m4_popdef[MH_KEYWORDS]) 81 m4_popdef[MH_KEYWORDS])
......