input: try to open "-input -file=" file even if stat() fails

Do not fail opening a -input file= file just because stat failed, but try
to call "open" in any case.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32497 b3059339-0415-0410-9bf9-f77b7e298cf2

Make code clearer by putting the "special case hack" inside the if.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32499 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
reimar 2010-10-17 08:58:40 +00:00 committed by Uoti Urpala
parent c1287003c0
commit 650e8147c1
1 changed files with 13 additions and 12 deletions

View File

@ -1759,18 +1759,19 @@ struct input_ctx *mp_input_init(struct input_conf *input_conf)
if (input_conf->in_file) {
struct stat st;
if (stat(input_conf->in_file, &st))
mp_tmsg(MSGT_INPUT, MSGL_ERR, "Can't stat %s: %s\n", input_conf->in_file, strerror(errno));
else {
int in_file_fd = open(input_conf->in_file,
S_ISFIFO(st.st_mode) ? O_RDWR : O_RDONLY);
if(in_file_fd >= 0)
mp_input_add_cmd_fd(ictx, in_file_fd, 1, NULL,
(mp_close_func_t)close);
else
mp_tmsg(MSGT_INPUT, MSGL_ERR, "Can't open %s: %s\n",
input_conf->in_file, strerror(errno));
}
int mode = O_RDONLY;
// Use RDWR for FIFOs to ensure they stay open over multiple accesses.
// Note that on Windows stat may fail for named pipes, but due to how the
// API works, using RDONLY should be ok.
if (stat(input_conf->in_file, &st) == 0 && S_ISFIFO(st.st_mode))
mode = O_RDWR;
int in_file_fd = open(input_conf->in_file, mode);
if(in_file_fd >= 0)
mp_input_add_cmd_fd(ictx, in_file_fd, 1, NULL,
(mp_close_func_t)close);
else
mp_tmsg(MSGT_INPUT, MSGL_ERR, "Can't open %s: %s\n",
input_conf->in_file, strerror(errno));
}
return ictx;
}