diff -urN mutt-1.5.19/globals.h mutt-1.5.19-vc/globals.h --- mutt-1.5.19/globals.h 2009-01-04 01:27:10.000000000 +0200 +++ mutt-1.5.19-vc/globals.h 2009-02-09 19:30:31.000000000 +0200 @@ -52,6 +52,7 @@ WHERE char *FolderFormat; WHERE char *ForwFmt; WHERE char *Fqdn; +WHERE char *Greeting; WHERE char *HdrFmt; WHERE char *HistFile; WHERE char *Homedir; diff -urN mutt-1.5.19/hdrline.c mutt-1.5.19-vc/hdrline.c --- mutt-1.5.19/hdrline.c 2009-01-05 21:20:53.000000000 +0200 +++ mutt-1.5.19-vc/hdrline.c 2009-02-09 19:30:31.000000000 +0200 @@ -741,3 +741,62 @@ { mutt_FormatString (dst, dstlen, 0, s, hdr_format_str, (unsigned long) hfi, flags); } + +/* %n = recipient name + * %u = user (login) name of recipient + * %v = first name of recipient */ +const char * +greeting_string (char *dest, + size_t destlen, + size_t col, + char op, + const char *src, + const char *prefix, + const char *ifstring, + const char *elsestring, + unsigned long data, + format_flag flags) +{ + HEADER *hdr = (HEADER *)data; + char *p, buf2[SHORT_STRING]; + + dest[0] = '\0'; + switch (op) + { + case 'n': + mutt_format_s (dest, destlen, prefix, mutt_get_name (hdr->env->to)); + break; + + case 'u': + if (hdr->env->to) + { + strfcpy (buf2, mutt_addr_for_display (hdr->env->to), sizeof (buf2)); + if ((p = strpbrk (buf2, "%@"))) + *p = '\0'; + } + else + buf2[0] = '\0'; + mutt_format_s (dest, destlen, prefix, buf2); + break; + + case 'v': + if (hdr->env->to) + mutt_format_s (buf2, sizeof (buf2), prefix, mutt_get_name (hdr->env->to)); + else if (hdr->env->cc) + mutt_format_s (buf2, sizeof (buf2), prefix, mutt_get_name (hdr->env->cc)); + else + *buf2 = '\0'; + if ((p = strpbrk (buf2, " %@"))) + *p = '\0'; + mutt_format_s (dest, destlen, prefix, buf2); + break; + + default: + snprintf (dest, destlen, "%%%s%c", prefix, op); + break; + } + if (flags & M_FORMAT_OPTIONAL) + mutt_FormatString (dest, destlen, col, elsestring, greeting_string, data, flags); + + return(src); +} diff -urN mutt-1.5.19/init.h mutt-1.5.19-vc/init.h --- mutt-1.5.19/init.h 2009-01-05 21:20:53.000000000 +0200 +++ mutt-1.5.19-vc/init.h 2009-02-09 19:30:31.000000000 +0200 @@ -745,6 +745,22 @@ ** .pp ** This setting defaults to the contents of the environment variable \fC$$$EMAIL\fP. */ + { "greeting", DT_STR, R_NONE, UL &Greeting, UL "" }, + /* + ** .pp + ** When set, this is the string that will precede every message as a + ** greeting phrase to the recipients. + ** .pp + ** ``Format strings'' are similar to the strings used in the ``C'' + ** function printf to format output (see the man page for more detail). + ** The following sequences are defined in Mutt: + ** .pp + ** .dl + ** .dt %n .dd recipient name + ** .dt %u .dd user (login) name of recipient + ** .dt %v .dd first name of recipient + ** .de + */ { "gecos_mask", DT_RX, R_NONE, UL &GecosMask, UL "^[^,]*" }, /* ** .pp diff -urN mutt-1.5.19/PATCHES mutt-1.5.19-vc/PATCHES --- mutt-1.5.19/PATCHES 2008-03-19 22:07:06.000000000 +0200 +++ mutt-1.5.19-vc/PATCHES 2009-02-09 19:30:31.000000000 +0200 @@ -0,0 +1 @@ +vc.greeting diff -urN mutt-1.5.19/protos.h mutt-1.5.19-vc/protos.h --- mutt-1.5.19/protos.h 2009-01-05 21:20:53.000000000 +0200 +++ mutt-1.5.19-vc/protos.h 2009-02-09 19:32:15.000000000 +0200 @@ -526,6 +526,9 @@ void ci_bounce_message (HEADER *, int *); int ci_send_message (int, HEADER *, char *, CONTEXT *, HEADER *); +const char *greeting_string (char *, size_t, size_t, char, const char *, const char *, + const char *, const char *, unsigned long, format_flag); + /* prototypes for compatibility functions */ #ifndef HAVE_SETENV diff -urN mutt-1.5.19/send.c mutt-1.5.19-vc/send.c --- mutt-1.5.19/send.c.orig 2010-09-17 16:49:09.000000000 +0200 +++ mutt-1.5.19-vc/send.c 2010-09-17 16:53:15.000000000 +0200 @@ -469,6 +469,18 @@ } } +void mutt_make_greeting (HEADER *hdr, FILE *out, int flags) +{ + char buffer[STRING]; + if (Greeting) + { + mutt_FormatString(buffer, sizeof(buffer), 0, Greeting, greeting_string, + (unsigned long) hdr, flags); + fputs(buffer, out); + fputc ('\n', out); + } +} + void mutt_make_post_indent (CONTEXT *ctx, HEADER *cur, FILE *out) { char buffer[STRING]; @@ -1003,7 +1015,6 @@ } } - /* look through the recipients of the message we are replying to, and if we find an address that matches $alternates, we use that as the default from field */ @@ -1439,6 +1450,8 @@ if (option (OPTHDRS)) process_user_header (msg->env); + mutt_make_greeting(msg, tempfp, flags); + if (flags & SENDBATCH) mutt_copy_stream (stdin, tempfp);