summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-06-07 00:42:08 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-06-07 00:42:08 +0000
commit654a6f977134537a4d79b135f83cc4ecd3bce2a8 (patch)
tree990f496e6db45ea15f882f677d35f93e0724c2ba /libmpdemux
parent954e9892f21f421b1d0fc287936cdbe5960659fc (diff)
downloadmpv-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')
-rw-r--r--libmpdemux/open.c23
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){