|
|
1.1 ! root 1: #include <stdio.h> ! 2: FILE *fin; ! 3: int redir; ! 4: main(){ ! 5: char cline[200], fline[200], dline[30], ndline[30], tuid[12], tm[12]; ! 6: char fid[100], rid[100], rline[113], *gets(), fname[100], buf[200], ! 7: *fgets(); ! 8: FILE *f, *fopen(), *popen(); ! 9: ! 10: f = popen("date", "r"); ! 11: fgets(dline, 30, f); ! 12: dline[28] = '\0'; ! 13: pclose(f); ! 14: ! 15: printf("Target uid: "); ! 16: gets(tuid); ! 17: printf("Target machine: "); ! 18: gets(tm); ! 19: printf("Sender: "); ! 20: gets(fid); ! 21: printf("Sending machine: "); ! 22: gets(rid); ! 23: ! 24: strcpy(cline, "uux - "); ! 25: strcat(cline, tm); ! 26: strcat(cline, "!rmail '("); ! 27: strcat(cline, tuid); ! 28: strcat(cline, ")'"); ! 29: ! 30: strcpy(fline, "From "); ! 31: strcat(fline, fid); ! 32: strcat(fline, " "); ! 33: ! 34: strcpy(dline+16, dline+19); ! 35: ! 36: *rline = '\0'; ! 37: if(*rid){ ! 38: strcpy(rline, " remote from "); ! 39: strcat(rline, rid); ! 40: } ! 41: ! 42: printf("%s\n", cline); ! 43: printf("%s%s%s\n", fline, dline, rline); ! 44: printf("CR or new date stamp: "); ! 45: *ndline = '\0'; ! 46: gets(ndline); ! 47: if(*ndline) strcpy(dline, ndline); ! 48: strcat(fline, dline); ! 49: strcat(fline, rline); ! 50: if(*ndline) printf("%s\n", fline); ! 51: ! 52: puts("Last chance to abort. Type message or <filename"); ! 53: redir = getchar(); ! 54: if(redir == '<'){ ! 55: gets(fname); ! 56: if((fin = fopen(fname, "r")) == NULL){ ! 57: printf("Can't open %s\n", fname); ! 58: exit(1); ! 59: } ! 60: redir = 1; ! 61: } ! 62: else{ ! 63: ungetc(redir, stdin); ! 64: redir = 0; ! 65: } ! 66: ! 67: f = popen(cline, "w"); ! 68: fprintf(f, "%s\n", fline); ! 69: ! 70: while(next(buf) != EOF) fprintf(f, "%s\n", buf); ! 71: ! 72: pclose(f); ! 73: } ! 74: next(buf) ! 75: char *buf; ! 76: { ! 77: if(redir){ ! 78: if(fgets(buf, 200, fin) == NULL) goto quit; ! 79: buf[strlen(buf)-1] = '\0'; ! 80: } ! 81: else if(gets(buf) == NULL) goto quit; ! 82: if(*buf == '.' && *(buf+1) == '\0') goto quit; ! 83: return 0; ! 84: quit: return EOF; ! 85: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.