1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4
5 char *argv0;
6
7 int
openlog(char * name)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
main(int argc,char ** argv)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