#!/usr/bin/ksh93
################################################################
#### Program: uniq_k93
####
#### Description: Emulation of the Unix "uniq" command
####
#### Author: Dana French (dfrench@mtxia.com)
#### Copyright 2004
####
#### Date: 07/22/2004
####
################################################################
function uniq_k93 {
typeset TRUE="0"
typeset FALSE="1"
typeset OLDPREV=""
typeset FNAME=""
typeset STDIN="${1:+${FALSE}}"
STDIN="${STDIN:-${TRUE}}"
if (( STDIN == TRUE ))
then
getUniqLine_k93 OLDPREV
else
for FNAME in "${@}"
do
if [[ -f "${FNAME}" ]]
then
exec 0<"${FNAME}"
getUniqLine_k93 OLDPREV
exec 0<&-
else
print -u 2 "ERROR: \"${FNAME}\" does not exist or is not a regular file."
fi
done
fi
return 0
}
################################################################
function getUniqLine_k93 {
nameref OLDPREV="${1}"
typeset PREV="${OLDPREV}"
typeset CURR
IFS=""
[[ ${OLDPREV} = "_" ]] &&
read -r -- PREV &&
print -r -- "${PREV}"
while read -r -- CURR
do
[[ "_${PREV}" = "_${CURR}" ]] && continue
print -r -- "${CURR}"
PREV="${CURR}"
done
OLDPREV="${PREV}"
return 0
}
################################################################
uniq_k93 "${@}"