summaryrefslogtreecommitdiffstats
path: root/bin/ovr
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ovr')
-rwxr-xr-xbin/ovr37
1 files changed, 33 insertions, 4 deletions
diff --git a/bin/ovr b/bin/ovr
index f5c4feb..349bca3 100755
--- a/bin/ovr
+++ b/bin/ovr
@@ -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}";