X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/record-dvb/blobdiff_plain/8447845ff6a909797551483cab14a24e5bcf7888..c0833e33c10e0e92bf94fa8f80bee08cf9e764b4:/record-dvb.c diff --git a/record-dvb.c b/record-dvb.c index d87d3e7..5a055b8 100644 --- a/record-dvb.c +++ b/record-dvb.c @@ -6,13 +6,16 @@ #include #include #include +#include #include #include #include +#include #include "http.h" #include "mcast.h" #include "sap.h" +#include "common.h" #define CHUNKSIZE 3000 #define GTOD_INTERVAL 100 @@ -25,6 +28,9 @@ void record(int(*open_fn)(char *), char *url, char *outfile, int duration) int error_sleep = 0; char buffer[CHUNKSIZE]; int in, out; + fd_set rfds; + struct timeval tv; + int retval; if ((in = (*open_fn)(url)) < 0) { fprintf(stderr,"Can't open url %s!\n",url); @@ -60,6 +66,22 @@ void record(int(*open_fn)(char *), char *url, char *outfile, int duration) } } + FD_ZERO(&rfds); + FD_SET(in, &rfds); + + tv.tv_sec = 1; + tv.tv_usec = 0; + + if ((retval = select(in + 1, &rfds, NULL, NULL, &tv)) == -1) { + error_sleep = 1; + continue; + } + + if (!retval) { + gettimeofday(&curr, NULL); + continue; + } + if ((recvd = recv(in, buffer, CHUNKSIZE, 0)) < 1) { error_sleep = 1; continue; @@ -98,7 +120,7 @@ int main(int argc, char **argv) exit(EXIT_FAILURE); } - if (!is_http(url) && !is_mcast(url)) { + if (!is_url(url)) { char *service_url; if ((service_url = get_url_from_sap(url))) { printf("SAP says: '%s' -> %s\n", url, service_url);