OSDN Git Service

Upgrade to mksh 50.
[android-x86/external-mksh.git] / src / dot.mkshrc
index cbd13ed..99cc9a1 100644 (file)
@@ -1,8 +1,8 @@
 # $Id$
-# $MirOS: src/bin/mksh/dot.mkshrc,v 1.84 2013/08/10 13:43:50 tg Exp $
+# $MirOS: src/bin/mksh/dot.mkshrc,v 1.88 2014/01/11 18:09:39 tg Exp $
 #-
 # Copyright (c) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010,
-#              2011, 2012, 2013
+#              2011, 2012, 2013, 2014
 #      Thorsten Glaser <tg@mirbsd.org>
 #
 # Provided that these terms and disclaimer and all copyright notices
@@ -105,14 +105,14 @@ function chpwd {
 }
 chpwd .
 function cd {
-       builtin cd "$@"
+       builtin cd "$@" || return $?
        chpwd "$@"
 }
 function cd_csh {
        local d t=${1/#~/$DIRSTACKBASE}
 
        if ! d=$(builtin cd "$t" 2>&1); then
-               print -u2 "${1}: ${d##*$t - }."
+               print -u2 "${1}: ${d##*cd: $t: }."
                return 1
        fi
        cd "$t"
@@ -333,9 +333,12 @@ function Lb64encode {
        (( u )) || set -U
 }
 
-# mksh NUL counting, never zero
-typeset -Z11 -Uui16 Lnzathash_v
-function Lnzathash_add {
+# Better Avalanche for the Jenkins Hash
+typeset -Z11 -Uui16 Lbafh_v
+function Lbafh_init {
+       Lbafh_v=0
+}
+function Lbafh_add {
        [[ -o utf8-mode ]]; local u=$?
        set +U
        local s
@@ -348,37 +351,20 @@ function Lnzathash_add {
        local -i i=0 n=${#s[*]}
 
        while (( i < n )); do
-               ((# Lnzathash_v = (Lnzathash_v + s[i++] + 1) * 1025 ))
-               ((# Lnzathash_v ^= Lnzathash_v >> 6 ))
+               ((# Lbafh_v = (Lbafh_v + s[i++] + 1) * 1025 ))
+               ((# Lbafh_v ^= Lbafh_v >> 6 ))
        done
 
        (( u )) || set -U
 }
-function Lnzaathash_end {
-       ((# Lnzathash_v *= 1025 ))
-       ((# Lnzathash_v ^= Lnzathash_v >> 6 ))
-       ((# Lnzathash_v += Lnzathash_v << 3 ))
-       ((# Lnzathash_v = (Lnzathash_v ^
-           (Lnzathash_v >> 11)) * 32769 ))
-       print ${Lnzathash_v#16#}
-}
-function Lnzaathash {
-       Lnzathash_v=0
-       Lnzathash_add "$@"
-       Lnzaathash_end
-}
-function Lnzathash {
-       Lnzathash_v=0
-       Lnzathash_add "$@"
-       Lnzathash_end
-}
-function Lnzathash_end {
-       if (( Lnzathash_v )); then
-               Lnzaathash_end
-       else
-               Lnzathash_v=1
-               print ${Lnzathash_v#16#}
-       fi
+function Lbafh_finish {
+       local -Ui t
+
+       ((# t = (((Lbafh_v >> 7) & 0x01010101) * 0x1B) ^ \
+           ((Lbafh_v << 1) & 0xFEFEFEFE) ))
+       ((# Lbafh_v = t ^ (t >>> 8) ^ (Lbafh_v >>> 8) ^ \
+           (Lbafh_v >>> 16) ^ (Lbafh_v >>> 24) ))
+       :
 }
 
 # strip comments (and leading/trailing whitespace if IFS is set) from