#!/bin/sh
#Format floppy disks
#Copyright (c) Barry Kauler 2004 www.goosee.com/puppy
#2007 Lesser GPL licence v2 (http://www.fsf.org/licensing/licenses/lgpl.html)

zapfloppy()
{
# Puppy will only allow 1440, 1680K and 1760K capacities.
ERR0=1
while [ ! $ERR0 -eq 0 ];do
gxmessage -bg "#c0ffff" -center -title "お待ち下さい..." -buttons "" "$1 キロバイト容量でディスクをローレベルフォーマット中です" &
 fdformat /dev/fd0u$1
 ERR0=$?
 killall gxmessage
 if [ ! $ERR0 -eq 0 ];then
  gxmessage -bg "#ffe0e0" -name "loformat" -title "Puppyローレベルフォーマット" -center \
  -buttons "再試行":20,"終了":10 -file -<<XMSG
エラー ディスクをローレベルフォーマット中。
書き込み禁止つまみは閉じていますか？
XMSG

  AN0=$?
  if [ $AN0 -eq 10 ];then
   ERR0=0
  fi
  if [ $AN0 -eq 0 ];then
   ERR0=0
  fi
  if [ $AN0 -eq 1 ];then
   ERR0=0
  fi
 else
  INTROMSG="`
echo "成功！"
echo -e "ここで「MSDOS/VFATファイルシステム」ボタンを押して下さい。"
`"
 fi
done
}

fsfloppy()
{
echo "ディスクにMSDOSファイルシステムを作成中..."
ERR1=1
while [ ! $ERR1 -eq 0 ];do
gxmessage -bg "#c0ffff" -center -title "お待ち下さい..." -buttons "" "フロッピーディスクにMSDOS/VFATファイルシステムを作成中です" &
 mkfs.msdos -c /dev/fd0u$1
 #mformat -f $1 a:
 #mbadblocks a:
 ERR1=$?
 killall gxmessage
 if [ ! $ERR1 -eq 0 ];then
  gxmessage -bg "#ffe0e0" -name "msdosvfat" -title "フロッピーMSDOS/VFATファイルシステム" -center \
  -buttons "再試行":20,"終了":10 -file -<<XMSG
エラー フロッピーにMSDOS/VFATファイルシステムを作成中。
書き込み禁止つまみは閉じていますか？
XMSG

  AN0=$?
  if [ $AN0 -eq 10 ];then
   ERR1=0
  fi
  if [ $AN0 -eq 0 ];then
   ERR1=0
  fi
  if [ $AN0 -eq 1 ];then
   ERR1=0
  fi
 else
  INTROMSG="`
echo "成功！"
echo "フロッピーディスクは使える準備ができました。"
echo "パピードライブマウンタでマウントして下さい。"
echo "(注意： MToolsFMフロッピーファイルマネージャを"
echo "使うと直接フロッピードライブにアクセスします。"
echo "パピードライブマウンタは使わないで下さい。)"
echo "しかし最初に、「終了」を押してここから出て下さい..."
`"
 fi
done
sync
echo "...完了。"
echo " "
}

INTROMSG="`
echo "ようこそ！"
echo "このフロッピーフォーマッタはフロッピーディスクをWindowsとの互換性"
echo "のために、容量1440キロバイトでMSDOS/VFATファイルシステムを作成"
echo "するだけです。"
echo " "
echo "ローレベルフォーマットは、ディスクが違う容量でフォーマットされている"
echo "場合、あるいは破損している場合にだけ必要です。"
echo "フロッピーの整合性のチェック以外は、新しいディスクをローレベル"
echo "フォーマットをしてはいけません。"
echo "ローレベルフォーマットだけではディスクは使えません：ファイルシステムも"
echo "必要です。これは常に第2段階でなければいけません。"
echo "ファイルシステムをディスクに作成する事、すなわち第２段階だけ行う事は、"
echo "存在するファイルを全て消去する方法でもあります。"
`"

#big loop...
while :; do

MNTDMSG=" "
mount | grep "/dev/fd0" > /dev/null 2>&1
if [ $? -eq 0 ];then #=0 if string found
 CURRENTMNT="`mount | grep "/dev/fd0" | cut -f 3 -d ' '`"
 #this tells Rox to close any window with this directory and subdirectories open...
 rox -D "$CURRENTMNT"
 sync
 umount "$CURRENTMNT" #/mnt/floppy
 if [ ! $? -eq 0 ];then
  MNTDMSG="`
echo " "
echo "すでにドライブにマウントされているフロッピーディスクが見つかりました。"
echo "でもアンマウントできません。ディスクをすぐにアンマウントして下さい。"
echo "「ファイルシステム」メニューにある「MUT」か「Pmount」を使って"
echo "フロッピーディスクをアンマウントして下さい。まず最初にして下さい！"
echo " "
`"
 else
  MNTDMSG="`
echo " "
echo "フロッピーディスクはマウントされていましたが、現在アンマ"
echo "ウントされました。これでディスクのフォーマットができます。"
echo " "
`"
 fi
fi

gxmessage -bg "#e0ffe0" -name "pformat" -title "Puppyフロッピーフォーマッタ" -center \
-buttons "ローレベルフォーマット":20,"MSDOS/VFATファイルシステム":30,"終了":10 -file -<<XMSG
$INTROMSG
$MNTDMSG
ボタンを押して下さい：
XMSG

ANS=$?

if [ $ANS -eq 0 ]; then
 break
fi
if [ $ANS -eq 1 ]; then
 break
fi
if [ $ANS -eq 10 ]; then
 break
fi

if [ $ANS -eq 20 ];then #format
 zapfloppy 1440
fi

if [ $ANS -eq 30 ];then #vfat
 fsfloppy 1440
fi

done
