X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=razf.c;h=e7499f9f61e6c2fae4ec71a5f4a500ed5b151fe8;hb=0b3418cf166ce4a58cedf0d9a2df5ec3dd4cc5fa;hp=ce8edb886797033a434423d68046fea9928ae481;hpb=d56f285da418ddbf9f3f33ab8ab247cfefc7b25c;p=samtools.git diff --git a/razf.c b/razf.c index ce8edb8..e7499f9 100644 --- a/razf.c +++ b/razf.c @@ -444,7 +444,8 @@ static RAZF* razf_open_r(int fd, int _load_index){ goto UNSEEKABLE; } #ifdef _USE_KNETFILE - if(knet_seek(fp, rz->end, SEEK_SET) != rz->end){ + knet_seek(fp, rz->end, SEEK_SET); + if(knet_tell(fp) != rz->end){ knet_seek(fp, rz->in, SEEK_SET); #else if(lseek(fd, rz->end, SEEK_SET) != rz->end){ @@ -497,7 +498,7 @@ static inline RAZF* _razf_open(const char *filename, const char *mode, int _load #ifdef _USE_KNETFILE knetFile *fd = knet_open(filename, "r"); if (fd == 0) { - fprintf(stderr, "[_razf_open] fail to open remote file %s\n", filename); + fprintf(stderr, "[_razf_open] fail to open %s\n", filename); return NULL; } #else @@ -511,9 +512,9 @@ static inline RAZF* _razf_open(const char *filename, const char *mode, int _load rz = razf_open_r(fd, _load_index); } else if(strstr(mode, "w")){ #ifdef _WIN32 - fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644); + fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0666); #else - fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644); + fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666); #endif if(fd < 0) return NULL; rz = razf_open_w(fd); @@ -536,8 +537,10 @@ int razf_get_data_size(RAZF *rz, int64_t *u_size, int64_t *c_size){ case FILE_TYPE_PLAIN: if(rz->end == 0x7fffffffffffffffLL){ #ifdef _USE_KNETFILE - if((n = knet_seek(rz->x.fpr, 0, SEEK_CUR)) == -1) return 0; - rz->end = knet_seek(rz->x.fpr, 0, SEEK_END); + if(knet_seek(rz->x.fpr, 0, SEEK_CUR) == -1) return 0; + n = knet_tell(rz->x.fpr); + knet_seek(rz->x.fpr, 0, SEEK_END); + rz->end = knet_tell(rz->x.fpr); knet_seek(rz->x.fpr, n, SEEK_SET); #else if((n = lseek(rz->filedes, 0, SEEK_CUR)) == -1) return 0; @@ -715,7 +718,8 @@ int64_t razf_jump(RAZF *rz, int64_t block_start, int block_offset){ rz->buf_off = rz->buf_len = 0; pos = block_start + block_offset; #ifdef _USE_KNETFILE - pos = knet_seek(rz->x.fpr, pos, SEEK_SET); + knet_seek(rz->x.fpr, pos, SEEK_SET); + pos = knet_tell(rz->x.fpr); #else pos = lseek(rz->filedes, pos, SEEK_SET); #endif @@ -741,7 +745,8 @@ int64_t razf_seek(RAZF* rz, int64_t pos, int where){ else if (where == SEEK_END) pos += rz->src_end; if(rz->file_type == FILE_TYPE_PLAIN){ #ifdef _USE_KNETFILE - seek_pos = knet_seek(rz->x.fpr, pos, SEEK_SET); + knet_seek(rz->x.fpr, pos, SEEK_SET); + seek_pos = knet_tell(rz->x.fpr); #else seek_pos = lseek(rz->filedes, pos, SEEK_SET); #endif