aboutsummaryrefslogtreecommitdiffstats
path: root/plugin_dvb.c
diff options
context:
space:
mode:
authormichael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2009-01-04 07:07:21 +0000
committermichael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2009-01-04 07:07:21 +0000
commit08113c6e015330b6d5993d462c3d455722176fd0 (patch)
tree40663a70798b5098aa27c4d829c3b8a5ef68ab2c /plugin_dvb.c
parentca7492e18311fe099c9094e648deccabc480bf5c (diff)
downloadlcd4linux-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 'plugin_dvb.c')
-rw-r--r--plugin_dvb.c34
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);