#include #include #include #include extern int errno; char buf[256*1024]; main(ac, av) int ac; char *av[]; { int f; int i; int cnt; int errsav; if (ac < 3) { printf("tt infile tape file\n"); exit(2); } if ((f = open(av[1], O_RDONLY)) < 0) { perror("open infile"); exit(1); } read(f, buf, sizeof(buf)); close(f); if ((f = open(av[2], O_WRONLY)) < 0) { perror("open tape"); exit(1); } for (i = 0;;i++) { sprintf(buf, "%-16d", i); errno = 0; cnt = write(f, buf, sizeof(buf)); errsav = errno; if (cnt <= 0) { fprintf(stderr, "count: %d write return: %d sizeof(buf): %d errno: %d ", i, cnt, sizeof(buf), errno); errno = errsav; /* Buggy Linux perror() always destroys errno */ perror("write: cnt <= 0"); errno = errsav; /* Buggy Linux perror() always destroys errno */ exit(0); } if (cnt < sizeof(buf)) { fprintf(stderr, "count: %d write return: %d sizeof(buf): %d errno: %d ", i, cnt, sizeof(buf), errno); errno = errsav; /* Buggy Linux perror() always destroys errno */ perror("write: cnt < sizeof(buf)"); errno = errsav; /* Buggy Linux perror() always destroys errno */ } } }