- if (lseek(fcp->rfdes, (long)dbtob(blk), 0) < 0)
- rwerr("SEEK", blk);
- else if (read(fcp->rfdes, buf, (int)size) == size)
- return (1);
- rwerr("READ", blk);
- return (0);
+ char *cp;
+ int i, errs;
+
+ if (lseek(fd, blk * dev_bsize, 0) < 0)
+ rwerror("SEEK", blk);
+ else if (read(fd, buf, (int)size) == size)
+ return (0);
+ rwerror("READ", blk);
+ if (lseek(fd, blk * dev_bsize, 0) < 0)
+ rwerror("SEEK", blk);
+ errs = 0;
+ bzero(buf, (int)size);
+ printf("THE FOLLOWING DISK SECTORS COULD NOT BE READ:");
+ for (cp = buf, i = 0; i < size; i += secsize, cp += secsize) {
+ if (read(fd, cp, (int)secsize) < 0) {
+ lseek(fd, blk * dev_bsize + i + secsize, 0);
+ if (secsize != dev_bsize && dev_bsize != 1)
+ printf(" %d (%d),",
+ (blk * dev_bsize + i) / secsize,
+ blk + i / dev_bsize);
+ else
+ printf(" %d,", blk + i / dev_bsize);
+ errs++;
+ }
+ }
+ printf("\n");
+ return (errs);