xref: /dflybsd-src/lib/libc/stdlib/strfmon.3 (revision 94d35d83db8becf5c97c72dcf0e7522c2caf6fc6)
1c6ddf9d0SSascha Wildner.\" Copyright (c) 2001 Jeroen Ruigrok van der Werven <asmodai@FreeBSD.org>
2c6ddf9d0SSascha Wildner.\" All rights reserved.
3c6ddf9d0SSascha Wildner.\"
4c6ddf9d0SSascha Wildner.\" Redistribution and use in source and binary forms, with or without
5c6ddf9d0SSascha Wildner.\" modification, are permitted provided that the following conditions
6c6ddf9d0SSascha Wildner.\" are met:
7c6ddf9d0SSascha Wildner.\" 1. Redistributions of source code must retain the above copyright
8c6ddf9d0SSascha Wildner.\"    notice, this list of conditions and the following disclaimer.
9c6ddf9d0SSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright
10c6ddf9d0SSascha Wildner.\"    notice, this list of conditions and the following disclaimer in the
11c6ddf9d0SSascha Wildner.\"    documentation and/or other materials provided with the distribution.
12c6ddf9d0SSascha Wildner.\"
13c6ddf9d0SSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
14c6ddf9d0SSascha Wildner.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15c6ddf9d0SSascha Wildner.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16c6ddf9d0SSascha Wildner.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
17c6ddf9d0SSascha Wildner.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18c6ddf9d0SSascha Wildner.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19c6ddf9d0SSascha Wildner.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20c6ddf9d0SSascha Wildner.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21c6ddf9d0SSascha Wildner.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22c6ddf9d0SSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23c6ddf9d0SSascha Wildner.\" SUCH DAMAGE.
24c6ddf9d0SSascha Wildner.\"
253d960e09SSascha Wildner.\" $FreeBSD: head/lib/libc/stdlib/strfmon.3 237591 2012-06-26 05:34:31Z joel $
26c6ddf9d0SSascha Wildner.\"
27*94d35d83SSascha Wildner.Dd December 25, 2013
28c6ddf9d0SSascha Wildner.Dt STRFMON 3
29c6ddf9d0SSascha Wildner.Os
30c6ddf9d0SSascha Wildner.Sh NAME
313d960e09SSascha Wildner.Nm strfmon ,
323d960e09SSascha Wildner.Nm strfmon_l
33c6ddf9d0SSascha Wildner.Nd convert monetary value to string
34c6ddf9d0SSascha Wildner.Sh LIBRARY
35c6ddf9d0SSascha Wildner.Lb libc
36c6ddf9d0SSascha Wildner.Sh SYNOPSIS
37c6ddf9d0SSascha Wildner.In monetary.h
38c6ddf9d0SSascha Wildner.Ft ssize_t
39c6ddf9d0SSascha Wildner.Fn strfmon "char * restrict s" "size_t maxsize" "const char * restrict format" "..."
403d960e09SSascha Wildner.Ft ssize_t
41*94d35d83SSascha Wildner.Fn strfmon_l "char * restrict s" "size_t maxsize" "locale_t locale" "const char * restrict format" "..."
42c6ddf9d0SSascha Wildner.Sh DESCRIPTION
43c6ddf9d0SSascha WildnerThe
44c6ddf9d0SSascha Wildner.Fn strfmon
45c6ddf9d0SSascha Wildnerfunction places characters into the array pointed to by
46c6ddf9d0SSascha Wildner.Fa s
47c6ddf9d0SSascha Wildneras controlled by the string pointed to by
48c6ddf9d0SSascha Wildner.Fa format .
49c6ddf9d0SSascha WildnerNo more than
50c6ddf9d0SSascha Wildner.Fa maxsize
51c6ddf9d0SSascha Wildnerbytes are placed into the array.
52c6ddf9d0SSascha Wildner.Pp
533d960e09SSascha WildnerThe
543d960e09SSascha Wildner.Fn strfmon_l
553d960e09SSascha Wildnerfunction does the same as
563d960e09SSascha Wildner.Fn strfmon
57*94d35d83SSascha Wildnerbut takes an explicit
58*94d35d83SSascha Wildner.Fa locale
59*94d35d83SSascha Wildnerrather than using the current locale.
603d960e09SSascha Wildner.Pp
61c6ddf9d0SSascha WildnerThe format string is composed of zero or more directives:
62c6ddf9d0SSascha Wildnerordinary characters (not
63c6ddf9d0SSascha Wildner.Cm % ) ,
64c6ddf9d0SSascha Wildnerwhich are copied unchanged to the output stream; and conversion
65c6ddf9d0SSascha Wildnerspecifications, each of which results in fetching zero or more subsequent
66c6ddf9d0SSascha Wildnerarguments.
67c6ddf9d0SSascha WildnerEach conversion specification is introduced by the
68c6ddf9d0SSascha Wildner.Cm %
69c6ddf9d0SSascha Wildnercharacter.
70c6ddf9d0SSascha WildnerAfter the
71c6ddf9d0SSascha Wildner.Cm % ,
72c6ddf9d0SSascha Wildnerthe following appear in sequence:
73c6ddf9d0SSascha Wildner.Bl -bullet
74c6ddf9d0SSascha Wildner.It
75c6ddf9d0SSascha WildnerZero or more of the following flags:
76c6ddf9d0SSascha Wildner.Bl -tag -width "XXX"
77c6ddf9d0SSascha Wildner.It Cm = Ns Ar f
78c6ddf9d0SSascha WildnerA
79c6ddf9d0SSascha Wildner.Sq Cm =
80c6ddf9d0SSascha Wildnercharacter followed by another character
81c6ddf9d0SSascha Wildner.Ar f
82c6ddf9d0SSascha Wildnerwhich is used as the numeric fill character.
83c6ddf9d0SSascha Wildner.It Cm ^
84c6ddf9d0SSascha WildnerDo not use grouping characters, regardless of the current locale default.
85c6ddf9d0SSascha Wildner.It Cm +
86c6ddf9d0SSascha WildnerRepresent positive values by prefixing them with a positive sign,
87c6ddf9d0SSascha Wildnerand negative values by prefixing them with a negative sign.
88c6ddf9d0SSascha WildnerThis is the default.
89c6ddf9d0SSascha Wildner.It Cm \&(
90c6ddf9d0SSascha WildnerEnclose negative values in parentheses.
91c6ddf9d0SSascha Wildner.It Cm \&!
92c6ddf9d0SSascha WildnerDo not include a currency symbol in the output.
93c6ddf9d0SSascha Wildner.It Cm \-
94c6ddf9d0SSascha WildnerLeft justify the result.
95c6ddf9d0SSascha WildnerOnly valid when a field width is specified.
96c6ddf9d0SSascha Wildner.El
97c6ddf9d0SSascha Wildner.It
98c6ddf9d0SSascha WildnerAn optional minimum field width as a decimal number.
99c6ddf9d0SSascha WildnerBy default, there is no minimum width.
100c6ddf9d0SSascha Wildner.It
101c6ddf9d0SSascha WildnerA
102c6ddf9d0SSascha Wildner.Sq Cm #
103c6ddf9d0SSascha Wildnersign followed by a decimal number specifying the maximum
104c6ddf9d0SSascha Wildnerexpected number of digits after the radix character.
105c6ddf9d0SSascha Wildner.It
106c6ddf9d0SSascha WildnerA
107c6ddf9d0SSascha Wildner.Sq Cm \&.
108c6ddf9d0SSascha Wildnercharacter followed by a decimal number specifying the number
109c6ddf9d0SSascha Wildnerof digits after the radix character.
110c6ddf9d0SSascha Wildner.It
111c6ddf9d0SSascha WildnerOne of the following conversion specifiers:
112c6ddf9d0SSascha Wildner.Bl -tag -width "XXX"
113c6ddf9d0SSascha Wildner.It Cm i
114c6ddf9d0SSascha WildnerThe
115c6ddf9d0SSascha Wildner.Vt double
116c6ddf9d0SSascha Wildnerargument is formatted as an international monetary amount.
117c6ddf9d0SSascha Wildner.It Cm n
118c6ddf9d0SSascha WildnerThe
119c6ddf9d0SSascha Wildner.Vt double
120c6ddf9d0SSascha Wildnerargument is formatted as a national monetary amount.
121c6ddf9d0SSascha Wildner.It Cm %
122c6ddf9d0SSascha WildnerA
123c6ddf9d0SSascha Wildner.Sq Li %
124c6ddf9d0SSascha Wildnercharacter is written.
125c6ddf9d0SSascha Wildner.El
126c6ddf9d0SSascha Wildner.El
127c6ddf9d0SSascha Wildner.Sh RETURN VALUES
128c6ddf9d0SSascha WildnerIf the total number of resulting bytes including the terminating
1293d960e09SSascha Wildner.Dv NUL
130c6ddf9d0SSascha Wildnerbyte is not more than
131c6ddf9d0SSascha Wildner.Fa maxsize ,
132c6ddf9d0SSascha Wildner.Fn strfmon
133c6ddf9d0SSascha Wildnerreturns the number of bytes placed into the array pointed to by
134c6ddf9d0SSascha Wildner.Fa s ,
135c6ddf9d0SSascha Wildnernot including the terminating
1363d960e09SSascha Wildner.Dv NUL
137c6ddf9d0SSascha Wildnerbyte.
138c6ddf9d0SSascha WildnerOtherwise, \-1 is returned,
139c6ddf9d0SSascha Wildnerthe contents of the array are indeterminate,
140c6ddf9d0SSascha Wildnerand
141c6ddf9d0SSascha Wildner.Va errno
142c6ddf9d0SSascha Wildneris set to indicate the error.
1433d960e09SSascha Wildner.Pp
1443d960e09SSascha WildnerThe
1453d960e09SSascha Wildner.Fn strfmon_l
1463d960e09SSascha Wildnerfunction returns the same values as
1473d960e09SSascha Wildner.Fn strfmon .
148c6ddf9d0SSascha Wildner.Sh ERRORS
149c6ddf9d0SSascha WildnerThe
150c6ddf9d0SSascha Wildner.Fn strfmon
151*94d35d83SSascha Wildnerand
152*94d35d83SSascha Wildner.Fn strfmon_l
153*94d35d83SSascha Wildnerfunctions will fail if:
154c6ddf9d0SSascha Wildner.Bl -tag -width Er
155c6ddf9d0SSascha Wildner.It Bq Er E2BIG
156c6ddf9d0SSascha WildnerConversion stopped due to lack of space in the buffer.
157c6ddf9d0SSascha Wildner.It Bq Er EINVAL
158c6ddf9d0SSascha WildnerThe format string is invalid.
159c6ddf9d0SSascha Wildner.It Bq Er ENOMEM
160c6ddf9d0SSascha WildnerNot enough memory for temporary buffers.
161c6ddf9d0SSascha Wildner.El
162c6ddf9d0SSascha Wildner.Sh SEE ALSO
163c6ddf9d0SSascha Wildner.Xr localeconv 3
164c6ddf9d0SSascha Wildner.Sh STANDARDS
165c6ddf9d0SSascha WildnerThe
166c6ddf9d0SSascha Wildner.Fn strfmon
167c6ddf9d0SSascha Wildnerfunction
168c6ddf9d0SSascha Wildnerconforms to
169c6ddf9d0SSascha Wildner.St -p1003.1-2001 .
1703d960e09SSascha WildnerThe
1713d960e09SSascha Wildner.Fn strfmon_l
1723d960e09SSascha Wildnerfunction conforms to
1733d960e09SSascha Wildner.St -p1003.1-2008 .
174c6ddf9d0SSascha Wildner.Sh AUTHORS
175c6ddf9d0SSascha Wildner.An -nosplit
176c6ddf9d0SSascha WildnerThe
177c6ddf9d0SSascha Wildner.Fn strfmon
178c6ddf9d0SSascha Wildnerfunction was implemented by
17998b3d9adSFranco Fichtner.An Alexey Zelkin Aq Mt phantom@FreeBSD.org .
180c6ddf9d0SSascha Wildner.Pp
181c6ddf9d0SSascha WildnerThis manual page was written by
18298b3d9adSFranco Fichtner.An Jeroen Ruigrok van der Werven Aq Mt asmodai@FreeBSD.org
183c6ddf9d0SSascha Wildnerbased on the standard's text.
184c6ddf9d0SSascha Wildner.Sh BUGS
185c6ddf9d0SSascha WildnerThe
186c6ddf9d0SSascha Wildner.Fn strfmon
187*94d35d83SSascha Wildnerand
188*94d35d83SSascha Wildner.Fn strfmon_l
189*94d35d83SSascha Wildnerfunctions do not correctly handle multibyte characters in the
190c6ddf9d0SSascha Wildner.Fa format
191c6ddf9d0SSascha Wildnerargument.
192