Hello, by accident i have send this patch to wine-develop list instead of wine-patches. This patch needs to be applied before my _fstati64 patch ChangeLog ------------- converted implementation of _stat to _stati64 implemented _stat by calling _stati64 --- dlls/msvcrt/msvcrt.0.spec Wed Nov 20 20:52:14 2002 +++ dlls/msvcrt/msvcrt.spec Sat Nov 23 21:25:45 2002 @@ -446,7 +446,7 @@ @ cdecl _spawnvpe(long str ptr ptr) _spawnvpe @ forward _splitpath ntdll._splitpath @ cdecl _stat(str ptr) MSVCRT__stat -@ stub _stati64 #(str ptr) +@ cdecl _stati64 (str ptr) MSVCRT__stati64 @ cdecl _statusfp() _statusfp @ cdecl _strcmpi(str str) strcasecmp @ cdecl _strdate(str) _strdate --- dlls/msvcrt/file.0.c Fri Oct 25 05:12:00 2002 +++ dlls/msvcrt/file.c Sat Nov 23 21:25:53 2002 @@ -1135,9 +1135,9 @@ } /********************************************************************* - * _stat (MSVCRT.@) + * _stati64 (MSVCRT.@) */ -int MSVCRT__stat(const char* path, struct _stat * buf) +int MSVCRT__stati64(const char* path, struct _stati64 * buf) { DWORD dw; WIN32_FILE_ATTRIBUTE_DATA hfi; @@ -1153,7 +1153,7 @@ return -1; } - memset(buf,0,sizeof(struct _stat)); + memset(buf,0,sizeof(struct _stati64)); /* FIXME: rdev isnt drive num,despite what the docs say-what is it? Bon 011120: This FIXME seems incorrect @@ -1189,14 +1189,38 @@ buf->st_mode = mode; buf->st_nlink = 1; - buf->st_size = hfi.nFileSizeLow; + buf->st_size = ((__int64)hfi.nFileSizeHigh << 32) + hfi.nFileSizeLow; RtlTimeToSecondsSince1970((LARGE_INTEGER *)&hfi.ftLastAccessTime, &dw); buf->st_atime = dw; RtlTimeToSecondsSince1970((LARGE_INTEGER *)&hfi.ftLastWriteTime, &dw); buf->st_mtime = buf->st_ctime = dw; - TRACE("\n%d %d %d %ld %ld %ld\n", buf->st_mode,buf->st_nlink,buf->st_size, + TRACE("\n%d %d %ld %ld %ld %ld\n", buf->st_mode,buf->st_nlink,buf->st_size, buf->st_atime,buf->st_mtime, buf->st_ctime); return 0; +} + +/********************************************************************* + * _stat (MSVCRT.@) + */ +int MSVCRT__stat(const char* path, struct _stat * buf) +{ int ret; + struct _stati64 bufi64; + + ret = MSVCRT__stati64( path, &bufi64); + if (!ret) + { buf->st_dev = bufi64.st_dev; + buf->st_ino = bufi64.st_ino; + buf->st_mode = bufi64.st_mode; + buf->st_nlink = bufi64.st_nlink; + buf->st_uid = bufi64.st_uid; + buf->st_gid = bufi64.st_gid; + buf->st_rdev = bufi64.st_rdev; + buf->st_size = (DWORD) bufi64.st_dev; + buf->st_atime = bufi64.st_atime; + buf->st_mtime = bufi64.st_mtime; + buf->st_ctime = bufi64.st_ctime; + } + return ret; } /*********************************************************************