#include #include #include int main () { /* * Create a default sbuf. Fill all the SSO storage area, then add some * more. */ { struct sbuf *s = sbuf_new_auto(); assert(s->s_buf == s->s_sso_buf && "sbuf_new_auto"); /* The first SBUF_SSO_LEN-1 bytes get written into the SSO buffer */ for (int i=0; is_buf == s->s_sso_buf && "sbuf_putc #1"); assert(!(s->s_flags & SBUF_DYNAMIC) && "!dynamic"); } /* Another byte triggers the switch to dynamically allocated memory */ sbuf_putc(s, 'B'); assert(s->s_buf != s->s_sso_buf && "sbuf_putc #2"); assert((s->s_flags & SBUF_DYNAMIC) && "dynamic"); /* Finish up */ assert (sbuf_finish(s) == 0 && "sbuf_finish #2"); sbuf_delete(s); } /* * Create another default sbuf. Fill only part of the SSO storage area. */ { struct sbuf *s = sbuf_new_auto(); for (int i=0; is_buf == s->s_sso_buf && "sbuf_putc #3"); assert(!(s->s_flags & SBUF_DYNAMIC) && "!dynamic #2"); } /* Finish up */ assert (sbuf_finish(s) == 0 && "sbuf_finish #2"); sbuf_delete(s); } return 0; }