]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
general-functions.pl: Add formatBytes() function.
authorStefan Schantl <stefan.schantl@ipfire.org>
Mon, 13 Apr 2020 07:45:35 +0000 (09:45 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Fri, 1 May 2020 19:12:40 +0000 (19:12 +0000)
This function can be used to convert an amount of bytes to a
humand-readable format.

For example "3221225472" will become "3MB".

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
config/cfgroot/general-functions.pl

index 41a0eac2d43bd3a007ae79adc68c99f99b0279a5..692e072c2ac9e439ebfbc54fddbc5d07b27e0c60 100644 (file)
@@ -1261,4 +1261,29 @@ sub get_nameservers () {
        return &uniq(@nameservers);
 }
 
+# Function to format a string containing the amount of bytes to
+# something human-readable. 
+sub formatBytes {
+       # Private array which contains the units.
+       my @units = qw(B KB MB GB TB PB);
+
+       my $bytes = shift;
+       my $unit;
+
+       # Loop through the array of units.
+       foreach my $element (@units) {
+               # Break loop if the bytes are less than the next unit.
+               last if $bytes < 1024;
+
+               # Divide bytes amount with 1024.
+               $bytes /= 1024;
+
+               # Assign current processed element to unit.
+               $unit = $element;
+       }
+
+       # Return the divided and rounded bytes count and the unit.
+       return sprintf("%.2f %s", $bytes, $unit);
+}
+
 1;