int iobuffer_fill (iobuffer_ref b) { if (b->isk) { register int r = iobufferk_fill(&b->x.k) ; if (r >= 0 || errno != ENOSYS || !iobuffer_salvage(b)) return r ; } return iobufferu_fill(&b->x.u) ; }
int iobuffer_fill (iobuffer_ref b) { if (b->isk) { register int r = iobufferk_fill(&b->x.k) ; if ((r < 0) && (errno == ENOSYS) && iobuffer_salvage(b)) goto user ; return r ; } user: return iobufferu_fill(&b->x.u) ; }
int iobuffer_ufromk (iobufferu *u, iobufferk *k) { int in = u->b[0].fd ; u->b[0].fd = k->p[0] ; while (k->n) { register int r = iobufferu_fill(u) ; if (r <= 0) goto err ; k->n -= r ; } u->b[0].fd = in ; return 1 ; err: u->b[0].fd = in ; return 0 ; }