Blame alsa-info/alsa-info.sh

Packit 229ac0
#!/bin/bash
Packit 229ac0
Packit 229ac0
SCRIPT_VERSION=0.4.64
Packit 229ac0
CHANGELOG="http://www.alsa-project.org/alsa-info.sh.changelog"
Packit 229ac0
Packit 229ac0
#################################################################################
Packit 229ac0
#Copyright (C) 2007 Free Software Foundation.
Packit 229ac0
Packit 229ac0
#This program is free software; you can redistribute it and/or modify
Packit 229ac0
#it under the terms of the GNU General Public License as published by
Packit 229ac0
#the Free Software Foundation; either version 2 of the License, or
Packit 229ac0
#(at your option) any later version.
Packit 229ac0
Packit 229ac0
#This program is distributed in the hope that it will be useful,
Packit 229ac0
#but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 229ac0
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 229ac0
#GNU General Public License for more details.
Packit 229ac0
Packit 229ac0
#You should have received a copy of the GNU General Public License
Packit 229ac0
#along with this program; if not, write to the Free Software
Packit 229ac0
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
Packit 229ac0
Packit 229ac0
##################################################################################
Packit 229ac0
Packit 229ac0
# The script was written for 2 main reasons:
Packit 229ac0
#  1. Remove the need for the devs/helpers to ask several questions before we can easily help the user.
Packit 229ac0
#  2. Allow newer/inexperienced ALSA users to give us all the info we need to help them.
Packit 229ac0
Packit 229ac0
#Set the locale (this may or may not be a good idea.. let me know)
Packit 229ac0
export LC_ALL=C
Packit 229ac0
Packit 229ac0
# Change the PATH variable, so we can run lspci (needed for some distros)
Packit 229ac0
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin
Packit 229ac0
BGTITLE="ALSA-Info v $SCRIPT_VERSION"
Packit 229ac0
PASTEBINKEY="C9cRIO8m/9y8Cs0nVs0FraRx7U0pHsuc"
Packit 229ac0
Packit 229ac0
WGET=$(which wget 2>/dev/null | sed 's|^[^/]*||' 2>/dev/null)
Packit 229ac0
REQUIRES="mktemp grep pgrep whereis ping awk date uname cat dmesg amixer alsactl"
Packit 229ac0
Packit 229ac0
#
Packit 229ac0
# Define some simple functions
Packit 229ac0
#
Packit 229ac0
Packit 229ac0
pbcheck() {
Packit 229ac0
	[[ $UPLOAD = "no" ]] && return
Packit 229ac0
Packit 229ac0
	if [[ -z $PASTEBIN ]]; then
Packit 229ac0
		[[ $(ping -c1 www.alsa-project.org) ]] || KEEP_FILES="yes" UPLOAD="no" PBERROR="yes"
Packit 229ac0
	else
Packit 229ac0
		[[ $(ping -c1 www.pastebin.ca) ]] || KEEP_FILES="yes" UPLOAD="no" PBERROR="yes"
Packit 229ac0
	fi
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
update() {
Packit 229ac0
	test -z "$WGET" -o ! -x "$WGET" && return
Packit 229ac0
Packit 229ac0
	SHFILE=$(mktemp -t alsa-info.XXXXXXXXXX) || exit 1
Packit 229ac0
	wget -O $SHFILE "http://www.alsa-project.org/alsa-info.sh" >/dev/null 2>&1
Packit 229ac0
	REMOTE_VERSION=$(grep SCRIPT_VERSION $SHFILE | head -n1 | sed 's/.*=//')
Packit 229ac0
	if [ -s "$SHFILE" -a "$REMOTE_VERSION" != "$SCRIPT_VERSION" ]; then
Packit 229ac0
		if [[ -n $DIALOG ]]
Packit 229ac0
		then
Packit 229ac0
			OVERWRITE=
Packit 229ac0
			if [ -w $0 ]; then
Packit 229ac0
				dialog --yesno "Newer version of ALSA-Info has been found\n\nDo you wish to install it?\nNOTICE: The original file $0 will be overwritten!" 0 0
Packit 229ac0
				DIALOG_EXIT_CODE=$?
Packit 229ac0
				if [[ $DIALOG_EXIT_CODE = 0 ]]; then
Packit 229ac0
				  OVERWRITE=yes
Packit 229ac0
				fi
Packit 229ac0
			fi
Packit 229ac0
			if [ -z "$OVERWRITE" ]; then
Packit 229ac0
				dialog --yesno "Newer version of ALSA-Info has been found\n\nDo you wish to download it?" 0 0
Packit 229ac0
				DIALOG_EXIT_CODE=$?
Packit 229ac0
			fi
Packit 229ac0
			if [[ $DIALOG_EXIT_CODE = 0 ]]
Packit 229ac0
			then
Packit 229ac0
				echo "Newer version detected: $REMOTE_VERSION"
Packit 229ac0
				echo "To view the ChangeLog, please visit $CHANGELOG"
Packit 229ac0
				if [ "$OVERWRITE" = "yes" ]; then
Packit 229ac0
					cp $SHFILE $0
Packit 229ac0
					echo "ALSA-Info script has been updated to v $REMOTE_VERSION"
Packit 229ac0
					echo "Please re-run the script"
Packit 229ac0
					rm $SHFILE 2>/dev/null
Packit 229ac0
				else
Packit 229ac0
					echo "ALSA-Info script has been downloaded as $SHFILE."
Packit 229ac0
					echo "Please re-run the script from new location."
Packit 229ac0
				fi
Packit 229ac0
				exit
Packit 229ac0
			else
Packit 229ac0
				rm $SHFILE 2>/dev/null
Packit 229ac0
			fi
Packit 229ac0
		else
Packit 229ac0
			echo "Newer version detected: $REMOTE_VERSION"
Packit 229ac0
			echo "To view the ChangeLog, please visit $CHANGELOG"
Packit 229ac0
			if [ -w $0 ]; then
Packit 229ac0
				echo "The original file $0 will be overwritten!"
Packit 229ac0
				echo -n "If you do not like to proceed, press Ctrl-C now.." ; read inp
Packit 229ac0
				cp $SHFILE $0
Packit 229ac0
				echo "ALSA-Info script has been updated. Please re-run it."
Packit 229ac0
				rm $SHFILE 2>/dev/null
Packit 229ac0
			else
Packit 229ac0
				echo "ALSA-Info script has been downloaded $SHFILE."
Packit 229ac0
				echo "Please, re-run it from new location."
Packit 229ac0
			fi
Packit 229ac0
			exit
Packit 229ac0
		fi
Packit 229ac0
	else
Packit 229ac0
		rm $SHFILE 2>/dev/null
Packit 229ac0
	fi
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
cleanup() {
Packit 229ac0
	if [ -n "$TEMPDIR" -a "$KEEP_FILES" != "yes" ]; then
Packit 229ac0
		rm -rf "$TEMPDIR" 2>/dev/null
Packit 229ac0
	fi
Packit 229ac0
	test -n "$KEEP_OUTPUT" || rm -f "$NFILE"
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
Packit 229ac0
withaplay() {
Packit 229ac0
        echo "!!Aplay/Arecord output" >> $FILE
Packit 229ac0
        echo "!!--------------------" >> $FILE
Packit 229ac0
        echo "" >> $FILE
Packit 229ac0
       	echo "APLAY" >> $FILE
Packit 229ac0
	echo "" >> $FILE 
Packit 229ac0
	aplay -l >> $FILE 2>&1
Packit 229ac0
        echo "" >> $FILE
Packit 229ac0
       	echo "ARECORD" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
	arecord -l >> $FILE 2>&1
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
withlsmod() {
Packit 229ac0
	echo "!!All Loaded Modules" >> $FILE
Packit 229ac0
	echo "!!------------------" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
	lsmod | awk '{print $1}' >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
withamixer() {
Packit 229ac0
        echo "!!Amixer output" >> $FILE
Packit 229ac0
        echo "!!-------------" >> $FILE
Packit 229ac0
        echo "" >> $FILE
Packit 229ac0
	for i in $(grep "]: " /proc/asound/cards | awk -F ' ' '{ print $1 }') ; do
Packit 229ac0
		CARD_NAME=$(grep "^ *$i " $TEMPDIR/alsacards.tmp | awk '{ print $2 }')
Packit 229ac0
		echo "!!-------Mixer controls for card $i $CARD_NAME]" >> $FILE
Packit 229ac0
		echo "" >>$FILE
Packit 229ac0
		amixer -c$i info >> $FILE 2>&1
Packit 229ac0
		amixer -c$i >> $FILE 2>&1
Packit 229ac0
		echo "" >> $FILE
Packit 229ac0
	done
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
withalsactl() {
Packit 229ac0
	echo "!!Alsactl output" >> $FILE
Packit 229ac0
        echo "!!--------------" >> $FILE
Packit 229ac0
        echo "" >> $FILE
Packit 229ac0
	alsactl -f $TEMPDIR/alsactl.tmp store
Packit 229ac0
	echo "--startcollapse--" >> $FILE
Packit 229ac0
	cat $TEMPDIR/alsactl.tmp >> $FILE
Packit 229ac0
	echo "--endcollapse--" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
withdevices() {
Packit 229ac0
        echo "!!ALSA Device nodes" >> $FILE
Packit 229ac0
        echo "!!-----------------" >> $FILE
Packit 229ac0
        echo "" >> $FILE
Packit 229ac0
        ls -la /dev/snd/* >> $FILE
Packit 229ac0
        echo "" >> $FILE
Packit 229ac0
        echo "" >> $FILE
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
withconfigs() {
Packit 229ac0
if [[ -e $HOME/.asoundrc ]] || [[ -e /etc/asound.conf ]] || [[ -e $HOME/.asoundrc.asoundconf ]]; then
Packit 229ac0
        echo "!!ALSA configuration files" >> $FILE
Packit 229ac0
        echo "!!------------------------" >> $FILE
Packit 229ac0
        echo "" >> $FILE
Packit 229ac0
Packit 229ac0
        #Check for ~/.asoundrc
Packit 229ac0
        if [[ -e $HOME/.asoundrc ]]
Packit 229ac0
        then
Packit 229ac0
                echo "!!User specific config file (~/.asoundrc)" >> $FILE
Packit 229ac0
                echo "" >> $FILE
Packit 229ac0
                cat $HOME/.asoundrc >> $FILE
Packit 229ac0
                echo "" >> $FILE
Packit 229ac0
                echo "" >> $FILE
Packit 229ac0
        fi
Packit 229ac0
	#Check for .asoundrc.asoundconf (seems to be Ubuntu specific)
Packit 229ac0
	if [[ -e $HOME/.asoundrc.asoundconf ]]
Packit 229ac0
	then
Packit 229ac0
		echo "!!asoundconf-generated config file" >> $FILE
Packit 229ac0
		echo "" >> $FILE
Packit 229ac0
		cat $HOME/.asoundrc.asoundconf >> $FILE
Packit 229ac0
		echo "" >> $FILE
Packit 229ac0
		echo "" >> $FILE
Packit 229ac0
	fi
Packit 229ac0
        #Check for /etc/asound.conf
Packit 229ac0
        if [[ -e /etc/asound.conf ]]
Packit 229ac0
        then
Packit 229ac0
                echo "!!System wide config file (/etc/asound.conf)" >> $FILE
Packit 229ac0
                echo "" >> $FILE
Packit 229ac0
                cat /etc/asound.conf >> $FILE
Packit 229ac0
                echo "" >> $FILE
Packit 229ac0
                echo "" >> $FILE
Packit 229ac0
        fi
Packit 229ac0
fi
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
withsysfs() {
Packit 229ac0
    local i f
Packit 229ac0
    local printed=""
Packit 229ac0
    for i in /sys/class/sound/*; do
Packit 229ac0
	case "$i" in
Packit 229ac0
	    */hwC?D?)
Packit 229ac0
		if [ -f $i/init_pin_configs ]; then
Packit 229ac0
		    if [ -z "$printed" ]; then
Packit 229ac0
			echo "!!Sysfs Files" >> $FILE
Packit 229ac0
			echo "!!-----------" >> $FILE
Packit 229ac0
			echo "" >> $FILE
Packit 229ac0
		    fi
Packit 229ac0
		    for f in init_pin_configs driver_pin_configs user_pin_configs init_verbs hints; do
Packit 229ac0
			echo "$i/$f:" >> $FILE
Packit 229ac0
			cat $i/$f >> $FILE
Packit 229ac0
			echo >> $FILE
Packit 229ac0
		    done
Packit 229ac0
		    printed=yes
Packit 229ac0
		fi
Packit 229ac0
		;;
Packit 229ac0
	    esac
Packit 229ac0
    done
Packit 229ac0
    if [ -n "$printed" ]; then
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
    fi
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
withdmesg() {
Packit 229ac0
	echo "!!ALSA/HDA dmesg" >> $FILE
Packit 229ac0
	echo "!!--------------" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
	dmesg | grep -C1 -E 'ALSA|HDA|HDMI|snd[_-]|sound|hda.codec|hda.intel' >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
withall() {
Packit 229ac0
	withdevices
Packit 229ac0
	withconfigs
Packit 229ac0
	withaplay
Packit 229ac0
	withamixer
Packit 229ac0
	withalsactl
Packit 229ac0
	withlsmod
Packit 229ac0
	withsysfs
Packit 229ac0
	withdmesg
Packit 229ac0
	WITHALL="no"
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
get_alsa_library_version() {
Packit 229ac0
	ALSA_LIB_VERSION=$(grep VERSION_STR /usr/include/alsa/version.h 2>/dev/null | awk '{ print $3 }' | sed 's/"//g')
Packit 229ac0
Packit 229ac0
	if [ -z "$ALSA_LIB_VERSION" ]; then
Packit 229ac0
		if [ -f /etc/lsb-release ]; then
Packit 229ac0
			. /etc/lsb-release
Packit 229ac0
			case "$DISTRIB_ID" in
Packit 229ac0
				Ubuntu)
Packit 229ac0
					if which dpkg > /dev/null ; then
Packit 229ac0
						ALSA_LIB_VERSION=$(dpkg -l libasound2 | tail -1 | awk '{ print $3 }' | cut -f 1 -d -)
Packit 229ac0
					fi
Packit 229ac0
Packit 229ac0
					if [ "$ALSA_LIB_VERSION" = "<none>" ]; then
Packit 229ac0
						ALSA_LIB_VERSION=""
Packit 229ac0
					fi
Packit 229ac0
					return
Packit 229ac0
					;;
Packit 229ac0
				*)
Packit 229ac0
					return
Packit 229ac0
					;;
Packit 229ac0
			esac
Packit 229ac0
		elif [ -f /etc/debian_version ]; then
Packit 229ac0
			if which dpkg > /dev/null ; then
Packit 229ac0
				ALSA_LIB_VERSION=$(dpkg -l libasound2 | tail -1 | awk '{ print $3 }' | cut -f 1 -d -)
Packit 229ac0
			fi
Packit 229ac0
Packit 229ac0
			if [ "$ALSA_LIB_VERSION" = "<none>" ]; then
Packit 229ac0
				ALSA_LIB_VERSION=""
Packit 229ac0
			fi
Packit 229ac0
			return
Packit 229ac0
		fi
Packit 229ac0
	fi
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
# Basic requires
Packit 229ac0
for prg in $REQUIRES; do
Packit 229ac0
  t=$(which $prg 2> /dev/null)
Packit 229ac0
  if test -z "$t"; then
Packit 229ac0
    echo "This script requires $prg utility to continue."
Packit 229ac0
    exit 1
Packit 229ac0
  fi
Packit 229ac0
done
Packit 229ac0
Packit 229ac0
# Run checks to make sure the programs we need are installed.
Packit 229ac0
LSPCI=$(which lspci 2>/dev/null | sed 's|^[^/]*||' 2>/dev/null);
Packit 229ac0
TPUT=$(which tput 2>/dev/null | sed 's|^[^/]*||' 2>/dev/null);
Packit 229ac0
DIALOG=$(which dialog 2>/dev/null | sed 's|^[^/]*||' 2>/dev/null);
Packit 229ac0
Packit 229ac0
# Check to see if sysfs is enabled in the kernel. We'll need this later on
Packit 229ac0
SYSFS=$(mount | grep sysfs | awk '{ print $3 }');
Packit 229ac0
Packit 229ac0
# Check modprobe config files for sound related options
Packit 229ac0
SNDOPTIONS=$(modprobe -c|sed -n 's/^options \(snd[-_][^ ]*\)/\1:/p')
Packit 229ac0
Packit 229ac0
KEEP_OUTPUT=
Packit 229ac0
NFILE=""
Packit 229ac0
Packit 229ac0
PASTEBIN=""
Packit 229ac0
WWWSERVICE="www.alsa-project.org"
Packit 229ac0
WELCOME="yes"
Packit 229ac0
PROCEED="yes"
Packit 229ac0
UPLOAD="ask"
Packit 229ac0
REPEAT=""
Packit 229ac0
while [ -z "$REPEAT" ]; do
Packit 229ac0
REPEAT="no"
Packit 229ac0
case "$1" in
Packit 229ac0
	--update|--help|--about)
Packit 229ac0
		WELCOME="no"
Packit 229ac0
		PROCEED="no"
Packit 229ac0
		;;
Packit 229ac0
	--upload)
Packit 229ac0
		UPLOAD="yes"
Packit 229ac0
		WELCOME="no"
Packit 229ac0
		;;
Packit 229ac0
	--no-upload)
Packit 229ac0
		UPLOAD="no"
Packit 229ac0
		WELCOME="no"
Packit 229ac0
		;;
Packit 229ac0
	--pastebin)
Packit 229ac0
		PASTEBIN="yes"
Packit 229ac0
		WWWSERVICE="pastebin"
Packit 229ac0
		;;
Packit 229ac0
	--no-dialog)
Packit 229ac0
		DIALOG=""
Packit 229ac0
		REPEAT=""
Packit 229ac0
		shift
Packit 229ac0
		;;
Packit 229ac0
	--stdout)
Packit 229ac0
		DIALOG=""
Packit 229ac0
		UPLOAD="no"
Packit 229ac0
		WELCOME="no"
Packit 229ac0
		TOSTDOUT="yes"
Packit 229ac0
		;;
Packit 229ac0
esac
Packit 229ac0
done
Packit 229ac0
Packit 229ac0
Packit 229ac0
#Script header output.
Packit 229ac0
if [ "$WELCOME" = "yes" ]; then
Packit 229ac0
greeting_message="\
Packit 229ac0
Packit 229ac0
This script visits the following commands/files to collect diagnostic
Packit 229ac0
information about your ALSA installation and sound related hardware.
Packit 229ac0
Packit 229ac0
  dmesg
Packit 229ac0
  lspci
Packit 229ac0
  lsmod
Packit 229ac0
  aplay
Packit 229ac0
  amixer
Packit 229ac0
  alsactl
Packit 229ac0
  /proc/asound/
Packit 229ac0
  /sys/class/sound/
Packit 229ac0
  ~/.asoundrc (etc.)
Packit 229ac0
Packit 229ac0
See '$0 --help' for command line options.
Packit 229ac0
"
Packit 229ac0
if [ -n "$DIALOG" ]; then
Packit 229ac0
	dialog  --backtitle "$BGTITLE" \
Packit 229ac0
		--title "ALSA-Info script v $SCRIPT_VERSION" \
Packit 229ac0
		--msgbox "$greeting_message" 20 80
Packit 229ac0
else
Packit 229ac0
	echo "ALSA Information Script v $SCRIPT_VERSION"
Packit 229ac0
	echo "--------------------------------"
Packit 229ac0
	echo "$greeting_message"
Packit 229ac0
fi # dialog
Packit 229ac0
fi # WELCOME
Packit 229ac0
Packit 229ac0
# Set the output file
Packit 229ac0
TEMPDIR=$(mktemp -t -d alsa-info.XXXXXXXXXX) || exit 1
Packit 229ac0
FILE="$TEMPDIR/alsa-info.txt"
Packit 229ac0
if [ -z "$NFILE" ]; then
Packit 229ac0
	NFILE=$(mktemp -t alsa-info.txt.XXXXXXXXXX) || exit 1
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
trap cleanup 0
Packit 229ac0
Packit 229ac0
if [ "$PROCEED" = "yes" ]; then
Packit 229ac0
Packit 229ac0
if [ -z "$LSPCI" ]; then
Packit 229ac0
	if [ -d /sys/bus/pci ]; then
Packit 229ac0
		echo "This script requires lspci. Please install it, and re-run this script."
Packit 229ac0
		exit 0
Packit 229ac0
	fi
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
# Fetch the info and store in temp files/variables
Packit 229ac0
TSTAMP=$(LANG=C TZ=UTC date)
Packit 229ac0
DISTRO=$(grep -ihs "buntu\|SUSE\|Fedora\|PCLinuxOS\|MEPIS\|Mandriva\|Debian\|Damn\|Sabayon\|Slackware\|KNOPPIX\|Gentoo\|Zenwalk\|Mint\|Kubuntu\|FreeBSD\|Puppy\|Freespire\|Vector\|Dreamlinux\|CentOS\|Arch\|Xandros\|Elive\|SLAX\|Red\|BSD\|KANOTIX\|Nexenta\|Foresight\|GeeXboX\|Frugalware\|64\|SystemRescue\|Novell\|Solaris\|BackTrack\|KateOS\|Pardus" /etc/{issue,*release,*version})
Packit 229ac0
KERNEL_VERSION=$(uname -r)
Packit 229ac0
KERNEL_PROCESSOR=$(uname -p)
Packit 229ac0
KERNEL_MACHINE=$(uname -m)
Packit 229ac0
KERNEL_OS=$(uname -o)
Packit 229ac0
[[ $(uname -v | grep SMP) ]] && KERNEL_SMP="Yes" || KERNEL_SMP="No"
Packit 229ac0
ALSA_DRIVER_VERSION=$(cat /proc/asound/version | head -n1 | awk '{ print $7 }' | sed 's/\.$//')
Packit 229ac0
get_alsa_library_version
Packit 229ac0
ALSA_UTILS_VERSION=$(amixer -v | awk '{ print $3 }')
Packit 229ac0
Packit 229ac0
ESDINST=$(which esd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
Packit 229ac0
PAINST=$(which pulseaudio 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
Packit 229ac0
ARTSINST=$(which artsd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
Packit 229ac0
JACKINST=$(which jackd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
Packit 229ac0
ROARINST=$(which roard 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
Packit 229ac0
DMIDECODE=$(which dmidecode 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
Packit 229ac0
Packit 229ac0
#Check for DMI data
Packit 229ac0
if [ -d /sys/class/dmi/id ]; then
Packit 229ac0
    # No root privileges are required when using sysfs method
Packit 229ac0
    DMI_SYSTEM_MANUFACTURER=$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)
Packit 229ac0
    DMI_SYSTEM_PRODUCT_NAME=$(cat /sys/class/dmi/id/product_name 2>/dev/null)
Packit 229ac0
    DMI_SYSTEM_PRODUCT_VERSION=$(cat /sys/class/dmi/id/product_version 2>/dev/null)
Packit 229ac0
    DMI_SYSTEM_FIRMWARE_VERSION=$(cat /sys/class/dmi/id/bios_version 2>/dev/null)
Packit 229ac0
    DMI_BOARD_VENDOR=$(cat /sys/class/dmi/id/board_vendor 2>/dev/null)
Packit 229ac0
    DMI_BOARD_NAME=$(cat /sys/class/dmi/id/board_name 2>/dev/null)
Packit 229ac0
elif [ -x $DMIDECODE ]; then
Packit 229ac0
    DMI_SYSTEM_MANUFACTURER=$($DMIDECODE -s system-manufacturer 2>/dev/null)
Packit 229ac0
    DMI_SYSTEM_PRODUCT_NAME=$($DMIDECODE -s system-product-name 2>/dev/null)
Packit 229ac0
    DMI_SYSTEM_PRODUCT_VERSION=$($DMIDECODE -s system-version 2>/dev/null)
Packit 229ac0
    DMI_SYSTEM_FIRMWARE_VERSION=$($DMIDECODE -s bios-version 2>/dev/null)
Packit 229ac0
    DMI_BOARD_VENDOR=$($DMIDECODE -s baseboard-manufacturer 2>/dev/null)
Packit 229ac0
    DMI_BOARD_NAME=$($DMIDECODE -s baseboard-product-name 2>/dev/null)
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
# Check for ACPI device status
Packit 229ac0
if [ -d /sys/bus/acpi/devices ]; then
Packit 229ac0
    for f in /sys/bus/acpi/devices/*/status; do
Packit 229ac0
	ACPI_STATUS=$(cat $f 2>/dev/null);
Packit 229ac0
	if [[ "$ACPI_STATUS" -ne 0 ]]; then
Packit 229ac0
	    echo $f $'\t' $ACPI_STATUS >>$TEMPDIR/acpidevicestatus.tmp;
Packit 229ac0
	fi
Packit 229ac0
    done
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
cat /proc/asound/modules 2>/dev/null | awk '{ print $2 }' > $TEMPDIR/alsamodules.tmp
Packit 229ac0
cat /proc/asound/cards > $TEMPDIR/alsacards.tmp
Packit 229ac0
if [[ ! -z "$LSPCI" ]]; then
Packit 229ac0
  lspci | grep -i "multi\|audio">$TEMPDIR/lspci.tmp
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
#Check for HDA-Intel cards codec#*
Packit 229ac0
cat /proc/asound/card*/codec\#* > $TEMPDIR/alsa-hda-intel.tmp 2> /dev/null
Packit 229ac0
Packit 229ac0
#Check for AC97 cards codec
Packit 229ac0
cat /proc/asound/card*/codec97\#0/ac97\#0-0 > $TEMPDIR/alsa-ac97.tmp 2> /dev/null
Packit 229ac0
cat /proc/asound/card*/codec97\#0/ac97\#0-0+regs > $TEMPDIR/alsa-ac97-regs.tmp 2> /dev/null
Packit 229ac0
Packit 229ac0
#Check for USB mixer setup
Packit 229ac0
cat /proc/asound/card*/usbmixer > $TEMPDIR/alsa-usbmixer.tmp 2> /dev/null
Packit 229ac0
Packit 229ac0
#Fetch the info, and put it in $FILE in a nice readable format.
Packit 229ac0
if [[ -z $PASTEBIN ]]; then
Packit 229ac0
echo "upload=true&script=true&cardinfo=" > $FILE
Packit 229ac0
else
Packit 229ac0
echo "name=$USER&type=33&description=/tmp/alsa-info.txt&expiry=&s=Submit+Post&content=" > $FILE
Packit 229ac0
fi
Packit 229ac0
echo "!!################################" >> $FILE
Packit 229ac0
echo "!!ALSA Information Script v $SCRIPT_VERSION" >> $FILE
Packit 229ac0
echo "!!################################" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "!!Script ran on: $TSTAMP" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "!!Linux Distribution" >> $FILE
Packit 229ac0
echo "!!------------------" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo $DISTRO >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "!!DMI Information" >> $FILE
Packit 229ac0
echo "!!---------------" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "Manufacturer:      $DMI_SYSTEM_MANUFACTURER" >> $FILE
Packit 229ac0
echo "Product Name:      $DMI_SYSTEM_PRODUCT_NAME" >> $FILE
Packit 229ac0
echo "Product Version:   $DMI_SYSTEM_PRODUCT_VERSION" >> $FILE
Packit 229ac0
echo "Firmware Version:  $DMI_SYSTEM_FIRMWARE_VERSION" >> $FILE
Packit 229ac0
echo "Board Vendor:      $DMI_BOARD_VENDOR" >> $FILE
Packit 229ac0
echo "Board Name:        $DMI_BOARD_NAME" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "!!ACPI Device Status Information" >> $FILE
Packit 229ac0
echo "!!---------------" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
cat $TEMPDIR/acpidevicestatus.tmp >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "!!Kernel Information" >> $FILE
Packit 229ac0
echo "!!------------------" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "Kernel release:    $KERNEL_VERSION" >> $FILE
Packit 229ac0
echo "Operating System:  $KERNEL_OS" >> $FILE
Packit 229ac0
echo "Architecture:      $KERNEL_MACHINE" >> $FILE
Packit 229ac0
echo "Processor:         $KERNEL_PROCESSOR" >> $FILE
Packit 229ac0
echo "SMP Enabled:       $KERNEL_SMP" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "!!ALSA Version" >> $FILE
Packit 229ac0
echo "!!------------" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "Driver version:     $ALSA_DRIVER_VERSION" >> $FILE
Packit 229ac0
echo "Library version:    $ALSA_LIB_VERSION" >> $FILE
Packit 229ac0
echo "Utilities version:  $ALSA_UTILS_VERSION" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "!!Loaded ALSA modules" >> $FILE
Packit 229ac0
echo "!!-------------------" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
cat $TEMPDIR/alsamodules.tmp >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "!!Sound Servers on this system" >> $FILE
Packit 229ac0
echo "!!----------------------------" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
if [[ -n $PAINST ]];then
Packit 229ac0
[[ $(pgrep '^(.*/)?pulseaudio$') ]] && PARUNNING="Yes" || PARUNNING="No"
Packit 229ac0
echo "Pulseaudio:" >> $FILE
Packit 229ac0
echo "      Installed - Yes ($PAINST)" >> $FILE
Packit 229ac0
echo "      Running - $PARUNNING" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
if [[ -n $ESDINST ]];then
Packit 229ac0
[[ $(pgrep '^(.*/)?esd$') ]] && ESDRUNNING="Yes" || ESDRUNNING="No"
Packit 229ac0
echo "ESound Daemon:" >> $FILE
Packit 229ac0
echo "      Installed - Yes ($ESDINST)" >> $FILE
Packit 229ac0
echo "      Running - $ESDRUNNING" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
if [[ -n $ARTSINST ]];then
Packit 229ac0
[[ $(pgrep '^(.*/)?artsd$') ]] && ARTSRUNNING="Yes" || ARTSRUNNING="No"
Packit 229ac0
echo "aRts:" >> $FILE
Packit 229ac0
echo "      Installed - Yes ($ARTSINST)" >> $FILE
Packit 229ac0
echo "      Running - $ARTSRUNNING" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
if [[ -n $JACKINST ]];then
Packit 229ac0
[[ $(pgrep '^(.*/)?jackd$') ]] && JACKRUNNING="Yes" || JACKRUNNING="No"
Packit 229ac0
echo "Jack:" >> $FILE
Packit 229ac0
echo "      Installed - Yes ($JACKINST)" >> $FILE
Packit 229ac0
echo "      Running - $JACKRUNNING" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
if [[ -n $ROARINST ]];then
Packit 229ac0
[[ $(pgrep '^(.*/)?roard$') ]] && ROARRUNNING="Yes" || ROARRUNNING="No"
Packit 229ac0
echo "RoarAudio:" >> $FILE
Packit 229ac0
echo "      Installed - Yes ($ROARINST)" >> $FILE
Packit 229ac0
echo "      Running - $ROARRUNNING" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
if [[ -z "$PAINST" && -z "$ESDINST" && -z "$ARTSINST" && -z "$JACKINST" && -z "$ROARINST" ]];then
Packit 229ac0
echo "No sound servers found." >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "!!Soundcards recognised by ALSA" >> $FILE
Packit 229ac0
echo "!!-----------------------------" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
cat $TEMPDIR/alsacards.tmp >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
Packit 229ac0
if [[ ! -z "$LSPCI" ]]; then
Packit 229ac0
echo "!!PCI Soundcards installed in the system" >> $FILE
Packit 229ac0
echo "!!--------------------------------------" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
cat $TEMPDIR/lspci.tmp >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "!!Advanced information - PCI Vendor/Device/Subsystem ID's" >> $FILE
Packit 229ac0
echo "!!-------------------------------------------------------" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
lspci -vvn |grep -A1 040[1-3] >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
if [ "$SNDOPTIONS" ]
Packit 229ac0
then
Packit 229ac0
echo "!!Modprobe options (Sound related)" >> $FILE
Packit 229ac0
echo "!!--------------------------------" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
modprobe -c|sed -n 's/^options \(snd[-_][^ ]*\)/\1:/p' >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
if [ -d "$SYSFS" ]; then
Packit 229ac0
	echo "!!Loaded sound module options" >> $FILE
Packit 229ac0
	echo "!!---------------------------" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
	for mod in $(cat /proc/asound/modules | awk '{ print $2 }'); do
Packit 229ac0
		echo "!!Module: $mod" >> $FILE
Packit 229ac0
		for params in $(echo $SYSFS/module/$mod/parameters/*); do
Packit 229ac0
			echo -ne "\t"
Packit 229ac0
			value=$(cat $params)
Packit 229ac0
			echo "$params : $value" | sed 's:.*/::'
Packit 229ac0
		done >> $FILE
Packit 229ac0
		echo "" >> $FILE
Packit 229ac0
	done
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
if [ -s "$TEMPDIR/alsa-hda-intel.tmp" ]; then
Packit 229ac0
	echo "!!HDA-Intel Codec information" >> $FILE
Packit 229ac0
	echo "!!---------------------------" >> $FILE
Packit 229ac0
	echo "--startcollapse--" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
	cat $TEMPDIR/alsa-hda-intel.tmp >> $FILE
Packit 229ac0
	echo "--endcollapse--" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
if [ -s "$TEMPDIR/alsa-ac97.tmp" ]; then
Packit 229ac0
        echo "!!AC97 Codec information" >> $FILE
Packit 229ac0
        echo "!!----------------------" >> $FILE
Packit 229ac0
        echo "--startcollapse--" >> $FILE
Packit 229ac0
        echo "" >> $FILE
Packit 229ac0
        cat $TEMPDIR/alsa-ac97.tmp >> $FILE
Packit 229ac0
        echo "" >> $FILE
Packit 229ac0
        cat $TEMPDIR/alsa-ac97-regs.tmp >> $FILE
Packit 229ac0
        echo "--endcollapse--" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
if [ -s "$TEMPDIR/alsa-usbmixer.tmp" ]; then
Packit 229ac0
        echo "!!USB Mixer information" >> $FILE
Packit 229ac0
        echo "!!---------------------" >> $FILE
Packit 229ac0
        echo "--startcollapse--" >> $FILE
Packit 229ac0
        echo "" >> $FILE
Packit 229ac0
        cat $TEMPDIR/alsa-usbmixer.tmp >> $FILE
Packit 229ac0
        echo "--endcollapse--" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
	echo "" >> $FILE
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
#If no command line options are specified, then run as though --with-all was specified
Packit 229ac0
if [ -z "$1" ]; then
Packit 229ac0
	update
Packit 229ac0
	pbcheck	
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
fi # proceed
Packit 229ac0
Packit 229ac0
#loop through command line arguments, until none are left.
Packit 229ac0
if [ -n "$1" ]; then
Packit 229ac0
	until [ -z "$1" ]
Packit 229ac0
	do
Packit 229ac0
	case "$1" in
Packit 229ac0
		--pastebin)
Packit 229ac0
		        update
Packit 229ac0
        		pbcheck
Packit 229ac0
			;;
Packit 229ac0
		--update)
Packit 229ac0
			update
Packit 229ac0
			exit
Packit 229ac0
			;;
Packit 229ac0
		--upload)
Packit 229ac0
			UPLOAD="yes"
Packit 229ac0
			;;
Packit 229ac0
		--no-upload)
Packit 229ac0
			UPLOAD="no"
Packit 229ac0
			;;
Packit 229ac0
		--output)
Packit 229ac0
			shift
Packit 229ac0
			NFILE="$1"
Packit 229ac0
			KEEP_OUTPUT="yes"
Packit 229ac0
			;;
Packit 229ac0
		--debug)
Packit 229ac0
			echo "Debugging enabled. $FILE and $TEMPDIR will not be deleted"
Packit 229ac0
			KEEP_FILES="yes"
Packit 229ac0
			echo ""
Packit 229ac0
			;;
Packit 229ac0
		--with-all)
Packit 229ac0
			withall
Packit 229ac0
			;;
Packit 229ac0
		--with-aplay)
Packit 229ac0
			withaplay
Packit 229ac0
			WITHALL="no"
Packit 229ac0
			;;
Packit 229ac0
		--with-amixer)
Packit 229ac0
			withamixer
Packit 229ac0
			WITHALL="no"
Packit 229ac0
			;;
Packit 229ac0
		--with-alsactl)
Packit 229ac0
			withalsactl
Packit 229ac0
			WITHALL="no"
Packit 229ac0
			;;
Packit 229ac0
		--with-devices)
Packit 229ac0
			withdevices
Packit 229ac0
			WITHALL="no"
Packit 229ac0
			;;
Packit 229ac0
		--with-dmesg)
Packit 229ac0
			withdmesg
Packit 229ac0
			WITHALL="no"
Packit 229ac0
			;;
Packit 229ac0
		--with-configs)
Packit 229ac0
			WITHALL="no"
Packit 229ac0
			if [[ -e $HOME/.asoundrc ]] || [[ -e /etc/asound.conf ]]
Packit 229ac0
			then
Packit 229ac0
				echo "!!ALSA configuration files" >> $FILE
Packit 229ac0
				echo "!!------------------------" >> $FILE
Packit 229ac0
				echo "" >> $FILE
Packit 229ac0
Packit 229ac0
				#Check for ~/.asoundrc
Packit 229ac0
				if [[ -e $HOME/.asoundrc ]]
Packit 229ac0
				then
Packit 229ac0
					echo "!!User specific config file ($HOME/.asoundrc)" >> $FILE
Packit 229ac0
					echo "" >> $FILE
Packit 229ac0
					cat $HOME/.asoundrc >> $FILE
Packit 229ac0
					echo "" >> $FILE
Packit 229ac0
					echo "" >> $FILE
Packit 229ac0
				fi
Packit 229ac0
Packit 229ac0
				#Check for /etc/asound.conf
Packit 229ac0
				if [[ -e /etc/asound.conf ]]
Packit 229ac0
				then
Packit 229ac0
					echo "!!System wide config file (/etc/asound.conf)" >> $FILE
Packit 229ac0
					echo "" >> $FILE
Packit 229ac0
					cat /etc/asound.conf >> $FILE
Packit 229ac0
					echo "" >> $FILE
Packit 229ac0
					echo "" >> $FILE
Packit 229ac0
				fi
Packit 229ac0
			fi
Packit 229ac0
			;;
Packit 229ac0
		--stdout)
Packit 229ac0
			UPLOAD="no"
Packit 229ac0
			if [ -z "$WITHALL" ]; then
Packit 229ac0
				withall
Packit 229ac0
			fi
Packit 229ac0
			cat $FILE
Packit 229ac0
			rm $FILE
Packit 229ac0
			;;
Packit 229ac0
		--about)
Packit 229ac0
			echo "Written/Tested by the following users of #alsa on irc.freenode.net:"
Packit 229ac0
			echo ""
Packit 229ac0
			echo "	wishie - Script author and developer / Testing"
Packit 229ac0
			echo "	crimsun - Various script ideas / Testing"
Packit 229ac0
			echo "	gnubien - Various script ideas / Testing"
Packit 229ac0
			echo "	GrueMaster - HDA Intel specific items / Testing"
Packit 229ac0
			echo "	olegfink - Script update function"
Packit 229ac0
			echo "  TheMuso - display to stdout functionality"
Packit 229ac0
			exit 0
Packit 229ac0
			;;
Packit 229ac0
		*)
Packit 229ac0
			echo "alsa-info.sh version $SCRIPT_VERSION"
Packit 229ac0
			echo ""
Packit 229ac0
			echo "Available options:"
Packit 229ac0
			echo "	--with-aplay (includes the output of aplay -l)"
Packit 229ac0
			echo "	--with-amixer (includes the output of amixer)"
Packit 229ac0
			echo "	--with-alsactl (includes the output of alsactl)"
Packit 229ac0
			echo "	--with-configs (includes the output of ~/.asoundrc and"
Packit 229ac0
			echo "	    /etc/asound.conf if they exist)" 
Packit 229ac0
			echo "	--with-devices (shows the device nodes in /dev/snd/)"
Packit 229ac0
			echo "	--with-dmesg (shows the ALSA/HDA kernel messages)"
Packit 229ac0
			echo ""
Packit 229ac0
			echo "	--output FILE (specify the file to output for no-upload mode)"
Packit 229ac0
			echo "	--update (check server for script updates)"
Packit 229ac0
			echo "	--upload (upload contents to remote server)"
Packit 229ac0
			echo "	--no-upload (do not upload contents to remote server)"
Packit 229ac0
			echo "	--pastebin (use http://pastebin.ca) as remote server"
Packit 229ac0
			echo "	    instead www.alsa-project.org"
Packit 229ac0
			echo "	--stdout (print alsa information to standard output"
Packit 229ac0
			echo "	    instead of a file)"
Packit 229ac0
			echo "	--about (show some information about the script)"
Packit 229ac0
			echo "	--debug (will run the script as normal, but will not"
Packit 229ac0
			echo "	     delete $FILE)"
Packit 229ac0
			exit 0
Packit 229ac0
			;;
Packit 229ac0
	esac
Packit 229ac0
	shift 1
Packit 229ac0
	done
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
if [ "$PROCEED" = "no" ]; then
Packit 229ac0
	exit 1
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
if [ -z "$WITHALL" ]; then
Packit 229ac0
	withall
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
if [ "$UPLOAD" = "ask" ]; then
Packit 229ac0
	if [ -n "$DIALOG" ]; then
Packit 229ac0
		dialog --backtitle "$BGTITLE" --title "Information collected" --yes-label " UPLOAD / SHARE " --no-label " SAVE LOCALLY " --defaultno --yesno "\n\nAutomatically upload ALSA information to $WWWSERVICE?" 10 80
Packit 229ac0
		DIALOG_EXIT_CODE=$?
Packit 229ac0
		if [ $DIALOG_EXIT_CODE != 0 ]; then
Packit 229ac0
			UPLOAD="no"
Packit 229ac0
		else
Packit 229ac0
			UPLOAD="yes"
Packit 229ac0
		fi
Packit 229ac0
	else
Packit 229ac0
		echo -n "Automatically upload ALSA information to $WWWSERVICE? [y/N] : "
Packit 229ac0
		read -e CONFIRM
Packit 229ac0
		if [ "$CONFIRM" != "y" ]; then
Packit 229ac0
			UPLOAD="no"
Packit 229ac0
		else
Packit 229ac0
			UPLOAD="yes"
Packit 229ac0
		fi
Packit 229ac0
	fi
Packit 229ac0
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
if [ "$UPLOAD" = "no" ]; then
Packit 229ac0
Packit 229ac0
	if [ -z "$TOSTDOUT" ]; then
Packit 229ac0
		mv -f $FILE $NFILE || exit 1
Packit 229ac0
		KEEP_OUTPUT="yes"
Packit 229ac0
	fi
Packit 229ac0
Packit 229ac0
	if [[ -n $DIALOG ]]
Packit 229ac0
	then
Packit 229ac0
		if [[ -n $PBERROR ]]; then
Packit 229ac0
			dialog --backtitle "$BGTITLE" --title "Information collected" --msgbox "An error occurred while contacting the $WWWSERVICE.\n Your information was NOT automatically uploaded.\n\nYour ALSA information is in $NFILE" 10 100
Packit 229ac0
		else
Packit 229ac0
			dialog --backtitle "$BGTITLE" --title "Information collected" --msgbox "\n\nYour ALSA information is in $NFILE" 10 60
Packit 229ac0
		fi
Packit 229ac0
	else
Packit 229ac0
		echo
Packit 229ac0
Packit 229ac0
		if [[ -n $PBERROR ]]; then
Packit 229ac0
			echo "An error occurred while contacting the $WWWSERVICE."
Packit 229ac0
			echo "Your information was NOT automatically uploaded."
Packit 229ac0
			echo ""
Packit 229ac0
			echo "Your ALSA information is in $NFILE"
Packit 229ac0
			echo ""
Packit 229ac0
		else
Packit 229ac0
			if [ -z "$TOSTDOUT" ]; then
Packit 229ac0
				echo ""
Packit 229ac0
				echo "Your ALSA information is in $NFILE"
Packit 229ac0
				echo ""
Packit 229ac0
			fi
Packit 229ac0
		fi
Packit 229ac0
	fi
Packit 229ac0
Packit 229ac0
	exit
Packit 229ac0
Packit 229ac0
fi # UPLOAD
Packit 229ac0
Packit 229ac0
# Test that wget is installed, and supports --post-file. Upload $FILE if it does, and prompt user to upload file if it does not.
Packit 229ac0
if [[ -n "${WGET}" ]] && [[ -x "${WGET}" ]] && [[ $(wget --help | grep post-file) ]]
Packit 229ac0
then
Packit 229ac0
Packit 229ac0
if [[ -n $DIALOG ]]
Packit 229ac0
then
Packit 229ac0
Packit 229ac0
if [[ -z $PASTEBIN ]]; then
Packit 229ac0
	wget -O - --tries=5 --timeout=60 --post-file=$FILE "http://www.alsa-project.org/cardinfo-db/" &>$TEMPDIR/wget.tmp || echo "Upload failed; exit"
Packit 229ac0
	{ for i in 10 20 30 40 50 60 70 80 90; do
Packit 229ac0
		echo $i
Packit 229ac0
		sleep 0.2
Packit 229ac0
	done
Packit 229ac0
	echo; } |dialog --backtitle "$BGTITLE" --guage "Uploading information to www.alsa-project.org ..." 6 70 0
Packit 229ac0
else
Packit 229ac0
	wget -O - --tries=5 --timeout=60 --post-file=$FILE "http://pastebin.ca/quiet-paste.php?api=$PASTEBINKEY&encrypt=t&encryptpw=blahblah" &>$TEMPDIR/wget.tmp || echo "Upload failed; exit"
Packit 229ac0
	{ for i in 10 20 30 40 50 60 70 80 90; do
Packit 229ac0
		echo $i
Packit 229ac0
		sleep 0.2
Packit 229ac0
	done
Packit 229ac0
	echo; } |dialog --backtitle "$BGTITLE" --guage "Uploading information to www.pastebin.ca ..." 6 70 0
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
dialog --backtitle "$BGTITLE" --title "Information uploaded" --yesno "Would you like to see the uploaded information?" 5 100 
Packit 229ac0
DIALOG_EXIT_CODE=$?
Packit 229ac0
if [ $DIALOG_EXIT_CODE = 0 ]; then
Packit 229ac0
	grep -v "alsa-info.txt" $FILE > $TEMPDIR/uploaded.txt
Packit 229ac0
	dialog --backtitle "$BGTITLE" --textbox $TEMPDIR/uploaded.txt 0 0
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
clear
Packit 229ac0
Packit 229ac0
# no dialog
Packit 229ac0
else
Packit 229ac0
Packit 229ac0
if [[ -z $PASTEBIN ]]; then
Packit 229ac0
	echo -n "Uploading information to www.alsa-project.org ... " 
Packit 229ac0
	wget -O - --tries=5 --timeout=60 --post-file=$FILE http://www.alsa-project.org/cardinfo-db/ &>$TEMPDIR/wget.tmp &
Packit 229ac0
else
Packit 229ac0
	echo -n "Uploading information to www.pastebin.ca ... " 
Packit 229ac0
	wget -O - --tries=5 --timeout=60 --post-file=$FILE http://pastebin.ca/quiet-paste.php?api=$PASTEBINKEY &>$TEMPDIR/wget.tmp &
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
#Progess spinner for wget transfer.
Packit 229ac0
i=1
Packit 229ac0
sp="/-\|"
Packit 229ac0
echo -n ' '
Packit 229ac0
while pgrep wget &>/dev/null
Packit 229ac0
do
Packit 229ac0
	echo -en "\b${sp:i++%${#sp}:1}"
Packit 229ac0
done
Packit 229ac0
Packit 229ac0
echo -e "\b Done!"
Packit 229ac0
echo ""
Packit 229ac0
Packit 229ac0
fi # dialog
Packit 229ac0
Packit 229ac0
# See if tput is available, and use it if it is.
Packit 229ac0
if [ -n "$TPUT" ]; then
Packit 229ac0
	if [[ -z $PASTEBIN ]]; then
Packit 229ac0
		FINAL_URL=$(tput setaf 1; grep "SUCCESS:" $TEMPDIR/wget.tmp | cut -d ' ' -f 2 ; tput sgr0)
Packit 229ac0
	else
Packit 229ac0
		FINAL_URL=$(tput setaf 1; grep "SUCCESS:" $TEMPDIR/wget.tmp | sed -n 's/.*\:\([0-9]\+\).*/http:\/\/pastebin.ca\/\1/p'; tput sgr0)
Packit 229ac0
	fi
Packit 229ac0
else
Packit 229ac0
	if [[ -z $PASTEBIN ]]; then
Packit 229ac0
		FINAL_URL=$(grep "SUCCESS:" $TEMPDIR/wget.tmp | cut -d ' ' -f 2)
Packit 229ac0
	else
Packit 229ac0
		FINAL_URL=$(grep "SUCCESS:" $TEMPDIR/wget.tmp | sed -n 's/.*\:\([0-9]\+\).*/http:\/\/pastebin.ca\/\1/p')
Packit 229ac0
	fi
Packit 229ac0
fi
Packit 229ac0
Packit 229ac0
# Output the URL of the uploaded file.	
Packit 229ac0
echo "Your ALSA information is located at $FINAL_URL"
Packit 229ac0
echo "Please inform the person helping you."
Packit 229ac0
echo ""
Packit 229ac0
Packit 229ac0
# We couldnt find a suitable wget, so tell the user to upload manually.
Packit 229ac0
else
Packit 229ac0
	mv -f $FILE $NFILE || exit 1
Packit 229ac0
	KEEP_OUTPUT="yes"
Packit 229ac0
	if [[ -z $DIALOG ]]
Packit 229ac0
	then
Packit 229ac0
		if [[ -z $PASTEBIN ]]; then
Packit 229ac0
		echo ""
Packit 229ac0
		echo "Could not automatically upload output to http://www.alsa-project.org"
Packit 229ac0
		echo "Possible reasons are:"
Packit 229ac0
		echo "    1. Couldnt find 'wget' in your PATH"
Packit 229ac0
		echo "    2. Your version of wget is less than 1.8.2"
Packit 229ac0
		echo ""
Packit 229ac0
		echo "Please manually upload $NFILE to http://www.alsa-project.org/cardinfo-db/ and submit your post."
Packit 229ac0
		echo ""
Packit 229ac0
		else
Packit 229ac0
		echo ""
Packit 229ac0
		echo "Could not automatically upload output to http://www.pastebin.ca"
Packit 229ac0
		echo "Possible reasons are:"
Packit 229ac0
		echo "    1. Couldnt find 'wget' in your PATH"
Packit 229ac0
		echo "    2. Your version of wget is less than 1.8.2"
Packit 229ac0
		echo ""
Packit 229ac0
		echo "Please manually upload $NFILE to http://www.pastebin.ca/upload.php and submit your post."
Packit 229ac0
		echo ""
Packit 229ac0
		fi
Packit 229ac0
	else
Packit 229ac0
		if [[ -z $PASTEBIN ]]; then
Packit 229ac0
			dialog --backtitle "$BGTITLE" --msgbox "Could not automatically upload output to http://www.alsa-project.org.\nPossible reasons are:\n\n    1. Couldn't find 'wget' in your PATH\n    2. Your version of wget is less than 1.8.2\n\nPlease manually upload $NFILE to http://www.alsa-project,org/cardinfo-db/ and submit your post." 25 100
Packit 229ac0
		else
Packit 229ac0
			dialog --backtitle "$BGTITLE" --msgbox "Could not automatically upload output to http://www.pastebin.ca.\nPossible reasons are:\n\n    1. Couldn't find 'wget' in your PATH\n    2. Your version of wget is less than 1.8.2\n\nPlease manually upload $NFILE to http://www.pastebin.ca/upload.php and submit your post." 25 100
Packit 229ac0
		fi
Packit 229ac0
	fi
Packit 229ac0
fi