Lines Matching defs:xbp

146 xb_init(struct xdrbuf *xbp, xdrbuf_type type)
148 bzero(xbp, sizeof(*xbp));
149 xbp->xb_type = type;
150 xbp->xb_flags |= XB_CLEANUP;
157 xb_init_buffer(struct xdrbuf *xbp, char *buf, size_t buflen)
159 xb_init(xbp, XDRBUF_BUFFER);
160 xbp->xb_u.xb_buffer.xbb_base = buf;
161 xbp->xb_u.xb_buffer.xbb_size = buflen;
162 xbp->xb_u.xb_buffer.xbb_len = buflen;
163 xbp->xb_growsize = 512;
164 xbp->xb_ptr = buf;
165 xbp->xb_left = buflen;
167 xbp->xb_flags &= ~XB_CLEANUP;
174 xb_buffer_base(struct xdrbuf *xbp)
176 return (xbp->xb_u.xb_buffer.xbb_base);
183 xb_cleanup(struct xdrbuf *xbp)
185 if (!(xbp->xb_flags & XB_CLEANUP))
187 switch (xbp->xb_type) {
189 if (xbp->xb_u.xb_buffer.xbb_base)
190 xb_free(xbp->xb_u.xb_buffer.xbb_base);
193 xbp->xb_flags &= ~XB_CLEANUP;
201 xb_set_cur_buf_len(struct xdrbuf *xbp)
203 switch (xbp->xb_type) {
205 xbp->xb_u.xb_buffer.xbb_len = xbp->xb_ptr - xbp->xb_u.xb_buffer.xbb_base;
214 xb_advance(struct xdrbuf *xbp, uint32_t len)
219 if (xbp->xb_left <= 0)
221 tlen = MIN(xbp->xb_left, len);
223 xbp->xb_ptr += tlen;
224 xbp->xb_left -= tlen;
235 xb_offset(struct xdrbuf *xbp)
239 switch (xbp->xb_type) {
241 offset = xbp->xb_ptr - xbp->xb_u.xb_buffer.xbb_base;
252 xb_seek(struct xdrbuf *xbp, uint32_t offset)
255 switch (xbp->xb_type) {
257 xbp->xb_ptr = xbp->xb_u.xb_buffer.xbb_base + offset;
258 xbp->xb_left = xbp->xb_u.xb_buffer.xbb_len - offset;
297 xb_grow(struct xdrbuf *xbp)
302 switch (xbp->xb_type) {
304 oldsize = xbp->xb_u.xb_buffer.xbb_size;
305 oldbuf = xbp->xb_u.xb_buffer.xbb_base;
306 newsize = oldsize + xbp->xb_growsize;
314 xbp->xb_u.xb_buffer.xbb_base = newbuf;
315 xbp->xb_u.xb_buffer.xbb_size = newsize;
316 xbp->xb_ptr = newbuf + oldsize;
317 xbp->xb_left = xbp->xb_growsize;
330 xb_add_bytes(struct xdrbuf *xbp, const char *buf, uint32_t count, int nopad)
339 if (xbp->xb_left <= 0) {
341 if ((error = xb_grow(xbp)))
343 if (xbp->xb_left <= 0)
346 tlen = MIN(xbp->xb_left, len);
351 bcopy(buf, xbp->xb_ptr, tlen);
353 bzero(xbp->xb_ptr, tlen);
355 xbp->xb_ptr += tlen;
356 xbp->xb_left -= tlen;
373 xb_get_bytes(struct xdrbuf *xbp, char *buf, uint32_t count, int nopad)
381 if (xbp->xb_left <= 0)
383 tlen = MIN(xbp->xb_left, len);
388 bcopy(xbp->xb_ptr, buf, tlen);
390 xbp->xb_ptr += tlen;
391 xbp->xb_left -= tlen;