Blame


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