mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-19 22:10:34 +00:00
lavf/file: file_check: Handle file URLs that start with "file:"
Handle the URL analog to file_open, it may contain a "file:" prefix. Skip it. Make access checks to file URLs starting with "file:" work. Fix part of ticket #3249. Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
This commit is contained in:
parent
262451878b
commit
77015443a8
@ -104,25 +104,30 @@ static int file_get_handle(URLContext *h)
|
||||
|
||||
static int file_check(URLContext *h, int mask)
|
||||
{
|
||||
#if HAVE_ACCESS && defined(R_OK)
|
||||
int ret = 0;
|
||||
if (access(h->filename, F_OK) < 0)
|
||||
const char *filename = h->filename;
|
||||
av_strstart(filename, "file:", &filename);
|
||||
|
||||
{
|
||||
#if HAVE_ACCESS && defined(R_OK)
|
||||
if (access(filename, F_OK) < 0)
|
||||
return AVERROR(errno);
|
||||
if (mask&AVIO_FLAG_READ)
|
||||
if (access(h->filename, R_OK) >= 0)
|
||||
if (access(filename, R_OK) >= 0)
|
||||
ret |= AVIO_FLAG_READ;
|
||||
if (mask&AVIO_FLAG_WRITE)
|
||||
if (access(h->filename, W_OK) >= 0)
|
||||
if (access(filename, W_OK) >= 0)
|
||||
ret |= AVIO_FLAG_WRITE;
|
||||
#else
|
||||
struct stat st;
|
||||
int ret = stat(h->filename, &st);
|
||||
ret = stat(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