diff options
| author | michael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2009-01-04 07:07:21 +0000 | 
|---|---|---|
| committer | michael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2009-01-04 07:07:21 +0000 | 
| commit | 08113c6e015330b6d5993d462c3d455722176fd0 (patch) | |
| tree | 40663a70798b5098aa27c4d829c3b8a5ef68ab2c | |
| parent | ca7492e18311fe099c9094e648deccabc480bf5c (diff) | |
| download | lcd4linux-08113c6e015330b6d5993d462c3d455722176fd0.tar.gz | |
disable unimplemented ioctls
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@937 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
Diffstat (limited to '')
| -rw-r--r-- | plugin_dvb.c | 34 | 
1 files changed, 26 insertions, 8 deletions
| diff --git a/plugin_dvb.c b/plugin_dvb.c index 95715ad..783519a 100644 --- a/plugin_dvb.c +++ b/plugin_dvb.c @@ -64,6 +64,8 @@ static HASH DVB;  static int get_dvb_stats(void)  { +    static int ioc_disable = 0; +      int age;      int fd;      unsigned short snr, sig; @@ -82,24 +84,40 @@ static int get_dvb_stats(void)  	return -1;      } -    if (ioctl(fd, FE_READ_SIGNAL_STRENGTH, &sig) != 0) { +    sig = 0; +    if ((ioc_disable & 0x01) == 0 && ioctl(fd, FE_READ_SIGNAL_STRENGTH, &sig) != 0) {  	error("ioctl(FE_READ_SIGNAL_STRENGTH) failed: %s", strerror(errno)); -	sig = 0; +	if (errno == ENOSYS) { +	  ioc_disable |= 0x01; +	  error("ioctl(FE_READ_SIGNAL_STRENGTH) disabled."); +	}      } -    if (ioctl(fd, FE_READ_SNR, &snr) != 0) { +    snr = 0; +    if ((ioc_disable & 0x02) == 0 && ioctl(fd, FE_READ_SNR, &snr) != 0) {  	error("ioctl(FE_READ_SNR) failed: %s", strerror(errno)); -	snr = 0; +	if (errno == ENOSYS) { +	  ioc_disable |= 0x02; +	  error("ioctl(FE_READ_SNR) disabled."); +	}      } -    if (ioctl(fd, FE_READ_BER, &ber) != 0) { +    ber = 0; +    if ((ioc_disable & 0x04) == 0 && ioctl(fd, FE_READ_BER, &ber) != 0) {  	error("ioctl(FE_READ_BER) failed: %s", strerror(errno)); -	ber = 0; +	if (errno == ENOSYS) { +	  ioc_disable |= 0x04; +	  error("ioctl(FE_READ_BER) disabled."); +	}      } -    if (ioctl(fd, FE_READ_UNCORRECTED_BLOCKS, &ucb) != 0) { +    ucb = 0; +    if ((ioc_disable & 0x08) == 0 && ioctl(fd, FE_READ_UNCORRECTED_BLOCKS, &ucb) != 0) {  	error("ioctl(FE_READ_UNCORRECTED_BLOCKS) failed: %s", strerror(errno)); -	ucb = 0; +	if (errno == ENOSYS) { +	  ioc_disable |= 0x08; +	  error("ioctl(FE_READ_UNCORRECTED_BLOCKS) disabled."); +	}      }      close(fd); | 
