Mercurial > mplayer.hg
changeset 21658:110286e8bbec
implemented STREAM_CTRL_GET_SIZE
author | nicodvb |
---|---|
date | Mon, 18 Dec 2006 20:55:12 +0000 |
parents | 5f5ed194b54b |
children | da09e69a0f01 |
files | stream/stream_file.c |
diffstat | 1 files changed, 17 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/stream/stream_file.c Mon Dec 18 20:54:38 2006 +0000 +++ b/stream/stream_file.c Mon Dec 18 20:55:12 2006 +0000 @@ -68,6 +68,22 @@ return 1; } +static int control(stream_t *s, int cmd, void *arg) { + switch(cmd) { + case STREAM_CTRL_GET_SIZE: { + off_t size; + + size = lseek(s->fd, 0, SEEK_END); + lseek(s->fd, s->pos, SEEK_SET); + if(size != (off_t)-1) { + *((off_t*)arg) = size; + return 1; + } + } + } + return STREAM_UNSUPORTED; +} + static int open_f(stream_t *stream,int mode, void* opts, int* file_format) { int f; mode_t m = 0; @@ -148,6 +164,7 @@ stream->fd = f; stream->fill_buffer = fill_buffer; stream->write_buffer = write_buffer; + stream->control = control; m_struct_free(&stream_opts,opts); return STREAM_OK;