function checkuser {
        USER=${1}
        shift
        MATCH=`cat $FILE \
                | sed -e 's/#.*//g'  \
                | awk "/\$USER:.*/{print $1}" \
                | awk -F : '{print $2}' \
              `
        echo $MATCH
}


function fixperms {
	ssh ${1} "chown -R ${2} $HOME/Maildir"
	chown -R ${2} $HOME/Maildir
}

function doit  {
	if [ "${MODE}" = "daemon" ] ; then
		${PROGDIR}/do_ms.sh ${MASTER} ${1} ${PROGDIR} ${MODE} 2>&1 1>/dev/null
	else 
		${PROGDIR}/do_ms.sh ${MASTER} ${1} ${PROGDIR} ${MODE}
	fi
}

function luserprep {
echo "Running local user prep routines for ${1}..."
if [ -d /home/${1} ] ; then
                echo "HOME DIRECTORY EXISTS"
        else
                echo "NO HOME LOCAL DIRECTORY FOR USER: ${1}"
                echo "CREATING LOCAL HOME DIRECTORY"
                mkdir /home/${1}
		echo "NO LOCAL HOME DIRECTORY ON `hostname` FOR USER: ${1} .. CREATED IT"		
		if (chown ${1} /home/${1}) 2> /dev/null ; then 
                        echo "CHANGED OWNERSHIP OF LOCAL HOMEDIRECTORY TO: ${1}"   
		else 
                        echo "CANNOT CHANGE OWNERSHIP OF HOME DIRECTORY FOR USER: ${1} 2> /dev/null"
                        echo "THIS USER PROBABLY DOES NOT EXIST ON THIS SLAVE HOST: `hostname` 2> /dev/null"
                        notify ${1} "CANNOT CHANGE OWNERSHIP OF HOME DIRECTORY FOR USER: ${1}. THIS USER PROBABLY DOES NOT EXIST ON THIS SLAVE HOST: `hostname`"
		fi
fi
if [ -d /home/${1}/Maildir ] ; then
        echo "LOCAL MAILDIR EXISTS"
else
        echo "NO LOCAL MAILDIR .. CREATING NEW MAILDIR NOW"
        maildirmake /home/${1}/Maildir
        chown -R ${1} /home/${1}/Maildir
	if [ -d /home/${1}/Maildir ] ; then
                echo "CREATED TRASHBAGS DIRECTORY FOR USER: ${1}"
        else
                echo "CANNOT CREATE Maildir FOR USER: ${1}"
                notify ${1} "CANNOT CREATE LOCAL USER MAILDIR"
        fi
fi
if [ -d ${PROGDIR}/trashbags/${1} ] ; then
        echo "TRASHBAG DIRECTORY FOR USER EXISTS"
else
        echo "CREATING TRASHBAGS DIRECTORY FOR USER: ${1}"
        mkdir ${PROGDIR}/trashbags/${1}
	if [ -d ${PROGDIR}/trashbags/${1} ] ; then
		echo "CREATED TRASHBAGS DIRECTORY FOR USER: ${1}"
	else
		echo "CANNOT CREATE USER TRASHBAG DIRECTORY FOR USER: ${1}"
		notify ${1} "CANNOT CREATE USER TRASHBAG DIRECTORY"
	fi
fi
echo "Finished running local user prep routines for ${1}..."
}


function ruserprep {
echo "Running remote user prep routines for ${1}..."
if (ssh ${MASTER} "find /home/ -maxdepth 1 -type d -name ${1} | egrep \"${1}$\"") > /dev/null; then
		echo "REMOTE HOME DIRECTORY FOR THIS USER ALREADY EXISTS"
        else
                echo "NO REMOTE HOME DIRECTORY FOR THIS USER .. CREATING IT NOW"
		ssh ${MASTER} "mkdir /home/${1}"
                if (ssh ${MASTER} "find /home/ -maxdepth 1 -type d -name ${1} | egrep \"${1}$\"") > /dev/null; then
                	echo "CREATED REMOTE HOME DIRECTORY FOR USER: ${1}"
	        else
                	echo "CANNOT CREATE REMOTE HOME DIRECTORY FOR USER: ${1}"
			notify ${1} "CANNOT CREATE REMOTE HOME DIRECTORY FOR USER: ${1}.  PERHAPS I CANNOT CONNECT OR DO I HAVE RIGHTS?"
       		fi
		if (ssh ${MASTER} "chown ${1} /home/${1}") 2> /dev/null ; then 
                        echo "CHANGED OWNERSHIP OF REMOTE HOMEDIRECTORY TO: ${1}"
                else
                        echo "CANNOT CHANGE OWNERSHIP OF REMOTE HOME DIRECTORY FOR USER: ${1}"
                        echo "THIS USER PROBABLY DOES NOT EXIST ON THE MASTER HOST: `hostname`"
                        notify ${1} "CANNOT CHANGE OWNERSHIP OF REMOTE HOME DIRECTORY FOR USER: ${1}.  THIS USER PROBABLY DOES NOT EXIST ON THE MASTER HOST: `ssh ${MASTER} \"hostname\"`"
                fi
fi
if (ssh ${MASTER} "find /home/${1}/ -maxdepth 1 -type d -name Maildir | egrep \"Maildir$\"") > /dev/null; then
                echo "REMOTE MAILDIR FOR THIS USER ALREADY EXISTS"
        else
				echo "NO REMOTE MAILDIR .. CREATING NEW MAILDIR NOW"
	        ssh ${MASTER} "maildirmake /home/${1}/Maildir"
	        ssh ${MASTER} "chown -R ${1} /home/${1}/Maildir"
		if (ssh ${MASTER} "find /home/${1}/ -maxdepth 1 -type d -name Maildir | egrep \"Maildir$\"") > /dev/null; then
                        echo "CREATED REMOTE Maildir FOR USER: ${1}"
                else
                        echo "CANNOT CREATE REMOTE Maildir FOR USER: ${1}"       
                        notify ${1} "CANNOT CREATE REMOTE Maildir FOR USER: ${1}"
                 fi
fi
echo "Finished running remote user prep routines for ${1}..."
}


function writeok {
	sed "s/${1}:NOK/${1}:OK/g" ${FILE} 1> ${FILE}.tmp
	mv ${FILE}.tmp ${FILE}
	#for debugging - show if user OK or NOK
	#sed "s/${1}:NOK/${1}:OK/g" ${FILE}
}

function writenok {
	if (egrep "^${1}:NOK" ${FILE} 2>&1) ; then
		echo "USER ALREADY HAS AN ENTRY IN THE PREP DIGEST"
	else	
		echo "ADDED USER ${1} TO PREP DIGEST WITH NOK STATUS"
		echo "${1}:NOK" >> ${FILE} 
	fi
}


function notify {
	echo "There was a problem with $0 for user: $1 
	      ERROR MSG: $2	" \
	| mail -s "Mailbalance Alert" ${ADMIN}

}

function rolllog {
	LOGFILE="${PROGDIR}/log/${1}-maildirsync-`date +%Y%m`.log"
	if [ -f "${LOGFILE}" ] ; then
        	echo ''
	else
        	rm ${PROGDIR}/log/${1}-maildirsync*
	fi
}

#function setmode {
#	if [ "${1}"  = "-d" ] ; then
#		shift
#	        MODE=daemon;
#        	echo ${MODE}
#	else
#        	MODE=debug;
#        	echo ${MODE}
#fi
#}


syntax highlighted by Code2HTML, v. 0.9.1