.BI "void dstr_putz(dstr *" d );
.BI "void dstr_puts(dstr *" d ", const char *" s );
.BI "int dstr_vputf(dstr *" d ", va_list " ap );
.BI "void dstr_putz(dstr *" d );
.BI "void dstr_puts(dstr *" d ", const char *" s );
.BI "int dstr_vputf(dstr *" d ", va_list " ap );
.BI "void dstr_putd(dstr *" d ", const dstr *" p );
.BI "void dstr_putm(dstr *" d ", const void *" p ", size_t " sz );
.BI "int dstr_putline(dstr *" d ", FILE *" fp );
.BI "void dstr_putd(dstr *" d ", const dstr *" p );
.BI "void dstr_putm(dstr *" d ", const void *" p ", size_t " sz );
.BI "int dstr_putline(dstr *" d ", FILE *" fp );
function empties a string
.I without
deallocating any memory. Therefore appending more characters is quick,
function empties a string
.I without
deallocating any memory. Therefore appending more characters is quick,
`trims' a string's buffer so that it's just large enough for the string
contents and a null terminating byte. This might raise an exception due
to lack of memory. (There are two possible ways this might happen.
`trims' a string's buffer so that it's just large enough for the string
contents and a null terminating byte. This might raise an exception due
to lack of memory. (There are two possible ways this might happen.
fail on reducing a block's size. Secondly, tidying an empty string with no
buffer allocated for it causes allocation of a buffer large enough for
the terminating null byte.)
fail on reducing a block's size. Secondly, tidying an empty string with no
buffer allocated for it causes allocation of a buffer large enough for
the terminating null byte.)
.B dstr
functions is designed to do string handling in security-critical
programs. However, there may be bugs in the code somewhere. In
.B dstr
functions is designed to do string handling in security-critical
programs. However, there may be bugs in the code somewhere. In