[ 
https://issues.apache.org/jira/browse/MWRAPPER-123?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17813083#comment-17813083
 ] 

ASF GitHub Bot commented on MWRAPPER-123:
-----------------------------------------

rmannibucau commented on code in PR #117:
URL: https://github.com/apache/maven-wrapper/pull/117#discussion_r1473937034


##########
maven-wrapper-distribution/src/resources/only-mvnw:
##########
@@ -72,7 +72,9 @@ set_java_home() {
 hash_string() {
   str="${1:-}" h=0
   while [ -n "$str" ]; do
-    h=$(( ( h * 31 + $(LC_CTYPE=C printf %d "'$str") ) % 4294967296 ))
+    # TODO: convert the input 'str' to an int for hash calculation
+    # printf '%d' will only convert the first character, and breaks on some 
ksh implementations.
+    h=$(( ( h * 31 + 104 ) % 4294967296 ))

Review Comment:
   dont think we can do that due to next line which mutate str so str is not a 
constant in the loop, it shifts the first ascii char one by one so I guess a 
better fix is to use the substitution so do a substring of 1 char to let all 
shell handle the "string to char" (`'`) conversion working





> 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)

Reply via email to