The patch number 1214 was added via Christoph Pfister <[EMAIL PROTECTED]>
to http://linuxtv.org/hg/dvb-apps master development tree.
If anyone has any objections, please let us know by sending a message to:
[EMAIL PROTECTED]
------
gnutv: fix bogus errno check and survive dvr overflows
based on a patch by Andrea
http://www.linuxtv.org/pipermail/linux-dvb/2008-July/027176.html
---
util/gnutv/gnutv_data.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff -r 8457d7c5e4b3 -r 363d557af25b util/gnutv/gnutv_data.c
--- a/util/gnutv/gnutv_data.c Fri Jul 18 22:57:52 2008 +0200
+++ b/util/gnutv/gnutv_data.c Fri Jul 18 23:23:07 2008 +0200
@@ -220,19 +220,27 @@ static void *fileoutputthread_func(void*
pollfd.events = POLLIN|POLLPRI|POLLERR;
while(!outputthread_shutdown) {
- if (poll(&pollfd, 1, 1000) != 1)
+ if (poll(&pollfd, 1, 1000) == -1) {
+ if (errno == EINTR)
+ continue;
+ fprintf(stderr, "DVR device poll failure\n");
+ return 0;
+ }
+
+ if (pollfd.revents == 0)
continue;
- if (pollfd.revents & POLLERR) {
- if (errno == EINTR)
- continue;
- fprintf(stderr, "DVR device read failure\n");
- return 0;
- }
int size = read(dvrfd, buf, sizeof(buf));
if (size < 0) {
if (errno == EINTR)
continue;
+
+ if (errno == EOVERFLOW) {
+ // The error flag has been cleared, next read
should succeed.
+ fprintf(stderr, "DVR overflow\n");
+ continue;
+ }
+
fprintf(stderr, "DVR device read failure\n");
return 0;
}
---
Patch is available at:
http://linuxtv.org/hg/dvb-apps/rev/363d557af25bf4a5121075103be07b996aa16a1c
_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits