|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <sys/types.h> ! 3: #include <sys/stat.h> ! 4: ! 5: main(argc, argv) ! 6: char **argv; ! 7: { int i, f=0; ! 8: int seekf = 0; ! 9: char buf[256]; ! 10: long amtread, lseek(); ! 11: struct stat sbuf; ! 12: ! 13: if (argc>1 && strcmp(argv[1], "-e") == 0) { ! 14: seekf = 1; ! 15: argc--; ! 16: argv++; ! 17: } ! 18: if (argc>1) { ! 19: if ((f = open(argv[1], 0)) < 0) { ! 20: fprintf(stderr, "readslow: can't open %s\n", argv[1]); ! 21: exit(1); ! 22: } ! 23: } ! 24: amtread = 0; ! 25: if (seekf) ! 26: amtread = lseek(f, 0L, 2); ! 27: for(;;) { ! 28: if((i=read(f,buf,256))>0) { ! 29: write(1,buf,i); ! 30: amtread += i; ! 31: } else if (i==0) { ! 32: sleep(10); ! 33: fstat(f, &sbuf); ! 34: if (sbuf.st_size < amtread) { ! 35: printf("\n<<< file truncated -- restarting >>>\n"); ! 36: lseek(f, 0L, 0); ! 37: amtread = 0; ! 38: continue; ! 39: } ! 40: } else ! 41: exit(1); ! 42: } ! 43: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.