commit:     f62b22d9ca2dc996de193b1e998af34f276b316b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep  6 13:40:02 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Sep  6 13:40:02 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f62b22d9

eapi7-ver.eclass: Support using 0th version sep

 eclass/eapi7-ver.eclass   | 15 +++++++++++----
 eclass/tests/eapi7-ver.sh |  3 ++-
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/eclass/eapi7-ver.eclass b/eclass/eapi7-ver.eclass
index e2458deeb7b..70a1b3e9847 100644
--- a/eclass/eapi7-ver.eclass
+++ b/eclass/eapi7-ver.eclass
@@ -31,7 +31,7 @@ _version_parse_range() {
        [[ $1 =~ ^([0-9]+)(-([0-9]*))?$ ]] || die
        start=${BASH_REMATCH[1]}
        [[ ${BASH_REMATCH[2]} ]] && end=${BASH_REMATCH[3]} || end=${start}
-       [[ ${start} -gt 0 ]] && [[ -z ${end} || ${start} -le ${end} ]] || die
+       [[ ${start} -ge 0 ]] && [[ -z ${end} || ${start} -le ${end} ]] || die
 }
 
 # RETURNS:
@@ -51,17 +51,24 @@ _version_split() {
 }
 
 version_cut() {
-       local start end
+       local start end istart iend
        local -a comp
 
        _version_parse_range "$1"
        _version_split "${2-${PV}}"
 
        local IFS=
+       if [[ ${start} -gt 0 ]]; then
+               istart=$(( (start-1)*2 + 1 ))
+               iend=$(( (end-start)*2 + 1 ))
+       else
+               istart=0
+               iend=$(( (end-start)*2 ))
+       fi
        if [[ ${end} ]]; then
-               echo "${comp[*]:(start-1)*2+1:(end-start)*2+1}"
+               echo "${comp[*]:istart:iend}"
        else
-               echo "${comp[*]:(start-1)*2+1}"
+               echo "${comp[*]:istart}"
        fi
 }
 

diff --git a/eclass/tests/eapi7-ver.sh b/eclass/tests/eapi7-ver.sh
index 0f3a1f37e86..2bac732018b 100755
--- a/eclass/tests/eapi7-ver.sh
+++ b/eclass/tests/eapi7-ver.sh
@@ -30,13 +30,14 @@ teq 1.2.3 version_cut 1- 1.2.3
 teq 3b version_cut 3-4 1.2.3b_alpha4
 teq alpha version_cut 5 1.2.3b_alpha4
 teq 1.2 version_cut 1-2 .1.2.3
-#teq .1.2 version_cut 0-2 .1.2.3
+teq .1.2 version_cut 0-2 .1.2.3
 teq 2.3 version_cut 2-3 1.2.3.
 teq 2.3. version_cut 2- 1.2.3.
 
 teq 1.23-b_alpha4 version_rs 3 - 2 "" 1.2.3b_alpha4
 teq a1b_2-c-3-d4e5 version_rs 3-5 _ 4-6 - a1b2c3d4e5
 teq .1-2.3 version_rs 1 - .1.2.3
+teq -1.2.3 version_rs 0 - .1.2.3
 
 txf version_cut foo 1.2.3
 #txf version_rs 5-3 _ a1b2c3d4e5

Reply via email to