123d1a178SPawel Jakub Dawidek.\" $NetBSD: humanize_number.3,v 1.4 2003/04/16 13:34:37 wiz Exp $ 223d1a178SPawel Jakub Dawidek.\" $FreeBSD$ 323d1a178SPawel Jakub Dawidek.\" 423d1a178SPawel Jakub Dawidek.\" Copyright (c) 1999, 2002 The NetBSD Foundation, Inc. 523d1a178SPawel Jakub Dawidek.\" All rights reserved. 623d1a178SPawel Jakub Dawidek.\" 723d1a178SPawel Jakub Dawidek.\" This code is derived from software contributed to The NetBSD Foundation 823d1a178SPawel Jakub Dawidek.\" by Luke Mewburn and by Tomas Svensson. 923d1a178SPawel Jakub Dawidek.\" 1023d1a178SPawel Jakub Dawidek.\" Redistribution and use in source and binary forms, with or without 1123d1a178SPawel Jakub Dawidek.\" modification, are permitted provided that the following conditions 1223d1a178SPawel Jakub Dawidek.\" are met: 1323d1a178SPawel Jakub Dawidek.\" 1. Redistributions of source code must retain the above copyright 1423d1a178SPawel Jakub Dawidek.\" notice, this list of conditions and the following disclaimer. 1523d1a178SPawel Jakub Dawidek.\" 2. Redistributions in binary form must reproduce the above copyright 1623d1a178SPawel Jakub Dawidek.\" notice, this list of conditions and the following disclaimer in the 1723d1a178SPawel Jakub Dawidek.\" documentation and/or other materials provided with the distribution. 1823d1a178SPawel Jakub Dawidek.\" 3. All advertising materials mentioning features or use of this software 1923d1a178SPawel Jakub Dawidek.\" must display the following acknowledgement: 2023d1a178SPawel Jakub Dawidek.\" This product includes software developed by the NetBSD 2123d1a178SPawel Jakub Dawidek.\" Foundation, Inc. and its contributors. 2223d1a178SPawel Jakub Dawidek.\" 4. Neither the name of The NetBSD Foundation nor the names of its 2323d1a178SPawel Jakub Dawidek.\" contributors may be used to endorse or promote products derived 2423d1a178SPawel Jakub Dawidek.\" from this software without specific prior written permission. 2523d1a178SPawel Jakub Dawidek.\" 2623d1a178SPawel Jakub Dawidek.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 2723d1a178SPawel Jakub Dawidek.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 2823d1a178SPawel Jakub Dawidek.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 2923d1a178SPawel Jakub Dawidek.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 3023d1a178SPawel Jakub Dawidek.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 3123d1a178SPawel Jakub Dawidek.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 3223d1a178SPawel Jakub Dawidek.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 3323d1a178SPawel Jakub Dawidek.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 3423d1a178SPawel Jakub Dawidek.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 3523d1a178SPawel Jakub Dawidek.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 3623d1a178SPawel Jakub Dawidek.\" POSSIBILITY OF SUCH DAMAGE. 3723d1a178SPawel Jakub Dawidek.\" 3823d1a178SPawel Jakub Dawidek.Dd May 25, 2004 3923d1a178SPawel Jakub Dawidek.Dt HUMANIZE_NUMBER 3 4023d1a178SPawel Jakub Dawidek.Os 4123d1a178SPawel Jakub Dawidek.Sh NAME 4223d1a178SPawel Jakub Dawidek.Nm humanize_number 4323d1a178SPawel Jakub Dawidek.Nd format a number into a human readable form 44e27d1913SPawel Jakub Dawidek.Sh LIBRARY 45e27d1913SPawel Jakub Dawidek.Lb libutil 4623d1a178SPawel Jakub Dawidek.Sh SYNOPSIS 47d268591bSTom Rhodes.In libutil.h 4823d1a178SPawel Jakub Dawidek.Ft int 49fd132368SRuslan Ermilov.Fo humanize_number 50fd132368SRuslan Ermilov.Fa "char *buf" "size_t len" "int64_t number" "const char *suffix" 51fd132368SRuslan Ermilov.Fa "int scale" "int flags" 52fd132368SRuslan Ermilov.Fc 5323d1a178SPawel Jakub Dawidek.Sh DESCRIPTION 5423d1a178SPawel Jakub DawidekThe 5523d1a178SPawel Jakub Dawidek.Fn humanize_number 56fd132368SRuslan Ermilovfunction formats the signed 64-bit quantity given in 5723d1a178SPawel Jakub Dawidek.Fa number 5823d1a178SPawel Jakub Dawidekinto 5923d1a178SPawel Jakub Dawidek.Fa buffer . 6023d1a178SPawel Jakub DawidekA space and then 6123d1a178SPawel Jakub Dawidek.Fa suffix 6223d1a178SPawel Jakub Dawidekis appended to the end. 63fd132368SRuslan ErmilovThe buffer pointed to by 6423d1a178SPawel Jakub Dawidek.Fa buffer 6523d1a178SPawel Jakub Dawidekmust be at least 6623d1a178SPawel Jakub Dawidek.Fa len 6723d1a178SPawel Jakub Dawidekbytes bytes long. 6823d1a178SPawel Jakub Dawidek.Pp 6923d1a178SPawel Jakub DawidekIf the formatted number (including 7023d1a178SPawel Jakub Dawidek.Fa suffix ) 7123d1a178SPawel Jakub Dawidekwould be too long to fit into 7223d1a178SPawel Jakub Dawidek.Fa buffer , 7323d1a178SPawel Jakub Dawidekthen divide 7423d1a178SPawel Jakub Dawidek.Fa number 7523d1a178SPawel Jakub Dawidekby 1024 until it will. 7623d1a178SPawel Jakub DawidekIn this case, prefix 7723d1a178SPawel Jakub Dawidek.Fa suffix 7823d1a178SPawel Jakub Dawidekwith the appropriate SI designator. 7923d1a178SPawel Jakub Dawidek.Pp 8023d1a178SPawel Jakub DawidekThe prefixes are: 8123d1a178SPawel Jakub Dawidek.Bl -column "Prefix" "Description" "Multiplier" -offset indent 8223d1a178SPawel Jakub Dawidek.It Sy "Prefix" Ta Sy "Description" Ta Sy "Multiplier" 83fd132368SRuslan Ermilov.It Li k Ta No kilo Ta 1024 84fd132368SRuslan Ermilov.It Li M Ta No mega Ta 1048576 85fd132368SRuslan Ermilov.It Li G Ta No giga Ta 1073741824 86fd132368SRuslan Ermilov.It Li T Ta No tera Ta 1099511627776 87fd132368SRuslan Ermilov.It Li P Ta No peta Ta 1125899906842624 88fd132368SRuslan Ermilov.It Li E Ta No exa Ta 1152921504606846976 8923d1a178SPawel Jakub Dawidek.El 9023d1a178SPawel Jakub Dawidek.Pp 91d268591bSTom RhodesThe 9223d1a178SPawel Jakub Dawidek.Fa len 93d268591bSTom Rhodesargument must be at least 4 plus the length of 9423d1a178SPawel Jakub Dawidek.Fa suffix , 9523d1a178SPawel Jakub Dawidekin order to ensure a useful result is generated into 9623d1a178SPawel Jakub Dawidek.Fa buffer . 9723d1a178SPawel Jakub DawidekTo use a specific prefix, specify this as 9823d1a178SPawel Jakub Dawidek.Fa scale 99fd132368SRuslan Ermilov(multiplier = 1024 ^ scale). 10023d1a178SPawel Jakub DawidekThis cannot be combined with any of the 10123d1a178SPawel Jakub Dawidek.Fa scale 10223d1a178SPawel Jakub Dawidekflags below. 10323d1a178SPawel Jakub Dawidek.Pp 10423d1a178SPawel Jakub DawidekThe following flags may be passed in 105fd132368SRuslan Ermilov.Fa scale : 106fd132368SRuslan Ermilov.Bl -tag -width ".Dv HN_DIVISOR_1000" -offset indent 10723d1a178SPawel Jakub Dawidek.It Dv HN_AUTOSCALE 10823d1a178SPawel Jakub DawidekFormat the buffer using the lowest multiplier possible. 10923d1a178SPawel Jakub Dawidek.It Dv HN_GETSCALE 11023d1a178SPawel Jakub DawidekReturn the prefix index number (the number of times 11123d1a178SPawel Jakub Dawidek.Fa number 11223d1a178SPawel Jakub Dawidekmust be divided to fit) instead of formatting it to the buffer. 11323d1a178SPawel Jakub Dawidek.El 11423d1a178SPawel Jakub Dawidek.Pp 11523d1a178SPawel Jakub DawidekThe following flags may be passed in 116fd132368SRuslan Ermilov.Fa flags : 117fd132368SRuslan Ermilov.Bl -tag -width ".Dv HN_DIVISOR_1000" -offset indent 11823d1a178SPawel Jakub Dawidek.It Dv HN_DECIMAL 11923d1a178SPawel Jakub DawidekIf the final result is less than 10, display it using one digit. 12023d1a178SPawel Jakub Dawidek.It Dv HN_NOSPACE 12123d1a178SPawel Jakub DawidekDo not put a space between 12223d1a178SPawel Jakub Dawidek.Fa number 12323d1a178SPawel Jakub Dawidekand the prefix. 12423d1a178SPawel Jakub Dawidek.It Dv HN_B 125fd132368SRuslan ErmilovUse 126fd132368SRuslan Ermilov.Ql B 127fd132368SRuslan Ermilov(bytes) as prefix if the original result does not have a prefix. 12823d1a178SPawel Jakub Dawidek.It Dv HN_DIVISOR_1000 12923d1a178SPawel Jakub DawidekDivide 13023d1a178SPawel Jakub Dawidek.Fa number 13123d1a178SPawel Jakub Dawidekwith 1000 instead of 1024. 13223d1a178SPawel Jakub Dawidek.El 13323d1a178SPawel Jakub Dawidek.Sh RETURN VALUES 134d268591bSTom RhodesThe 13523d1a178SPawel Jakub Dawidek.Fn humanize_number 136d268591bSTom Rhodesfunction returns the number of characters stored in 13723d1a178SPawel Jakub Dawidek.Fa buffer 138fd132368SRuslan Ermilov(excluding the terminating 139fd132368SRuslan Ermilov.Dv NUL ) 140fd132368SRuslan Ermilovupon success, or \-1 upon failure. 14123d1a178SPawel Jakub DawidekIf 14223d1a178SPawel Jakub Dawidek.Dv HN_GETSCALE 14323d1a178SPawel Jakub Dawidekis specified, the prefix index number will be returned instead. 14423d1a178SPawel Jakub Dawidek.Sh SEE ALSO 14523d1a178SPawel Jakub Dawidek.Xr humanize_number 9 14623d1a178SPawel Jakub Dawidek.Sh HISTORY 147d268591bSTom RhodesThe 14823d1a178SPawel Jakub Dawidek.Fn humanize_number 149d268591bSTom Rhodesfunction first appeared in 15023d1a178SPawel Jakub Dawidek.Nx 2.0 . 151