From: Jaroslav Kysela Date: Mon, 1 Dec 2008 10:32:50 +0000 (+0100) Subject: hda-analyzer: fixes for python 2.4 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=26ca71703ad18a868ee73abd158406aff98ca0ad;p=alsa.git hda-analyzer: fixes for python 2.4 --- diff --git a/hda-analyzer/hda_analyzer.py b/hda-analyzer/hda_analyzer.py index c117b1d..0c76be9 100755 --- a/hda-analyzer/hda_analyzer.py +++ b/hda-analyzer/hda_analyzer.py @@ -822,6 +822,9 @@ def main(): print "No HDA codecs were found or insufficient priviledges for " print "/dev/snd/controlC* and /dev/snd/hwdepC*D* device files." print + print "You may also check, if you compiled HDA driver with HWDEP" + print "interface as well." + print print "Try run this program as root user." else: HDAAnalyzer() diff --git a/hda-analyzer/hda_codec.py b/hda-analyzer/hda_codec.py index 01daa8d..9490b5e 100644 --- a/hda-analyzer/hda_codec.py +++ b/hda-analyzer/hda_codec.py @@ -16,12 +16,18 @@ import os import struct from fcntl import ioctl -IOCTL_INFO = 0x80dc4801 -IOCTL_PVERSION = 0x80044810 -IOCTL_VERB_WRITE = 0xc0084811 -IOCTL_GET_WCAPS = 0xc0084812 +def __ioctl_val(val): + # workaround for OverFlow bug in python 2.4 + if val & 0x80000000: + return -((val^0xffffffff)+1) + return val -CTL_IOCTL_CARD_INFO = 0x81785501 +IOCTL_INFO = __ioctl_val(0x80dc4801) +IOCTL_PVERSION = __ioctl_val(0x80044810) +IOCTL_VERB_WRITE = __ioctl_val(0xc0084811) +IOCTL_GET_WCAPS = __ioctl_val(0xc0084812) + +CTL_IOCTL_CARD_INFO = __ioctl_val(0x81785501) AC_NODE_ROOT = 0 @@ -1056,7 +1062,10 @@ def HDA_card_list(): result = [] for name in listdir('/dev/snd/'): if name.startswith('controlC'): - fd = os.open("/dev/snd/%s" % name, os.O_RDONLY) + try: + fd = os.open("/dev/snd/%s" % name, os.O_RDONLY) + except OSError, msg: + continue info = struct.pack('ii16s16s32s80s16s80s128s', 0, 0, '', '', '', '', '', '', '') res = ioctl(fd, CTL_IOCTL_CARD_INFO, info) a = struct.unpack('ii16s16s32s80s16s80s128s', res)