return -1;
}
fp->offset = offset;
- return fp->offset;
+ return 0;
}
else if (fp->type == KNF_TYPE_FTP)
{
else if ( whence==SEEK_END)
fp->offset = fp->file_size+off;
fp->is_ready = 0;
- return fp->offset;
+ return 0;
}
else if (fp->type == KNF_TYPE_HTTP)
{
- if (whence == SEEK_END) { // FIXME: we can surely allow SEEK_CUR and SEEK_END in future
- fprintf(stderr, "[knet_seek] SEEK_END is supported for HTTP. Offset is unchanged.\n");
+ if (whence == SEEK_END) { // FIXME: can we allow SEEK_END in future?
+ fprintf(stderr, "[knet_seek] SEEK_END is not supported for HTTP. Offset is unchanged.\n");
return -1;
}
if (whence==SEEK_CUR)
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