diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-09-11 18:09:44 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-09-11 18:09:44 -0700 |
commit | 4463e4a87ec2835e1454bbe4f99e5b054aa12855 (patch) | |
tree | e0d2946754fb86bb61ecec8d03b89ee97c30affd /bin/bashrc-functions.sh | |
parent | 80737f32ff8bcebe327821243594d17bd4f79fdd (diff) | |
download | portage-4463e4a87ec2835e1454bbe4f99e5b054aa12855.tar.gz portage-4463e4a87ec2835e1454bbe4f99e5b054aa12855.tar.bz2 portage-4463e4a87ec2835e1454bbe4f99e5b054aa12855.zip |
Move KV funcs to bashrc-functions.sh.
Diffstat (limited to 'bin/bashrc-functions.sh')
-rw-r--r-- | bin/bashrc-functions.sh | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/bin/bashrc-functions.sh b/bin/bashrc-functions.sh index 91ff6d738..4da558581 100644 --- a/bin/bashrc-functions.sh +++ b/bin/bashrc-functions.sh @@ -87,3 +87,54 @@ unset_unless_changed() { fi done } + +KV_major() { + [[ -z $1 ]] && return 1 + + local KV=$@ + echo "${KV%%.*}" +} + +KV_minor() { + [[ -z $1 ]] && return 1 + + local KV=$@ + KV=${KV#*.} + echo "${KV%%.*}" +} + +KV_micro() { + [[ -z $1 ]] && return 1 + + local KV=$@ + KV=${KV#*.*.} + echo "${KV%%[^[:digit:]]*}" +} + +KV_to_int() { + [[ -z $1 ]] && return 1 + + local KV_MAJOR=$(KV_major "$1") + local KV_MINOR=$(KV_minor "$1") + local KV_MICRO=$(KV_micro "$1") + local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO )) + + # We make version 2.2.0 the minimum version we will handle as + # a sanity check ... if its less, we fail ... + if [[ ${KV_int} -ge 131584 ]] ; then + echo "${KV_int}" + return 0 + fi + + return 1 +} + +_RC_GET_KV_CACHE="" +get_KV() { + [[ -z ${_RC_GET_KV_CACHE} ]] \ + && _RC_GET_KV_CACHE=$(uname -r) + + echo $(KV_to_int "${_RC_GET_KV_CACHE}") + + return $? +} |