Blame alsa-info/alsa-info.sh

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