1 #include <u.h> 2 #include <libc.h> 3 #include <bio.h> 4 5 char *argv0; 6 7 int 8 openlog(char *name) 9 { 10 int fd; 11 12 fd = open(name, OWRITE); 13 if(fd < 0){ 14 fprint(2, "%s: can't open %s: %r\n", argv0, name); 15 return -1; 16 } 17 seek(fd, 0, 2); 18 return fd; 19 } 20 21 void 22 main(int argc, char **argv) 23 { 24 Biobuf in; 25 int fd; 26 char *p, *t; 27 char buf[8192]; 28 29 argv0 = argv[0]; 30 if(argc != 4){ 31 fprint(2, "usage: %s console logfile prefix\n", argv0); 32 exits("usage"); 33 } 34 35 fd = open(argv[1], OREAD); 36 if(fd < 0){ 37 fprint(2, "%s: can't open %s: %r\n", argv0, argv[1]); 38 exits("open"); 39 } 40 Binit(&in, fd, OREAD); 41 42 fd = openlog(argv[2]); 43 44 for(;;){ 45 if(p = Brdline(&in, '\n')){ 46 p[Blinelen(&in)-1] = 0; 47 if(fprint(fd, "%s: %s\n", argv[3], p) < 0){ 48 close(fd); 49 fd = openlog(argv[2]); 50 fprint(fd, "%s: %s\n", t, p); 51 } 52 } else if(Blinelen(&in) == 0) // true eof 53 break; 54 else { 55 Bread(&in, buf, sizeof buf); 56 } 57 } 58 exits(0); 59 } 60