X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=config%2Fspeedrec.c;fp=config%2Fspeedrec.c;h=0000000000000000000000000000000000000000;hb=7df0ddad481bb2e644bba361d0d3defdbd68494e;hp=4638e33c8b9eff7a4c781fb15f18e4cc8d69517f;hpb=d6af9cf30349e4c09b4e9e60342bf1ddd142abd1;p=doldaconnect.git diff --git a/config/speedrec.c b/config/speedrec.c deleted file mode 100644 index 4638e33..0000000 --- a/config/speedrec.c +++ /dev/null @@ -1,107 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -char buf[65536]; -volatile int eof; - -void sighandler(int sig) -{ - eof = 1; -} - -int main(int argc, char **argv) -{ - int i; - int ret, fd; - time_t starttime, endtime; - long long numbytes; - size_t datalen; - FILE *recfile; - int thisrec, numrecs, numuses, maxrec; - int recs[5]; - - if(argc < 2) - { - fprintf(stderr, "usage: speedrec recfile\n"); - exit(1); - } - numbytes = 0; - starttime = endtime = 0; - datalen = 0; - eof = 0; - signal(SIGHUP, sighandler); - signal(SIGINT, sighandler); - signal(SIGTERM, sighandler); - while(1) - { - ret = read(0, buf, sizeof(buf)); - if((ret < 0) && (errno != EINTR)) - { - perror("cannot read"); - exit(1); - } - if((ret == 0) || eof) - break; - if(starttime == 0) - starttime = time(NULL); - endtime = time(NULL); - datalen = ret; - numbytes += ret; - while(datalen > 0) - { - ret = write(1, buf, datalen); - if((ret < 0) && (errno != EINTR)) - { - perror("cannot write"); - exit(1); - } - memmove(buf, buf + ret, datalen -= ret); - } - } - if((starttime == 0) || (endtime == 0) || (endtime == starttime)) - exit(0); - if(numbytes == 0) - exit(0); - thisrec = (int)(numbytes / ((long long)(endtime - starttime))); - if((fd = open(argv[1], O_RDWR | O_CREAT, 0666)) < 0) - { - perror(argv[1]); - exit(1); - } - recfile = fdopen(fd, "r+"); - close(0); - close(1); - flock(fd, LOCK_EX); - if(fscanf(recfile, "%i\n", &numuses) < 1) - numuses = 0; - if(fscanf(recfile, "%i\n", &maxrec) < 1) - maxrec = 0; - if(fscanf(recfile, "%i\n", &numrecs) < 1) - numrecs = 0; - for(i = 0; i < numrecs; i++) - fscanf(recfile, "%i\n", &recs[i]); - if(numrecs == 5) - { - for(i = 0; i < 4; i++) - recs[i] = recs[i + 1]; - numrecs = 4; - } - recs[numrecs++] = thisrec; - rewind(recfile); - ftruncate(fd, 0); - fprintf(recfile, "%i\n", numuses + 1); - fprintf(recfile, "%i\n", (thisrec > maxrec)?thisrec:maxrec); - fprintf(recfile, "%i\n", numrecs); - for(i = 0; i < numrecs; i++) - fprintf(recfile, "%i\n", recs[i]); - flock(fd, LOCK_UN); - fclose(recfile); - return(0); -}