diff options
Diffstat (limited to 'src/input/input_http.c')
-rw-r--r-- | src/input/input_http.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/input/input_http.c b/src/input/input_http.c index 1fbe13133..f180bc292 100644 --- a/src/input/input_http.c +++ b/src/input/input_http.c @@ -582,10 +582,18 @@ static off_t http_plugin_get_current_pos (input_plugin_t *this_gen){ return this->curpos; } -static off_t http_plugin_seek(input_plugin_t *this_gen, - off_t offset, int origin) { - +static off_t http_plugin_seek(input_plugin_t *this_gen, off_t offset, int origin) { http_input_plugin_t *this = (http_input_plugin_t *) this_gen; + + if ((origin == SEEK_CUR) && (offset >= 0)) { + char *tmp; + assert((tmp = malloc(1024)) != NULL); + for (;((int)offset) - 1024 > 0; offset -= 1024) { + this->curpos += http_plugin_read(this_gen, tmp, 1024); + } + this->curpos += http_plugin_read(this_gen, tmp, offset); + } + /* dummy implementation: don't seek, just return current position */ return this->curpos; } |