#!/usr/bin/ksh93 ################################################################ #### Program: head_k93 #### #### Description: Emulation of the Unix "head" command #### #### Author: Dana French (dfrench@mtxia.com) #### #### Date: 07/22/2004 #### ################################################################ function head_k93 { typeset TRUE="0" typeset FALSE="1" typeset VERYFALSE="2" typeset CAT="${FALSE}" typeset LINES="${TRUE}" typeset BYTES="${FALSE}" typeset OLDPREV="" typeset FNAME="" typeset HEADCNT="" typeset STDIN="${1:+${FALSE}}" STDIN="${STDIN:-${TRUE}}" while getopts ":0123456789c#n#vV" OPTION do case "${OPTION}" in 'c') BYTES="${TRUE}" HEADCNT="${OPTARG}" LINES="${FALSE}";; 'n') LINES="${TRUE}" HEADCNT="${OPTARG}" BYTES="${FALSE}";; 'v') VERBOSE="${TRUE}";; 'V') VERYVERB="${TRUE}";; '?') print "Syntax: head [-Count|-c bytes|-n lines] [FILE]..." && exit 1 ;; esac let "${OPTION} + 0" > /dev/null 2>&1 && (( CAT == FALSE )) && CAT="${TRUE}" ! let "${OPTION} + 0" > /dev/null 2>&1 && (( CAT == TRUE )) && CAT="${VERYFALSE}" let "${OPTION} + 0" > /dev/null 2>&1 && (( OPTION == 0 )) && (( CAT == VERYFALSE )) && CAT="${TRUE}" (( CAT == TRUE )) && HEADCNT="${HEADCNT}${OPTION}" done shift $(( ${OPTIND} - 1 )) typeset STDIN="${1:+${FALSE}}" STDIN="${STDIN:-${TRUE}}" if (( STDIN == TRUE )) then getHeadLine_k93 "${HEADCNT}" "${BYTES}" "${LINES}" else for FNAME in "${@}" do if [[ -f "${FNAME}" ]] then exec 0<"${FNAME}" getHeadLine_k93 "${HEADCNT}" "${BYTES}" "${LINES}" exec 0<&- else print -u 2 "ERROR: \"${FNAME}\" does not exist or is not a regular file." fi done fi return 0 } ################################################################ function getHeadLine_k93 { typeset HEADCNT="${1}" typeset BYTES="${2}" typeset LINES="${3}" [[ "_${HEADCNT}" = "_" ]] && HEADCNT="10" for (( CNT=0; CNT