[FFmpeg-cvslog] file: fix file_check()
Michael Niedermayer
git at videolan.org
Tue Nov 27 03:59:26 CET 2012
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Tue Nov 27 02:57:20 2012 +0100| [407921072f6db318aea74115c2348aa00728d83a] | committer: Michael Niedermayer
file: fix file_check()
Fixes Ticket1904
This should work on windows, but if not please contact me ASAP
i have another idea on how to solve this without access() if that
really doesnt work on windows.
Strongly based on patch by divVerent
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=407921072f6db318aea74115c2348aa00728d83a
---
libavformat/file.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/libavformat/file.c b/libavformat/file.c
index 209957b..44a1558 100644
--- a/libavformat/file.c
+++ b/libavformat/file.c
@@ -85,14 +85,15 @@ static int file_get_handle(URLContext *h)
static int file_check(URLContext *h, int mask)
{
- struct stat st;
- int ret = stat(h->filename, &st);
- if (ret < 0)
+ int ret = 0;
+ if (access(h->filename, F_OK) < 0)
return AVERROR(errno);
-
- ret |= st.st_mode&S_IRUSR ? mask&AVIO_FLAG_READ : 0;
- ret |= st.st_mode&S_IWUSR ? mask&AVIO_FLAG_WRITE : 0;
-
+ if (mask&AVIO_FLAG_READ)
+ if (access(h->filename, R_OK) >= 0)
+ ret |= AVIO_FLAG_READ;
+ if (mask&AVIO_FLAG_WRITE)
+ if (access(h->filename, W_OK) >= 0)
+ ret |= AVIO_FLAG_WRITE;
return ret;
}
More information about the ffmpeg-cvslog
mailing list