mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
file: Fallback to stat() based file_check() when access() or its named flags are unavailable.
Should fix compilation on native windows We could also use _access() and literal numbers as flags but i cant test it and the compilation failure should be fixed ASAP Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
465becbc4f
commit
16ef48c37f
@ -85,6 +85,7 @@ static int file_get_handle(URLContext *h)
|
||||
|
||||
static int file_check(URLContext *h, int mask)
|
||||
{
|
||||
#if defined(HAVE_ACCESS) && defined(R_OK)
|
||||
int ret = 0;
|
||||
if (access(h->filename, F_OK) < 0)
|
||||
return AVERROR(errno);
|
||||
@ -94,6 +95,15 @@ static int file_check(URLContext *h, int mask)
|
||||
if (mask&AVIO_FLAG_WRITE)
|
||||
if (access(h->filename, W_OK) >= 0)
|
||||
ret |= AVIO_FLAG_WRITE;
|
||||
#else
|
||||
struct stat st;
|
||||
int ret = stat(h->filename, &st);
|
||||
if (ret < 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;
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user