Eryk Wieliczko : msvcrt: Implement _wfindfirst64i32.

Alexandre Julliard julliard at winehq.org
Tue Nov 23 09:38:23 CST 2010


Module: wine
Branch: master
Commit: 7d50809705d83e55b05e857c7a785bc4e8a3b7d0
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7d50809705d83e55b05e857c7a785bc4e8a3b7d0

Author: Eryk Wieliczko <ewdevel at gmail.com>
Date:   Sat Nov 20 14:49:54 2010 +0100

msvcrt: Implement _wfindfirst64i32.

---

 dlls/msvcr100/msvcr100.spec |    2 +-
 dlls/msvcr80/msvcr80.spec   |    2 +-
 dlls/msvcr90/msvcr90.spec   |    2 +-
 dlls/msvcrt/dir.c           |   41 +++++++++++++++++++++++++++++++++++++++++
 dlls/msvcrt/msvcrt.spec     |    1 +
 5 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index a305cb2..c35e42b 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1341,7 +1341,7 @@
 @ stub _wfindfirst32
 @ stub _wfindfirst32i64
 @ stub _wfindfirst64
-@ stub _wfindfirst64i32
+@ cdecl _wfindfirst64i32(wstr ptr) msvcrt._wfindfirst64i32
 @ stub _wfindnext32
 @ stub _wfindnext32i64
 @ stub _wfindnext64
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 36f522c..abc7db0 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -1194,7 +1194,7 @@
 @ stub _wfindfirst32
 @ stub _wfindfirst32i64
 @ stub _wfindfirst64
-@ stub _wfindfirst64i32
+@ cdecl _wfindfirst64i32(wstr ptr) msvcrt._wfindfirst64i32
 @ stub _wfindnext32
 @ stub _wfindnext32i64
 @ stub _wfindnext64
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 33bfb33..2d5cc32 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -1181,7 +1181,7 @@
 @ stub _wfindfirst32
 @ stub _wfindfirst32i64
 @ stub _wfindfirst64
-@ stub _wfindfirst64i32
+@ cdecl _wfindfirst64i32(wstr ptr) msvcrt._wfindfirst64i32
 @ stub _wfindnext32
 @ stub _wfindnext32i64
 @ stub _wfindnext64
diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c
index f175ac0..415c9eb 100644
--- a/dlls/msvcrt/dir.c
+++ b/dlls/msvcrt/dir.c
@@ -156,6 +156,26 @@ static void msvcrt_wfttofdi64( const WIN32_FIND_DATAW *fd, struct MSVCRT__wfindd
   strcpyW(ft->name, fd->cFileName);
 }
 
+/* INTERNAL: Translate WIN32_FIND_DATAW to wfinddata64i32_t  */
+static void msvcrt_wfttofd64i32( const WIN32_FIND_DATAW *fd, struct MSVCRT__wfinddata64i32_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;
+  strcpyW(ft->name, fd->cFileName);
+}
+
 /*********************************************************************
  *		_chdir (MSVCRT.@)
  *
@@ -370,6 +390,27 @@ MSVCRT_intptr_t CDECL MSVCRT__findfirst64i32(const char * fspec, struct MSVCRT__
 }
 
 /*********************************************************************
+ *		_wfindfirst64i32 (MSVCRT.@)
+ *
+ * Unicode version of _findfirst64i32.
+ */
+MSVCRT_intptr_t CDECL MSVCRT__wfindfirst64i32(const MSVCRT_wchar_t * fspec, struct MSVCRT__wfinddata64i32_t* ft)
+{
+  WIN32_FIND_DATAW find_data;
+  HANDLE hfind;
+
+  hfind  = FindFirstFileW(fspec, &find_data);
+  if (hfind == INVALID_HANDLE_VALUE)
+  {
+    msvcrt_set_errno(GetLastError());
+    return -1;
+  }
+  msvcrt_wfttofd64i32(&find_data,ft);
+  TRACE(":got handle %p\n",hfind);
+  return (MSVCRT_intptr_t)hfind;
+}
+
+/*********************************************************************
  *		_wfindfirsti64 (MSVCRT.@)
  *
  * Unicode version of _findfirsti64.
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index e65c152..de3dded 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1114,6 +1114,7 @@
 @ cdecl _wfindfirst(wstr ptr) MSVCRT__wfindfirst
 # stub _wfindfirst64
 @ cdecl _wfindfirsti64(wstr ptr) MSVCRT__wfindfirsti64
+@ cdecl _wfindfirst64i32(wstr ptr) MSVCRT__wfindfirst64i32
 @ cdecl _wfindnext(long ptr) MSVCRT__wfindnext
 # stub _wfindnext64
 @ cdecl _wfindnexti64(long ptr) MSVCRT__wfindnexti64




More information about the wine-cvs mailing list