Index: libmpdemux/demuxer.c =================================================================== RCS file: /cvsroot/mplayer/main/libmpdemux/demuxer.c,v retrieving revision 1.207 diff -u -r1.207 demuxer.c --- libmpdemux/demuxer.c 23 Sep 2005 22:35:03 -0000 1.207 +++ libmpdemux/demuxer.c 2 Oct 2005 02:45:22 -0000 @@ -943,7 +943,19 @@ int demuxer_get_percent_pos(demuxer_t *demuxer){ int ans = 0; int res = demux_control(demuxer, DEMUXER_CTRL_GET_PERCENT_POS, &ans); - int len = (demuxer->movi_end - demuxer->movi_start) / 100; + int len; + off_t save_pos = lseek(demuxer->stream->fd, 0, SEEK_CUR); + off_t end_of_file; + + // If we're reading from a file, get its present length by seeking + // to its end and seeking back to current position. + if (save_pos > 0) { + end_of_file = lseek(demuxer->stream->fd, 0, SEEK_END); + lseek(demuxer->stream->fd, save_pos, SEEK_SET); + demuxer->movi_end = end_of_file; + } + + len = (demuxer->movi_end - demuxer->movi_start) / 100; if (res <= 0) { if (len > 0) ans = (demuxer->filepos - demuxer->movi_start) / len;