/* * Before reading (deserializing from the stream, one should always call * this procedure to guarantee proper record alignment. */ bool_t xdrrec_skiprecord(XDR *xdrs) { RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private); enum xprt_stat xstat; if (rstrm->nonblock) { if (__xdrrec_getrec(xdrs, &xstat, FALSE)) { rstrm->fbtbc = 0; return TRUE; } if (rstrm->in_finger == rstrm->in_boundry && xstat == XPRT_MOREREQS) { rstrm->fbtbc = 0; return TRUE; } return FALSE; } while (rstrm->fbtbc > 0 || (! rstrm->last_frag)) { if (! skip_input_bytes(rstrm, rstrm->fbtbc)) return (FALSE); rstrm->fbtbc = 0; if ((! rstrm->last_frag) && (! set_input_fragment(rstrm))) return (FALSE); } rstrm->last_frag = FALSE; return (TRUE); }
/* * Before reading (deserializing) from the stream, one should always call * this procedure to guarantee proper record alignment. */ XDR_API bool_t xdrrec_skiprecord(XDR *xdrs) { /* LINTED pointer cast */ RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private); if (rstrm->in_nonblock) { enum xprt_stat pstat; /* * Read and discard a record from the non-blocking * buffer. Return succes only if a complete record can * be retrieved without blocking, or if the buffer was * empty and there was no data to fetch. */ if (__xdrrec_getbytes_nonblock(xdrs, &pstat) || (pstat == XPRT_MOREREQS && rstrm->in_finger == rstrm->in_boundry)) { rstrm->fbtbc = 0; return (TRUE); } return (FALSE); } while (rstrm->fbtbc > 0 || (!rstrm->last_frag)) { if (!skip_input_bytes(rstrm, rstrm->fbtbc)) return (FALSE); rstrm->fbtbc = 0; if ((!rstrm->last_frag) && (!set_input_fragment(rstrm))) return (FALSE); } rstrm->last_frag = FALSE; return (TRUE); }
/* * Before reading (deserializing from the stream, one should always call * this procedure to guarantee proper record alignment. */ bool_t xdrrec_skiprecord(XDR *xdrs) { register RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private); while (rstrm->fbtbc > 0 || (! rstrm->last_frag)) { if (! skip_input_bytes(rstrm, rstrm->fbtbc)) return (FALSE); rstrm->fbtbc = 0; if ((! rstrm->last_frag) && (! set_input_fragment(rstrm))) return (FALSE); } rstrm->last_frag = FALSE; return (TRUE); }
/* * Look ahead function. * Returns TRUE iff there is no more input in the buffer * after consuming the rest of the current record. */ bool_t xdrrec_eof(XDR *xdrs) { RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private); while (rstrm->fbtbc > 0 || (! rstrm->last_frag)) { if (! skip_input_bytes(rstrm, rstrm->fbtbc)) return (TRUE); rstrm->fbtbc = 0; if ((! rstrm->last_frag) && (! set_input_fragment(rstrm))) return (TRUE); } if (rstrm->in_finger == rstrm->in_boundry) return (TRUE); return (FALSE); }
/* * Before reading (deserializing from the stream), one should always call * this procedure to guarantee proper record alignment. */ bool xdr_inrec_skiprecord(XDR *xdrs) { RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private); while (rstrm->fbtbc > 0 || (! rstrm->last_frag)) { if (! skip_input_bytes(rstrm, rstrm->fbtbc)) return (FALSE); rstrm->fbtbc = 0; if ((! rstrm->last_frag) && (! set_input_fragment(rstrm, INT_MAX))) return (FALSE); } rstrm->last_frag = FALSE; rstrm->offset = 0; rstrm->cksum = 0; return (TRUE); }
/* * Look ahead fuction. * Returns TRUE iff there is no more input in the buffer * after consuming the rest of the current record. */ XDR_API bool_t xdrrec_eof(XDR *xdrs) { /* LINTED pointer cast */ RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private); if (rstrm->in_nonblock) { /* * If in_needpoll is true, the non-blocking XDR stream * does not have a complete record. */ return (rstrm->in_needpoll); } while (rstrm->fbtbc > 0 || (!rstrm->last_frag)) { if (!skip_input_bytes(rstrm, rstrm->fbtbc)) return (TRUE); rstrm->fbtbc = 0; if ((!rstrm->last_frag) && (!set_input_fragment(rstrm))) return (TRUE); } if (rstrm->in_finger == rstrm->in_boundry) return (TRUE); return (FALSE); }