#!/bin/bash

if [ -z $SDDIR ]; then
    SDDIR=/etc/statusd
fi

PERC1=90
PERC2=95
PERC3=99

#if [ -f $SDDIR/config/df.conf ]; then
#    . $SDDIR/config/df.conf
#fi

HIGHEST=0

dfcalc()
{
	MNT_FS=$1
	PERCENT=$2
	PFX=$3

	CRIT=0

	case "$MNT_FS" in
	    ""*/dev/*|tmpfs)
		if [ "${MNT_FS/snapshot}" == "$MNT_FS" ]; then
			FSV=${MNT_FS//\//_}
			FSV=${FSV//\-/_}
			FSV=${FSV//\./_}
			vn1=PERC1${FSV}
			vn2=PERC2${FSV}
			vn3=PERC3${FSV}

			if [ -n "${!vn1}" -a -n "${!vn2}" -a -n "${!vn3}" ]; then
				PRC1="${!vn1}"
				PRC2="${!vn2}"
				PRC3="${!vn3}"
			else
				PRC1="$PERC1"
				PRC2="$PERC2"
				PRC3="$PERC3"
			fi

			PN=${PERCENT//%}
			if [ "$PN" -gt $PRC1 ]; then
				if [ "$PN" -gt $PRC1 ]; then PERC=$PRC1; CRIT=1; fi
				if [ "$PN" -gt $PRC2 ]; then PERC=$PRC2; CRIT=2; fi
				if [ "$PN" -gt $PRC3 ]; then PERC=$PRC3; CRIT=2; fi

				echo "${CRIT}[${MNT_FS}>${PFX}${PERC}%]"
			fi
	    fi
	    ;;
	esac
}

dfs()
{
    df 2>/dev/null | while read MNT_FS BLOCKS USED AVAIL PERCENT MNT_DIR; do
		dfcalc "$MNT_FS" "$PERCENT" ""
    done

    df -i 2>/dev/null | while read MNT_FS INODES USED AVAIL PERCENT MNT_DIR; do
		if [ "$PERCENT" != "-" ]; then
			dfcalc "$MNT_FS" "$PERCENT" i
		fi
    done
}

EXSL=`dfs |sort |uniq`
for EX in $EXSL; do
	CRIT=${EX:0:1}
	EXS="$EXS${EX:1}"
	if [ $HIGHEST -lt $CRIT ]; then
		HIGHEST=$CRIT
	fi
done

if [ "x$EXS" != "x" ]; then
	echo "$EXS"
	exit $HIGHEST
else
	echo "OK"
	exit 0
fi
