123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- #!/bin/sh
- . /usr/bin/gettext.sh
- alias sed="busybox sed"
- # Internal
- lgettext() { gettext -d 'x' "$@"; }
- translate_query() {
- case $1 in
- y) lgettext "y";;
- Y) lgettext "Y";;
- n) lgettext "n";;
- N) lgettext "N";;
- # Support other cases but keep them untranslated.
- *) echo "$1" ;;
- esac
- }
- okmsg="$(lgettext 'Done')"
- ermsg="$(lgettext 'Failed')"
- : ${okcolor=32}
- : ${ercolor=31}
- : ${decolor=36}
- # Parse cmdline options and store values in a variable.
- for opt in "$@"; do
- opt_name="${opt%%=*}"; opt_name="$(echo -n "${opt_name#--}" | tr -c 'a-zA-Z0-9' '_')"
- case "$opt" in
- --[0-9]*=*) export _$opt_name="${opt#*=}" ;;
- --[0-9]*) export _$opt_name=yes ;;
- --*=*) export $opt_name="${opt#*=}" ;;
- --*) export $opt_name=yes ;;
- esac
- done
- [ "$HTTP_REFERER" ] && output='html'
- # i18n functions
- _() { local T="$1"; shift; printf "$(eval_gettext "$T")" "$@"; echo; }
- _n() { local T="$1"; shift; printf "$(eval_gettext "$T")" "$@"; }
- _p() { local S="$1" P="$2" N="$3"; shift 3; printf "$(ngettext "$S" "$P" "$N")" "$@"; }
- # Get terminal columns
- get_cols() { stty size 2>/dev/null | awk -vc=$cols 'END{print c?c:($2 && $2<80)?$2:80}'; }
- # Last command status
- status() {
- local ret_code=$?
- [ -n "$quiet" -a "$ret_code" -eq 0 ] && return
- [ -n "$quiet" ] && action "$saved_action" no-quiet
- case $ret_code in
- 0) local msg="$okmsg" color="$okcolor";;
- *) local msg="$ermsg" color="$ercolor";;
- esac
- case $output in
- raw|gtk) echo " $msg";;
- html) echo " <span class=\"float-right color$color\">$msg</span>";;
- *) echo -e "[ \\033[1;${color}m$msg\\033[0;39m ]";;
- esac
- }
- # Line separator
- separator() {
- [ -n "$quiet" ] && return
- case $output in
- gtk) echo '--------';;
- html) echo -n '<hr/>';;
- *) printf "%$(get_cols)s\n" | tr ' ' "${1:-=}";;
- esac
- }
- # New line
- newline() {
- [ -z "$quiet" ] && echo
- }
- # Display a bold message
- boldify() {
- [ -n "$quiet" ] && return
- case $output in
- raw) echo "$@" ;;
- gtk) echo "<b>$@</b>" ;;
- html) echo "<strong>$@</strong>" ;;
- *) echo -e "\\033[1m$@\\033[0m" ;;
- esac
- }
- # renkli mesaj
- ryaz() {
- [ -n "$quiet" ] && return
- : ${color=$1}
- shift
- case $output in
- raw|gtk) echo "$@";;
- html) echo -n "<span class=\"color$color\">$@</span>";;
- *) case $color in
- 0*) echo -e "\\033[${color:-38}m$@\\033[39m";;
- *) echo -e "\\033[1;${color:-38}m$@\\033[0;39m";;
- esac;;
- esac
- unset color
- }
- # Indent text
- indent() {
- [ -n "$quiet" ] && return
- local in="$1"
- shift
- echo -e "\033["$in"G $@";
- }
- # Extended MeSsaGe output
- emsg() {
- [ -n "$quiet" ] && return
- local sep="\n$(separator)\n"
- case $output in
- raw)
- echo "$@" | sed -e 's|<b>||g; s|</b>||g; s|<c [0-9]*>||g; \
- s|</c>||g; s|<->|'$sep'|g; s|<n>|\n|g; s|<i [0-9]*>| |g' ;;
- gtk)
- echo "$@" | sed -e 's|<c [0-9]*>||g; s|</c>||g; s|<->|'$sep'|g; \
- s|<n>|\n|g; s|<i [0-9]*>| |g' ;;
- html)
- echo "$@" | sed -e 's|<b>|<strong>|g; s|</b>|</strong>|g; \
- s|<c \([0-9]*\)>|<span class="color\1">|g; s|</c>|</span>|g; \
- s|<n>|<br/>|g; s|<->|<hr/>|g; s|<i [0-9]*>| |g' ;;
- *)
- echo -en "$(echo "$@" | sed -e 's|<b>|\\033[1m|g; s|</b>|\\033[0m|g;
- s|<c 0\([0-9]*\)>|\\033[\1m|g; s|<c \([1-9][0-9]*\)>|\\033[1;\1m|g;
- s|</c>|\\033[0;39m|g; s|<n>|\n|g;
- s|<->|'$sep'|g; s|<i \([0-9]*\)>|\\033[\1G|g')"
- [ "$1" != "-n" ] && echo
- ;;
- esac
- }
- # Check if user is logged as root
- check_root() {
- if [ $(id -u) -ne 0 ]; then
- lgettext "You must be root to execute:"; echo " $(basename $0) $@"
- exit 1
- fi
- }
- # Display debug info when --debug is used.
- debug() {
- [ -n "$debug" ] && echo "$(colorize $decolor 'DEBUG:') $1"
- }
- # Confirmation
- confirm() {
- if [ -n "$yes" ]; then
- true
- else
- if [ -n "$1" ]; then
- echo -n "$1 "
- else
- echo -n " ($(translate_query y)/$(translate_query N)) ? "
- fi
- read answer
- [ "$answer" == "$(translate_query y)" ]
- fi
- }
- # Log islemleri
- log() {
- echo "$(date '+%F %R') : $@" >> ${faaliyet:-/var/log/islem.log}
- }
- # Print two-column list of options with descriptions
- optlist() {
- [ -n "$quiet" ] && return
- local in="$(echo "$1" | sed 's| *| |g')" w=$(get_cols) col1=1 line
- IFS=$'\n'
- for line in $in; do
- col=$(echo -n "$line" | cut -f1 | wc -m)
- [ $col -gt $col1 ] && col1=$col
- done
- echo "$in" | sed 's|\t|&\n|' | fold -sw$((w - col1 - 4)) | \
- sed "/\t/!{s|^.*$|[$((col1 + 4))G&|g}" | sed "/\t$/{N;s|.*| &|;s|\t\n||}"
- }
- # Wrap words in long terminal message
- longline() {
- [ -n "$quiet" ] && return
- local w=$(get_cols)
- echo -e "$@" | fold -sw$w
- }
- # Print localized title
- title() {
- [ -n "$quiet" ] && return
- case $output in
- html) echo "<section><header>$(_ "$@")</header><pre class=\"scroll\">";;
- *) newline; boldify "$(_ "$@")"; separator;;
- esac
- }
- # Print footer
- footer() {
- [ -n "$quiet" ] && return
- case $output in
- html) echo "</pre><footer>$1</footer></section>";;
- *) separator; echo "$1"; [ -n "$1" ] && newline;;
- esac
- }
- # Print current action
- saved_action=''
- action() {
- saved_action="$1"
- [ -n "$quiet" -a -z "$2" ] && return
- local w c scol msg chars
- w=$(_ 'w'); w=${w/w/10}
- c=$(get_cols)
- scol=$(( $c - $w ))
- msg="$(_n "$@" | fold -sw$scol)"
- chars=$(echo -n "$msg" | tail -n1 | wc -m)
- msg="$(printf '%s%'$(( $scol - $chars ))'s' "$msg" '')"
- case $output in
- raw|gtk|html) echo -n "$msg";;
- *) echo -ne "\033[0;33m$msg\033[0m";;
- esac
- }
- # Print long line as list item
- itemize() {
- [ -n "$quiet" ] && return
- case $output in
- gtk) echo "$@";;
- *)
- local inp="$@" w=$(get_cols) first offset
- first="$(echo -e "$inp" | fold -sw$w | head -n1)"
- echo "$first"
- cols1="$(echo "${first:1}" | wc -c)"
- offset=$(echo "$first" | sed -n 's|^\([^:\*-]*[:\*-]\).*$|\1|p' | wc -m)
- echo "${inp:$cols1}" | fold -sw$((w - offset)) | awk \
- '($0){printf "%'$offset's%s\n","",$0}'
- ;;
- esac
- }
|