projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix autoreconf invocation.
[gnulib.git]
/
lib
/
human.h
diff --git
a/lib/human.h
b/lib/human.h
index
604fec1
..
3b23c12
100644
(file)
--- a/
lib/human.h
+++ b/
lib/human.h
@@
-1,7
+1,7
@@
/* human.h -- print human readable file size
/* human.h -- print human readable file size
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
Free
- Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
, 2004, 2005
+
Free
Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-15,7
+15,7
@@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
- Inc., 5
9 Temple Place - Suite 330, Boston, MA 02111-1307
, USA. */
+ Inc., 5
1 Franklin Street, Fifth Floor, Boston, MA 02110-1301
, USA. */
/* Written by Paul Eggert and Larry McVoy. */
/* Written by Paul Eggert and Larry McVoy. */
@@
-29,24
+29,24
@@
# include <limits.h>
# include <stdbool.h>
# include <limits.h>
# include <stdbool.h>
-# if HAVE_INTTYPES_H
-# include <inttypes.h>
-# else
-# if HAVE_STDINT_H
-# include <stdint.h>
-# endif
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+# if HAVE_UNISTD_H
+# include <unistd.h>
# endif
/* A conservative bound on the maximum length of a human-readable string.
The output can be the square of the largest uintmax_t, so double
its size before converting to a bound.
# endif
/* A conservative bound on the maximum length of a human-readable string.
The output can be the square of the largest uintmax_t, so double
its size before converting to a bound.
-
302 / 1000 is ceil (log10 (2.0))
. Add 1 for integer division truncation.
+
log10 (2.0) < 146/485
. Add 1 for integer division truncation.
Also, the output can have a thousands separator between every digit,
so multiply by MB_LEN_MAX + 1 and then subtract MB_LEN_MAX.
Also, the output can have a thousands separator between every digit,
so multiply by MB_LEN_MAX + 1 and then subtract MB_LEN_MAX.
+ Append 1 for a space before the suffix.
Finally, append 3, the maximum length of a suffix. */
# define LONGEST_HUMAN_READABLE \
Finally, append 3, the maximum length of a suffix. */
# define LONGEST_HUMAN_READABLE \
- ((2 * sizeof (uintmax_t) * CHAR_BIT *
302 / 1000
+ 1) * (MB_LEN_MAX + 1) \
- - MB_LEN_MAX + 3)
+ ((2 * sizeof (uintmax_t) * CHAR_BIT *
146 / 485
+ 1) * (MB_LEN_MAX + 1) \
+ - MB_LEN_MAX +
1 +
3)
/* Options for human_readable. */
enum
/* Options for human_readable. */
enum
@@
-75,11
+75,14
@@
enum
/* Prefer base 1024 to base 1000. */
human_base_1024 = 32,
/* Prefer base 1024 to base 1000. */
human_base_1024 = 32,
+ /* Prepend " " before unit symbol. */
+ human_space_before_unit = 64,
+
/* Append SI prefix, e.g. "k" or "M". */
/* Append SI prefix, e.g. "k" or "M". */
- human_SI =
64
,
+ human_SI =
128
,
/* Append "B" (if base 1000) or "iB" (if base 1024) to SI prefix. */
/* Append "B" (if base 1000) or "iB" (if base 1024) to SI prefix. */
- human_B =
128
+ human_B =
256
};
char *human_readable (uintmax_t, char *, int, uintmax_t, uintmax_t);
};
char *human_readable (uintmax_t, char *, int, uintmax_t, uintmax_t);