/* Reads dotmail on stdin, writes many numbered files in current directory, one message in each file. This is a demonstration of dotmail, meant to be simple and portable, not necessarily a handy tool. */ #include #include #include #define TRUE 1 #define FALSE 0 int main(int argc, char *argv[], char *envp[]) { /* leave room for lines longer than RFC allows */ char line[5000]; int n; /* file number */ char name[20]; /* filename */ FILE *f; char *s; char *p; int eom; /* end of message */ s = fgets(line, sizeof(line), stdin); for (n = 1; s != NULL; n++) { eom = FALSE; sprintf(name, "%d", n); if ((f = fopen(name, "w")) != NULL) { do { if (strcmp(line, ".\n") == 0) eom = TRUE; else { p = (line[0] == '.') ? &line[1] : &line[0]; fputs(p, f); } s = fgets(line, sizeof(line), stdin); } while ( !(eom || s == NULL)); fclose(f); } else { perror(name); break; } } return errno; }