#! /bin/sh #---------------------------------------------------------------------------- # system-devices-mount-cdrom - mount CDROM # # Creation : 2003-07-19 fm # Last Update: $Id$ # # Copyright (c) 2003-@@YEAR@@ the eisfair team, team(at)eisfair(dot)org # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- . /var/install/include/eislib CHOOSE=/var/install/bin/choose mountpath=/media/cdrom echo # --------------------------------------------------------------------------- # check cdrom # --------------------------------------------------------------------------- check_cdrom() { # check modules if ! lsmod | grep -q '^sr_mod' then /sbin/modprobe sr_mod >/dev/null 2>&1 sleep 2 fi # get installed cdrom devices _cd_devices=$(cat /proc/sys/dev/cdrom/info | awk -F: '/drive name:/ { print $2 }') _cd_nr=$(echo ${_cd_devices} | sed 's/ /\n/' | wc -l) # clear devices cdrom='' # only, found more then one cd devices if [ ${_cd_nr} -gt 1 ] then CD_ROWS=0 for j in ${_cd_devices} do # close eject -t /dev/${j} case ${j} in s*) sleep 10 ;; esac # check if medium exists in cd drive label="$(blkid /dev/${j} | sed 's|.*LABEL="\(.*\)" TYPE.*$|\1|')" if [ -n "${label}" ] then CD_ROWS=$(expr ${CD_ROWS} + 1) eval cdrom_${CD_ROWS}='"${j}"' eval CD_${CD_ROWS}_1=\"${j}\" eval CD_${CD_ROWS}_2='\"${label}\"' export CD_${CD_ROWS}_1 export CD_${CD_ROWS}_2 fi done CD_TITLE='Located CD or DVD media' CD_FLAGS='--indent 12 --spread' CD_COLS='6 40' CD_QUESTION='Select' export CD_TITLE export CD_FLAGS export CD_COLS export CD_QUESTION export CD_ROWS # show selction only if more then one medium found if [ ${CD_ROWS} -gt 1 ] then _ask_tmpfile=$(/bin/mktemp -t XXXXXXXXXXXXX) ${CHOOSE} CD 1 > ${_ask_tmpfile} rc=${?} read answer < ${_ask_tmpfile} rm -f ${_ask_tmpfile} # if ask break, ask returned 255 if [ ${rc} = 255 ] then answer=0 fi case ${answer} in '') rm -f ${tmp} exit 0 ;; 0) rm -f ${tmp} exit 127 ;; *) eval cdrom='$cdrom_'${answer} ;; esac else eval cdrom='$cdrom_'1 fi else cdrom=${_cd_devices} fi # create link to /dev/cdrom if [ -n "${cdrom}" ] then _pwd=$(pwd) cd /dev rm -f cdrom ln -sf ${cdrom} cdrom cd ${_pwd} fi } # --------------------------------------------------------------------------- # mount cdrom # --------------------------------------------------------------------------- mount_cdrom() { echo if [ -e /dev/cdrom ] then mount -r -t iso9660 /dev/cdrom ${mountpath} if [ ${?} -eq 0 ] then mecho -n --info "mount successful, path is " mecho "${mountpath}." else mecho --error "mount failed." fi else mecho --error "no /dev/cdrom found" fi } # --------------------------------------------------------------------------- # main # --------------------------------------------------------------------------- if mount | grep -q '/cdrom' then mecho -n "${mountpath} " mecho --warn "already mounted." echo anykey exit 0 fi check_cdrom mount_cdrom echo anykey exit 0 # --------------------------------------------------------------------------- # end # ---------------------------------------------------------------------------