msvcrt: Implement _findfirst64i32 and _findnext64i32.
This commit is contained in:
parent
e81a929e6b
commit
566d8e5eaa
|
@ -620,11 +620,11 @@
|
|||
@ stub _findfirst32
|
||||
@ stub _findfirst32i64
|
||||
@ cdecl _findfirst64(str ptr) msvcrt._findfirst64
|
||||
@ stub _findfirst64i32
|
||||
@ cdecl _findfirst64i32(str ptr) msvcrt._findfirst64i32
|
||||
@ stub _findnext32
|
||||
@ stub _findnext32i64
|
||||
@ cdecl _findnext64(long ptr) msvcrt._findnext64
|
||||
@ stub _findnext64i32
|
||||
@ cdecl _findnext64i32(long ptr) msvcrt._findnext64i32
|
||||
@ cdecl _finite( double ) msvcrt._finite
|
||||
@ cdecl _flsbuf(long ptr) msvcrt._flsbuf
|
||||
@ cdecl _flushall() msvcrt._flushall
|
||||
|
|
|
@ -461,11 +461,11 @@
|
|||
@ stub _findfirst32
|
||||
@ stub _findfirst32i64
|
||||
@ cdecl _findfirst64(str ptr) msvcrt._findfirst64
|
||||
@ stub _findfirst64i32
|
||||
@ cdecl _findfirst64i32(str ptr) msvcrt._findfirst64i32
|
||||
@ stub _findnext32
|
||||
@ stub _findnext32i64
|
||||
@ cdecl _findnext64(long ptr) msvcrt._findnext64
|
||||
@ stub _findnext64i32
|
||||
@ cdecl _findnext64i32(long ptr) msvcrt._findnext64i32
|
||||
@ cdecl _finite( double ) msvcrt._finite
|
||||
@ cdecl _flsbuf(long ptr) msvcrt._flsbuf
|
||||
@ cdecl _flushall() msvcrt._flushall
|
||||
|
|
|
@ -453,11 +453,11 @@
|
|||
@ stub _findfirst32
|
||||
@ stub _findfirst32i64
|
||||
@ cdecl _findfirst64(str ptr) msvcrt._findfirst64
|
||||
@ stub _findfirst64i32
|
||||
@ cdecl _findfirst64i32(str ptr) msvcrt._findfirst64i32
|
||||
@ stub _findnext32
|
||||
@ stub _findnext32i64
|
||||
@ cdecl _findnext64(long ptr) msvcrt._findnext64
|
||||
@ stub _findnext64i32
|
||||
@ cdecl _findnext64i32(long ptr) msvcrt._findnext64i32
|
||||
@ cdecl _finite( double ) msvcrt._finite
|
||||
@ cdecl _flsbuf(long ptr) msvcrt._flsbuf
|
||||
@ cdecl _flushall() msvcrt._flushall
|
||||
|
|
|
@ -116,6 +116,25 @@ static void msvcrt_fttofd64( const WIN32_FIND_DATAA *fd, struct MSVCRT__finddata
|
|||
strcpy(ft->name, fd->cFileName);
|
||||
}
|
||||
|
||||
/* INTERNAL: Translate WIN32_FIND_DATAA to finddata64i32_t */
|
||||
static void msvcrt_fttofd64i32( const WIN32_FIND_DATAA *fd, struct MSVCRT__finddata64i32_t* ft)
|
||||
{
|
||||
DWORD dw;
|
||||
|
||||
if (fd->dwFileAttributes == FILE_ATTRIBUTE_NORMAL)
|
||||
ft->attrib = 0;
|
||||
else
|
||||
ft->attrib = fd->dwFileAttributes;
|
||||
|
||||
RtlTimeToSecondsSince1970( (const LARGE_INTEGER *)&fd->ftCreationTime, &dw );
|
||||
ft->time_create = dw;
|
||||
RtlTimeToSecondsSince1970( (const LARGE_INTEGER *)&fd->ftLastAccessTime, &dw );
|
||||
ft->time_access = dw;
|
||||
RtlTimeToSecondsSince1970( (const LARGE_INTEGER *)&fd->ftLastWriteTime, &dw );
|
||||
ft->time_write = dw;
|
||||
ft->size = fd->nFileSizeLow;
|
||||
strcpy(ft->name, fd->cFileName);
|
||||
}
|
||||
|
||||
/* INTERNAL: Translate WIN32_FIND_DATAW to wfinddatai64_t */
|
||||
static void msvcrt_wfttofdi64( const WIN32_FIND_DATAW *fd, struct MSVCRT__wfinddatai64_t* ft)
|
||||
|
@ -329,6 +348,27 @@ MSVCRT_intptr_t CDECL MSVCRT__findfirst64(const char * fspec, struct MSVCRT__fin
|
|||
return (MSVCRT_intptr_t)hfind;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _findfirst64i32 (MSVCRT.@)
|
||||
*
|
||||
* 64-bit/32-bit version of _findfirst.
|
||||
*/
|
||||
MSVCRT_intptr_t CDECL MSVCRT__findfirst64i32(const char * fspec, struct MSVCRT__finddata64i32_t* ft)
|
||||
{
|
||||
WIN32_FIND_DATAA find_data;
|
||||
HANDLE hfind;
|
||||
|
||||
hfind = FindFirstFileA(fspec, &find_data);
|
||||
if (hfind == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
msvcrt_set_errno(GetLastError());
|
||||
return -1;
|
||||
}
|
||||
msvcrt_fttofd64i32(&find_data,ft);
|
||||
TRACE(":got handle %p\n",hfind);
|
||||
return (MSVCRT_intptr_t)hfind;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _wfindfirsti64 (MSVCRT.@)
|
||||
*
|
||||
|
@ -437,6 +477,25 @@ int CDECL MSVCRT__findnext64(long hand, struct MSVCRT__finddata64_t * ft)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _findnext64i32 (MSVCRT.@)
|
||||
*
|
||||
* 64-bit/32-bit version of _findnext.
|
||||
*/
|
||||
int CDECL MSVCRT__findnext64i32(long hand, struct MSVCRT__finddata64i32_t * ft)
|
||||
{
|
||||
WIN32_FIND_DATAA find_data;
|
||||
|
||||
if (!FindNextFileA((HANDLE)hand, &find_data))
|
||||
{
|
||||
*MSVCRT__errno() = MSVCRT_ENOENT;
|
||||
return -1;
|
||||
}
|
||||
|
||||
msvcrt_fttofd64i32(&find_data,ft);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _wfindnexti64 (MSVCRT.@)
|
||||
*
|
||||
|
|
|
@ -412,9 +412,11 @@
|
|||
@ cdecl _findclose(long) MSVCRT__findclose
|
||||
@ cdecl _findfirst(str ptr) MSVCRT__findfirst
|
||||
@ cdecl _findfirst64(str ptr) MSVCRT__findfirst64
|
||||
@ cdecl _findfirst64i32(str ptr) MSVCRT__findfirst64i32
|
||||
@ cdecl _findfirsti64(str ptr) MSVCRT__findfirsti64
|
||||
@ cdecl _findnext(long ptr) MSVCRT__findnext
|
||||
@ cdecl _findnext64(long ptr) MSVCRT__findnext64
|
||||
@ cdecl _findnext64i32(long ptr) MSVCRT__findnext64i32
|
||||
@ cdecl _findnexti64(long ptr) MSVCRT__findnexti64
|
||||
@ cdecl _finite( double )
|
||||
@ cdecl _flsbuf(long ptr) MSVCRT__flsbuf
|
||||
|
|
Loading…
Reference in New Issue