xref: /freebsd/usr.bin/gzip/zmore (revision d0b2dbfa)
19a9ea25fSXin LI#!/bin/sh -
29a9ea25fSXin LI#
3060ea80eSXin LI# $NetBSD: zmore,v 1.5 2013/12/06 13:33:15 pettai Exp $
4060ea80eSXin LI#
5060ea80eSXin 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
279a9ea25fSXin LI# Pull out any command line flags so we can pass them to more/less
289a9ea25fSXin LIflags=
299a9ea25fSXin LIwhile test $# -ne 0; do
309a9ea25fSXin LI	case "$1" in
319a9ea25fSXin LI		--)
329a9ea25fSXin LI			shift
339a9ea25fSXin LI			break
349a9ea25fSXin LI			;;
359a9ea25fSXin LI		-*)
369a9ea25fSXin LI			flags="$flags $1"
379a9ea25fSXin LI			shift
389a9ea25fSXin LI			;;
399a9ea25fSXin LI		*)
409a9ea25fSXin LI			break
419a9ea25fSXin LI			;;
429a9ea25fSXin LI	esac
439a9ea25fSXin LIdone
449a9ea25fSXin LI
45060ea80eSXin LIif [ `basename $0` = "zless" ] ; then
46060ea80eSXin LI	pager=${PAGER-less}
47060ea80eSXin LIelse
48060ea80eSXin LI	pager=${PAGER-more}
49060ea80eSXin LIfi
50060ea80eSXin LI
519a9ea25fSXin LI# No files means read from stdin
529a9ea25fSXin LIif [ $# -eq 0 ]; then
53060ea80eSXin LI	gzip -cdfq 2>&1 | $pager $flags
549a9ea25fSXin LI	exit 0
559a9ea25fSXin LIfi
569a9ea25fSXin LI
579a9ea25fSXin LIoterm=`stty -g 2>/dev/null`
589a9ea25fSXin LIwhile test $# -ne 0; do
59060ea80eSXin LI	gzip -cdfq "$1" 2>&1 | $pager $flags
609a9ea25fSXin LI	prev="$1"
619a9ea25fSXin LI	shift
629a9ea25fSXin LI	if tty -s && test -n "$oterm" -a $# -gt 0; then
639a9ea25fSXin LI		#echo -n "--More--(Next file: $1)"
649a9ea25fSXin LI		echo -n "$prev (END) - Next: $1 "
659a9ea25fSXin LI		trap "stty $oterm 2>/dev/null" 0 1 2 3 13 15
669a9ea25fSXin LI		stty cbreak -echo 2>/dev/null
679a9ea25fSXin LI		REPLY=`dd bs=1 count=1 2>/dev/null`
689a9ea25fSXin LI		stty $oterm 2>/dev/null
699a9ea25fSXin LI		trap - 0 1 2 3 13 15
709a9ea25fSXin LI		echo
719a9ea25fSXin LI		case "$REPLY" in
729a9ea25fSXin LI			s)
739a9ea25fSXin LI				shift
749a9ea25fSXin LI				;;
759a9ea25fSXin LI			e|q)
769a9ea25fSXin LI				break
779a9ea25fSXin LI				;;
789a9ea25fSXin LI		esac
799a9ea25fSXin LI	fi
809a9ea25fSXin LIdone
819a9ea25fSXin LIexit 0
82