Mercurial > mplayer.hg
diff stream/stream_file.c @ 21658:110286e8bbec
implemented STREAM_CTRL_GET_SIZE
| author | nicodvb |
|---|---|
| date | Mon, 18 Dec 2006 20:55:12 +0000 |
| parents | 32c50eb3ff18 |
| children | 38cbc1a55fb5 |
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;
