Changeset View
Changeset View
Standalone View
Standalone View
stand/libsa/write.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 | ||||
write(int fd, const void *dest, size_t bcount) | write(int fd, const void *dest, size_t bcount) | ||||
{ | { | ||||
struct open_file *f = &files[fd]; | struct open_file *f; | ||||
size_t resid; | size_t resid; | ||||
if ((unsigned)fd >= SOPEN_MAX || !(f->f_flags & F_WRITE)) { | f = fd2open_file(fd); | ||||
if (f == NULL || !(f->f_flags & F_WRITE)) { | |||||
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_WRITE, | errno = (f->f_dev->dv_strategy)(f->f_devdata, F_WRITE, | ||||
btodb(f->f_offset), bcount, __DECONST(void *, dest), | btodb(f->f_offset), bcount, __DECONST(void *, dest), | ||||
&resid); | &resid); | ||||
Show All 10 Lines |