summaryrefslogblamecommitdiffstats
path: root/disk/FUNCTIONS
blob: 696eca9232c55197defe80359d11d6f61c6b72dc (plain) (tree)
1
2
3
4



                                                                      























































                                                                                        




                                                                      


                                                
 



                                                                                                                
                                  
                                                            




































                                                                                    






























                                                                                                                          
. /etc/sysconfig/devices

#---------------------------------------------------------------------
##
## @param module filename
## Add a file in /etc/modules.d to get some modules autoloaded
##
#---------------------------------------------------------------------
function add_module_autoload()
{
  local MODULE_FILENAME=${1##*/}
  
  if  [  ! -f  $INSTALL_ROOT/etc/modules.d/$MODULE_FILENAME  ];  then
    mkdir  -p  $INSTALL_ROOT/etc/modules.d  &&
    cp     $1  $INSTALL_ROOT/etc/modules.d
  fi  &&

  local MOD="$INSTALL_ROOT/etc/modules.conf"
  local INC="include  /etc/modules.d/$MODULE_FILENAME"

  grep    -q  "$INC"      $MOD  ||
  echo        "$INC"  >>  $MOD

  # Avoid that -b option of depmod takes the kernel version as the path for /lib/modules
  if [ -z $INSTALL_ROOT ]; then
    depmod  -a  -C $MOD $(get_kernel_version)
  else
    depmod  -a  -C $MOD -b $INSTALL_ROOT $(get_kernel_version)
  fi
}

#---------------------------------------------------------------------
##
## @param module filename
## Add a file in /etc/modules.d to get some modules autoloaded
##
#---------------------------------------------------------------------
function remove_module_autoload()
{
  local MODULE_FILENAME=${1##*/}

  local MOD="$INSTALL_ROOT/etc/modules.conf"
  local TMP="$INSTALL_ROOT/tmp/modules.conf"
  local INC="include  /etc/modules.d/$MODULE_FILENAME"

  cp           $MOD   $TMP  &&
  grep    -v  "$INC"  $TMP  >  $MOD  &&
  rm                  $TMP  &&
  rm                  $INSTALL_ROOT/etc/modules.d/$MODULE_FILENAME
  
  # Avoid that -b option of depmod takes the kernel version as the path for /lib/modules
  if [ -z $INSTALL_ROOT ]; then
    depmod  -a  -C $MOD $(get_kernel_version)
  else
    depmod  -a  -C $MOD -b $INSTALL_ROOT $(get_kernel_version)
  fi
}

#---------------------------------------------------------------------
##
## Detects cd recorders and list them on standard output
##
#---------------------------------------------------------------------
function cdr_detect()
{
  local CDROM_INFO_FILE=/proc/sys/dev/cdrom/info
  local CDR_MATCH_STRING="Can write CD-R:"
  local CDROM_DEVICES_MATCH_STRING="drive name:"

  local CDROM_DEVICES_STRING=$(grep "${CDROM_DEVICES_MATCH_STRING}" ${CDROM_INFO_FILE} | tr -d ' ' | tr -s '\t')
  local CDR_STRING=$(grep "${CDR_MATCH_STRING}" ${CDROM_INFO_FILE} | tr -d ' ' | tr -s '\t')
  local CD_RECORDER
  
  if  [ -n "${CDR_STRING}" ]; then
    local NUM_CDROM_DEVICES=$(echo "${CDR_STRING}" | wc -w )

    for i in $(seq 2 $NUM_CDROM_DEVICES); do
      if [ $(echo "${CDR_STRING}" | cut -f$i) = 1 ]; then
        CD_RECORDER=$(echo "${CDROM_DEVICES_STRING}" | cut -f$i)
        echo "$CD_RECORDER"
      fi
    done
  else
    echo "Unable to detect CD-R recorder"
    return 1
  fi
  return 0
}

#---------------------------------------------------------------------
## @param group name allowed to burn
##
## Check permission for cdrom recorders
##
#---------------------------------------------------------------------
function check_cdr_perms()
{
  local CDR_DEVICES=$("cdr_detect")

  if [ $? == 0 ]; then
    case ${DEVICES} in
      static) for DEV in $CDR_DEVICES; do
                message "Changing permissions for cdrom recorder device /dev/${DEV}"
                if [ $1 == "burning" ]; then
                  chmod 0660 "/dev/${DEV}"
                  chown root:burning "/dev/${DEV}"
                else
                  chmod 0600 "/dev/${DEV}"
                  chown root:root "/dev/${DEV}"
                fi
              done
              ;;
      udev)   ;; # Udev default rules handle this now
      esac
  else
    message "No CD recorder device found, please adjust its permissions manually"
  fi
}

#---------------------------------------------------------------------
## @param permissions type, must be {burning_group_users_with_suid_bit,burning_group_users,root_only}
## @param program name
## Check permission for cdrom recorders
##
#---------------------------------------------------------------------
function apply_cdr_perms()
{
  case $1 in
    burning_group_users_with_suid_bit)  create_group burning
                                        chown  root:burning $2
                                        chmod  4710 $2
                                        check_cdr_perms burning
                                        message "\nDon't forget to add the users allowed to burn in the burning group\n";;
    burning_group_users)                create_group burning
                                        chown  root:burning $2
                                        chmod  0750 $2
                                        check_cdr_perms burning
                                        message "\nDon't forget to add the users allowed to burn in the burning group\n";;
    root_only)                          chown  root:root $2
                                        chmod  0700 $2
                                        check_cdr_perms root;;
  esac
}