# $Header: /home/cvsd/magellan-cvs/magellan-src/installer/gtk-gui/diskpartition.sh,v 1.3 2008-09-24 10:44:21 niro Exp $
export PARTITION_DRIVE_LIST='
data/header.png
550250SELECTED_DISK
read_disk.sh
'
export SETUP_PARTITION='
data/header.png
echo "${SELECTED_DISK}"
40175FILESYSTEMext2ext3reiserfsswap40175MOUNTPOINT//boot/home/tmp/usr/var/svr/optswap
'
query_partition_disk_setup()
{
local i
local partition
local filesystem
local mountpoint
local command="$1"
local given_partition="$2"
#
#--overwrite
for i in ${PARTITION_DISK_SETUP}
do
partition=$(echo ${i} | cut -d: -f1)
filesystem=$(echo ${i} | cut -d: -f2)
mountpoint=$(echo ${i} | cut -d: -f3)
if [[ ${partition} = ${given_partition} ]]
then
case ${command} in
--filesystem) echo "${filesystem}"; return 0;;
--mountpoint) echo "${mountpoint}"; return 0;;
--delete) export PARTITION_DISK_SETUP="${PARTITION_DISK_SETUP/${i}/}"; return 0;;
esac
fi
done
}
edit_disk_or_partition()
{
if [[ ! -z ${SELECTED_DISK} ]]
then
${sudo} gparted ${SELECTED_DISK}
rundialog_partition_drive_list
else
rundialog_setup_partition
fi
}
# needed to be available in the gtk-dialog
export -f edit_disk_or_partition
rundialog_partition_drive_list()
{
rundialog PARTITION_DRIVE_LIST
echo "DEBUG: EXIT='${EXIT}'"
# save given variables in env
# they will be shown as default on error
export SELECTED_DISK
export PARTITION_DISK_SETUP
# convert to some useable vars
local disk
local mount
local fs
for disk in ${PARTITION_DISK_SETUP}
do
disk="$(echo ${disk} | cut -d: -f1)"
mount=$(query_partition_disk_setup --mountpoint ${disk})
fs=$(query_partition_disk_setup --filesystem ${disk})
case ${mount} in
/)
export PARTITION_DISK_ROOT="${disk}"
export PARTITION_FS_ROOT="${fs}"
;;
/boot)
export PARTITION_DISK_BOOT="${disk}"
export PARTITION_FS_BOOT="${fs}"
;;
/home)
export PARTITION_DISK_HOME="${disk}"
export PARTITION_FS_HOME="${fs}"
;;
/tmp)
export PARTITION_DISK_TMP="${disk}"
export PARTITION_FS_TMP="${fs}"
;;
/usr)
export PARTITION_DISK_USER="${disk}"
export PARTITION_FS_USER="${fs}"
;;
/var)
export PARTITION_DISK_VAR="${disk}"
export PARTITION_FS_VAR="${fs}"
;;
/svr)
export PARTITION_DISK_SVR="${disk}"
export PARTITION_FS_SVR="${fs}"
;;
/opt)
export PARTITION_DISK_OPT="${disk}"
export PARTITION_FS_OPT="${fs}"
;;
swap)
export PARTITION_DISK_SWAP="${disk}"
export PARTITION_FS_SWAP="swap"
;;
esac
done
case ${EXIT} in
abort)
echo "Aborted by user."
exit 1
;;
back)
# placeholder
return 1
;;
next)
if [[ -z ${PARTITION_DISK_ROOT} ]] || [[ -z ${PARTITION_DISK_SWAP} ]]
then
FAILURE_MESSAGE="You must at least select root (/) and a swap (SWAP) partition!" \
rundialog FAILURE_DIALOG
rundialog_partition_drive_list
fi
;;
edit)
# a partition without a number must be the disk
if [[ ${SELECTED_DISK/[0-9]/} = ${SELECTED_DISK} ]]
then
${sudo} gparted ${SELECTED_DISK}
rundialog_partition_drive_list
else
rundialog_setup_partition
fi
;;
esac
}
rundialog_setup_partition()
{
rundialog SETUP_PARTITION
# delete stanza
query_partition_disk_setup --delete "${SELECTED_DISK}"
# set the new
export PARTITION_DISK_SETUP="${PARTITION_DISK_SETUP} ${SELECTED_DISK}:${FILESYSTEM}:${MOUNTPOINT}"
rundialog_partition_drive_list
}
# needed to be available in the gtk-dialog
export -f rundialog_setup_partition
main_diskpartition()
{
rundialog_partition_drive_list
# export all variables
export PARTITION_DISK_SETUP
export PARTITION_FS_SETUP
export PARTITION_DISK_ROOT
export PARTITION_FS_ROOT
export PARTITION_DISK_BOOT
export PARTITION_FS_BOOT
export PARTITION_DISK_HOME
export PARTITION_FS_HOME
export PARTITION_DISK_TMP
export PARTITION_FS_TMP
export PARTITION_DISK_USER
export PARTITION_FS_USER
export PARTITION_DISK_VAR
export PARTITION_FS_VAR
export PARTITION_DISK_SVR
export PARTITION_FS_SVR
export PARTITION_DISK_OPT
export PARTITION_FS_OPT
export PARTITION_DISK_SWAP
export PARTITION_FS_SWAP
}