#! /bin/sh
#
#   floppylog.sh -- フロッピーにログを記録する
#
#	使い方: /bin/sh floppylog.sh ディスク
#		ディスク: デバイスファイルで指定、先頭の「/dev/r」は省く
#		例: /bin/sh floppylog.sh fd0
#
#	0.0: Feb. 10, 2007 by Dai ISHIJIMA (for wpout08)
#

dmesg="${DMESG:-/var/run/dmesg.boot}"
disk="${1:-fd0}"

header=/tmp/header.txt

title="${TITLE:-ハードディスク消去ツール『wipe-out』}"

if ! mount_msdos -s -o rdonly /dev/$disk /floppy > /dev/null 2>&1; then
	msg="ディスク ${disk} をマウントできませんでした"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi

if [ ! -d /floppy/wipe-out ]; then
	msg="ディスク ${disk} にログ書き込みディレクトリがありません"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi

if ! umount /floppy > /dev/null 2>&1; then
	msg="ディスク ${disk} をアンマウントできませんでした"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi

if ! mount_msdos -s /dev/$disk /floppy > /dev/null 2>&1; then
	msg="ディスク ${disk} を書き込みマウントできませんでした"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi

echo "####" > $header
echo -n "following messages were logged on " >> $header
date >> $header
echo "====" >> $header

# dmesg.boot
if ! crlf.sh < $header >> /floppy/wipe-out/dmsgboot.txt ; then
	umount /floppy
	msg="dmesg.bootヘッダの書き込みに失敗しました"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi
if ! crlf.sh < $dmesg >> /floppy/wipe-out/dmsgboot.txt ; then
	umount /floppy
	msg="dmesg.bootの書き込みに失敗しました"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi

# dmesg-a
if ! crlf.sh < $header >> /floppy/wipe-out/dmesg-a.txt ; then
	umount /floppy
	msg="dmesg -a ヘッダの書き込みに失敗しました"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi
if ! dmesg -a | crlf.sh >> /floppy/wipe-out/dmesg-a.txt ; then
	umount /floppy
	msg="dmesg -a の書き込みに失敗しました"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi

# wpoutlog.txt
if ! crlf.sh < $header >> /floppy/wipe-out/wpoutlog.txt ; then
	umount /floppy
	msg="wipe-outログヘッダの書き込みに失敗しました"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi
if ! crlf.sh < $LOGFIL >> /floppy/wipe-out/wpoutlog.txt ; then
	umount /floppy
	msg="wipe-outログの書き込みに失敗しました"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi

# mbrlog.txt
if ! crlf.sh < $header >> /floppy/wipe-out/mbrlog.txt ; then
	umount /floppy
	msg="MBRログヘッダの書き込みに失敗しました"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi
eraselog='No erase log found'
for i in /tmp/erase-log.* ; do
	if [ -f "$i" ]; then
		if ! crlf.sh < $i >> /floppy/wipe-out/mbrlog.txt ; then
			umount /floppy
			msg="MBRログ ($i) の書き込みに失敗しました"
			dialog --title "$title" --msgbox "$msg" 5 64
			exit 1
		fi
	fi
	eraselog=''
done
case x"$eraselog" in
    xNo*)
	if ! echo "$eraselog" | crlf.sh >> /floppy/wipe-out/mbrlog.txt ; then
		umount /floppy
		msg="MBRログの書き込みに失敗しました"
		dialog --title "$title" --msgbox "$msg" 5 64
		exit 1
	fi
esac
verifylog='No verify log found'
for i in /tmp/verify-log.* ; do
	if [ -f "$i" ]; then
		if ! crlf.sh < $i >> /floppy/wipe-out/mbrlog.txt ; then
			umount /floppy
			msg="MBRログ ($i) の書き込みに失敗しました"
			dialog --title "$title" --msgbox "$msg" 5 64
			exit 1
		fi
	fi
	verifylog=''
done
case x"$verifylog" in
    xNo*)
	if ! echo "$verifylog" | crlf.sh >> /floppy/wipe-out/mbrlog.txt ; then
		umount /floppy
		msg="MBRログの書き込みに失敗しました"
		dialog --title "$title" --msgbox "$msg" 5 64
		exit 1
	fi
esac

if ! umount /floppy > /dev/null 2>&1; then
	msg="書き込み後にディスク ${disk} をアンマウントできませんでした"
	dialog --title "$title" --msgbox "$msg" 5 64
	exit 1
fi

dialog	--title "$title" \
	--msgbox "ログの書き込みが終了しました" 5 64

exit 0

# EOF
