]> git.sesse.net Git - vlc/blobdiff - modules/access/http.c
Used uint64_t for access_t::info.i_size/i_pos and access_t::pf_seek().
[vlc] / modules / access / http.c
index 52d883790b7ccbbff770f4eed170f59fdd73a0cb..384a58c19f100a8eac5029f1277412c4590ad4eb 100644 (file)
@@ -194,12 +194,12 @@ struct access_sys_t
     int64_t    i_chunk;
 
     int        i_icy_meta;
-    int64_t    i_icy_offset;
+    uint64_t   i_icy_offset;
     char       *psz_icy_name;
     char       *psz_icy_genre;
     char       *psz_icy_title;
 
-    int64_t i_remaining;
+    uint64_t i_remaining;
 
     bool b_seekable;
     bool b_reconnect;
@@ -219,12 +219,12 @@ static int OpenWithCookies( vlc_object_t *p_this, const char *psz_access,
 /* */
 static ssize_t Read( access_t *, uint8_t *, size_t );
 static ssize_t ReadCompressed( access_t *, uint8_t *, size_t );
-static int Seek( access_t *, int64_t );
+static int Seek( access_t *, uint64_t );
 static int Control( access_t *, int, va_list );
 
 /* */
-static int Connect( access_t *, int64_t );
-static int Request( access_t *p_access, int64_t i_tell );
+static int Connect( access_t *, uint64_t );
+static int Request( access_t *p_access, uint64_t i_tell );
 static void Disconnect( access_t * );
 
 /* Small Cookie utilities. Cookies support is partial. */
@@ -804,9 +804,9 @@ static ssize_t Read( access_t *p_access, uint8_t *p_buffer, size_t i_len )
             i_len = p_sys->i_chunk;
         }
     }
-    else if( p_sys->b_has_size && (int64_t)i_len > p_sys->i_remaining) {
+    else if( p_sys->b_has_size && i_len > p_sys->i_remaining) {
         /* Only ask for the remaining length */
-        i_len = (size_t)p_sys->i_remaining;
+        i_len = p_sys->i_remaining;
         if(i_len == 0) {
             p_access->info.b_eof = true;
             return 0;
@@ -887,6 +887,7 @@ static ssize_t Read( access_t *p_access, uint8_t *p_buffer, size_t i_len )
 
     if( p_sys->b_has_size )
     {
+        assert( i_read <= p_sys->i_remaining );
         p_sys->i_remaining -= i_read;
     }
 
@@ -1002,14 +1003,14 @@ static ssize_t ReadCompressed( access_t *p_access, uint8_t *p_buffer,
 /*****************************************************************************
  * Seek: close and re-open a connection at the right place
  *****************************************************************************/
-static int Seek( access_t *p_access, int64_t i_pos )
+static int Seek( access_t *p_access, uint64_t i_pos )
 {
     msg_Dbg( p_access, "trying to seek to %"PRId64, i_pos );
 
     Disconnect( p_access );
 
     if( p_access->info.i_size
-     && (uint64_t)i_pos >= (uint64_t)p_access->info.i_size ) {
+     && i_pos >= p_access->info.i_size ) {
         msg_Err( p_access, "seek to far" );
         int retval = Seek( p_access, p_access->info.i_size - 1 );
         if( retval == VLC_SUCCESS ) {
@@ -1103,7 +1104,7 @@ static int Control( access_t *p_access, int i_query, va_list args )
 /*****************************************************************************
  * Connect:
  *****************************************************************************/
-static int Connect( access_t *p_access, int64_t i_tell )
+static int Connect( access_t *p_access, uint64_t i_tell )
 {
     access_sys_t   *p_sys = p_access->p_sys;
     vlc_url_t      srv = p_sys->b_proxy ? p_sys->proxy : p_sys->url;
@@ -1226,7 +1227,7 @@ static int Connect( access_t *p_access, int64_t i_tell )
 }
 
 
-static int Request( access_t *p_access, int64_t i_tell )
+static int Request( access_t *p_access, uint64_t i_tell )
 {
     access_sys_t   *p_sys = p_access->p_sys;
     char           *psz ;
@@ -1410,18 +1411,18 @@ static int Request( access_t *p_access, int64_t i_tell )
 
         if( !strcasecmp( psz, "Content-Length" ) )
         {
-            int64_t i_size = i_tell + (p_sys->i_remaining = atoll( p ));
+            uint64_t i_size = i_tell + (p_sys->i_remaining = (uint64_t)atoll( p ));
             if(i_size > p_access->info.i_size) {
                 p_sys->b_has_size = true;
                 p_access->info.i_size = i_size;
             }
-            msg_Dbg( p_access, "this frame size=%"PRId64, p_sys->i_remaining );
+            msg_Dbg( p_access, "this frame size=%"PRIu64, p_sys->i_remaining );
         }
         else if( !strcasecmp( psz, "Content-Range" ) ) {
-            int64_t i_ntell = i_tell;
-            int64_t i_nend = (p_access->info.i_size > 0)?(p_access->info.i_size - 1):i_tell;
-            int64_t i_nsize = p_access->info.i_size;
-            sscanf(p,"bytes %"SCNd64"-%"SCNd64"/%"SCNd64,&i_ntell,&i_nend,&i_nsize);
+            uint64_t i_ntell = i_tell;
+            uint64_t i_nend = (p_access->info.i_size > 0)?(p_access->info.i_size - 1):i_tell;
+            uint64_t i_nsize = p_access->info.i_size;
+            sscanf(p,"bytes %"SCNu64"-%"SCNu64"/%"SCNu64,&i_ntell,&i_nend,&i_nsize);
             if(i_nend > i_ntell ) {
                 p_access->info.i_pos = i_ntell;
                 p_sys->i_remaining = i_nend+1-i_ntell;
@@ -1430,7 +1431,8 @@ static int Request( access_t *p_access, int64_t i_tell )
                     p_sys->b_has_size = true;
                     p_access->info.i_size = i_size;
                 }
-                msg_Dbg( p_access, "stream size=%"PRId64",pos=%"PRId64",remaining=%"PRId64,i_nsize,i_ntell,p_sys->i_remaining);
+                msg_Dbg( p_access, "stream size=%"PRIu64",pos=%"PRIu64",remaining=%"PRIu64,
+                         i_nsize, i_ntell, p_sys->i_remaining);
             }
         }
         else if( !strcasecmp( psz, "Connection" ) ) {