Commit 9d310461 authored by Gildas Bazin's avatar Gildas Bazin

* modules/access/file.c: WinCE cruft removal.

parent 9d08f2d7
...@@ -49,14 +49,24 @@ ...@@ -49,14 +49,24 @@
# include <io.h> # include <io.h>
#endif #endif
/* stat() support for large files on win32 */
#if defined( WIN32 ) && !defined( UNDER_CE ) #if defined( WIN32 ) && !defined( UNDER_CE )
#define stat _stati64 /* stat() support for large files on win32 */
#define fstat(a,b) _fstati64(a,b) # define stat _stati64
#endif # define fstat(a,b) _fstati64(a,b)
# ifdef lseek
#ifdef UNDER_CE # undef lseek
# define close(a) CloseHandle((HANDLE)a) # endif
# define lseek _lseeki64
#elif defined( UNDER_CE )
# ifdef read
# undef read
# endif
# define read(a,b,c) fread(b,1,c,a)
# define close(a) fclose(a)
# ifdef lseek
# undef lseek
# endif
# define lseek fseek
#endif #endif
/***************************************************************************** /*****************************************************************************
...@@ -113,9 +123,12 @@ struct access_sys_t ...@@ -113,9 +123,12 @@ struct access_sys_t
/* Current file */ /* Current file */
int i_index; int i_index;
#ifndef UNDER_CE
int fd; int fd;
#ifdef UNDER_CE int fd_backup;
HANDLE fd_handle; #else
FILE *fd;
FILE *fd_backup;
#endif #endif
/* */ /* */
...@@ -365,7 +378,8 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len ) ...@@ -365,7 +378,8 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
else else
{ {
/* b_kfir ; work around a buggy poll() driver implementation */ /* b_kfir ; work around a buggy poll() driver implementation */
while ( (i_ret = read( p_sys->fd, p_buffer, i_len )) == 0 && !p_access->b_die ) while ( (i_ret = read( p_sys->fd, p_buffer, i_len )) == 0 &&
!p_access->b_die )
{ {
msleep( INPUT_ERROR_SLEEP ); msleep( INPUT_ERROR_SLEEP );
} }
...@@ -373,17 +387,10 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len ) ...@@ -373,17 +387,10 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
} }
else else
#endif /* WIN32 || UNDER_CE */ #endif /* WIN32 || UNDER_CE */
#ifdef UNDER_CE
if( !ReadFile( p_sys->fd_handle, p_buffer, i_len, (LPDWORD)&i_ret, 0 ) )
{
i_ret = -1;
}
#else
{ {
/* b_pace_control || WIN32 */ /* b_pace_control || WIN32 */
i_ret = read( p_sys->fd, p_buffer, i_len ); i_ret = read( p_sys->fd, p_buffer, i_len );
} }
#endif
if( i_ret < 0 ) if( i_ret < 0 )
{ {
...@@ -418,18 +425,18 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len ) ...@@ -418,18 +425,18 @@ static int Read( access_t *p_access, uint8_t *p_buffer, int i_len )
/* If we reached an EOF then switch to the next file in the list */ /* If we reached an EOF then switch to the next file in the list */
if ( i_ret == 0 && p_sys->i_index + 1 < p_sys->i_file ) if ( i_ret == 0 && p_sys->i_index + 1 < p_sys->i_file )
{ {
int fd = p_sys->fd;
char *psz_name = p_sys->file[++p_sys->i_index]->psz_name; char *psz_name = p_sys->file[++p_sys->i_index]->psz_name;
p_sys->fd_backup = p_sys->fd;
msg_Dbg( p_access, "opening file `%s'", psz_name ); msg_Dbg( p_access, "opening file `%s'", psz_name );
if ( _OpenFile( p_access, psz_name ) ) if ( _OpenFile( p_access, psz_name ) )
{ {
p_sys->fd = fd; p_sys->fd = p_sys->fd_backup;
return 0; return 0;
} }
close( fd ); close( p_sys->fd_backup );
/* We have to read some data */ /* We have to read some data */
return Read( p_access, p_buffer, i_len ); return Read( p_access, p_buffer, i_len );
...@@ -454,9 +461,9 @@ static int Seek( access_t *p_access, int64_t i_pos ) ...@@ -454,9 +461,9 @@ static int Seek( access_t *p_access, int64_t i_pos )
/* Check which file we need to access */ /* Check which file we need to access */
if( p_sys->i_file > 1 ) if( p_sys->i_file > 1 )
{ {
int fd = p_sys->fd;
int i; int i;
char *psz_name; char *psz_name;
p_sys->fd_backup = p_sys->fd;
for( i = 0; i < p_sys->i_file - 1; i++ ) for( i = 0; i < p_sys->i_file - 1; i++ )
{ {
...@@ -471,20 +478,16 @@ static int Seek( access_t *p_access, int64_t i_pos ) ...@@ -471,20 +478,16 @@ static int Seek( access_t *p_access, int64_t i_pos )
if ( i != p_sys->i_index && !_OpenFile( p_access, psz_name ) ) if ( i != p_sys->i_index && !_OpenFile( p_access, psz_name ) )
{ {
/* Close old file */ /* Close old file */
close( fd ); close( p_sys->fd_backup );
p_sys->i_index = i; p_sys->i_index = i;
} }
else else
{ {
p_sys->fd = fd; p_sys->fd = p_sys->fd_backup;
} }
} }
#if defined( WIN32 ) && !defined( UNDER_CE )
_lseeki64( p_sys->fd, i_pos - i_size, SEEK_SET );
#else
lseek( p_sys->fd, i_pos - i_size, SEEK_SET ); lseek( p_sys->fd, i_pos - i_size, SEEK_SET );
#endif
p_access->info.i_pos = i_pos; p_access->info.i_pos = i_pos;
if( p_access->info.i_size < p_access->info.i_pos ) if( p_access->info.i_size < p_access->info.i_pos )
...@@ -537,8 +540,9 @@ static int Control( access_t *p_access, int i_query, va_list args ) ...@@ -537,8 +540,9 @@ static int Control( access_t *p_access, int i_query, va_list args )
case ACCESS_GET_PTS_DELAY: case ACCESS_GET_PTS_DELAY:
pi_64 = (int64_t*)va_arg( args, int64_t * ); pi_64 = (int64_t*)va_arg( args, int64_t * );
*pi_64 = (int64_t)var_GetInteger( p_access, "file-caching" ) * I64C(1000); *pi_64 = var_GetInteger( p_access, "file-caching" ) * I64C(1000);
break; break;
/* */ /* */
case ACCESS_SET_PAUSE_STATE: case ACCESS_SET_PAUSE_STATE:
/* Nothing to do */ /* Nothing to do */
...@@ -567,22 +571,17 @@ static int _OpenFile( access_t * p_access, char * psz_name ) ...@@ -567,22 +571,17 @@ static int _OpenFile( access_t * p_access, char * psz_name )
access_sys_t *p_sys = p_access->p_sys; access_sys_t *p_sys = p_access->p_sys;
#ifdef UNDER_CE #ifdef UNDER_CE
wchar_t psz_filename[MAX_PATH]; p_sys->fd = fopen( psz_name, "rb" );
MultiByteToWideChar( CP_ACP, 0, psz_name, -1, psz_filename, MAX_PATH ); if ( !p_sys->fd )
p_sys->fd_handle =
CreateFile( psz_filename, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
p_sys->fd = (int)p_sys->fd_handle;
if ( p_sys->fd_handle == INVALID_HANDLE_VALUE )
{ {
msg_Err( p_access, "cannot open file %s", psz_name ); msg_Err( p_access, "cannot open file %s" );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
p_access->info.i_size =
GetFileSize( p_sys->fd_handle, NULL ); fseek( p_sys->fd, 0, SEEK_END );
p_access->info.i_size = ftell( p_sys->fd );
p_access->info.i_update |= INPUT_UPDATE_SIZE; p_access->info.i_update |= INPUT_UPDATE_SIZE;
fseek( p_sys->fd, 0, SEEK_SET );
#else #else
p_sys->fd = open( psz_name, O_NONBLOCK /*| O_LARGEFILE*/ ); p_sys->fd = open( psz_name, O_NONBLOCK /*| O_LARGEFILE*/ );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment