xref: /freebsd/usr.bin/gzip/zmore (revision 060ea80ecb4587f4da9b95090fc8e5038ff6158e)
19a9ea25fSXin LI#!/bin/sh -
29a9ea25fSXin LI#
3*060ea80eSXin LI# $NetBSD: zmore,v 1.5 2013/12/06 13:33:15 pettai Exp $
4*060ea80eSXin LI#
5*060ea80eSXin LI# $OpenBSD: zmore,v 1.6 2008/08/20 09:22:02 mpf Exp $
69a9ea25fSXin LI#
79a9ea25fSXin LI#-
89a9ea25fSXin LI# Copyright (c) 2003 Todd C. Miller <Todd.Miller@courtesan.com>
99a9ea25fSXin LI#
109a9ea25fSXin LI# Permission to use, copy, modify, and distribute this software for any
119a9ea25fSXin LI# purpose with or without fee is hereby granted, provided that the above
129a9ea25fSXin LI# copyright notice and this permission notice appear in all copies.
139a9ea25fSXin LI#
149a9ea25fSXin LI# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
159a9ea25fSXin LI# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
169a9ea25fSXin LI# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
179a9ea25fSXin LI# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
189a9ea25fSXin LI# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
199a9ea25fSXin LI# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
209a9ea25fSXin LI# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
219a9ea25fSXin LI#
229a9ea25fSXin LI# Sponsored in part by the Defense Advanced Research Projects
239a9ea25fSXin LI# Agency (DARPA) and Air Force Research Laboratory, Air Force
249a9ea25fSXin LI# Materiel Command, USAF, under agreement number F39502-99-1-0512.
259a9ea25fSXin LI#
269a9ea25fSXin LI# $FreeBSD$
279a9ea25fSXin LI
289a9ea25fSXin LI# Pull out any command line flags so we can pass them to more/less
299a9ea25fSXin LIflags=
309a9ea25fSXin LIwhile test $# -ne 0; do
319a9ea25fSXin LI	case "$1" in
329a9ea25fSXin LI		--)
339a9ea25fSXin LI			shift
349a9ea25fSXin LI			break
359a9ea25fSXin LI			;;
369a9ea25fSXin LI		-*)
379a9ea25fSXin LI			flags="$flags $1"
389a9ea25fSXin LI			shift
399a9ea25fSXin LI			;;
409a9ea25fSXin LI		*)
419a9ea25fSXin LI			break
429a9ea25fSXin LI			;;
439a9ea25fSXin LI	esac
449a9ea25fSXin LIdone
459a9ea25fSXin LI
46*060ea80eSXin LIif [ `basename $0` = "zless" ] ; then
47*060ea80eSXin LI	pager=${PAGER-less}
48*060ea80eSXin LIelse
49*060ea80eSXin LI	pager=${PAGER-more}
50*060ea80eSXin LIfi
51*060ea80eSXin LI
529a9ea25fSXin LI# No files means read from stdin
539a9ea25fSXin LIif [ $# -eq 0 ]; then
54*060ea80eSXin LI	gzip -cdfq 2>&1 | $pager $flags
559a9ea25fSXin LI	exit 0
569a9ea25fSXin LIfi
579a9ea25fSXin LI
589a9ea25fSXin LIoterm=`stty -g 2>/dev/null`
599a9ea25fSXin LIwhile test $# -ne 0; do
60*060ea80eSXin LI	gzip -cdfq "$1" 2>&1 | $pager $flags
619a9ea25fSXin LI	prev="$1"
629a9ea25fSXin LI	shift
639a9ea25fSXin LI	if tty -s && test -n "$oterm" -a $# -gt 0; then
649a9ea25fSXin LI		#echo -n "--More--(Next file: $1)"
659a9ea25fSXin LI		echo -n "$prev (END) - Next: $1 "
669a9ea25fSXin LI		trap "stty $oterm 2>/dev/null" 0 1 2 3 13 15
679a9ea25fSXin LI		stty cbreak -echo 2>/dev/null
689a9ea25fSXin LI		REPLY=`dd bs=1 count=1 2>/dev/null`
699a9ea25fSXin LI		stty $oterm 2>/dev/null
709a9ea25fSXin LI		trap - 0 1 2 3 13 15
719a9ea25fSXin LI		echo
729a9ea25fSXin LI		case "$REPLY" in
739a9ea25fSXin LI			s)
749a9ea25fSXin LI				shift
759a9ea25fSXin LI				;;
769a9ea25fSXin LI			e|q)
779a9ea25fSXin LI				break
789a9ea25fSXin LI				;;
799a9ea25fSXin LI		esac
809a9ea25fSXin LI	fi
819a9ea25fSXin LIdone
829a9ea25fSXin LIexit 0
83