X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/record-dvb/blobdiff_plain/5c2e3e4489486a30d8f14338277de093b4d94cf0..6a3dc096fef9e1206f945640bd44ac3077096e54:/record-dvb.c diff --git a/record-dvb.c b/record-dvb.c index aa48bb4..45d2fcb 100644 --- a/record-dvb.c +++ b/record-dvb.c @@ -13,7 +13,7 @@ #include "http.h" #include "mcast.h" -#define CHUNKSIZE 8192 +#define CHUNKSIZE 1500 void record(int(*open_fn)(char *), char *url, char *outfile, int duration) { @@ -39,10 +39,12 @@ void record(int(*open_fn)(char *), char *url, char *outfile, int duration) do { if ((bytes = recv(in, buffer, CHUNKSIZE, 0)) < 1) { - perror("recv"); - exit(EXIT_FAILURE); + /* TODO: Insert better connection-loss recovery here */ + if ((in = (*open_fn)(url)) < 0) { + sleep(1); + continue; + } } - written = 0; do { if ((i = write(out, buffer, bytes-written)) < 0) { @@ -69,10 +71,10 @@ int main(int argc, char **argv) if (argc == 4) { url = argv[1]; - duration = atol(argv[2])*60; + duration = atoi(argv[2])*60; outfile = argv[3]; } else { - fprintf(stderr,"Syntax: %s URL duration outfile\n", argv[0]); + fprintf(stderr,"Syntax: %s URL duration_in_minutes outfile\n", argv[0]); exit(EXIT_FAILURE); }