From: fredrik Date: Sat, 22 Oct 2005 03:49:41 +0000 (+0000) Subject: Cleanup and bugfixes(...). X-Git-Tag: 0.1~172 X-Git-Url: http://dolda2000.com/gitweb/?p=doldaconnect.git;a=commitdiff_plain;h=e374cdc38e25170addc8119d93ae4fa679e44693 Cleanup and bugfixes(...). git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@403 959494ce-11ee-0310-bf91-de5d638817bd --- diff --git a/config/speedrec.c b/config/speedrec.c index be0ed2d..6b1b5de 100644 --- a/config/speedrec.c +++ b/config/speedrec.c @@ -6,10 +6,9 @@ #include #include #include -#include #include -char buf[4096]; +char buf[65536]; volatile int eof; void sighandler(int sig) @@ -24,7 +23,6 @@ int main(int argc, char **argv) time_t starttime, endtime; long long numbytes; size_t datalen; - struct pollfd pfd[2]; FILE *recfile; int thisrec, numrecs, numuses, maxrec; int recs[5]; @@ -43,43 +41,17 @@ int main(int argc, char **argv) signal(SIGTERM, sighandler); while(1) { - pfd[0].fd = 0; - if(eof || (datalen >= sizeof(buf))) - pfd[0].events = 0; - else - pfd[0].events = POLLIN; - pfd[1].fd = 1; - if(datalen > 0) - pfd[1].events = POLLOUT; - else - pfd[1].events = 0; - pfd[0].revents = pfd[1].revents = 0; - ret = poll(pfd, 2, -1); + ret = read(0, buf, sizeof(buf)); if((ret < 0) && (errno != EINTR)) { - perror("cannot poll"); + perror("cannot read"); exit(1); } - if(pfd[0].revents & (POLLIN | POLLERR | POLLHUP | POLLNVAL)) - { - ret = read(0, buf + datalen, sizeof(buf) - datalen); - if((ret < 0) && (errno != EINTR)) - { - perror("cannot read"); - exit(1); - } - if(ret == 0) - eof = 1; - if(ret > 0) - { - datalen += ret; - if(starttime == 0) - starttime = time(NULL); - endtime = time(NULL); - } - numbytes += ret; - } - if(pfd[1].revents & (POLLOUT | POLLERR | POLLHUP | POLLNVAL)) + if((ret == 0) || eof) + break; + datalen = ret; + numbytes += ret; + while(datalen > 0) { ret = write(1, buf, datalen); if((ret < 0) && (errno != EINTR)) @@ -89,8 +61,6 @@ int main(int argc, char **argv) } memmove(buf, buf + ret, datalen -= ret); } - if(eof && (datalen == 0)) - break; } if((starttime == 0) || (endtime == 0) || (endtime == starttime)) exit(0);