#!/bin/sh
# SeTpartition user-friendly rewrite Fri Dec 15 13:17:40 CST 1995 pjv
crunch () { # remove extra whitespace
 read STRING;
 echo $STRING
}
T_PX=/mnt
if [ ! -r /tmp/SeTplist ]; then
 # Give warning?
  exit
fi
  dialog --title "ϡɥǥΥ" --infobox \
"Plamo LinuxåȥåפLinuxѡƥõ \n\
ϡɥǥ򥹥ǤԤ" 6 60

cat << EOF > /tmp/tmpscript
#!/bin/sh
dialog --title "Linux򥤥󥹥ȡ뤹ѡƥ:" --menu \\
"root/˥ѡƥˤLinuxѡƥ \\
ꥹȤ򤷤Ƥ" 15 70 5 \\
EOF
export COUNT=0
cat /tmp/SeTplist | while [ 0 ]; do
  read PARTITION;
  if [ "$PARTITION" = "" ]; then
    break;
  fi
  NAME=`echo $PARTITION | crunch | cut -f 1 -d ' '`
  SIZE=`echo "$PARTITION" | tr -d "*" | tr -d "+" | crunch | cut -f 5 -d ' '`
  echo "\"$NAME\" \"Linux, ${SIZE}K\" \\" >> /tmp/tmpscript
done
echo "\"---\" \"(ʤåȥåץ˥塼)\" \\" >> /tmp/tmpscript
echo "\"---\" \"(ʤåȥåץ˥塼)\" \\" >> /tmp/tmpscript
echo "\"---\" \"(ʤåȥåץ˥塼)\" \\" >> /tmp/tmpscript
echo "\"---\" \"(ʤåȥåץ˥塼)\" \\" >> /tmp/tmpscript
echo "\"---\" \"(ʤåȥåץ˥塼)\" \\" >> /tmp/tmpscript
echo "2> /tmp/return" >> /tmp/tmpscript
. /tmp/tmpscript
if [ $? = 1 -o $? = 255 ]; then
  rm /tmp/tmpscript
  exit 255 # user abort
fi
ROOT_DEVICE="`cat /tmp/return`"
rm /tmp/tmpscript
if [ "$ROOT_DEVICE" = "---" ]; then
  exit 255
fi
ROOT_SYS_TYPE=ext2
ROOT_SIZE=`probe -l | fgrep "$ROOT_DEVICE " | tr -d "*" | tr -d "+" | crunch | cut -f 5 -d ' '`
dialog --title "ѡƥ$ROOT_DEVICEΥեޥå" \
--menu "ޤΥѡƥ󤬥եޥåȤƤʤä顤 \
եޥåȤʤФʤޤ: եޥåȤȥѡƥ \
Τ٤ƤΥǡϾõޤ¸Υѡƥѹ \
Τʤ顤ư롼ȥǥǤϤʤϡɥǥ \
åȥåפ¹ԤʤФޤ󡣡ʥϡɥǥΥå \
åץץȵư롼ȥǥΥåȥåפϥС \
ۤʤޤˤΥѡƥեޥåȤޤ?" 18 76 3 \
"Format" "åեޥå -- Хåɥ֥åΥåϤޤ" \
"Check" "եޥå -- Хåɥ֥ååޤ" \
"No" "ΥѡƥեޥåȤޤ" 2> /tmp/format
if [ $? = 1 -o $? = 255 ]; then
  rm -f /tmp/format
  exit
fi
DOFORMAT="`cat /tmp/format`"
rm -f /tmp/format
if [ ! "$DOFORMAT" = "No" ]; then
    dialog --title "$ROOT_DEVICEi-node̩٤" --menu \
"Ext2fsϥǥեȤǥǥ֤4096Х1Ĥi-node\n\
ƤƤޤǥ˾ʥե򤿤֤\n\
顢i-nodeο䤷Ǥ礦(1Ĥi-node줾\n\
ΥեΥȥȤƻȤޤ)i-node̩٤2048\n\
1Ĥˤ1024ХȤ1Ĥѹ뤳ȤǤ\n\
'2048''1024'뤤ϥǥեȤ4096ХȤΤ줫\n\
򤷤Ƥ\n\
: ǥեȤǤ4096ХȤϰŪʴĶͤǤ\n\
˥塼Ф᡼륵Фʤɡ4096ХȰʲΥե뤬\n\
¿֤褦ʥѡƥǤϡi-node2048Х\n\
1024ХȤˤǥλѸΨ褯ʤޤ\n\
褯ʬʤϥǥեȤΤޤޤˤƤޤ礦" 20 74 3 \
"4096" "4096ХȤȤ 1 i-node(ǥե)" \
"2048" "2048ХȤȤ 1 i-node" \
"1024" "1024ХȤȤ 1 i-node" 2> /tmp/density
  if [ $? = 1 -o $? = 255 ]; then
    rm -f /tmp/density
    exit
  fi
  DENSITY="`cat /tmp/density`"
  rm -f /tmp/density
  if [ ! "$DENSITY" = "2048" -a ! "$DENSITY" = "1024" ]; then
    DENSITY=4096
  fi
  INODE_DENSITY="Inode̩: 1 i-node  $DENSITYХȡ"
  dialog --title "եޥå" --infobox "$ROOT_DEVICEեޥå  \n\
  1K blocksΥ: $ROOT_SIZE \n\
  ե륷ƥΥ: $ROOT_SYS_TYPE \n\
  $INODE_DENSITY " 6 45
  if mount | fgrep "$ROOT_DEVICE " 1> /dev/null 2> /dev/null ; then
    umount $ROOT_DEVICE 2> /dev/null
  fi
  if [ "$DOFORMAT" = "Check" ]; then
    mke2fs -c -i $DENSITY $ROOT_DEVICE 1> /dev/null 2> /dev/null
  else
    mke2fs -i $DENSITY $ROOT_DEVICE 1> /dev/null 2> /dev/null
  fi
fi # DOFORMAT?
# Now, we need to mount the newly selected root device:
sync
mount -t $ROOT_SYS_TYPE $ROOT_DEVICE $T_PX 1> /dev/null 2> /dev/null
echo "$ROOT_DEVICE       /        $ROOT_SYS_TYPE        defaults   1   1" > /tmp/SeTnative
echo $ROOT_DEVICE > /tmp/SeTrootdev
# done mounting the target root partition
# More than one Linux partition
if [ ! "`cat /tmp/SeTplist | sed -n '2 p'`" = "" ]; then 
  while [ 0 ]; do # next partition loop
   cat << EOF > /tmp/tmpscript
   dialog --title "/etc/fstabɲä뤽¾Linuxѡƥ" \\
--menu \\
"LinuxѤȥޡ줿ѡƥ¾ˤ⤢褦Ǥ \\
ߡ$ROOT_DEVICE / ѡƥȤƥޥȤ \\
ޤ/usr  /usr/X11R6 Τ褦礭ǥ쥯ȥϡ \\
Ωѡƥ˥ޥȤ⤷ޤ \\
 /etc/sbin 뤤 /bin Τ褦ʥǥ쥯ȥ / ʳ \\
ѡƥ˥ޥȤƤϤޤ󡣤Υǥ쥯 \\
˴ޤޤƤեϥƥεưѡƥΥޥ \\
Ȥ˻Ȥ뤫Ǥ(ڤ꤬̤ˤ֤ˤʤä㤤ޤ) \\
ޤǤ˻ꤷƤѡƥٻꤷƤϤޤ \\
ꥹȤ餤줫Linuxѡƥ򤹤뤫 \\
󥻥򲡤Ƥ" 22 76 4 \\
EOF
    cat /tmp/SeTplist | while [ 0 ]; do
      read PARTITION;
      if [ "$PARTITION" = "" ]; then
        break;
      fi
      SIZE=`echo "$PARTITION" | tr -d "*" | tr -d "+" | crunch | cut -f 5 -d ' '`
      ALTNAME=""
      DEVICE=`echo "$PARTITION" | tr -d "*" | crunch | cut -f 1 -d ' '`
      if fgrep "$DEVICE " /tmp/SeTnative 1> /dev/null; then # it's been used
        ALTNAME="$DEVICE, Linux, ${SIZE}K"
      fi
      NAME=`echo $PARTITION | crunch | cut -f 1 -d ' '`
      if [ "$ALTNAME" = "" ]; then
        echo "\"$NAME\" \"Linux, ${SIZE}K\" \\" >> /tmp/tmpscript
      else
        echo "\"()\" \"$ALTNAME\" \\" >> /tmp/tmpscript
      fi
    done
    echo "\"---\" \"(ʤ, åȥåפ)\" \\" >> /tmp/tmpscript
    echo "\"---\" \"(ʤ, åȥåפ)\" \\" >> /tmp/tmpscript
    echo "\"---\" \"(ʤ, åȥåפ)\" \\" >> /tmp/tmpscript
    echo "\"---\" \"(ʤ, åȥåפ)\" \\" >> /tmp/tmpscript
    echo "2> /tmp/return" >> /tmp/tmpscript
    . /tmp/tmpscript
    if [ $? = 1 -o $? = 255 ]; then
      break;
    fi
    NEXT_PARTITION=`cat /tmp/return`
    if [ "$NEXT_PARTITION" = "---" ]; then
      break;
    elif [ "$NEXT_PARTITION" = "(in use)" ]; then
      continue;
    fi 
    SIZE=`probe -l | fgrep "$NEXT_PARTITION " | tr -d "*" | tr -d "+" | crunch | cut -f 5 -d ' '`
    dialog --title "ѡƥ$NEXT_PARTITIONΥեޥå" --menu \
"ޤΥѡƥ󤬥եޥåȤƤʤС \
եޥåȤʤФʤޤ: եޥåȤ \
ѡƥΤ٤ƤΥǡϾõޤ \
¸ΥѡƥѹΤʤ顤ư롼ȥǥ \
ǤϤʤ ϡɥǥ饻åȥåפ¹ԤƤ \
(ϡɥǥΥåȥåץץȵư/롼ȥǥ \
ΥåȥåץץϥС󤬰ۤʤޤ) \
ΥѡƥեޥåȤޤ? " 20 76 3 \
"Format" "åեޥå - Хåɥ֥åΥåϤޤ " \
"Check" "եޥå - Хåɥ֥ååޤ " \
"No" "ΥѡƥեޥåȤޤ " 2> /tmp/format
    if [ $? = 1 -o $? = 255 ]; then
      rm -f /tmp/format
      exit
    fi
    DOFORMAT="`cat /tmp/format`"
    rm -f /tmp/format
    if [ ! "$DOFORMAT" = "No" ]; then
      dialog --title "$NEXT_PARTITIONi-node̩٤" --menu \
"Ext2fsϥǥեȤǥǥ֤4096Х1Ĥi-node \n\
ƤƤޤǥ˾ʥե򤿤֤ \n\
顢i-nodeο䤷Ǥ礦(1Ĥi-node줾 \n\
ΥեΥȥȤƻȤޤ)i-node̩٤2048 \n\
1Ĥˤ1024ХȤ1Ĥѹ뤳ȤǤޤ \n\
'2048''1024'뤤ϥǥեȤ4096ХȤΤ줫 \n\
Ƥ \n\
: ǥեȤǤ4096ХȤϰŪʴĶͤǤ\n\
˥塼Ф᡼륵Фʤɡ4096ХȰʲΥե뤬\n\
¿֤褦ʥѡƥǤϡi-node2048Х\n\
1024ХȤˤǥλѸΨ褯ʤޤ\n\
褯ʬʤϥǥեȤΤޤޤˤƤޤ礦" 20 74 3 \
"4096" "4096ХȤ1 inode(ǥե)" \
"2048" "2048ХȤ1 inode" \
"1024" "1024ХȤ1 inode" 2> /tmp/density
      if [ $? = 1 -o $? = 255 ]; then
        rm -f /tmp/density
        exit
      fi
      DENSITY="`cat /tmp/density`"
      rm -f /tmp/density
      if [ ! "$DENSITY" = "2048" -a ! "$DENSITY" = "1024" ]; then
        DENSITY=4096
      fi
      INODE_DENSITY="i-node̩:1 i-node$DENSITYХ"
      dialog --title "եޥå" --infobox "$NEXT_PARTITIONեޥå  \n\
  1K ֥åΥ: $SIZE \n\
  ե륷ƥΥ: ext2 \n\
  $INODE_DENSITY " 6 60
      if mount | fgrep "$NEXT_PARTITION " 1> /dev/null 2> /dev/null ; then
        umount $ROOT_DEVICE 2> /dev/null
      fi
      if [ "$DOFORMAT" = "Check" ]; then
        mke2fs -c -i $DENSITY $NEXT_PARTITION 1> /dev/null 2> /dev/null
      else
        mke2fs -i $DENSITY $NEXT_PARTITION 1> /dev/null 2> /dev/null
      fi
    fi # doformat?
    dialog --title "$NEXT_PARTITIONΥޥȥݥȤ" --inputbox \
"Υѡƥǥ쥯ȥĥ꡼ΤɤإޥȤ뤫 \n\
ƤȤСѡƥ/usr/X11R6إޥȤ \n\
ʤ顢Τ褦Ƥ/usr/X11R6 \n\n\
$NEXT_PARTITIONɤإޥȤޤ" 12 70 2> /tmp/return
    if [ $? = 255 -o $? = 1 ]; then 
      exit 1
    fi
    MTPT=`cat /tmp/return`
    rm /tmp/return
    # Now, we need to mount the newly selected root device:
    sync
    if [ ! -d /mnt/$MTPT ]; then
      mkdir -p /mnt/$MTPT
    fi
    mount -t ext2 $NEXT_PARTITION /mnt/$MTPT 1> /dev/null 2> /dev/null
    echo "$NEXT_PARTITION       $MTPT        ext2        defaults   1   1" >> /tmp/SeTnative
  done # next partition loop
fi # more than one Linux partition
