#! /bin/sh

stuff="${1:--z}"
disk="${2:-ad0}"

dmesg=/var/run/dmesg.boot
dname=`sed -n -E "/^${disk}:.*<.*>/p" $dmesg | sed 's/.*\(<.*>\).*/\1/'`
bytes=`diskinfo -B /dev/r$disk`
cap=`diskinfo -p /dev/r$disk`

msg="ディスク ${disk} ${dname} の\n"
msg="${msg}全データ ${bytes}バイトを、\n"

case x"$stuff" in
	x-z)	msg="${msg}0で上書きして消去します。\n" ;;
	x-f)	msg="${msg}1で上書きして消去します。\n" ;;
	x-r)	msg="${msg}ランダムデータで上書きして消去します。\n" ;;
	*)	msg="${msg}消去します。\n" ;;
esac

msg="${msg}\n                      よろしいですか?"

dialog --title "$TITLE" \
	--yesno "$msg" \
	9 64

case x"$?" in
	x1)
		dialog --title "$TITLE" \
			--infobox 'ディスクの消去をキャンセルしました' 3 64
		sleep 2
		exit 1
		;;
esac


msg="本当にデータを消去していいですか?"

dialog --title "$TITLE" \
	--hline "$dname" \
	--yesno "$msg" \
	5 72

case x"$?" in
	x1)
		dialog --title "$TITLE" \
			--infobox 'ディスクの消去をキャンセルしました' 3 64
		sleep 2
		exit 1
		;;
esac

# 消去のパラメータ
bytes=`diskinfo -b /dev/r$disk`
obs=`expr 1024 '*' 1024`
ibs=1024
icnt=32768
ocnt=32
max=`expr '(' $bytes + $obs - 1 ')' / $obs`

skip=0
while [ $skip -le $max ]; do
	# バーグラフ
	p=`expr 100 '*' $skip / $max`
	q=`expr $p / 2`
	i=0
	bar=''
	while [ $i -lt $q ]; do
		bar="$bar"'#'
		i=`expr $i + 1`
	done
	while [ $i -lt 50 ]; do
		bar="$bar"'_'
		i=`expr $i + 1`
	done
	#
	text="ディスク ${disk} のデータを消去しています。"
	text="${text} ${p}% 終了\n\n"
	text="${text}        0%|${bar}|100%"
	text="${text}\n${errormsg}"
	dialog 	--title 'ハードディスク消去ツール『wipe-out』' \
		--infobox "$text" 6 72
	echo -n "$status2"
	status=`stuff $stuff | dd ibs=$ibs obs=$obs seek=$skip count=$icnt of=/dev/r$disk 2>&1`
	status2=`echo "$status" | sed -n '/transfer/p'`
	errormsg=`echo "$status" | sed -n -E '/records (in|out)$/!p' | sed -n '/transferred in/!p'`
	# 次ループ
	skip=`expr $skip + $ocnt`
done

sleep 2

dialog --title "$TITLE" \
	--msgbox 'ディスクのデータ消去が終了しました' 5 64

exit 0

# EOF
