changeset 20:34d646609216

*** empty log message ***
author Richard M. Stallman <rms@gnu.org>
date Wed, 25 Jan 1989 06:54:36 +0000
parents 58b14548d982
children 8136d331c964
files lib-src/fakemail.c
diffstat 1 files changed, 37 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lib-src/fakemail.c	Fri Jan 13 06:21:24 1989 +0000
+++ b/lib-src/fakemail.c	Wed Jan 25 06:54:36 1989 +0000
@@ -401,15 +401,49 @@
 }
 
 void
-put_line (s)
-     char *s;
+put_line (string)
+     char *string;
 {
   register stream_list rem;
   for (rem = the_streams;
        rem != ((stream_list) NULL);
        rem = rem->rest_streams)
     {
-      fputs (s, rem->handle);
+      char *s = string;
+      int column = 0;
+
+      /* Divide STRING into lines.  */
+      while (*s != 0)
+	{
+	  char *breakpos;
+
+	  /* Find the last char that fits. */
+	  for (breakpos = s; *breakpos && column < 78; ++breakpos)
+	    {
+	      if (*breakpos == '\t')
+		column += 8;
+	      else
+		column++;
+	    }
+	  /* Back up to just after the last comma that fits.  */
+	  while (breakpos != s && breakpos[-1] != ',') --breakpos;
+	  if (breakpos == s)
+	    {
+	      /* If no comma fits, move past the first address anyway.  */
+	      while (*breakpos != 0 && *breakpos != ',') ++breakpos;
+	      if (*breakpos != 0)
+		/* Include the comma after it.  */
+		++breakpos;
+	    }
+	  /* Output that much, then break the line.  */
+	  fwrite (s, 1, breakpos - s, rem->handle);
+	  fputs ("\n\t", rem->handle);
+	  column = 8;
+
+	  /* Skip whitespace and prepare to print more addresses.  */
+	  s = breakpos;
+	  while (*s == ' ' || *s == '\t') ++s;
+	}
       putc ('\n', rem->handle);
     }
   return;