diff options
Diffstat (limited to 'bin/ovr')
-rwxr-xr-x | bin/ovr | 37 |
1 files changed, 33 insertions, 4 deletions
@@ -2,14 +2,43 @@ trap '' INT; + +err() +{ + >&2 echo "$(basename "$0"): error: $*"; + exit 1; +} + + +n=1 +while test $# -ge 1; do + case "$1" in + -n | --lines) + if test $# -lt 2; then + err "$1: Missing option argument."; + fi; + n="$2"; + shift; + ;; + -*) + err "$1: Unknown option."; + ;; + *) + err "$1: Unknown argument."; + ;; + esac; + shift; +done; + + +permanent=; + enter() { setterm --linewrap off; tput smcup; } >/dev/tty; leave() { setterm --linewrap on; tput rmcup; } >/dev/tty; trap leave QUIT TERM; -lines=; -n="${1:-1}"; enter; -lines="$(tee /dev/tty | tail -n "$n"; echo x)"; +permanent="$(tee /dev/tty | tail -n "$n"; echo x)"; leave; -printf '%s' "${lines%x}"; +printf '%s' "${permanent%x}"; |