return (intptr_t) h->priv_data;
}
+static int file_check(URLContext *h, int mask)
+{
+ 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;
+
+ return ret;
+}
+
#if CONFIG_FILE_PROTOCOL
static int file_open(URLContext *h, const char *filename, int flags)
av_strstart(filename, "file:", &filename);
- if (flags & AVIO_RDWR) {
+ if (flags & AVIO_FLAG_WRITE && flags & AVIO_FLAG_READ) {
access = O_CREAT | O_TRUNC | O_RDWR;
- } else if (flags & AVIO_WRONLY) {
+ } else if (flags & AVIO_FLAG_WRITE) {
access = O_CREAT | O_TRUNC | O_WRONLY;
} else {
access = O_RDONLY;
return close(fd);
}
-static int file_check(URLContext *h, int mask)
-{
- struct stat st;
- int ret = stat(h->filename, &st);
- if (ret < 0)
- return AVERROR(errno);
-
- ret |= st.st_mode&S_IRUSR ? mask&AVIO_RDONLY : 0;
- ret |= st.st_mode&S_IWUSR ? mask&AVIO_WRONLY : 0;
- ret |= st.st_mode&S_IWUSR && st.st_mode&S_IRUSR ? mask&AVIO_RDWR : 0;
-
- return ret;
-}
-
URLProtocol ff_file_protocol = {
.name = "file",
.url_open = file_open,
fd = strtol(filename, &final, 10);
if((filename == final) || *final ) {/* No digits found, or something like 10ab */
- if (flags & AVIO_WRONLY) {
+ if (flags & AVIO_FLAG_WRITE) {
fd = 1;
} else {
fd = 0;