# $Header: /home/cvsd/magellan-cvs/magellan-src/installer/gtk-gui/diskpartition.sh,v 1.2 2008-09-22 22:04:55 niro Exp $ export PARTITION_DRIVE_LIST=' header.png 550250 SELECTED_DISK read_disk.sh ' export SETUP_PARTITION=' header.png echo "${SELECTED_DISK}" 40175 FILESYSTEM ext2 ext3 reiserfs swap 40175 MOUNTPOINT / /boot /home /tmp /usr /var /svr /opt swap ' 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 }