Lines Matching defs:imsg
1 /* $OpenBSD: imsg.c,v 1.13 2015/12/09 11:54:12 tb Exp $ */
31 #include "imsg.h"
126 imsg_get(struct imsgbuf *ibuf, struct imsg *imsg)
135 memcpy(&imsg->hdr, ibuf->r.buf, sizeof(imsg->hdr));
136 if (imsg->hdr.len < IMSG_HEADER_SIZE ||
137 imsg->hdr.len > MAX_IMSGSIZE) {
141 if (imsg->hdr.len > av)
143 datalen = imsg->hdr.len - IMSG_HEADER_SIZE;
146 imsg->data = NULL;
147 else if ((imsg->data = malloc(datalen)) == NULL)
150 if (imsg->hdr.flags & IMSGF_HASFD)
151 imsg->fd = imsg_get_fd(ibuf);
153 imsg->fd = -1;
155 memcpy(imsg->data, ibuf->r.rptr, datalen);
157 if (imsg->hdr.len < av) {
158 left = av - imsg->hdr.len;
159 memmove(&ibuf->r.buf, ibuf->r.buf + imsg->hdr.len, left);
266 imsg_free(struct imsg *imsg)
268 free(imsg->data);