#!/bin/sh
#
# Generate /etc/mtools
#

ROOTDEV=/                                          
if [ "$1" = "-instroot" ]; then                    
        ROOTDEV=$2;                                
        shift 2;                                   
fi

cd $ROOTDEV                                        

echo -n "Suche nach DOS Partitionen... "

partlist > etc/hardware.part

echo "fertig"

function primary () {
(fdisk $1 << EOF
p 
q 
EOF
) | egrep -e "^/dev/...[1234] "
} 
  
function extended () {
(fdisk $1 << EOF
p 
q 
EOF
) | egrep -e '^/dev/...[56789] '
} 

function buildchar() {
        rawchar=`expr $1 + 100`
        octaloverflow=`expr \( $1 - 1 \) / 7`
        char=`expr $rawchar + $octaloverflow \* 2`
        echo -n -e "\\`echo $char` "
}

function querycorrect () {
        while [ 0 ]
        do
           echo
	   echo "Ein Eintrag in /etc/mtools setzt sich wie folgt zusammen:"
	   echo "DOSLAUFWERK LINUXDEVICE x-bit-FAT Zylinder Kpfe Sektoren" 
	   echo "optional gefolgt von # und einem Kommentar"
	   echo "(bei Festplatten fr Zylinder Kpfe und Sektoren bitte )"
	   echo "(eine \"0\" eingetragen zur automatischen Erkennung)"
	   echo
	   echo "Habe folgenden Eintrag fr Ihr System ermittelt:"
           echo $TEXT
           echo 
           echo "Sind die Angaben zu Ihrem DOS Laufwerk $DRIVE richtig,"
           echo "drcken Sie einfach die Eingabetaste. "
	   echo "Sind die Angaben falsch, so geben Sie die Zeile bitte"
	   echo "richtig ein und drcken Sie dann die Eingabetaste."
	   echo "Haben Sie berhaupt kein DOS-Laufwerk $DRIVE, so geben"
	   echo "Sie bitte nur \"#\" ein."

           read ans

           if [ "$ans" = "" ]; then
                DRIVENUM=`expr $DRIVENUM + 1`		
                return 0
	   elif [ "$ans" = '#' ]; then
		TEXT="# $DRIVE not installed"
	   	DRIVENUM=`expr $DRIVENUM + 1`
		return 0
           else
                TEXT=$ans
           fi
        done
}

HARDWARE="etc/hardware.part"
DOSDRIVES="etc/dosdrives"
TMPFILE="etc/mtools.tmp"
INFILE="etc/mtools.in"
OUTFILE="etc/mtools"

DRIVENUM=1
PARTNUM=0

# Feststellen, wieviele DOS Partitionen wir haben

PARTNUM=`grep '^/dev/' $HARDWARE | grep DOS | wc | cut -c 6-7`

echo "Habe $PARTNUM DOS Partitionen gefunden"

DRIVEMAX=`expr $PARTNUM + 2`

>$DOSDRIVES
k=1
while [ $k -le $DRIVEMAX ]
do
	echo `buildchar $k` >> $DOSDRIVES
	k=`expr $k + 1 `
done

# Generieren von mtools.in

echo "/dev/fd0H1440 12 80 2 18      # erstes Laufwerk 3.5 Zoll 1.44 MB" > $TMPFILE
echo "/dev/fd1h1200 12 80 2 15      # zweites Laufwerk 5.25 Zoll 1.2 MB" >> $TMPFILE
grep '^/dev/' $HARDWARE | grep DOS | cut -c 1-10,57-58 | sed "s/$/ 0 0 0/" >> $TMPFILE

paste $DOSDRIVES $TMPFILE > $INFILE
rm $TMPFILE $DOSDRIVES

# Building /etc/mtools

echo "# Eintraege von mkmtools generiert." > $OUTFILE
DRIVENUM=1
 
while [ $DRIVENUM -le $DRIVEMAX ]
do
	DRIVE=`buildchar $DRIVENUM` 
	pattern="^$DRIVE"
	TEXT=`cat $INFILE | grep $pattern ` 
	querycorrect
	echo $TEXT >> $OUTFILE
done
echo "X /dev/fd0 12 0 0 0      # erstes Laufwerk automatisch finden." >> $OUTFILE
echo "Y /dev/fd1 12 0 0 0      # zweites Laufwerk automatisch finden." >> $OUTFILE

