Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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
}