> 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.

_______________________________________________
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"

Reply via email to