mirror of https://github.com/mpv-player/mpv
Compare commits
2 Commits
f1a7a5864c
...
e07e63ca9e
Author | SHA1 | Date |
---|---|---|
Mohammad AlSaleh | e07e63ca9e | |
Mohammad AlSaleh | 98a5bb8072 |
|
@ -427,6 +427,9 @@ endif
|
|||
features += {'ppoll': cc.has_function('ppoll', args: '-D_GNU_SOURCE',
|
||||
prefix: '#include <poll.h>')}
|
||||
|
||||
features += {'seek-data': cc.has_header_symbol('errno.h', 'ENXIO') and
|
||||
cc.has_header_symbol('unistd.h', 'SEEK_DATA', prefix: '#define _GNU_SOURCE')}
|
||||
|
||||
cd_devices = {
|
||||
'windows': 'D:',
|
||||
'cygwin': 'D:',
|
||||
|
|
|
@ -332,6 +332,17 @@ static int open_f(stream_t *stream, const struct stream_open_args *args)
|
|||
setmode(p->fd, O_BINARY);
|
||||
#endif
|
||||
|
||||
#if HAVE_SEEK_DATA
|
||||
if (stream->mode == STREAM_READ) {
|
||||
off_t first_data = lseek(p->fd, 0, SEEK_DATA);
|
||||
if (first_data == (off_t)-1 && errno == ENXIO) {
|
||||
MP_ERR(stream, "File is empty or all sparse (has no data).\n");
|
||||
s_close(stream);
|
||||
return STREAM_ERROR;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
off_t len = lseek(p->fd, 0, SEEK_END);
|
||||
lseek(p->fd, 0, SEEK_SET);
|
||||
if (len != (off_t)-1) {
|
||||
|
|
Loading…
Reference in New Issue