Imported from ../bash-2.0.tar.gz.
This commit is contained in:
		
					parent
					
						
							
								726f63884d
							
						
					
				
			
			
				commit
				
					
						ccc6cda312
					
				
			
		
					 502 changed files with 91988 additions and 69123 deletions
				
			
		
							
								
								
									
										127
									
								
								examples/scripts.v2/pf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								examples/scripts.v2/pf
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,127 @@
 | 
			
		|||
#! /bin/bash
 | 
			
		||||
#
 | 
			
		||||
# original from:
 | 
			
		||||
#
 | 
			
		||||
# @(#) p.ksh 1.1 93/11/09
 | 
			
		||||
# p: page compressed & plain files in the order given 
 | 
			
		||||
# 92/01/23 john h. dubois iii (john@armory.com)
 | 
			
		||||
# 92/02/14 changed incorrect zpack to pcat
 | 
			
		||||
# 92/02/16 added help
 | 
			
		||||
# 92/10/11 search for file.Z and file.z if file not found
 | 
			
		||||
# 92/10/18 pass options to pager
 | 
			
		||||
# 93/11/09 Understand gzipped files too
 | 
			
		||||
#          Wait after printing message about unreadable files
 | 
			
		||||
#          Make less prompt include name of file being uncompressed
 | 
			
		||||
#
 | 
			
		||||
# conversion to bash v2 by Chet Ramey; renamed to pf
 | 
			
		||||
#
 | 
			
		||||
DefPager=/local/bin/less
 | 
			
		||||
 | 
			
		||||
istrue()
 | 
			
		||||
{
 | 
			
		||||
	test 0 -ne "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
warn()
 | 
			
		||||
{
 | 
			
		||||
	echo "$@" 1>&2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if [ "$1" = -h ]; then
 | 
			
		||||
    echo \
 | 
			
		||||
"$0: page a file.
 | 
			
		||||
Usage: $0 [pager-option ...] [filename ...]
 | 
			
		||||
Files are paged by the program specified in the user's PAGER
 | 
			
		||||
environment variable, or by $DefPager if PAGER is not set.
 | 
			
		||||
If no filename is given, text to page is read from the standard input.
 | 
			
		||||
If filenames are given, they are either paged directly, or unpacked/
 | 
			
		||||
uncompressed and then paged.  Files are assumed to be in packed, compressed,
 | 
			
		||||
or gzipped format if the filename ends in .Z, .z, or .gz respectively.
 | 
			
		||||
If a filename that does not end in .Z, .z, or .gz is not found, it is
 | 
			
		||||
searched for with one of those extensions attached.
 | 
			
		||||
Each group of plain files is paged by a single instance of the pager.
 | 
			
		||||
Each packed or compressed file is paged by a separate instance of the
 | 
			
		||||
pager. 
 | 
			
		||||
Initial arguments beginning with + or - are taken to be pager options and
 | 
			
		||||
are passed to each instance of the pager.  
 | 
			
		||||
If a pager option takes a value it should be given with the option as a
 | 
			
		||||
single argument (with no space between the option and the value)."
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Get pager options
 | 
			
		||||
while [ $# -gt 0 ]; do
 | 
			
		||||
    case "$1" in
 | 
			
		||||
    -*|+*)	Opts="$Opts $1" ; shift;;
 | 
			
		||||
    *)	break;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
[ -z "$PAGER" ] && PAGER=$DefPager
 | 
			
		||||
 | 
			
		||||
# Read from stdin
 | 
			
		||||
[ $# = 0 ] && exec $PAGER $Opts
 | 
			
		||||
 | 
			
		||||
typeset -i filenum=0 badfile=0
 | 
			
		||||
 | 
			
		||||
for file; do
 | 
			
		||||
    if [ ! -r "$file" ]; then
 | 
			
		||||
	case "$file" in
 | 
			
		||||
	*.[Zz]|*.gz)
 | 
			
		||||
		# Check if user specified a compressed file without giving its extension
 | 
			
		||||
		for ext in Z z gz; do
 | 
			
		||||
		    if [ -r "$file.$ext" ]; then
 | 
			
		||||
			file="$file.$ext"
 | 
			
		||||
			break
 | 
			
		||||
		    fi
 | 
			
		||||
		done;;
 | 
			
		||||
	esac
 | 
			
		||||
    fi
 | 
			
		||||
    if [ ! -r "$file" ]; then
 | 
			
		||||
	warn "$file: cannot read."
 | 
			
		||||
	badfile=1
 | 
			
		||||
    else
 | 
			
		||||
	files[filenum]=$file
 | 
			
		||||
	let filenum+=1
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
if istrue $badfile && [ $filenum -gt 0 ]; then
 | 
			
		||||
    echo -n "Press return to continue..." 1>&2
 | 
			
		||||
    read
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
unset plain
 | 
			
		||||
 | 
			
		||||
for file in "${files[@]}"; do
 | 
			
		||||
    case "$file" in
 | 
			
		||||
    *.[zZ]|*.gz)
 | 
			
		||||
	set -- Z zcat z pcat gz gzcat
 | 
			
		||||
	# Find correct uncompression program
 | 
			
		||||
	while [ $# -gt 0 ]; do
 | 
			
		||||
	    case "$file" in
 | 
			
		||||
	    *.$1)
 | 
			
		||||
		# Page any uncompressed files so that they will be read
 | 
			
		||||
		# in the correct order
 | 
			
		||||
		[ ${#plain[@]} -gt 0 ] && $PAGER $Opts "${plain[@]}"
 | 
			
		||||
		unset plain[*]
 | 
			
		||||
		# If page is less, set the prompt to include the name of
 | 
			
		||||
		# the file being uncompressed.  Escape the . in the extension
 | 
			
		||||
		# because less treats is specially in prompts (other dots
 | 
			
		||||
		# in filenames will still be mucked with).
 | 
			
		||||
		case "$PAGER" in
 | 
			
		||||
		*less)  Prompt="-P[${file%.$1}\\.$1] (%pb\\%)" ;;
 | 
			
		||||
		*)	unset Prompt ;;
 | 
			
		||||
		esac
 | 
			
		||||
		$2 "$file" | $PAGER "$Prompt" $Opts
 | 
			
		||||
		break
 | 
			
		||||
	    esac
 | 
			
		||||
	    shift 2
 | 
			
		||||
	done
 | 
			
		||||
	;;
 | 
			
		||||
    *)	plain[${#plain[@]}]=$file;;
 | 
			
		||||
    esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# Page any uncompressed files that haven't been paged yet
 | 
			
		||||
[ ${#plain[@]} -gt 0 ] && exec $PAGER $Opts "${plain[@]}"
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue