SHF_RD
shf = shf_reopen(fd, SHF_RD | SHF_INTERRUPT | can_seek(fd), shl_spare);
shf = shf_fdopen(pv[0], SHF_RD, NULL);
s->u.shf = shf_fdopen(0, SHF_RD | can_seek(0), NULL);
if (!(sflags & (SHF_RD | SHF_WR)))
int bsize = sflags & SHF_UNBUF ? (sflags & SHF_RD ? 1 : 0) : SHF_BSIZE;
sflags |= SHF_RD;
if (!(sflags & (SHF_RD | SHF_WR)))
if (!(sflags & (SHF_RD | SHF_WR)) ||
(sflags & (SHF_RD | SHF_WR)) == (SHF_RD | SHF_WR))
int bsize = sflags & SHF_UNBUF ? (sflags & SHF_RD ? 1 : 0) : SHF_BSIZE;
if (!(shf->flags & SHF_RD))
if (!(shf->flags & SHF_RD))
if (!(shf->flags & SHF_RD))
if (!(shf->flags & SHF_RD))
sflags |= (oflags & O_ACCMODE) == O_RDONLY ? SHF_RD :
int bsize = sflags & SHF_UNBUF ? (sflags & SHF_RD ? 1 : 0) : SHF_BSIZE;
sflags |= SHF_RD;
#define SHF_RDWR (SHF_RD|SHF_WR)