
# Shell library for ScatterCmd
# version:1.3
# Gouichi Iisaka <iisaka51@hotmail.com>

ScatterTMPDIR=${ScatterTMPDIR:-"/tmp/ScatterTMPDIR.$$"}
trap "cd /tmp && /bin/rm -rf ${ScatterTMPDIR} 2>/dev/null; SCRemoveFifo ;  exit 0" 1 2 3 13 14 15

#
# Usage: SCSetUpColors colormode
#        $1: M/C = Mono/Color
#

SYSTEM=`uname -s`
case $SYSTEM in
	HP-UX)	ECHO="/usr/bin/echo "  
		ECHONRF="/usr/sbin/echo "
		NORF="\c" ;;
	Linux)	ECHO="/bin/echo -e" 
		ECHONRF="/bin/echo -en "
		NORF="" ;;
	*)	ECHO="/usr/bin/echo -e"   
		ECHONRF="/usr/bin/echo -en"
		NORF="" ;;
esac

SCSetUpColors() {
    case $1 in
    M)
        SCSETCOLOR=":"
        SCGREEN=""
        SCRED=""
        SCNORMAL=""
    ;;
    *)
        SCSETCOLOR=${ECHO_NORET}
        SCGREEN="\\033[1;32m"
        SCRED="\\033[1;31m"
        SCNORMAL="\\033[0;39m"
    ;;
    esac
}

#
# Usage: SCPrintNodeName printmode colormode nodename
#        $1: S/Q/N/D = Silent/Quiet/Normal/Dialog
#        $2: M/C/*   = Mono/Color/Others
#        $3: nodename
#
SCPrintNodeName() {
    case $1 in
    Q|S)	return ;;
    *)	;;
    esac

    wait                           # add by Kenta Kawomoto.
    [ -s e.$3 ] && {
       COLOR='\033[1;31m' ; RESULT='[NG]'
    } || {
       COLOR='\033[1;32m' ; RESULT='[OK]'
    }
    case $2 in
    C) ${ECHONRF} "${COLOR}" ${NORF}
       ${ECHONRF} "$3  ${RESULT}" ${NORF}
       ${ECHO} '\033[0;39m'
    ;;
    M)  ${ECHO} "$3  ${RESULT}"  ;;
    *)  ;;                          # do not print nodename
    esac 
} 

#
# Usage: SCPrintResult printmode nodename
#     $1: S/Q/N/D = Silent/Quiet/Normal/Dialog
#     $2: nodename
#     $3: separator
#
SCPrintResult() {
    case $1 in
    Q)    ;;                        # do not print result
    D)
        ${ECHO} '====  [Hit Return Key] ====' ;  read dummy
    ;;
    *)
	shift 2
	CMT=`${ECHO} $@ | sed -e 's/ /\\ /g'`
	[ -z "${CMT}" ] || date "+${CMT}"
    ;;
    esac
}

SCMakeFifo() {
    [ -p ${ScatterTMPDIR}/po.$1 ] || mkfifo  ${ScatterTMPDIR}/po.$1
    [ -p ${ScatterTMPDIR}/pe.$1 ] || mkfifo  ${ScatterTMPDIR}/pe.$1
}

SCRemoveFifo() {
    case $# in
    0)  /bin/rm -f ${ScatterTMPDIR}/p[eo].* ;;
    *)	
        /bin/rm  -f ${ScatterTMPDIR}/po.$1
        /bin/rm  -f ${ScatterTMPDIR}/pe.$1
    ;;
    esac
}

SCSetFifo() {
    tee ${ScatterTMPDIR}/o.$1 < ${ScatterTMPDIR}/po.$1 &
    tee ${ScatterTMPDIR}/e.$1 < ${ScatterTMPDIR}/pe.$1 &
}

