2 @chapter Output with Unicode strings @code{<unistdio.h>}
4 @cindex formatted output
5 @cindex output, formatted
6 This include file declares functions for doing formatted output with Unicode
7 strings. It defines a set of functions similar to @code{fprintf} and
8 @code{sprintf}, which are declared in @code{<stdio.h>}.
10 These functions work like the @code{printf} function family.
14 The format directive @samp{U} takes an UTF-8 string (@code{const uint8_t *}).
16 The format directive @samp{lU} takes an UTF-16 string
17 (@code{const uint16_t *}).
19 The format directive @samp{llU} takes an UTF-32 string
20 (@code{const uint32_t *}).
23 A function name with an infix @samp{v} indicates that a @code{va_list} is
24 passed instead of multiple arguments.
26 The functions @code{*sprintf} have a @var{buf} argument that is assumed to be
28 (@emph{DANGEROUS! Overflowing the buffer will crash the program.})
30 The functions @code{*snprintf} have a @var{buf} argument that is assumed to be
31 @var{size} units large. (@emph{DANGEROUS! The resulting string might be
32 truncated in the middle of a multibyte character.})
34 The functions @code{*asprintf} have a @var{resultp} argument. The result will
35 be freshly allocated and stored in @code{*resultp}.
37 The functions @code{*asnprintf} have a (@var{resultbuf}, @var{lengthp})
38 argument pair. If @var{resultbuf} is not NULL and the result fits into
39 @code{*@var{lengthp}} units, it is put in @var{resultbuf}, and @var{resultbuf}
40 is returned. Otherwise, a freshly allocated string is returned. In both
41 cases, @code{*@var{lengthp}} is set to the length (number of units) of the
42 returned string. In case of error, NULL is returned and @code{errno} is set.
44 The following functions take an ASCII format string and return a result that
45 is a @code{char *} string in locale encoding.
47 @deftypefun int ulc_sprintf (char *@var{buf}, const char *@var{format}, ...)
50 @deftypefun int ulc_snprintf (char *@var{buf}, size_t size, const char *@var{format}, ...)
53 @deftypefun int ulc_asprintf (char **@var{resultp}, const char *@var{format}, ...)
56 @deftypefun {char *} ulc_asnprintf (char *@var{resultbuf}, size_t *@var{lengthp}, const char *@var{format}, ...)
59 @deftypefun int ulc_vsprintf (char *@var{buf}, const char *@var{format}, va_list @var{ap})
62 @deftypefun int ulc_vsnprintf (char *@var{buf}, size_t size, const char *@var{format}, va_list @var{ap})
65 @deftypefun int ulc_vasprintf (char **@var{resultp}, const char *@var{format}, va_list @var{ap})
68 @deftypefun {char *} ulc_vasnprintf (char *@var{resultbuf}, size_t *@var{lengthp}, const char *@var{format}, va_list @var{ap})
71 The following functions take an ASCII format string and return a result in
74 @deftypefun int u8_sprintf (uint8_t *@var{buf}, const char *@var{format}, ...)
76 @deftypefun int u8_snprintf (uint8_t *@var{buf}, size_t @var{size}, const char *@var{format}, ...)
78 @deftypefun int u8_asprintf (uint8_t **@var{resultp}, const char *@var{format}, ...)
80 @deftypefun {uint8_t *} u8_asnprintf (uint8_t *@var{resultbuf}, size_t *@var{lengthp}, const char *@var{format}, ...)
82 @deftypefun int u8_vsprintf (uint8_t *@var{buf}, const char *@var{format}, va_list ap)
84 @deftypefun int u8_vsnprintf (uint8_t *@var{buf}, size_t @var{size}, const char *@var{format}, va_list @var{ap})
86 @deftypefun int u8_vasprintf (uint8_t **@var{resultp}, const char *@var{format}, va_list @var{ap})
88 @deftypefun {uint8_t *} u8_vasnprintf (uint8_t *resultbuf, size_t *@var{lengthp}, const char *@var{format}, va_list @var{ap})
91 The following functions take an UTF-8 format string and return a result in
94 @deftypefun int u8_u8_sprintf (uint8_t *@var{buf}, const uint8_t *@var{format}, ...)
96 @deftypefun int u8_u8_snprintf (uint8_t *@var{buf}, size_t @var{size}, const uint8_t *@var{format}, ...)
98 @deftypefun int u8_u8_asprintf (uint8_t **@var{resultp}, const uint8_t *@var{format}, ...)
100 @deftypefun {uint8_t *} u8_u8_asnprintf (uint8_t *resultbuf, size_t *@var{lengthp}, const uint8_t *@var{format}, ...)
102 @deftypefun int u8_u8_vsprintf (uint8_t *@var{buf}, const uint8_t *@var{format}, va_list @var{ap})
104 @deftypefun int u8_u8_vsnprintf (uint8_t *@var{buf}, size_t @var{size}, const uint8_t *@var{format}, va_list @var{ap})
106 @deftypefun int u8_u8_vasprintf (uint8_t **@var{resultp}, const uint8_t *@var{format}, va_list @var{ap})
108 @deftypefun {uint8_t *} u8_u8_vasnprintf (uint8_t *resultbuf, size_t *@var{lengthp}, const uint8_t *@var{format}, va_list @var{ap})
111 The following functions take an ASCII format string and return a result in
114 @deftypefun int u16_sprintf (uint16_t *@var{buf}, const char *@var{format}, ...)
116 @deftypefun int u16_snprintf (uint16_t *@var{buf}, size_t @var{size}, const char *@var{format}, ...)
118 @deftypefun int u16_asprintf (uint16_t **@var{resultp}, const char *@var{format}, ...)
120 @deftypefun {uint16_t *} u16_asnprintf (uint16_t *@var{resultbuf}, size_t *@var{lengthp}, const char *@var{format}, ...)
122 @deftypefun int u16_vsprintf (uint16_t *@var{buf}, const char *@var{format}, va_list ap)
124 @deftypefun int u16_vsnprintf (uint16_t *@var{buf}, size_t @var{size}, const char *@var{format}, va_list @var{ap})
126 @deftypefun int u16_vasprintf (uint16_t **@var{resultp}, const char *@var{format}, va_list @var{ap})
128 @deftypefun {uint16_t *} u16_vasnprintf (uint16_t *resultbuf, size_t *@var{lengthp}, const char *@var{format}, va_list @var{ap})
131 The following functions take an UTF-16 format string and return a result in
134 @deftypefun int u16_u16_sprintf (uint16_t *@var{buf}, const uint16_t *@var{format}, ...)
136 @deftypefun int u16_u16_snprintf (uint16_t *@var{buf}, size_t @var{size}, const uint16_t *@var{format}, ...)
138 @deftypefun int u16_u16_asprintf (uint16_t **@var{resultp}, const uint16_t *@var{format}, ...)
140 @deftypefun {uint16_t *} u16_u16_asnprintf (uint16_t *resultbuf, size_t *@var{lengthp}, const uint16_t *@var{format}, ...)
142 @deftypefun int u16_u16_vsprintf (uint16_t *@var{buf}, const uint16_t *@var{format}, va_list @var{ap})
144 @deftypefun int u16_u16_vsnprintf (uint16_t *@var{buf}, size_t @var{size}, const uint16_t *@var{format}, va_list @var{ap})
146 @deftypefun int u16_u16_vasprintf (uint16_t **@var{resultp}, const uint16_t *@var{format}, va_list @var{ap})
148 @deftypefun {uint16_t *} u16_u16_vasnprintf (uint16_t *resultbuf, size_t *@var{lengthp}, const uint16_t *@var{format}, va_list @var{ap})
151 The following functions take an ASCII format string and return a result in
154 @deftypefun int u32_sprintf (uint32_t *@var{buf}, const char *@var{format}, ...)
156 @deftypefun int u32_snprintf (uint32_t *@var{buf}, size_t @var{size}, const char *@var{format}, ...)
158 @deftypefun int u32_asprintf (uint32_t **@var{resultp}, const char *@var{format}, ...)
160 @deftypefun {uint32_t *} u32_asnprintf (uint32_t *@var{resultbuf}, size_t *@var{lengthp}, const char *@var{format}, ...)
162 @deftypefun int u32_vsprintf (uint32_t *@var{buf}, const char *@var{format}, va_list ap)
164 @deftypefun int u32_vsnprintf (uint32_t *@var{buf}, size_t @var{size}, const char *@var{format}, va_list @var{ap})
166 @deftypefun int u32_vasprintf (uint32_t **@var{resultp}, const char *@var{format}, va_list @var{ap})
168 @deftypefun {uint32_t *} u32_vasnprintf (uint32_t *resultbuf, size_t *@var{lengthp}, const char *@var{format}, va_list @var{ap})
171 The following functions take an UTF-32 format string and return a result in
174 @deftypefun int u32_u32_sprintf (uint32_t *@var{buf}, const uint32_t *@var{format}, ...)
176 @deftypefun int u32_u32_snprintf (uint32_t *@var{buf}, size_t @var{size}, const uint32_t *@var{format}, ...)
178 @deftypefun int u32_u32_asprintf (uint32_t **@var{resultp}, const uint32_t *@var{format}, ...)
180 @deftypefun {uint32_t *} u32_u32_asnprintf (uint32_t *resultbuf, size_t *@var{lengthp}, const uint32_t *@var{format}, ...)
182 @deftypefun int u32_u32_vsprintf (uint32_t *@var{buf}, const uint32_t *@var{format}, va_list @var{ap})
184 @deftypefun int u32_u32_vsnprintf (uint32_t *@var{buf}, size_t @var{size}, const uint32_t *@var{format}, va_list @var{ap})
186 @deftypefun int u32_u32_vasprintf (uint32_t **@var{resultp}, const uint32_t *@var{format}, va_list @var{ap})
188 @deftypefun {uint32_t *} u32_u32_vasnprintf (uint32_t *resultbuf, size_t *@var{lengthp}, const uint32_t *@var{format}, va_list @var{ap})
191 The following functions take an ASCII format string and produce output in
192 locale encoding to a @code{FILE} stream.
194 @deftypefun int ulc_fprintf (FILE *@var{stream}, const char *@var{format}, ...)
196 @deftypefun int ulc_vfprintf (FILE *@var{stream}, const char *@var{format}, va_list @var{ap})