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){
#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
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);
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;
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
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