xref: /dflybsd-src/usr.bin/gzip/zmore (revision 30fbdceb9c1b554aec56306161c6fca0102edfa7)
162529567SJoerg Sonnenberger#!/bin/sh -
262529567SJoerg Sonnenberger#
362529567SJoerg Sonnenberger# $NetBSD: zmore,v 1.2 2003/12/28 12:43:43 wiz Exp $
462529567SJoerg Sonnenberger# $OpenBSD: zmore,v 1.4 2003/07/29 07:42:45 otto Exp $
562529567SJoerg Sonnenberger#
662529567SJoerg Sonnenberger# Copyright (c) 2003 Todd C. Miller <Todd.Miller@courtesan.com>
762529567SJoerg Sonnenberger#
862529567SJoerg Sonnenberger# Permission to use, copy, modify, and distribute this software for any
962529567SJoerg Sonnenberger# purpose with or without fee is hereby granted, provided that the above
1062529567SJoerg Sonnenberger# copyright notice and this permission notice appear in all copies.
1162529567SJoerg Sonnenberger#
1262529567SJoerg Sonnenberger# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1362529567SJoerg Sonnenberger# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1462529567SJoerg Sonnenberger# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1562529567SJoerg Sonnenberger# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1662529567SJoerg Sonnenberger# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1762529567SJoerg Sonnenberger# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1862529567SJoerg Sonnenberger# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1962529567SJoerg Sonnenberger#
2062529567SJoerg Sonnenberger# Sponsored in part by the Defense Advanced Research Projects
2162529567SJoerg Sonnenberger# Agency (DARPA) and Air Force Research Laboratory, Air Force
2262529567SJoerg Sonnenberger# Materiel Command, USAF, under agreement number F39502-99-1-0512.
2362529567SJoerg Sonnenberger#
2462529567SJoerg Sonnenberger
2562529567SJoerg Sonnenberger# Pull out any command line flags so we can pass them to more/less
2662529567SJoerg Sonnenbergerflags=
2762529567SJoerg Sonnenbergerwhile test $# -ne 0; do
2862529567SJoerg Sonnenberger	case "$1" in
2962529567SJoerg Sonnenberger		--)
3062529567SJoerg Sonnenberger			shift
3162529567SJoerg Sonnenberger			break
3262529567SJoerg Sonnenberger			;;
3362529567SJoerg Sonnenberger		-*)
3462529567SJoerg Sonnenberger			flags="$flags $1"
3562529567SJoerg Sonnenberger			shift
3662529567SJoerg Sonnenberger			;;
3762529567SJoerg Sonnenberger		*)
3862529567SJoerg Sonnenberger			break
3962529567SJoerg Sonnenberger			;;
4062529567SJoerg Sonnenberger	esac
4162529567SJoerg Sonnenbergerdone
4262529567SJoerg Sonnenberger
43*00e71414SPeter Avalospager=${PAGER-more}
44*00e71414SPeter Avalos
4562529567SJoerg Sonnenberger# No files means read from stdin
4662529567SJoerg Sonnenbergerif [ $# -eq 0 ]; then
47*00e71414SPeter Avalos	gzip -cdfq 2>&1 | $pager $flags
4862529567SJoerg Sonnenberger	exit 0
4962529567SJoerg Sonnenbergerfi
5062529567SJoerg Sonnenberger
5162529567SJoerg Sonnenbergeroterm=`stty -g 2>/dev/null`
5262529567SJoerg Sonnenbergerwhile test $# -ne 0; do
53*00e71414SPeter Avalos	gzip -cdfq "$1" 2>&1 | $pager $flags
5462529567SJoerg Sonnenberger	prev="$1"
5562529567SJoerg Sonnenberger	shift
5662529567SJoerg Sonnenberger	if tty -s && test -n "$oterm" -a $# -gt 0; then
5762529567SJoerg Sonnenberger		#echo -n "--More--(Next file: $1)"
5862529567SJoerg Sonnenberger		echo -n "$prev (END) - Next: $1 "
5962529567SJoerg Sonnenberger		trap "stty $oterm 2>/dev/null" 0 1 2 3 13 15
6062529567SJoerg Sonnenberger		stty cbreak -echo 2>/dev/null
6162529567SJoerg Sonnenberger		REPLY=`dd bs=1 count=1 2>/dev/null`
6262529567SJoerg Sonnenberger		stty $oterm 2>/dev/null
6362529567SJoerg Sonnenberger		trap - 0 1 2 3 13 15
6462529567SJoerg Sonnenberger		echo
6562529567SJoerg Sonnenberger		case "$REPLY" in
6662529567SJoerg Sonnenberger			s)
6762529567SJoerg Sonnenberger				shift
6862529567SJoerg Sonnenberger				;;
6962529567SJoerg Sonnenberger			e|q)
7062529567SJoerg Sonnenberger				break
7162529567SJoerg Sonnenberger				;;
7262529567SJoerg Sonnenberger		esac
7362529567SJoerg Sonnenberger	fi
7462529567SJoerg Sonnenbergerdone
7562529567SJoerg Sonnenbergerexit 0
76