[ https://issues.apache.org/jira/browse/MWRAPPER-123?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17813146#comment-17813146 ]
ASF GitHub Bot commented on MWRAPPER-123: ----------------------------------------- bmarwell commented on code in PR #117: URL: https://github.com/apache/maven-wrapper/pull/117#discussion_r1474170110 ########## 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: The other advantage is that string index starts at 0 😄 > 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)