make EBCDIC-safe

This commit is contained in:
tg 2017-08-08 20:40:25 +00:00
parent 252c4b181b
commit 7f7fb75205

View File

@ -1,5 +1,5 @@
# $Id$ # $Id$
# $MirOS: src/bin/mksh/dot.mkshrc,v 1.116 2017/08/08 20:38:08 tg Exp $ # $MirOS: src/bin/mksh/dot.mkshrc,v 1.117 2017/08/08 20:40:25 tg Exp $
#- #-
# Copyright (c) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, # Copyright (c) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012, 2013, 2014, 2015, 2016, 2017 # 2011, 2012, 2013, 2014, 2015, 2016, 2017
@ -106,7 +106,7 @@ fi
function hd_mksh { function hd_mksh {
\\builtin typeset -Uui16 -Z11 pos=0 \\builtin typeset -Uui16 -Z11 pos=0
\\builtin typeset -Uui16 -Z5 hv=2147483647 \\builtin typeset -Uui16 -Z5 hv=2147483647
\\builtin typeset dasc line i \\builtin typeset dasc dn line i
\\builtin set +U \\builtin set +U
\\builtin cat "$@" | { \\builtin cat "$@" | {
@ -114,7 +114,8 @@ function hd_mksh {
\\builtin typeset -i1 'line[*]' \\builtin typeset -i1 'line[*]'
i=0 i=0
while (( i < ${#line[*]} )); do while (( i < ${#line[*]} )); do
hv=${line[i++]} dn=
(( (hv = line[i++]) != 0 )) && dn=${line[i-1]#1#}
if (( (pos & 15) == 0 )); then if (( (pos & 15) == 0 )); then
(( pos )) && \ (( pos )) && \
\\builtin print -r -- "$dasc|" \\builtin print -r -- "$dasc|"
@ -122,11 +123,10 @@ function hd_mksh {
dasc=' |' dasc=' |'
fi fi
\\builtin print -nr "${hv#16#} " \\builtin print -nr "${hv#16#} "
#XXX EBCDIC, but we need [[:print:]] to fix this if [[ $dn = [[:print:]] ]]; then
if (( (hv < 32) || (hv > 126) )); then dasc+=$dn
dasc+=.
else else
dasc+=${line[i-1]#1#} dasc+=.
fi fi
(( (pos++ & 15) == 7 )) && \ (( (pos++ & 15) == 7 )) && \
\\builtin print -nr -- '- ' \\builtin print -nr -- '- '