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