Loading...
stdlib/strfmon.3 Libc-262 Libc-763.12
--- Libc/Libc-262/stdlib/strfmon.3
+++ Libc/Libc-763.12/stdlib/strfmon.3
@@ -1,3 +1,5 @@
+.\"	$NetBSD: strfmon.3,v 1.3 2005/04/04 08:19:00 wiz Exp $
+.\"
 .\" Copyright (c) 2001 Jeroen Ruigrok van der Werven <asmodai@FreeBSD.org>
 .\" All rights reserved.
 .\"
@@ -22,34 +24,125 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/lib/libc/stdlib/strfmon.3,v 1.3 2001/10/01 13:50:03 ru Exp $
-.\"
-.Dd September 7, 2001
+.\" 	From: FreeBSD: Id: strfmon.3,v 1.7 2003/01/06 06:21:25 tjr Exp
+.\"
+.Dd October 12, 2002
 .Dt STRFMON 3
 .Os
 .Sh NAME
-.Nm strfmon
+.Nm strfmon ,
+.Nm strfmon_l
 .Nd convert monetary value to string
-.Sh LIBRARY
-.Lb libc
+.\" .Sh LIBRARY
+.\" .Lb libc
 .Sh SYNOPSIS
 .In monetary.h
 .Ft ssize_t
-.Fn strfmon "char *s" "size_t maxsize" "const char *format" "..."
+.Fo strfmon
+.Fa "char *restrict s"
+.Fa "size_t maxsize"
+.Fa "const char *restrict format"
+.Fa "..."
+.Fc
+.In monetary.h
+.In xlocale.h
+.Ft ssize_t
+.Fo strfmon_l
+.Fa "char *restrict s"
+.Fa "size_t maxsize"
+.Fa "locale_t loc"
+.Fa "const char *restrict format"
+.Fa "..."
+.Fc
 .Sh DESCRIPTION
 The
 .Fn strfmon
 function places characters into the array pointed to by
-.Fa s
+.Fa s ,
 as controlled by the string pointed to by
 .Fa format .
 No more than
 .Fa maxsize
 bytes are placed into the array.
+.Pp
+While the
+.Fn strfmon
+function uses the current locale, the
+.Fn strfmon_l
+function may be passed a locale directly. See
+.Xr xlocale 3
+for more information.
+.Pp
+The format string is composed of zero or more directives:
+ordinary characters (not
+.Cm % ) ,
+which are copied unchanged to the output stream; and conversion
+specifications, each of which results in fetching zero or more subsequent
+arguments.
+Each conversion specification is introduced by the
+.Cm %
+character.
+After the
+.Cm % ,
+the following appear in sequence:
+.Bl -bullet
+.It
+Zero or more of the following flags:
+.Bl -tag -width "XXX"
+.It Cm = Ns Ar f
+A
+.Sq Cm =
+character followed by another character
+.Ar f
+which is used as the numeric fill character.
+.It Cm ^
+Do not use grouping characters, regardless of the current locale default.
+.It Cm +
+Represent positive values by prefixing them with a positive sign,
+and negative values by prefixing them with a negative sign.
+This is the default.
+.It Cm \&(
+Enclose negative values in parentheses.
+.It Cm \&!
+Do not include a currency symbol in the output.
+.It Cm \-
+Left justify the result.
+Only valid when a field width is specified.
+.El
+.It
+An optional minimum field width as a decimal number.
+By default, there is no minimum width.
+.It
+A
+.Sq Cm #
+sign followed by a decimal number specifying the maximum
+expected number of digits after the radix character.
+.It
+A
+.Sq Cm \&.
+character followed by a decimal number specifying the number
+of digits after the radix character.
+.It
+One of the following conversion specifiers:
+.Bl -tag -width "XXX"
+.It Cm i
+The
+.Vt double
+argument is formatted as an international monetary amount.
+.It Cm n
+The
+.Vt double
+argument is formatted as a national monetary amount.
+.It Cm %
+A
+.Sq Li %
+character is written.
+.El
+.El
 .Sh RETURN VALUES
-If the total number of resulting bytes including the terminating
+If the total number of resulting bytes, including the terminating
 .Dv NULL
-byte is not more than
+byte, is not more than
 .Fa maxsize ,
 .Fn strfmon
 returns the number of bytes placed into the array pointed to by
@@ -69,17 +162,34 @@
 .Bl -tag -width Er
 .It Bq Er E2BIG
 Conversion stopped due to lack of space in the buffer.
-.El
+.It Bq Er EINVAL
+The format string is invalid.
+.It Bq Er ENOMEM
+Not enough memory for temporary buffers.
+.El
+.Sh EXAMPLE
+.Bd -literal -offset indent -compact
+  #include <stdio.h>
+  #include <monetary.h>
+  #include <locale.h>
+
+  int main() {
+          char buf[200];
+          setlocale(LC_ALL, "en_US");
+          (void)strfmon (buf, sizeof(buf)-1, "%n" , 123456.78);
+          printf("%s\n", buf);
+  }
+.Ed
+.Pp
 .Sh SEE ALSO
-.Xr localeconv 3
+.Xr localeconv 3 ,
+.Xr xlocale 3
 .Sh STANDARDS
 The
 .Fn strfmon
 function
 conforms to
-.St -xpg4
-and
-.St -susv2 .
+.St -p1003.1-2001 .
 .Sh AUTHORS
 .An -nosplit
 The
@@ -89,4 +199,10 @@
 .Pp
 This manual page was written by
 .An Jeroen Ruigrok van der Werven Aq asmodai@FreeBSD.org
-based on the standards' text.
+based on the standard's text.
+.Sh BUGS
+The
+.Fn strfmon
+function does not correctly handle multibyte characters in the
+.Fa format
+argument.