Esempio n. 1
0
/*
 * Append a byte to the buffer.
 */
int
uni_msg_append8(struct uni_msg *msg, u_int u)
{
	if (uni_msg_ensure(msg, 1) == -1)
		return (-1);
	*msg->b_wptr++ = u;
	return (0);
}
Esempio n. 2
0
/*
 * Append a 32 bit word to the buffer.
 */
int
uni_msg_append32(struct uni_msg *msg, u_int u)
{
	if (uni_msg_ensure(msg, 4) == -1)
		return (-1);
	u = htonl(u);
	bcopy(&u, msg->b_wptr, 4);
	msg->b_wptr += 4;
	return (0);
}
Esempio n. 3
0
/*
 * Append the given buffer to the message. May reallocate the message
 * buffer. Return 0 if ok, -1 on errors.
 */
int
uni_msg_append(struct uni_msg *m, void *buf, size_t size)
{
	int error;

	if ((error = uni_msg_ensure(m, size)))
		return (error);
	memcpy(m->b_wptr, buf, size);
	m->b_wptr += size;

	return (0);
}
Esempio n. 4
0
/*
 * Make sure there is enough space in front of the data for
 * len bytes, and update the read pointer.
 */
int
uni_msg_prepend(struct uni_msg *msg, size_t len)
{
	size_t need;

	if (uni_msg_leading(msg) >= len) {
		msg->b_rptr -= len;
		return (0);
	}
	need = len - uni_msg_leading(msg);
	if (uni_msg_ensure(msg, need))
		return (-1);
	memcpy(msg->b_rptr + need, msg->b_rptr, uni_msg_len(msg));
	msg->b_rptr += need - len;
	msg->b_wptr += need;
	return (0);
}