OSDN Git Service

Merge "cat builtin: permit interrupt during writing; more: avoid SIGPIPE"
[android-x86/external-mksh.git] / mkshrc
1 # Copyright (c) 2010, 2012, 2013, 2014
2 #       Thorsten Glaser <tg@mirbsd.org>
3 # This file is provided under the same terms as mksh.
4 #-
5 # Minimal /system/etc/mkshrc for Android
6 #
7 # Support: https://launchpad.net/mksh
8
9 : ${TERM:=vt100} ${HOME:=/data} ${MKSH:=/system/bin/sh} ${HOSTNAME:=$(getprop ro.product.device)}
10 : ${SHELL:=$MKSH} ${USER:=$(typeset x=$(id); x=${x#*\(}; print -r -- ${x%%\)*})} ${HOSTNAME:=android}
11 if (( USER_ID )); then PS1='$'; else PS1='#'; fi
12 PS4='[$EPOCHREALTIME] '; PS1='${|
13         local e=$?
14
15         (( e )) && REPLY+="$e|"
16
17         return $e
18 }$USER@$HOSTNAME:${PWD:-?} '"$PS1 "
19 export HOME HOSTNAME MKSH SHELL TERM USER
20 alias l='ls'
21 alias la='l -a'
22 alias ll='l -l'
23 alias lo='l -a -l'
24
25 function hd {
26         local -Uui16 -Z11 pos=0
27         local -Uui16 -Z5 hv=2147483647
28         local dasc line i
29
30         cat "$@" | { set +U; if read -arN -1 line; then
31                 typeset -i1 line
32                 i=0
33                 while (( i < ${#line[*]} )); do
34                         hv=${line[i++]}
35                         if (( (pos & 15) == 0 )); then
36                                 (( pos )) && print -r -- "$dasc|"
37                                 print -n "${pos#16#}  "
38                                 dasc=' |'
39                         fi
40                         print -n "${hv#16#} "
41                         if (( (hv < 32) || (hv > 126) )); then
42                                 dasc+=.
43                         else
44                                 dasc+=${line[i-1]#1#}
45                         fi
46                         (( (pos++ & 15) == 7 )) && print -n -- '- '
47                 done
48                 while (( pos & 15 )); do
49                         print -n '   '
50                         (( (pos++ & 15) == 7 )) && print -n -- '- '
51                 done
52                 (( hv == 2147483647 )) || print -r -- "$dasc|"
53         fi; }
54 }
55
56 function more {
57         (
58                 set +m
59                 cat "$@" |&
60                 trap "rv=\$?; kill $! >/dev/null 2>&1; exit \$rv" EXIT
61                 while IFS= read -pr line; do
62                         llen=${%line}
63                         (( llen == -1 )) && llen=${#line}
64                         (( llen = llen ? (llen + COLUMNS - 1) / COLUMNS : 1 ))
65                         if (( (curlin += llen) >= LINES )); then
66                                 print -n -- '\033[7m--more--\033[0m'
67                                 read -u1 || exit $?
68                                 [[ $REPLY = [Qq]* ]] && exit 0
69                                 curlin=$llen
70                         fi
71                         print -r -- "$line"
72                 done
73         )
74 }
75
76 function setenv {
77         eval export "\"$1\""'="$2"'
78 }
79
80 for p in ~/.bin; do
81         [[ -d $p/. ]] || continue
82         [[ :$PATH: = *:$p:* ]] || PATH=$p:$PATH
83 done
84
85 unset p
86
87 : place customisations above this line