From: Stefan Schantl Date: Sun, 29 Mar 2020 16:30:54 +0000 (+0200) Subject: general-functions.pl: Add formatBytes() function. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f6f372a61788dac0e5258daa712e0bf799d7f007;p=people%2Fstevee%2Fipfire-2.x.git general-functions.pl: Add formatBytes() function. 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 --- diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index 41a0eac2d4..692e072c2a 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -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;