|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <signal.h> ! 3: #include <time.h> ! 4: ! 5: inter() ! 6: { ! 7: printf("interrupted - no orders sent\n"); ! 8: exit(0); ! 9: } ! 10: ! 11: struct Data { ! 12: char *prompt; ! 13: char store[512]; ! 14: } data[] = { ! 15: { "Book title", "" }, ! 16: { "Author(s)", "" }, ! 17: { "Publisher", "" }, ! 18: { "Publication Date", "" }, ! 19: { "ISBN", "" }, ! 20: { "Other info (e.g. volume,edition,paperback)", "" }, ! 21: { "Estimated price", "" }, ! 22: { "Number of copies", "" }, ! 23: { 0, 0 } ! 24: }; ! 25: ! 26: main(argc, argv) ! 27: char *argv[]; ! 28: { ! 29: int i, cnt=0; char More[8]; ! 30: FILE *fd, *fdtmp; ! 31: char Tmp[L_tmpnam], User[64], Log1[512], Log2[512], Sharon[512]; ! 32: long clock = time(0L); ! 33: struct tm *tm = localtime(&clock); ! 34: ! 35: signal(SIGINT, inter); ! 36: printf("1127 - Fast(er) Book Ordering System\n"); ! 37: printf("====================================\n"); ! 38: fflush(stdout); ! 39: ! 40: if ((fd = fopen("/lib/book_orders", "a")) == NULL) ! 41: { printf("error: cannot open /lib/book_orders\n"); ! 42: exit(1); ! 43: } ! 44: tmpnam(Tmp); ! 45: if ((fdtmp = fopen(Tmp, "w")) == NULL) ! 46: { printf("error: cannot create temporary file\n"); ! 47: exit(1); ! 48: } ! 49: ! 50: getlogname(User); ! 51: sprintf(Log1, "Book Order by %s, %s", User, asctime(tm)); ! 52: ! 53: again: cnt++; ! 54: for (i = 0; data[i].prompt; i++) ! 55: { printf("%s: ", data[i].prompt); ! 56: fflush(stdout); ! 57: fgets(data[i].store, 510, stdin); ! 58: } ! 59: fprintf(fdtmp, "\n%s", Log1); ! 60: fprintf(fdtmp, "================================================\n"); ! 61: fprintf(fd, "%s", data[0].store); fflush(fd); ! 62: ! 63: for (i = 0; data[i].prompt; i++) ! 64: { fprintf(fdtmp, "%s: %s", data[i].prompt, data[i].store); ! 65: memset(data[i].store, 0, 512); ! 66: } ! 67: fprintf(fdtmp, " ==forwarded to [email protected]== \n"); ! 68: fflush(fdtmp); ! 69: ! 70: printf("More (y/n)? "); ! 71: fflush(stdout); ! 72: fgets(More, 6, stdin); ! 73: if (strcmp(More, "y\n") == 0) ! 74: goto again; ! 75: ! 76: sprintf(Log2, "%d x %s", cnt, Log1); ! 77: fprintf(fd, "%s", Log2); fflush(fd); ! 78: fclose(fd); ! 79: sprintf(Sharon, "/bin/mail %s sharon [email protected] < %s; rm -f %s", ! 80: User, Tmp, Tmp); ! 81: if (system(Sharon) == 127) ! 82: { printf("error on logfile - mail sharon\n"); ! 83: exit(1); ! 84: } ! 85: printf("\n%d order%s sent\n", cnt, (cnt>1)?"s":""); ! 86: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.