• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download

$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/

BYTES_BY_PREFIX 3 07/25/2000 "Linux Test Project"
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
SYNOPSIS
int bytes_by_prefix(char *str);

long lbytes_by_prefix(char *str);

long long llbytes_by_prefix(char *str);

DESCRIPTION
bytes_by_prefix(), lbytes_by_prefix(), and llbytes_by_prefix() converts str to an integer, long, or long long byte count. str is an floating point number optionally followed by a single character multiplier. Currently the following multipliers are supported:
 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)
str is interpreted as floating point number (base 10). When using llbytes_by_prefix(), the uppercase suffix will result in multiplying by the size of a (long long) or 8.
RETURNS
-1 if the integer portion of str is invalid, if an unsupported multiplier is supplied, or if str has extra leading or trailing characters. If str contains a negative number, the return value will be negative.
EXAMPLES
bytes_by_prefix("1000")

Returns 1000

bytes_by_prefix("5b")

Returns 5 * BSIZE.

bytes_by_prefix("1.5m")

Returns 1.5 * 1048576 or 1572864

LIMITATIONS
bytes_by_prefix() and lbytes_by_prefix() when compiled as a 32 bit IRIX binary can only return a max number of 2g (2147483647). However, lbytes_by_prefix() is not limited by the 2g limit when compiled as 64 bit binary, where bytes_by_prefix() 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.