static struct message* take_message(pcu_msg* t) { struct message* m; PCU_MALLOC(m,1); m->from = t->received.peer; m->buf = t->received.buffer; /* steal the buffer */ pcu_make_buffer(&t->received.buffer); return m; }
void pcu_read_string (pcu_file* f, char ** p) { pcu_buffer buf; pcu_make_buffer(&buf); char* c; do { pcu_push_buffer(&buf,1); c = buf.start + buf.size - 1; pcu_read(f,c,1); } while (*c != '\0'); pcu_resize_buffer(&buf,buf.size); *p = buf.start; }