[
https://issues.apache.org/jira/browse/MWRAPPER-123?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17813151#comment-17813151
]
ASF GitHub Bot commented on MWRAPPER-123:
-----------------------------------------
bmarwell commented on code in PR #117:
URL: https://github.com/apache/maven-wrapper/pull/117#discussion_r1474180787
##########
maven-wrapper-distribution/src/resources/only-mvnw:
##########
@@ -70,11 +70,19 @@ set_java_home() {
# hash string like Java String::hashCode
hash_string() {
- str="${1:-}" h=0
- while [ -n "$str" ]; do
- h=$(( ( h * 31 + $(LC_CTYPE=C printf %d "'$str") ) % 4294967296 ))
- str="${str#?}"
+ str="${1}"
+ length=${#str}
+ h=0
+ # strings start with index 1
+ idx=1
+
+ # lt: skip line break at end
+ while [ $idx -lt "$length" ]; do
+ char=$( printf "%s" "$str" | cut -c $idx )
Review Comment:
According to Ubuntu, they still use Dash as default symlink target of
`/bin/sh` which does not know about variable substitution:
https://wiki.ubuntu.com/DashAsBinSh
They recommend using awk (but cut is enough here)
> only-mvnw fails on AIX' ksh implementation
> ------------------------------------------
>
> Key: MWRAPPER-123
> URL: https://issues.apache.org/jira/browse/MWRAPPER-123
> Project: Maven Wrapper
> Issue Type: Bug
> Affects Versions: 3.1.1
> Reporter: Benjamin Marwell
> Priority: Urgent
>
> the script {{only-mvnw}} contains this snippet in a line to calculate a hash:
> {code:bash}
> printf %d "'$str"
> {code}
> The idea is to convert {{$str}} to a number, where {{'}} has a special
> meaning for {{%d}} conversion. However, there are two problems with it:
> 1. It does not work on ksh on AIX (because this conversion is not posix
> compliant), so the script will not run on AIX.
> 2. It will only use the first letter, which is alway {{h}} (from the string
> always being a valid URI).
> For now, replace it with the ASCII constant 104 (ASCII value of h). The
> intended behaviour can be restored in another PR if feasible.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)