[vlc-commits] file: remove write-only size
Rémi Denis-Courmont
git at videolan.org
Mon Aug 31 22:03:28 CEST 2015
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Mon Aug 31 23:01:45 2015 +0300| [0dd144fceb633c4fdb8e621e5e571e4bd6adf6cb] | committer: Rémi Denis-Courmont
file: remove write-only size
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0dd144fceb633c4fdb8e621e5e571e4bd6adf6cb
---
modules/access/file.c | 64 +++++++++++++------------------------------------
1 file changed, 17 insertions(+), 47 deletions(-)
diff --git a/modules/access/file.c b/modules/access/file.c
index ec8b31b..a9d5977 100644
--- a/modules/access/file.c
+++ b/modules/access/file.c
@@ -70,7 +70,6 @@ struct access_sys_t
int fd;
bool b_pace_control;
- uint64_t size;
};
#if !defined (_WIN32) && !defined (__OS2__)
@@ -129,9 +128,8 @@ static bool IsRemote (const char *path)
# define posix_fadvise(fd, off, len, adv)
#endif
-static ssize_t FileRead (access_t *, uint8_t *, size_t);
+static ssize_t Read (access_t *, uint8_t *, size_t);
static int FileSeek (access_t *, uint64_t);
-static ssize_t StreamRead (access_t *, uint8_t *, size_t);
static int NoSeek (access_t *, uint64_t);
static int FileControl (access_t *, int, va_list);
@@ -216,6 +214,7 @@ int FileOpen( vlc_object_t *p_this )
if (unlikely(p_sys == NULL))
goto error;
access_InitFields (p_access);
+ p_access->pf_read = Read;
p_access->pf_block = NULL;
p_access->pf_control = FileControl;
p_access->p_sys = p_sys;
@@ -223,10 +222,8 @@ int FileOpen( vlc_object_t *p_this )
if (S_ISREG (st.st_mode) || S_ISBLK (st.st_mode))
{
- p_access->pf_read = FileRead;
p_access->pf_seek = FileSeek;
p_sys->b_pace_control = true;
- p_sys->size = st.st_size;
/* Demuxers will need the beginning of the file for probing. */
posix_fadvise (fd, 0, 4096, POSIX_FADV_WILLNEED);
@@ -244,10 +241,8 @@ int FileOpen( vlc_object_t *p_this )
}
else
{
- p_access->pf_read = StreamRead;
p_access->pf_seek = NoSeek;
p_sys->b_pace_control = strcasecmp (p_access->psz_access, "stream");
- p_sys->size = 0;
}
return VLC_SUCCESS;
@@ -277,44 +272,7 @@ void FileClose (vlc_object_t * p_this)
}
-/**
- * Reads from a regular file.
- */
-static ssize_t FileRead (access_t *p_access, uint8_t *p_buffer, size_t i_len)
-{
- ssize_t val = StreamRead (p_access, p_buffer, i_len);
-
- access_sys_t *p_sys = p_access->p_sys;
-
- if (p_access->info.i_pos >= p_sys->size)
- {
- struct stat st;
-
- if (fstat (p_sys->fd, &st) == 0)
- p_sys->size = st.st_size;
- }
-
- return val;
-}
-
-
-/*****************************************************************************
- * Seek: seek to a specific location in a file
- *****************************************************************************/
-static int FileSeek (access_t *p_access, uint64_t i_pos)
-{
- p_access->info.i_pos = i_pos;
- p_access->info.b_eof = false;
-
- if (lseek (p_access->p_sys->fd, i_pos, SEEK_SET) == (off_t)-1)
- return VLC_EGENERIC;
- return VLC_SUCCESS;
-}
-
-/**
- * Reads from a non-seekable file.
- */
-static ssize_t StreamRead (access_t *p_access, uint8_t *p_buffer, size_t i_len)
+static ssize_t Read (access_t *p_access, uint8_t *p_buffer, size_t i_len)
{
access_sys_t *p_sys = p_access->p_sys;
int fd = p_sys->fd;
@@ -341,6 +299,19 @@ static ssize_t StreamRead (access_t *p_access, uint8_t *p_buffer, size_t i_len)
return val;
}
+/*****************************************************************************
+ * Seek: seek to a specific location in a file
+ *****************************************************************************/
+static int FileSeek (access_t *p_access, uint64_t i_pos)
+{
+ p_access->info.i_pos = i_pos;
+ p_access->info.b_eof = false;
+
+ if (lseek (p_access->p_sys->fd, i_pos, SEEK_SET) == (off_t)-1)
+ return VLC_EGENERIC;
+ return VLC_SUCCESS;
+}
+
static int NoSeek (access_t *p_access, uint64_t i_pos)
{
/* vlc_assert_unreachable(); ?? */
@@ -377,8 +348,7 @@ static int FileControl( access_t *p_access, int i_query, va_list args )
if (fstat (p_sys->fd, &st))
return VLC_EGENERIC;
- p_sys->size = st.st_size;
- *va_arg( args, uint64_t * ) = p_sys->size;
+ *va_arg( args, uint64_t * ) = st.st_size;
break;
}
More information about the vlc-commits
mailing list