.\"
.\" $Id: bytes_by_prefix.3,v 1.1 2000/07/27 16:59:03 alaffin Exp $
.\"
.\" Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
.\"
.\" This program is free software; you can redistribute it and/or modify it
.\" under the terms of version 2 of the GNU General Public License as
.\" published by the Free Software Foundation.
.\"
.\" This program is distributed in the hope that it would be useful, but
.\" WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.\"
.\" Further, this software is distributed without any warranty that it is
.\" free of the rightful claim of any third person regarding infringement
.\" or the like.  Any license provided herein, whether implied or
.\" otherwise, applies only to this software file.  Patent licenses, if
.\" any, provided herein do not apply to combinations of this program with
.\" other software, or any other product whatsoever.
.\"
.\" You should have received a copy of the GNU General Public License along
.\" with this program; if not, write the Free Software Foundation, Inc.,
.\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
.\"
.\" Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
.\" Mountain View, CA  94043, or:
.\"
.\" http://www.sgi.com
.\"
.\" For further information regarding this notice, see:
.\"
.\" http://oss.sgi.com/projects/GenInfo/NoticeExplan/
.\"
.TH BYTES_BY_PREFIX 3 07/25/2000 "Linux Test Project"
.SH NAME
bytes_by_prefix \- convert a string to a int byte count
lbytes_by_prefix \- convert a string to a long byte count
llbytes_by_prefix \- convert a string to a long long byte count
.SH SYNOPSIS
int bytes_by_prefix(char *\fIstr\fR);
.br
long lbytes_by_prefix(char *\fIstr\fR);
.br
long long llbytes_by_prefix(char *\fIstr\fR);
.SH DESCRIPTION
\fBbytes_by_prefix()\fR, \fBlbytes_by_prefix()\fR, and \fBllbytes_by_prefix()\fR converts
\fIstr\fR to an integer, long, or long long  byte count.  \fIstr\fR is an
floating point number optionally followed by a single character multiplier.
Currently the following multipliers are supported:
.sp
.nf
    Char  Meaning       Multiplier
    ----  ---------     --------------------------------
    b     Blocks        BSIZE or UBSIZE
    k     Kilobytes     2^10 (1024)
    K     Kilowords     2^10 (1024) * sizeof(long)
    m     Megabytes     2^20 (1048576)
    M     Megawords     2^20 (1048576) * sizeof(long)
    g     Gigabytes     2^30 (1073741824)
    G     Gigawords     2^30 (1073741824) * sizeof(long)
.fi
.sp
\fIstr\fR is interpreted as floating point number (base 10).
When using \fBllbytes_by_prefix()\fR, the uppercase suffix will result
in multiplying by the size of a (long long) or 8.
.SH RETURNS
-1 if the integer portion of \fIstr\fR is invalid, if an unsupported
multiplier is supplied, or if \fIstr\fR has extra leading or trailing
characters.  If \fIstr\fR contains a negative number, the return
value will be negative.
.SH EXAMPLES
\fBbytes_by_prefix("1000")\fR
.br
.RS 8
Returns 1000
.RE
.br
\fBbytes_by_prefix("5b")\fR
.br
.RS 8
Returns 5 * BSIZE.
.RE
\fBbytes_by_prefix("1.5m")\fR
.br
.RS 8
Returns 1.5 * 1048576 or 1572864
.RE

.SH LIMITATIONS

\fBbytes_by_prefix()\fR and \fBlbytes_by_prefix()\fR when compiled as
a 32 bit IRIX binary can only return a max number of 2g (2147483647).
However, \fBlbytes_by_prefix()\fR is not limited by the 2g limit when
compiled as 64 bit binary, where \fBbytes_by_prefix()\fR still is limited.

Note that the size of long will vary depending how if compiled as
a 32 or 64 bit binary.  The size of a long long is always 8.

Also note that on a traditional CRAY system, a block is 4096 bytes, where
on most IRIX systems a block is 1024 bytes.

