Lines Matching refs:imsg
124 imsg_get(struct imsgbuf *ibuf, struct imsg *imsg) in imsg_get() argument
133 memcpy(&imsg->hdr, ibuf->r.buf, sizeof(imsg->hdr)); in imsg_get()
134 if (imsg->hdr.len < IMSG_HEADER_SIZE || in imsg_get()
135 imsg->hdr.len > MAX_IMSGSIZE) { in imsg_get()
139 if (imsg->hdr.len > av) in imsg_get()
141 datalen = imsg->hdr.len - IMSG_HEADER_SIZE; in imsg_get()
144 imsg->data = NULL; in imsg_get()
145 else if ((imsg->data = malloc(datalen)) == NULL) in imsg_get()
148 if (imsg->hdr.flags & IMSGF_HASFD) in imsg_get()
149 imsg->fd = imsg_get_fd(ibuf); in imsg_get()
151 imsg->fd = -1; in imsg_get()
153 memcpy(imsg->data, ibuf->r.rptr, datalen); in imsg_get()
155 if (imsg->hdr.len < av) { in imsg_get()
156 left = av - imsg->hdr.len; in imsg_get()
157 memmove(&ibuf->r.buf, ibuf->r.buf + imsg->hdr.len, left); in imsg_get()
264 imsg_free(struct imsg *imsg) in imsg_free() argument
266 free(imsg->data); in imsg_free()