/* watch.c - await first file is modified, then cat all files */ #include #include void main(int argc, char *argv[]) { char buf[4096]; int fd, i, n; Dir *ods, *ds; if (argc != 2){ fprint(2, "usage: await \n"); exits("usage"); } if ((ods = dirstat(argv[1])) == nil) sysfatal("%s - cannot stat\n", argv[1]); while(1){ sleep(1); if ((ds = dirstat(argv[1])) == nil) sysfatal("%s cannot stat %r\n", argv[1]); if (ds->mtime > ods->mtime) break; free(ds); } for (i = 1; i < argc; i++){ if ((fd = open(argv[i], OREAD)) == -1) fprint(2, "%s cannot open - %r\n", argv[i]); while((n = read(fd, buf, sizeof(buf))) > 0) if (write(1, buf, n) != n) sysfatal("%s write failed - %r\n", argv[i]); close(fd); } exits(0); }