X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=samtools.git;a=blobdiff_plain;f=knetfile.c;h=1e2c042701de0fec88212f563ff4862da6fcad93;hp=994babb6a384e2757098bd6b042970a4dd54a801;hb=78c7059ff49802b06e7318fb6ad9a0908e80903b;hpb=317f5e8dd22cc9e1e5e05fbcaeb3b9aca7447351 diff --git a/knetfile.c b/knetfile.c index 994babb..1e2c042 100644 --- a/knetfile.c +++ b/knetfile.c @@ -38,9 +38,7 @@ #include #include -#ifdef _WIN32 -#include -#else +#ifndef _WIN32 #include #include #include @@ -519,7 +517,10 @@ off_t knet_read(knetFile *fp, void *buf, off_t len) if (fp->type == KNF_TYPE_LOCAL) { // on Windows, the following block is necessary; not on UNIX off_t rest = len, curr; while (rest) { - curr = read(fp->fd, buf + l, rest); + do { + curr = read(fp->fd, buf + l, rest); + } while (curr < 0 && EINTR == errno); + if (curr < 0) return -1; if (curr == 0) break; l += curr; rest -= curr; } @@ -566,7 +567,7 @@ off_t knet_seek(knetFile *fp, int64_t off, int whence) else if (whence==SEEK_SET) fp->offset = off; fp->is_ready = 0; - return fp->offset; + return 0; } errno = EINVAL; fprintf(stderr,"[knet_seek] %s\n", strerror(errno));