diff options
Diffstat (limited to 'scripts/library')
-rw-r--r-- | scripts/library/README | 10 | ||||
-rw-r--r-- | scripts/library/human_to_size.sh | 51 |
2 files changed, 0 insertions, 61 deletions
diff --git a/scripts/library/README b/scripts/library/README deleted file mode 100644 index d20f117a..00000000 --- a/scripts/library/README +++ /dev/null @@ -1,10 +0,0 @@ -This directory contains code snippets that can be reused by multiple -scripts. A brief description of each file follows. - -human_to_size.sh: -A function to convert human readable sizes (such as "5.3 GiB") to raw byte -equivalents. base10 and base2 suffixes are supported, case sensitively. If -successful, the converted byte value is written to stdout and the function -returns 0. If an error occurs, nothing is written and the function returns 1. -Results may be inaccurate when using a broken implementation of awk, such -as mawk or busybox awk. diff --git a/scripts/library/human_to_size.sh b/scripts/library/human_to_size.sh deleted file mode 100644 index 11613207..00000000 --- a/scripts/library/human_to_size.sh +++ /dev/null @@ -1,51 +0,0 @@ -human_to_size() { - awk -v human="$1" ' - function trim(s) { - gsub(/^[[:space:]]+|[[:space:]]+$/, "", s) - return s - } - - function parse_units(units) { - if (!units || units == "B") - return 1 - if (match(units, /^.iB$/)) - return 1024 - if (match(units, /^.B$/)) - return 1000 - if (length(units) == 1) - return 1024 - - # parse failure: invalid base - return -1 - } - - function parse_scale(s) { - return index("BKMGTPE", s) - 1 - } - - function isnumeric(string) { - return match(string, /^[-+]?[[:digit:]]*(\.[[:digit:]]*)?/) - } - - BEGIN { - # peel off the leading number as the size, fail on invalid number - human = trim(human) - if (isnumeric(human)) - size = substr(human, RSTART, RLENGTH) - else - exit 1 - - # the trimmed remainder is assumed to be the units - units = trim(substr(human, RLENGTH + 1)) - - base = parse_units(units) - if (base < 0) - exit 1 - - scale = parse_scale(substr(units, 1, 1)) - if (scale < 0) - exit 1 - - printf "%d\n", size * base^scale + (size + 0 > 0 ? 0.5 : -0.5) - }' -} |