1*43aadf5eSDavid du Colombier /* clog - log console */
27dd7cddfSDavid du Colombier #include <u.h>
37dd7cddfSDavid du Colombier #include <libc.h>
47dd7cddfSDavid du Colombier #include <bio.h>
57dd7cddfSDavid du Colombier
67dd7cddfSDavid du Colombier char *argv0;
77dd7cddfSDavid du Colombier
87dd7cddfSDavid du Colombier int
openlog(char * name)97dd7cddfSDavid du Colombier openlog(char *name)
107dd7cddfSDavid du Colombier {
117dd7cddfSDavid du Colombier int fd;
127dd7cddfSDavid du Colombier
137dd7cddfSDavid du Colombier fd = open(name, OWRITE);
147dd7cddfSDavid du Colombier if(fd < 0)
159a747e4fSDavid du Colombier fd = create(name, OWRITE, DMAPPEND|0666);
167dd7cddfSDavid du Colombier if(fd < 0){
177dd7cddfSDavid du Colombier fprint(2, "%s: can't open %s: %r\n", argv0, name);
187dd7cddfSDavid du Colombier return -1;
197dd7cddfSDavid du Colombier }
207dd7cddfSDavid du Colombier seek(fd, 0, 2);
217dd7cddfSDavid du Colombier return fd;
227dd7cddfSDavid du Colombier }
237dd7cddfSDavid du Colombier
247dd7cddfSDavid du Colombier void
main(int argc,char ** argv)257dd7cddfSDavid du Colombier main(int argc, char **argv)
267dd7cddfSDavid du Colombier {
277dd7cddfSDavid du Colombier Biobuf in;
287dd7cddfSDavid du Colombier int fd;
297dd7cddfSDavid du Colombier char *p, *t;
30*43aadf5eSDavid du Colombier char buf[Bsize];
317dd7cddfSDavid du Colombier
327dd7cddfSDavid du Colombier argv0 = argv[0];
337dd7cddfSDavid du Colombier if(argc < 3){
347dd7cddfSDavid du Colombier fprint(2, "usage: %s console logfile \n", argv0);
357dd7cddfSDavid du Colombier exits("usage");
367dd7cddfSDavid du Colombier }
377dd7cddfSDavid du Colombier
387dd7cddfSDavid du Colombier fd = open(argv[1], OREAD);
397dd7cddfSDavid du Colombier if(fd < 0){
407dd7cddfSDavid du Colombier fprint(2, "%s: can't open %s: %r\n", argv0, argv[1]);
417dd7cddfSDavid du Colombier exits("open");
427dd7cddfSDavid du Colombier }
437dd7cddfSDavid du Colombier Binit(&in, fd, OREAD);
447dd7cddfSDavid du Colombier
457dd7cddfSDavid du Colombier fd = openlog(argv[2]);
467dd7cddfSDavid du Colombier
477dd7cddfSDavid du Colombier for(;;){
487dd7cddfSDavid du Colombier if(p = Brdline(&in, '\n')){
497dd7cddfSDavid du Colombier p[Blinelen(&in)-1] = 0;
507dd7cddfSDavid du Colombier t = ctime(time(0));
517dd7cddfSDavid du Colombier t[19] = 0;
52*43aadf5eSDavid du Colombier while(fprint(fd, "%s: %s\n", t, p) < 0) {
537dd7cddfSDavid du Colombier close(fd);
54*43aadf5eSDavid du Colombier sleep(500);
557dd7cddfSDavid du Colombier fd = openlog(argv[2]);
567dd7cddfSDavid du Colombier }
57*43aadf5eSDavid du Colombier } else if(Blinelen(&in) == 0) /* true eof or error */
587dd7cddfSDavid du Colombier break;
59*43aadf5eSDavid du Colombier /* discard partial buffer? perhaps due to very long line */
60*43aadf5eSDavid du Colombier else if (Bread(&in, buf, sizeof buf) < 0)
61*43aadf5eSDavid du Colombier break;
627dd7cddfSDavid du Colombier }
637dd7cddfSDavid du Colombier exits(0);
647dd7cddfSDavid du Colombier }
65