$NetBSD: patch-aa,v 1.7 2005/06/29 22:01:19 is Exp $

--- mini_sendmail.c.orig	2005-06-29 19:37:15.000000000 +0200
+++ mini_sendmail.c
@@ -134,6 +134,8 @@ main( int argc, char** argv )
 	    timeout = atoi( &(argv[argn][2]) );
 	else if ( strcmp( argv[argn], "-v" ) == 0 )
 	    verbose = 1;
+	else if ( strcmp( argv[argn], "-oeq" ) == 0 )
+	    verbose = 0;
 	else if ( strcmp( argv[argn], "-i" ) == 0 )
 	    ;	/* ignore */
 	else if ( strcmp( argv[argn], "-oi" ) == 0 )
@@ -507,14 +509,24 @@ parse_for_recipients( char* message )
 	    switch ( *cp )
 		{
 		case '\n':
-		add_recipient( recip, ( cp - recip ) );
-		state = ST_BOL;
-		if ( bcc != (char*) 0 )
+		/* peek ahead for continuation line */
+		switch (cp[1])
 		    {
-		    /* Elide the Bcc: line, and reset cp. */
-		    (void) strcpy( bcc, cp + 1 );
-		    cp = bcc - 1;
-		    bcc = (char*) 0;
+		    case ' ':
+		    case '\t':
+		    break;
+
+		    default:
+		    add_recipient( recip, ( cp - recip ) );
+		    state = ST_BOL;
+		    if ( bcc != (char*) 0 )
+			{
+			/* Elide the Bcc: line, and reset cp. */
+			(void) strcpy( bcc, cp + 1 );
+			cp = bcc - 1;
+			bcc = (char*) 0;
+			}
+		    break;
 		    }
 		break;
 		case ',':
@@ -532,25 +544,46 @@ static void
 add_recipient( char* recipient, int len )
     {
     char buf[1000];
+    char *first;
     int status;
+    int i;
+
 
     /* Skip leading whitespace. */
-    while ( len > 0 && ( *recipient == ' ' || *recipient == '\t' ) )
+    while ( len > 0 && ( *recipient == ' ' || *recipient == '\t' ||
+			 *recipient == '\n') )
 	{
 	++recipient;
 	--len;
 	}
 
-    /* Strip off any angle brackets. */
-    while ( len > 0 && *recipient == '<' )
+    first = recipient;
+    /* search for angle bracket */
+
+    while (first < recipient+len && *first != '<')
 	{
-	++recipient;
-	--len;
+	++first;
 	}
-    while ( len > 0 && recipient[len-1] == '>' )
-	--len;
+
+    if (*first == '<')
+	{
+	len -= first + 1 - recipient;
+	recipient = first + 1;
+
+	while (len > 2 && recipient[--len] != '>')
+	    ; /* nothing */
+
+	if (recipient[len] == '>')
+	    --len;
+
+    	}
 
     (void) snprintf( buf, sizeof(buf), "RCPT TO:<%.*s>", len, recipient );
+    for (i=0; i<sizeof(buf); i++)
+    {
+	if (buf[i] == '\n')
+	    buf[i] = ' ';
+    }
     send_command( buf );
     status = read_response();
     if ( status != 250  && status != 251 )
