Commit 8c704339 authored by Eli Schwartz's avatar Eli Schwartz Committed by Allan McRae
Browse files

scripts/library: remove human_to_size



pkgdelta was the last user, and it is gone now.

Signed-off-by: Eli Schwartz's avatarEli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae's avatarAllan McRae <allan@archlinux.org>
parent 2dd7725f
......@@ -35,7 +35,6 @@ $(top_srcdir)/test/pacman/tests/TESTS: $(wildcard test/pacman/tests/*.py)
@printf "TESTS += %s\n" $^ | LC_ALL=C sort -u > "$@"
TESTS = test/scripts/parseopts_test.sh \
test/scripts/human_to_size_test.sh \
test/scripts/makepkg-template_test.sh \
test/scripts/pacman-db-upgrade-v9.py \
test/util/vercmptest.sh
......
......@@ -31,13 +31,9 @@ EXTRA_DIST = \
repo-add.sh.in \
wrapper.sh.in \
$(COMPLETION_DIST) \
$(LIBRARY) \
$(LIBMAKEPKG_DIST) \
po/meson.build
LIBRARY = \
library/human_to_size.sh
libmakepkgdir = $(datarootdir)/makepkg
LIBMAKEPKGDIRS = \
......
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.
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)
}'
}
......@@ -9,10 +9,6 @@ scripts = [
'makepkg-template.pl.in',
]
library_files = [
'library/human_to_size.sh',
]
SCRIPT_EDITOR = find_program(configure_file(
input : join_paths(meson.source_root(), 'build-aux/edit-script.sh.in'),
output : 'edit-script.sh',
......@@ -32,7 +28,6 @@ foreach script : scripts
input : m4_edit.process(script),
command : [ SCRIPT_EDITOR, '@INPUT@', '@OUTPUT@', '0755'],
output : script_shortname,
depend_files : library_files,
install : true,
install_dir : get_option('bindir'))
endforeach
......@@ -48,7 +43,6 @@ foreach script : wrapped_scripts
input : m4_edit.process(script),
command : [ SCRIPT_EDITOR, '@INPUT@', '@OUTPUT@', '0755'],
output : script,
depend_files : library_files,
build_by_default : true)
cdata = configuration_data()
......
......@@ -65,4 +65,3 @@ scripts/libmakepkg/util/parseopts.sh.in
scripts/libmakepkg/util/pkgbuild.sh.in
scripts/libmakepkg/util/source.sh.in
scripts/libmakepkg/util/util.sh.in
scripts/library/human_to_size.sh
check_SCRIPTS = \
parseopts_test.sh \
pacman-db-upgrade-v9.py \
makepkg-template_test.sh \
human_to_size_test.sh
makepkg-template_test.sh
noinst_SCRIPTS = $(check_SCRIPTS)
......
#!/bin/bash
source "$(dirname "$0")"/../tap.sh || exit 1
# source the library function
lib=${1:-${PMTEST_SCRIPTLIB_DIR}human_to_size.sh}
if [[ -z $lib || ! -f $lib ]]; then
tap_bail "human_to_size library (%s) could not be located" "${lib}"
exit 1
fi
. "$lib"
if ! type -t human_to_size &>/dev/null; then
tap_bail "human_to_size function not found"
exit 1
fi
tap_parse_hts() {
local input=$1 expected=$2
tap_is_str "$(human_to_size "$input")" "$expected" "$input"
}
tap_plan 15
# tap_parse_hts <input> <expected output>
tap_parse_hts '1MiB' 1048576
tap_parse_hts '10XiB' ''
tap_parse_hts '10 MiB' 10485760
tap_parse_hts '10 XiB' ''
tap_parse_hts '.1 TiB' 109951162778
tap_parse_hts ' -3 KiB ' -3072
tap_parse_hts 'foo3KiB' ''
tap_parse_hts '3KiBfoo' ''
tap_parse_hts '3kib' ''
tap_parse_hts '+1KiB' 1024
tap_parse_hts '+1.0 KiB' 1024
tap_parse_hts '1MB' 1000000
tap_parse_hts '1M' 1048576
tap_parse_hts ' 1 G ' 1073741824
tap_parse_hts '1Q' ''
tests = [
'parseopts_test.sh',
'makepkg-template_test.sh',
'human_to_size_test.sh',
]
foreach tst : tests
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment