Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2013
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.84 KB | None | 0 0
  1. #!/bin/bash
  2. OrderCards() {
  3. Abase="/etc/modprobe.d/alsa-base.conf"
  4. AudioRules="/etc/udev/rules.d/85-linuxmce-audio.rules"
  5. CardOrder=$(cat /proc/asound/modules | awk '{print $2}')
  6. CardModules=$(uniq <<< "$CardOrder")
  7. NumberCardMods=$(echo "$CardModules" | while read each; do
  8.     echo "$each $(grep "$each" /proc/asound/modules | wc -l)" | sed 's/_/-/g'
  9. done)
  10. CardModules=$(sed 's/_/-/g' <<< "$CardModules")
  11. CurrentAconfig=$(grep "LinuxMCE" -A20 "$Abase" | grep -v "LinuxMCE" | awk '{print $2}')
  12.  
  13. if [[ -n "$CurrentAconfig" ]]; then
  14.     # If our module load order does not match our loaded modules, start section fresh.
  15.     if [[ "$CardModules" != "$CurrentAconfig" ]] || [[ $(awk '{print $2}' <<< "$NumberCardMods" | paste -sd+ | bc) -ne $(wc -l <<< "$CardOrder") ]]; then
  16.         sed -i '/.*Added.*LinuxMCE.*/,/.*End.*LinuxMCE.*/d' "$Abase"
  17.         echo "### Added module load order by LinuxMCE ###" >> "$Abase"
  18.     else
  19.         # If they match, leave... our work is done.
  20.         return
  21.     fi
  22. else
  23.     echo "" >> "$Abase"
  24.     echo "### Added module load order by LinuxMCE ###" >> "$Abase"
  25. fi
  26.  
  27. local ModOrder=$(grep -E "(.*index=[0-9]|.*index=[0-9][0-9])" "$Abase" | sed 's/.*,//g' | sort -n | tail -1)
  28. if [[ -z "$ModOrder" ]]; then
  29.     ModOrder=0
  30. else
  31.     # Incriment existing highest module order number
  32.     ((ModOrder++))
  33. fi
  34.  
  35. echo "$NumberCardMods" | awk '{print $1}' | while read EachModule; do
  36.     Acurrent="options ${EachModule} index"
  37.     if [[ -n "$Acurrent" ]]; then
  38.         sed -i "/${Acurrent}=-2*/d;/.*index=${ModOrder}/d" "$Abase"
  39.     fi
  40.  
  41.     if ! grep -q "${Acurrent}" "$Abase"; then
  42.         EachModuleNumber=$(grep "$EachModule" <<< "$NumberCardMods" | awk '{print $2}')
  43.  
  44.         if [[ "$EachModuleNumber" -gt "1" ]]; then
  45.             ((EachModuleNumber--))
  46.             ModMax=$(($ModOrder+$EachModuleNumber))
  47.             for ((i="$ModOrder"; i<="$ModMax"; i++)); do
  48.                 str="$str$i,"
  49.             done < <(grep PATH /etc/profile)
  50.             ModNumber="${str%,}"
  51.             echo "${Acurrent}=${ModNumber}" >> "$Abase"
  52.             ModOrder=$(sed 's/^.*\(.\)$/\1/' <<< "$ModNumber")
  53.             ((ModOrder++))
  54.         else
  55.             echo "${Acurrent}=${ModOrder}" >> "$Abase"
  56.             ((ModOrder++))
  57.         fi
  58.     fi
  59. done
  60. echo "### End add by LinuxMCE ###" >> "$Abase"
  61.  
  62. if [[ -f "$AudioRules" ]]; then
  63.     rm "$AudioRules"
  64. fi
  65.  
  66. /usr/pluto/bin/RestartALSA.sh
  67. CardNumbers=$(cat /proc/asound/modules | awk '{print $1}')
  68. cat <<EOL> "$AudioRules"
  69. SUBSYSTEM!="sound", GOTO="linuxmce_audio_end"
  70. ACTION!="add", GOTO="linuxmce_audio_end"
  71.  
  72. EOL
  73.  
  74. echo "$CardNumbers" | while read each; do
  75. DevPath=$(udevadm info -a -p /sys/class/sound/card${each} | grep -wo "/devices.*card${each}")
  76. echo "DEVPATH==\"${DevPath}\", KERNEL=\"card${each}\"" >> "$AudioRules"
  77. done
  78.  
  79. cat <<EOL>> "$AudioRules"
  80.  
  81. LABEL="linuxmce_audio_end"
  82. EOL
  83. }
  84.  
  85. OrderCards
  86. if [[ "$CardModules" != "$CurrentAconfig" ]] || [[ $(awk '{print $2}' <<< "$NumberCardMods" | paste -sd+ | bc) -ne $(wc -l <<< "$CardOrder") ]]; then
  87.     OrderCards
  88. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement