.nf
.B "#include <mLib/dstr.h>"
+.B "typedef struct { ...\& } dstr;"
+.B "#define DSTR_INIT ..."
+
.BI "void dstr_create(dstr *" d );
.BI "void dstr_destroy(dstr *" d );
.BI "void dstr_reset(dstr *" d );
.BI "int dstr_putline(dstr *" d ", FILE *" fp );
.BI "size_t dstr_write(const dstr *" d ", FILE *" fp );
-.BI "dstr " d " = DSTR_INIT;"
.BI "void DCREATE(dstr *" d );
.BI "void DDESTROY(dstr *" d );
.BI "void DRESET(dstr *" d );
.SS "Underlying type"
A
.B dstr
-object is a small structure with the following members:
-.VS
-typedef struct dstr {
- char *buf; /* Pointer to string buffer */
- size_t sz; /* Size of the buffer */
- size_t len; /* Length of the string */
- arena *a; /* Pointer to arena */
-} dstr;
-.VE
+object is a small structure with the following members.
The
.B buf
member points to the actual character data in the string. The data may
.BR sprintf (3)
because the former has to do most of its work itself. In particular,
.B dstr_putf
-doesn't (and probably never will) understand the
+understands the POSIX
.RB ` n$ '
-positional parameter notation accepted by many Unix C libraries. There
-is no macro equivalent of
+positional parameter notation accepted by many Unix C libraries, even if
+the underlying C library does not. There is no macro equivalent of
.BR dstr_putf .
.PP
The function