summaryrefslogtreecommitdiffstats
path: root/bin/bashrc-functions.sh
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-09-11 18:09:44 -0700
committerZac Medico <zmedico@gentoo.org>2011-09-11 18:09:44 -0700
commit4463e4a87ec2835e1454bbe4f99e5b054aa12855 (patch)
treee0d2946754fb86bb61ecec8d03b89ee97c30affd /bin/bashrc-functions.sh
parent80737f32ff8bcebe327821243594d17bd4f79fdd (diff)
downloadportage-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.sh51
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 $?
+}