]> git.sesse.net Git - vlc/blobdiff - modules/access/file.c
Uses file:// MRL only files, don't bug when recursively adding directories
[vlc] / modules / access / file.c
index 7369fc0f79acdfd0d3fafcb0d4ce88f9f169d30c..33c757d1b4f3c64aecb468ece9e00f8b5bd865f2 100644 (file)
@@ -27,8 +27,9 @@
  * Preamble
  *****************************************************************************/
 #include <vlc/vlc.h>
-#include <vlc/input.h>
-#include <vlc_interaction.h>
+#include <vlc_input.h>
+#include <vlc_access.h>
+#include <vlc_interface.h>
 
 #include <stdlib.h>
 #include <string.h>
@@ -51,8 +52,6 @@
 #endif
 
 #if defined( WIN32 ) && !defined( UNDER_CE )
-/* fstat() support for large files on win32 */
-#   define fstat(a,b) _fstati64(a,b)
 #   ifdef lseek
 #      undef lseek
 #   endif
@@ -69,7 +68,7 @@
 #   define lseek fseek
 #endif
 
-#include "charset.h"
+#include <vlc_charset.h>
 
 /*****************************************************************************
  * Module descriptor
@@ -198,6 +197,7 @@ static int Open( vlc_object_t *p_this )
         p_sys->b_seekable = VLC_FALSE;
 #else
     p_sys->b_seekable = !b_stdin;
+# warning File size not known!
 #endif
 
     if (p_sys->b_seekable && (p_access->info.i_size == 0))
@@ -320,24 +320,22 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
  *****************************************************************************/
 static int Seek (access_t *p_access, int64_t i_pos)
 {
-    access_sys_t *p_sys = p_access->p_sys;
-
-    if (p_access->info.i_size < p_access->info.i_pos)
+    if (i_pos > p_access->info.i_size)
     {
         msg_Err (p_access, "seeking too far");
-        i_pos = p_access->info.i_pos = p_access->info.i_size;
+        i_pos = p_access->info.i_size;
     }
-    else if (p_access->info.i_pos < 0)
+    else if (i_pos < 0)
     {
         msg_Err (p_access, "seeking too early");
-        i_pos = p_access->info.i_pos = 0;
+        i_pos = 0;
     }
 
     p_access->info.i_pos = i_pos;
     p_access->info.b_eof = VLC_FALSE;
 
     /* Determine which file we need to access */
-    lseek (p_sys->fd, i_pos, SEEK_SET);
+    lseek (p_access->p_sys->fd, i_pos, SEEK_SET);
     return VLC_SUCCESS;
 }