diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-06-07 00:42:08 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-06-07 00:42:08 +0000 |
commit | 654a6f977134537a4d79b135f83cc4ecd3bce2a8 (patch) | |
tree | 990f496e6db45ea15f882f677d35f93e0724c2ba /libmpdemux/open.c | |
parent | 954e9892f21f421b1d0fc287936cdbe5960659fc (diff) | |
download | mpv-654a6f977134537a4d79b135f83cc4ecd3bce2a8.tar.bz2 mpv-654a6f977134537a4d79b135f83cc4ecd3bce2a8.tar.xz |
common code to handle file/stdin/fifo opening, allows using named pipes and
seeking with direct file redirection (mplayer < file.avi)
based on patch by Eric Lammerts <eric@lammerts.org>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6321 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/open.c')
-rw-r--r-- | libmpdemux/open.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/libmpdemux/open.c b/libmpdemux/open.c index cd8adad12c..5da4ad949a 100644 --- a/libmpdemux/open.c +++ b/libmpdemux/open.c @@ -417,15 +417,6 @@ tv_err: return(stream); } - -//============ Open STDIN ============ - if(!strcmp(filename,"-")){ - // read from stdin - mp_msg(MSGT_OPEN,MSGL_INFO,MSGTR_ReadSTDIN); - f=0; // 0=stdin - stream=new_stream(f,STREAMTYPE_STREAM); - return stream; - } #ifdef STREAMING url = url_new(filename); @@ -442,13 +433,20 @@ tv_err: } #endif -//============ Open plain FILE ============ +//============ Open STDIN or plain FILE ============ + if(!strcmp(filename,"-")){ + // read from stdin + mp_msg(MSGT_OPEN,MSGL_INFO,MSGTR_ReadSTDIN); + f=0; // 0=stdin + } else { f=open(filename,O_RDONLY); if(f<0){ mp_msg(MSGT_OPEN,MSGL_ERR,MSGTR_FileNotFound,filename);return NULL; } + } + len=lseek(f,0,SEEK_END); lseek(f,0,SEEK_SET); if (len == -1) - perror("Error: lseek failed to obtain video file size"); - else + return new_stream(f,STREAMTYPE_STREAM); // open as stream + #ifdef _LARGEFILE_SOURCE mp_msg(MSGT_OPEN,MSGL_V,"File size is %lld bytes\n", (long long)len); #else @@ -457,7 +455,6 @@ tv_err: stream=new_stream(f,STREAMTYPE_FILE); stream->end_pos=len; return stream; - } int dvd_parse_chapter_range(struct config *conf, const char *range){ |