diff -up ./free.1.orig ./free.1
--- ./free.1.orig 2018-01-16 16:11:35.609874589 +0100
+++ ./free.1 2018-01-17 14:33:04.625716399 +0100
@@ -62,6 +62,9 @@ Display the amount of memory in gigabyte
\fB\-\-tera\fR
Display the amount of memory in terabytes.
.TP
+\fB\-\-peta\fR
+Display the amount of memory in petabytes.
+.TP
\fB\-h\fR, \fB\-\-human\fP
Show all output fields automatically scaled to shortest three digit unit and
display the units of print out. Following units are used.
@@ -72,9 +75,10 @@ display the units of print out. Followi
M = megas
G = gigas
T = teras
+ P = petas
.fi
.sp
-If unit is missing, and you have petabyte of RAM or swap, the number is in
+If unit is missing, and you have exabyte of RAM or swap, the number is in
terabytes and columns might not be aligned with header.
.TP
\fB\-w\fR, \fB\-\-wide\fR
diff -up ./free.c.orig ./free.c
--- ./free.c.orig 2018-01-16 16:10:27.058158964 +0100
+++ ./free.c 2018-01-17 14:58:06.723658091 +0100
@@ -78,6 +78,7 @@ static void __attribute__ ((__noreturn__
fputs(_(" -m, --mega show output in megabytes\n"), out);
fputs(_(" -g, --giga show output in gigabytes\n"), out);
fputs(_(" --tera show output in terabytes\n"), out);
+ fputs(_(" --peta show output in petabytes\n"), out);
fputs(_(" -h, --human show human-readable output\n"), out);
fputs(_(" --si use powers of 1000 not 1024\n"), out);
fputs(_(" -l, --lohi show detailed low and high memory statistics\n"), out);
@@ -101,7 +102,7 @@ double power(unsigned int base, unsigned
/* idea of this function is copied from top size scaling */
static const char *scale_size(unsigned long size, int flags, struct commandline_arguments args)
{
- static char nextup[] = { 'B', 'K', 'M', 'G', 'T', 0 };
+ static char nextup[] = { 'B', 'K', 'M', 'G', 'T', 'P', 0 };
static char buf[BUFSIZ];
int i;
char *up;
@@ -163,6 +164,7 @@ static const char *scale_size(unsigned l
case 3:
case 4:
case 5:
+ case 6:
if (4 >=
snprintf(buf, sizeof(buf), "%.1f%c",
(float)(size / power(base, i - 2)), *up))
@@ -172,14 +174,14 @@ static const char *scale_size(unsigned l
(long)(size / power(base, i - 2)), *up))
return buf;
break;
- case 6:
+ case 7:
break;
}
}
/*
- * On system where there is more than petabyte of memory or swap the
+ * On system where there is more than exbibyte of memory or swap the
* output does not fit to column. For incoming few years this should
- * not be a big problem (wrote at Apr, 2011).
+ * not be a big problem (wrote at Apr, 2015).
*/
return buf;
}
@@ -197,6 +199,7 @@ int main(int argc, char **argv)
enum {
SI_OPTION = CHAR_MAX + 1,
TERA_OPTION,
+ PETA_OPTION,
HELP_OPTION
};
@@ -206,6 +209,7 @@ int main(int argc, char **argv)
{ "mega", no_argument, NULL, 'm' },
{ "giga", no_argument, NULL, 'g' },
{ "tera", no_argument, NULL, TERA_OPTION },
+ { "peta", no_argument, NULL, PETA_OPTION },
{ "human", no_argument, NULL, 'h' },
{ "si", no_argument, NULL, SI_OPTION },
{ "lohi", no_argument, NULL, 'l' },
@@ -248,6 +252,9 @@ int main(int argc, char **argv)
case TERA_OPTION:
args.exponent = 5;
break;
+ case PETA_OPTION:
+ args.exponent = 6;
+ break;
case 'h':
flags |= FREE_HUMANREADABLE;
break;