+/**
+ * Reads from a non-seekable file.
+ */
+static ssize_t StreamRead (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;
+
+#if !defined (_WIN32) && !defined (__OS2__)
+ ssize_t val = net_Read (p_access, fd, NULL, p_buffer, i_len, false);
+#else
+ ssize_t val = read (fd, p_buffer, i_len);
+#endif
+
+ if (val < 0)
+ {
+ switch (errno)
+ {
+ case EINTR:
+ case EAGAIN:
+ return -1;
+ }
+ msg_Err (p_access, "read error: %s", vlc_strerror_c(errno));
+ val = 0;
+ }
+
+ p_access->info.i_pos += val;
+ p_access->info.b_eof = !val;
+ return val;
+}
+
+static int NoSeek (access_t *p_access, uint64_t i_pos)