#include <stdio.h>
#include <unistd.h>

const int maxwidth = 65;

int main(void)
{
  char word[maxwidth]; 
  int wordlen;
  int outcol;
  char chread;
  int numnl;
  const char linefeed = '\n';
  const char space = ' ';
  
  outcol = 0;
  wordlen = 0;
  numnl = 0;
  
  while (read(0, &chread, 1) == 1)
  {
    if (chread == 10)
    {
      if (numnl == 1)
      {
        write(1, &linefeed, 1);
      }
      else
      {
      }
      numnl = numnl + 1;
      if (numnl > 1)
      {
        write(1, &linefeed, 1);
	outcol = 0;  // Tak screwed up here, this is inserted on 2004/10/22
      }
      else
      {
      }
    }
    else // chread != 10
    {
      if (numnl == 1)
      {
        write(1, &space, 1);
	outcol = outcol + 1;
      }
      else
      {
      }
      numnl = 0;
    }
    if ((chread == 32) || (numnl == 1))
    {
      write(1, word, wordlen);
      if (chread == 32)
      {
        write(1, &space, 1);
	outcol = outcol + wordlen + 1;
      }
      else
      {
        outcol = outcol + wordlen;
      }
      wordlen = 0;
    }
    // Tak screwed up the following line, changed on 2004/10/22
    else if (chread != 10)// neither a space nor numnl == 1
    {
      word[wordlen] = chread;
      wordlen = wordlen + 1;
      if (outcol + wordlen >= maxwidth)
      {
        write(1, &linefeed, 1);
	outcol = 0;
      }
      else
      {
      }
    }
  }
  if (numnl <= 1)
  {
    write(1, &linefeed, 1);
  }
  return 1;
}
