#line 20 "read-head.c-nw" #include #include #include "ISOcharset.e" #include "MIMEenc.e" #include "MIMEhead.e" #include "parse-head.e" #define CR '\015' #define LF '\012' EXPORT void read_header(FILE *f, MIME_header *header, char *stopline) { char line[MAXLINELEN], *buf = NULL; int h, len = 0; Bool ok; for (;;) { ok = fgets(line, sizeof(line), f) != NULL; if (!ok && errno == EAGAIN) sleep(1); /* Wait, then try again */ else if (!ok) return; /* An error occurred */ else if (eq(line, stopline)) break; /* Last line to read */ else if (line[0] == CR) break; /* End of headers */ else if (line[0] == LF) break; /* End of headers */ else { h = len + strlen(line); renewarray(buf, h + 1); strcpy(buf + len, line); len = h; } } parse_header(buf, header); }