int main() { struct memio_buffer mb; char buf[100]; int i; memio_buffer_new(&mb, TEST_BUFLEN); CHECKEQ(memio_buffer_unused_contiguous(&mb), TEST_BUFLEN-1); CHECKEQ(memio_buffer_used_contiguous(&mb), 0); CHECKEQ(memio_buffer_put(&mb, "howdy", 5), 5); CHECKEQ(memio_buffer_unused_contiguous(&mb), TEST_BUFLEN-1-5); CHECKEQ(memio_buffer_used_contiguous(&mb), 5); CHECKEQ(memio_buffer_wrapped_bytes(&mb), 0); CHECKEQ(memio_buffer_put(&mb, "!", 1), 1); CHECKEQ(memio_buffer_unused_contiguous(&mb), 0); CHECKEQ(memio_buffer_used_contiguous(&mb), 6); CHECKEQ(memio_buffer_wrapped_bytes(&mb), 0); CHECKEQ(memio_buffer_get(&mb, buf, 6), 6); CHECKEQ(memcmp(buf, "howdy!", 6), 0); CHECKEQ(memio_buffer_unused_contiguous(&mb), 1); CHECKEQ(memio_buffer_used_contiguous(&mb), 0); CHECKEQ(memio_buffer_put(&mb, "01234", 5), 5); CHECKEQ(memio_buffer_used_contiguous(&mb), 1); CHECKEQ(memio_buffer_wrapped_bytes(&mb), 4); CHECKEQ(memio_buffer_unused_contiguous(&mb), TEST_BUFLEN-1-5); CHECKEQ(memio_buffer_put(&mb, "5", 1), 1); CHECKEQ(memio_buffer_unused_contiguous(&mb), 0); CHECKEQ(memio_buffer_used_contiguous(&mb), 1); /* TODO: add more cases */ printf("Test passed\n"); exit(0); }
void memio_GetWriteParams(memio_Private *secret, const char **buf1, unsigned int *len1, const char **buf2, unsigned int *len2) { struct memio_buffer* mb = &((PRFilePrivate *)secret)->writebuf; PR_ASSERT(mb->bufsize); *buf1 = &mb->buf[mb->head]; *len1 = memio_buffer_used_contiguous(mb); *buf2 = mb->buf; *len2 = memio_buffer_wrapped_bytes(mb); }