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