newest goodies from dot.mkshrc
authorThorsten Glaser <tg@mirbsd.org>
Sat, 11 Jan 2014 20:44:31 +0000 (20:44 +0000)
committerThorsten Glaser <tg@mirbsd.org>
Sat, 11 Jan 2014 20:44:31 +0000 (20:44 +0000)
bash-ksh/profile-funcs
mksh/hash-bafh [new file with mode: 0644]
mksh/hd [new file with mode: 0644]
mksh/pushd-popd-dirs

index 9325531..bf72443 100644 (file)
@@ -28,3 +28,5 @@ pts() {
                ${BROWSER:-lynx} "http://packages.debian.org/sid/$p"
        fi
 }
+
+alias doch='sudo mksh -c "$(fc -ln -1)"'
diff --git a/mksh/hash-bafh b/mksh/hash-bafh
new file mode 100644 (file)
index 0000000..97af72a
--- /dev/null
@@ -0,0 +1,60 @@
+# $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, 2014
+#      Thorsten Glaser <tg@mirbsd.org>
+#
+# Provided that these terms and disclaimer and all copyright notices
+# are retained or reproduced in an accompanying document, permission
+# is granted to deal in this work without restriction, including un-
+# limited rights to use, publicly perform, distribute, sell, modify,
+# merge, give away, or sublicence.
+#
+# This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
+# the utmost extent permitted by applicable law, neither express nor
+# implied; without malicious intent or gross negligence. In no event
+# may a licensor, author or contributor be held liable for indirect,
+# direct, other damage, loss, or other issues arising in any way out
+# of dealing in the work, even if advised of the possibility of such
+# damage or existence of a defect, except proven that it results out
+# of said person's immediate fault when using the work as intended.
+
+# 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
+       if (( $# )); then
+               read -raN-1 s <<<"$*"
+               unset s[${#s[*]}-1]
+       else
+               read -raN-1 s
+       fi
+       local -i i=0 n=${#s[*]}
+
+       while (( i < n )); do
+               ((# Lbafh_v = (Lbafh_v + s[i++] + 1) * 1025 ))
+               ((# Lbafh_v ^= Lbafh_v >> 6 ))
+       done
+
+       (( u )) || set -U
+}
+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) ))
+       :
+}
+function Lbafh {
+       Lbafh_init
+       Lbafh_add "$@"
+       Lbafh_finish
+       print ${Lbafh_v#16#}
+}
diff --git a/mksh/hd b/mksh/hd
new file mode 100644 (file)
index 0000000..3bf4e01
--- /dev/null
+++ b/mksh/hd
@@ -0,0 +1,51 @@
+# $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, 2014
+#      Thorsten Glaser <tg@mirbsd.org>
+#
+# Provided that these terms and disclaimer and all copyright notices
+# are retained or reproduced in an accompanying document, permission
+# is granted to deal in this work without restriction, including un-
+# limited rights to use, publicly perform, distribute, sell, modify,
+# merge, give away, or sublicence.
+#
+# This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
+# the utmost extent permitted by applicable law, neither express nor
+# implied; without malicious intent or gross negligence. In no event
+# may a licensor, author or contributor be held liable for indirect,
+# direct, other damage, loss, or other issues arising in any way out
+# of dealing in the work, even if advised of the possibility of such
+# damage or existence of a defect, except proven that it results out
+# of said person's immediate fault when using the work as intended.
+
+function hd {
+       local -Uui16 -Z11 pos=0
+       local -Uui16 -Z5 hv=2147483647
+       local dasc line i
+
+       cat "$@" | { set +U; if read -arN -1 line; then
+               typeset -i1 line
+               i=0
+               while (( i < ${#line[*]} )); do
+                       hv=${line[i++]}
+                       if (( (pos & 15) == 0 )); then
+                               (( pos )) && print -r -- "$dasc|"
+                               print -n "${pos#16#}  "
+                               dasc=' |'
+                       fi
+                       print -n "${hv#16#} "
+                       if (( (hv < 32) || (hv > 126) )); then
+                               dasc+=.
+                       else
+                               dasc+=${line[i-1]#1#}
+                       fi
+                       (( (pos++ & 15) == 7 )) && print -n -- '- '
+               done
+               while (( pos & 15 )); do
+                       print -n '   '
+                       (( (pos++ & 15) == 7 )) && print -n -- '- '
+               done
+               (( hv == 2147483647 )) || print -r -- "$dasc|"
+       fi; }
+}
index 062c37e..6dbe6b7 100644 (file)
@@ -1,6 +1,7 @@
-# $MirOS: src/bin/mksh/dot.mkshrc,v 1.68 2011/11/25 23:58:04 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
+# Copyright (c) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010,
+#              2011, 2012, 2013, 2014
 #      Thorsten Glaser <tg@mirbsd.org>
 #
 # Provided that these terms and disclaimer and all copyright notices
 
 # Berkeley C shell compatible dirs, popd, and pushd functions
 # Z shell compatible chpwd() hook, used to update DIRSTACK[0]
-DIRSTACKBASE=$(realpath ~/. 2>&- || print -nr -- "$HOME")
+DIRSTACKBASE=$(realpath ~/. 2>/dev/null || print -nr -- "${HOME:-/}")
 set -A DIRSTACK
 function chpwd {
-       DIRSTACK[0]=$(realpath . 2>&- || print -r -- "$PWD")
+       DIRSTACK[0]=$(realpath . 2>/dev/null || print -r -- "$PWD")
        [[ $DIRSTACKBASE = ?(*/) ]] || \
            DIRSTACK[0]=${DIRSTACK[0]/#$DIRSTACKBASE/~}
        :
 }
 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"
@@ -92,7 +93,7 @@ function popd {
 
        while getopts ":0123456789lvn" d; do
                case $d {
-               (l|v|n) fa="$fa -$d" ;;
+               (l|v|n) fa+=" -$d" ;;
                (+*)    n=2
                        break ;;
                (*)     print -u2 'Usage: popd [-lvn] [+<n>].'
@@ -128,7 +129,7 @@ function pushd {
 
        while getopts ":0123456789lvn" d; do
                case $d {
-               (l|v|n) fa="$fa -$d" ;;
+               (l|v|n) fa+=" -$d" ;;
                (+*)    n=2
                        break ;;
                (*)     print -u2 'Usage: pushd [-lvn] [<dir>|+<n>].'