On Sun Nov 20 11, Dieter BSD wrote: > > something like the following inside lseek() would take care of tape drives: > > > > if (S_ISCHR(sb.st_mode) || S_ISBLK(sb.st_mode)) { > > if (ioctl(io->fd, FIODTYPE, &type) == -1) > > err(1, "%s", io->name); > > > > if (type & D_TAPE) > > return(EBADF) > > } > > I'd suggest ENODEV ("Operation not supported by device") rather than > EBADF ("Bad file descriptor"). > > To do this correctly, we'd need some standard way to ask the > device driver if the device can perform the seek or not.
this might be a bit of a problem, since those devices and drivers that don't support seeking are mostly legacy tape drives. i don't think these drivers are actively being maintained atm. another issue are removable media. running the patched version of hexdump (i posted a patch earlier today) shows that running fseeko() against /dev/cd0, where no media is present, succeeds. with a media inserted however, /dev/cd0 is very well capable of seeking. cheers. alex > _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"