minor bug fixes
This commit is contained in:
parent
815dc8c1cd
commit
d3adc09e7e
@ -56,20 +56,6 @@ ase_fio_t* ase_fio_init (
|
|||||||
ase_fio_t* fio, ase_mmgr_t* mmgr,
|
ase_fio_t* fio, ase_mmgr_t* mmgr,
|
||||||
const ase_char_t* path, int flags, int mode)
|
const ase_char_t* path, int flags, int mode)
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
|
||||||
DWORD desired_access = 0;
|
|
||||||
DWORD share_mode = FILE_SHARE_READ | FILE_SHARE_WRITE;
|
|
||||||
DWORD creation_disposition = 0;
|
|
||||||
DWORD attributes = FILE_ATTRIBUTE_NORMAL;
|
|
||||||
DWORD file_type;
|
|
||||||
#else
|
|
||||||
int desired_access = 0;
|
|
||||||
#ifdef ASE_CHAR_IS_MCHAR
|
|
||||||
const ase_mchar_t* path_mb;
|
|
||||||
#else
|
|
||||||
ase_mchar_t path_mb[PATH_MAX + 1];
|
|
||||||
#endif /* ASE_CHAR_IS_MCHAR */
|
|
||||||
#endif /* _WIN32 */
|
|
||||||
ase_fio_hnd_t handle;
|
ase_fio_hnd_t handle;
|
||||||
|
|
||||||
ASE_MEMSET (fio, 0, ASE_SIZEOF(*fio));
|
ASE_MEMSET (fio, 0, ASE_SIZEOF(*fio));
|
||||||
@ -82,6 +68,12 @@ ase_fio_t* ase_fio_init (
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
DWORD desired_access = 0;
|
||||||
|
DWORD share_mode = FILE_SHARE_READ | FILE_SHARE_WRITE;
|
||||||
|
DWORD creation_disposition = 0;
|
||||||
|
DWORD attributes = FILE_ATTRIBUTE_NORMAL;
|
||||||
|
DWORD file_type;
|
||||||
|
|
||||||
if (flags & ASE_FIO_READ) desired_access |= GENERIC_READ;
|
if (flags & ASE_FIO_READ) desired_access |= GENERIC_READ;
|
||||||
if (flags & ASE_FIO_WRITE) desired_access |= GENERIC_WRITE;
|
if (flags & ASE_FIO_WRITE) desired_access |= GENERIC_WRITE;
|
||||||
if (flags & ASE_FIO_APPEND)
|
if (flags & ASE_FIO_APPEND)
|
||||||
@ -135,19 +127,19 @@ ase_fio_t* ase_fio_init (
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
int desired_access = 0;
|
||||||
#ifdef ASE_CHAR_IS_MCHAR
|
#ifdef ASE_CHAR_IS_MCHAR
|
||||||
path_mb = path;
|
const ase_mchar_t* path_mb = path;
|
||||||
#else
|
#else
|
||||||
|
ase_mchar_t path_mb[PATH_MAX + 1];
|
||||||
if (ase_wcstombs_strict (path,
|
if (ase_wcstombs_strict (path,
|
||||||
path_mb, ASE_COUNTOF(path_mb)) == -1) return ASE_NULL;
|
path_mb, ASE_COUNTOF(path_mb)) == -1) return ASE_NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (flags & ASE_FIO_READ) desired_access = O_RDONLY;
|
if ((flags & ASE_FIO_READ) &&
|
||||||
if (flags & ASE_FIO_WRITE)
|
(flags & ASE_FIO_WRITE)) desired_access |= O_RDWR;
|
||||||
{
|
else if (flags & ASE_FIO_READ) desired_access |= O_RDONLY;
|
||||||
if (desired_access == 0) desired_access |= O_WRONLY;
|
else desired_access |= O_WRONLY;
|
||||||
else desired_access = O_RDWR;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & ASE_FIO_APPEND) desired_access |= O_APPEND;
|
if (flags & ASE_FIO_APPEND) desired_access |= O_APPEND;
|
||||||
if (flags & ASE_FIO_CREATE) desired_access |= O_CREAT;
|
if (flags & ASE_FIO_CREATE) desired_access |= O_CREAT;
|
||||||
@ -196,7 +188,7 @@ ase_fio_off_t ase_fio_seek (
|
|||||||
ase_fio_t* fio, ase_fio_off_t offset, ase_fio_ori_t origin)
|
ase_fio_t* fio, ase_fio_off_t offset, ase_fio_ori_t origin)
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
static int __seek_map[] =
|
static int seek_map[] =
|
||||||
{
|
{
|
||||||
FILE_BEGIN,
|
FILE_BEGIN,
|
||||||
FILE_CURRENT,
|
FILE_CURRENT,
|
||||||
@ -208,12 +200,12 @@ ase_fio_off_t ase_fio_seek (
|
|||||||
|
|
||||||
x.QuadPart = offset;
|
x.QuadPart = offset;
|
||||||
if (SetFilePointerEx (
|
if (SetFilePointerEx (
|
||||||
fio->handle, x, &y, __seek_map[origin]) == FALSE) return -1;
|
fio->handle, x, &y, seek_map[origin]) == FALSE) return -1;
|
||||||
|
|
||||||
return (ase_fio_off_t)y.QuadPart;
|
return (ase_fio_off_t)y.QuadPart;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static int __seek_map[] =
|
static int seek_map[] =
|
||||||
{
|
{
|
||||||
SEEK_SET,
|
SEEK_SET,
|
||||||
SEEK_CUR,
|
SEEK_CUR,
|
||||||
@ -227,16 +219,16 @@ ase_fio_off_t ase_fio_seek (
|
|||||||
(unsigned long)(offset>>32),
|
(unsigned long)(offset>>32),
|
||||||
(unsigned long)(offset&0xFFFFFFFFlu),
|
(unsigned long)(offset&0xFFFFFFFFlu),
|
||||||
&tmp,
|
&tmp,
|
||||||
__seek_map[origin]) == -1) return -1;
|
seek_map[origin]) == -1) return -1;
|
||||||
|
|
||||||
return tmp;
|
return (ase_fio_off_t)tmp;
|
||||||
|
|
||||||
#elif defined(SYS_lseek)
|
#elif defined(SYS_lseek)
|
||||||
return syscall (SYS_lseek, fio->handle, offset, __seek_map[origin]);
|
return syscall (SYS_lseek, fio->handle, offset, seek_map[origin]);
|
||||||
#elif !defined(_LP64) && defined(HAVE_LSEEK64)
|
#elif !defined(_LP64) && defined(HAVE_LSEEK64)
|
||||||
return lseek64 (fio->handle, offset, __seek_map[origin]);
|
return lseek64 (fio->handle, offset, seek_map[origin]);
|
||||||
#else
|
#else
|
||||||
return lseek (fio->handle, offset, __seek_map[origin]);
|
return lseek (fio->handle, offset, seek_map[origin]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user