'\" t
.\" Title: ne_buffer_append
.\" Author:
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 03/20/2026
.\" Manual: neon API reference
.\" Source: neon
.\" Language: English
.\"
.TH "NE_BUFFER_APPEND" "3" "03/20/2026" "neon" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
ne_buffer_append, ne_buffer_zappend, ne_buffer_qappend, ne_buffer_concat, ne_buffer_snprintf \- append data to a string buffer
.SH "SYNOPSIS"
.sp
.ft B
.nf
#include
.fi
.ft
.HP \w'void\ ne_buffer_append('u
.BI "void ne_buffer_append(ne_buffer\ *" "buf" ", const\ char\ *" "string" ", size_t\ " "len" ");"
.HP \w'void\ ne_buffer_zappend('u
.BI "void ne_buffer_zappend(ne_buffer\ *" "buf" ", const\ char\ *" "string" ");"
.HP \w'void\ ne_buffer_qappend('u
.BI "void ne_buffer_qappend(ne_buffer\ *" "buf" ", const\ char\ *" "string" ", size_t\ " "len" ");"
.HP \w'void\ ne_buffer_concat('u
.BI "void ne_buffer_concat(ne_buffer\ *" "buf" ", \&.\&.\&.);"
.HP \w'size_t\ ne_buffer_snprintf('u
.BI "size_t ne_buffer_snprintf(ne_buffer\ *" "buf" ", size_t\ " "max" ", const\ char\ *" "format" ", \&.\&.\&.);"
.SH "DESCRIPTION"
.PP
The
\fBne_buffer_append\fR
and
\fBne_buffer_zappend\fR
functions append a string to the end of a buffer; extending the buffer as necessary\&. The
\fIlen\fR
passed to
\fBne_buffer_append\fR
specifies the length of the string to append; there must be no
NUL
terminator in the first
\fIlen\fR
bytes of the string\&.
\fBne_buffer_zappend\fR
must be passed a
NUL\-terminated string\&.
.PP
The
\fBne_buffer_qappend\fR
function behaves similarly to
\fBne_buffer_append\fR, except that any non\-ASCII characters or ASCII control characters are escaped using C\-style hex escaping\&. For example, the C string
"foobar", where TAB represents ASCII character 9, would be appended as
"foo\ex09bar"\&. Any
NUL
bytes within the length specified are also escaped\&. This function is useful to make strings from untrusted sources safe for logging or output in a user interface\&.
.PP
The
\fBne_buffer_concat\fR
function takes a variable\-length argument list; each argument must be a
\fBchar *\fR
pointer to a
NUL\-terminated string\&. A
NULL
pointer must be given as the last argument to mark the end of the list\&. The strings are appended to the buffer in the order given\&. None of the strings passed to
\fBne_buffer_concat\fR
are modified\&.
.PP
The
\fBne_buffer_snprintf\fR
function behaves like
\fBsnprintf\fR, appending the output string formatted according to the
\fIformat\fR
parameter\&. At most
\fImax\fR
bytes are written including the trailing
NUL
terminator\&.
.SH "RETURN VALUE"
.PP
The
\fBne_buffer_snprintf\fR
function returns the number of bytes appended
\fIexcluding\fR
the trailing
NUL
terminator\&.
.SH "EXAMPLES"
.PP
The following code will output "Hello, world\&. And goodbye\&."\&.
.sp
.if n \{\
.RS 4
.\}
.nf
ne_buffer *buf = ne_buffer_create();
ne_buffer_zappend(buf, "Hello");
ne_buffer_concat(buf, ", world\&. ", "And ", NULL);
ne_buffer_snprintf(buf, 10, "%s\&.", "goodbye");
puts(buf\->data);
ne_buffer_destroy(buf);
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.PP
\fBne_buffer\fR(3),
\fBne_buffer_create\fR(3),
\fBne_buffer_destroy\fR(3)
.SH "COPYRIGHT"
.br
Copyright \(co 2001-2026 Joe Orton
.br