Changeset View
Changeset View
Standalone View
Standalone View
stand/libsa/read.c
Show First 20 Lines • Show All 63 Lines • ▼ Show 20 Lines | |||||
__FBSDID("$FreeBSD$"); | __FBSDID("$FreeBSD$"); | ||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include "stand.h" | #include "stand.h" | ||||
ssize_t | ssize_t | ||||
read(int fd, void *dest, size_t bcount) | read(int fd, void *dest, size_t bcount) | ||||
{ | { | ||||
struct open_file *f = &files[fd]; | struct open_file *f; | ||||
size_t resid; | size_t resid; | ||||
TSENTER(); | TSENTER(); | ||||
if ((unsigned)fd >= SOPEN_MAX || !(f->f_flags & F_READ)) { | f = fd2open_file(fd); | ||||
if (f == NULL || !(f->f_flags & F_READ)) { | |||||
errno = EBADF; | errno = EBADF; | ||||
return (-1); | return (-1); | ||||
} | } | ||||
if (f->f_flags & F_RAW) { | if (f->f_flags & F_RAW) { | ||||
twiddle(4); | twiddle(4); | ||||
errno = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, | errno = (f->f_dev->dv_strategy)(f->f_devdata, F_READ, | ||||
btodb(f->f_offset), bcount, dest, &resid); | btodb(f->f_offset), bcount, dest, &resid); | ||||
if (errno) | if (errno) | ||||
▲ Show 20 Lines • Show All 56 Lines • Show Last 20 Lines |