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

int fold_fd(int fd, char *data)
{
  int ret = 0;
  unsigned long n = 0;
  char *h = NULL, *t = NULL;

  for (n = 0, h = data; ((*h) && (n < 78)); h++, n++);

  if (!(*h)) {
     ret = write(fd, data, n);
     if (ret < n)
        return 0;

     ret = write(fd, "\r\n", 2);
     if (ret < 1)
        return 0;

     return 1;
  }

  t = data;

  while(1) {
    for (; ((*h) && (n < 998)); h++, n++) {
        if (n >= 78) {
           if (rfc2822_is_sep(*h))
              break;
        }
    }

    if (!(*h)) {
       if (n) {
          ret = write(fd, t, n);
          if (ret < n)
             return 0;
       }

       ret = write(fd, "\r\n", 2);
       if (ret < 1)
          return 0;

       break;
    }

    ret = write(fd, t, n);
    if (ret < n)
       return 0;

    ret = write(fd, "\r\n\t", 3);
    if (ret < 2)
       return 0;

    n = 0;
    t = h;
  }

  return 1;
}


syntax highlighted by Code2HTML, v. 0.9.1