#!/usr/bin/ksh93
################################################################
#### Program: tac_k93
####
#### Description: Emulation of the Unix "tac" command
####
#### Author: Dana French (dfrench@mtxia.com)
#### Copyright 2004
####
#### Date: 07/28/2004
####
################################################################
function tac_k93 {
typeset TRUE="0"
typeset FALSE="1"
typeset VERBOSE="${FALSE}"
typeset VERYVERB="${FALSE}"
typeset FNAME
typeset ARRY
while getopts ":vV" OPTION
do
case "${OPTION}" in
'v') VERBOSE="${TRUE}";;
'V') VERYVERB="${TRUE}";;
'?') print "Syntax: tac_k93 [FILE]..." && exit 1 ;;
esac
done
shift $(( ${OPTIND} - 1 ))
typeset STDIN="${1:+${FALSE}}"
STDIN="${STDIN:-${TRUE}}"
#### Read in the data either from STDIN or one or more files
if (( STDIN == TRUE ))
then
CNT=0
while IFS="" read -r -- LINE
do
ARRY[CNT]="${LINE}"
(( CNT++ ))
done
else
for FNAME in "${@}"
do
if [[ -e "${FNAME}" ]]
then
exec 0<"${FNAME}"
CNT="0"
while IFS="" read -r -- LINE
do
ARRY[CNT]="${LINE}"
(( CNT++ ))
done
exec 0<&-
else
print -u 2 "${0##*/}: ${FNAME}: No such file or directory"
return 1
fi
done
fi
for (( POS=(CNT-1); POS>=0; --POS ))
do
print -r -- "${ARRY[POS]}"
done
return 0
}
################################################################
tac_k93 "${@}"