]> git.donarmstrong.com Git - samtools.git/blobdiff - razf.c
works
[samtools.git] / razf.c
diff --git a/razf.c b/razf.c
index ce8edb886797033a434423d68046fea9928ae481..e7499f9f61e6c2fae4ec71a5f4a500ed5b151fe8 100644 (file)
--- 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