Commit 6e610f1e authored by Detlef Riekenberg's avatar Detlef Riekenberg Committed by Alexandre Julliard

msvcr90: Implement _stat32, _fstat32, _wstat32.

parent 1b767a59
...@@ -651,7 +651,7 @@ ...@@ -651,7 +651,7 @@
@ cdecl _fseeki64(ptr int64 long) msvcrt._fseeki64 @ cdecl _fseeki64(ptr int64 long) msvcrt._fseeki64
@ stub _fseeki64_nolock @ stub _fseeki64_nolock
@ cdecl _fsopen(str str long) msvcrt._fsopen @ cdecl _fsopen(str str long) msvcrt._fsopen
@ stub _fstat32 @ cdecl _fstat32(long ptr) msvcr90._fstat32
@ stub _fstat32i64 @ stub _fstat32i64
@ cdecl _fstat64(long ptr) msvcrt._fstat64 @ cdecl _fstat64(long ptr) msvcrt._fstat64
@ cdecl _fstat64i32(long ptr) msvcr90._fstat64i32 @ cdecl _fstat64i32(long ptr) msvcr90._fstat64i32
...@@ -1123,7 +1123,7 @@ ...@@ -1123,7 +1123,7 @@
@ stub _sprintf_s_l @ stub _sprintf_s_l
@ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l
@ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l @ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l
@ stub _stat32 @ cdecl _stat32(str ptr) msvcr90._stat32
@ stub _stat32i64 @ stub _stat32i64
@ cdecl _stat64(str ptr) msvcrt._stat64 @ cdecl _stat64(str ptr) msvcrt._stat64
@ cdecl _stat64i32(str ptr) msvcr90._stat64i32 @ cdecl _stat64i32(str ptr) msvcr90._stat64i32
...@@ -1393,7 +1393,7 @@ ...@@ -1393,7 +1393,7 @@
@ cdecl _wspawnvpe(long wstr ptr ptr) msvcrt._wspawnvpe @ cdecl _wspawnvpe(long wstr ptr ptr) msvcrt._wspawnvpe
@ cdecl _wsplitpath(wstr ptr ptr ptr ptr) msvcrt._wsplitpath @ cdecl _wsplitpath(wstr ptr ptr ptr ptr) msvcrt._wsplitpath
@ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) msvcrt._wsplitpath_s @ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) msvcrt._wsplitpath_s
@ stub _wstat32 @ cdecl _wstat32(wstr ptr) msvcr90._wstat32
@ stub _wstat32i64 @ stub _wstat32i64
@ cdecl _wstat64(wstr ptr) msvcrt._wstat64 @ cdecl _wstat64(wstr ptr) msvcrt._wstat64
@ cdecl _wstat64i32(wstr ptr) msvcr90._wstat64i32 @ cdecl _wstat64i32(wstr ptr) msvcr90._wstat64i32
......
...@@ -492,7 +492,7 @@ ...@@ -492,7 +492,7 @@
@ cdecl _fseeki64(ptr int64 long) msvcrt._fseeki64 @ cdecl _fseeki64(ptr int64 long) msvcrt._fseeki64
@ stub _fseeki64_nolock @ stub _fseeki64_nolock
@ cdecl _fsopen(str str long) msvcrt._fsopen @ cdecl _fsopen(str str long) msvcrt._fsopen
@ stub _fstat32 @ cdecl _fstat32(long ptr) msvcr90._fstat32
@ stub _fstat32i64 @ stub _fstat32i64
@ cdecl _fstat64(long ptr) msvcrt._fstat64 @ cdecl _fstat64(long ptr) msvcrt._fstat64
@ cdecl _fstat64i32(long ptr) msvcr90._fstat64i32 @ cdecl _fstat64i32(long ptr) msvcr90._fstat64i32
...@@ -977,7 +977,7 @@ ...@@ -977,7 +977,7 @@
@ stub _sprintf_s_l @ stub _sprintf_s_l
@ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l
@ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l @ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l
@ stub _stat32 @ cdecl _stat32(str ptr) msvcr90._stat32
@ stub _stat32i64 @ stub _stat32i64
@ cdecl _stat64(str ptr) msvcrt._stat64 @ cdecl _stat64(str ptr) msvcrt._stat64
@ cdecl _stat64i32(str ptr) msvcr90._stat64i32 @ cdecl _stat64i32(str ptr) msvcr90._stat64i32
...@@ -1249,7 +1249,7 @@ ...@@ -1249,7 +1249,7 @@
@ cdecl _wspawnvpe(long wstr ptr ptr) msvcrt._wspawnvpe @ cdecl _wspawnvpe(long wstr ptr ptr) msvcrt._wspawnvpe
@ cdecl _wsplitpath(wstr ptr ptr ptr ptr) msvcrt._wsplitpath @ cdecl _wsplitpath(wstr ptr ptr ptr ptr) msvcrt._wsplitpath
@ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) msvcrt._wsplitpath_s @ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) msvcrt._wsplitpath_s
@ stub _wstat32 @ cdecl _wstat32(wstr ptr) msvcr90._wstat32
@ stub _wstat32i64 @ stub _wstat32i64
@ cdecl _wstat64(wstr ptr) msvcrt._wstat64 @ cdecl _wstat64(wstr ptr) msvcrt._wstat64
@ cdecl _wstat64i32(wstr ptr) msvcr90._wstat64i32 @ cdecl _wstat64i32(wstr ptr) msvcr90._wstat64i32
......
...@@ -31,6 +31,24 @@ ...@@ -31,6 +31,24 @@
WINE_DEFAULT_DEBUG_CHANNEL(msvcr90); WINE_DEFAULT_DEBUG_CHANNEL(msvcr90);
/********************************************************************* /*********************************************************************
* msvcr90_stat64_to_stat32 [internal]
*/
static void msvcr90_stat64_to_stat32(const struct _stat64 *buf64, struct _stat32 *buf)
{
buf->st_dev = buf64->st_dev;
buf->st_ino = buf64->st_ino;
buf->st_mode = buf64->st_mode;
buf->st_nlink = buf64->st_nlink;
buf->st_uid = buf64->st_uid;
buf->st_gid = buf64->st_gid;
buf->st_rdev = buf64->st_rdev;
buf->st_size = buf64->st_size;
buf->st_atime = buf64->st_atime;
buf->st_mtime = buf64->st_mtime;
buf->st_ctime = buf64->st_ctime;
}
/*********************************************************************
* DllMain (MSVCR90.@) * DllMain (MSVCR90.@)
*/ */
BOOL WINAPI DllMain(HINSTANCE hdll, DWORD reason, LPVOID reserved) BOOL WINAPI DllMain(HINSTANCE hdll, DWORD reason, LPVOID reserved)
...@@ -136,6 +154,48 @@ void* CDECL _recalloc(void* mem, size_t num, size_t size) ...@@ -136,6 +154,48 @@ void* CDECL _recalloc(void* mem, size_t num, size_t size)
} }
/********************************************************************* /*********************************************************************
* _fstat32 (MSVCR90.@)
*/
int CDECL _fstat32(int fd, struct _stat32* buf)
{
int ret;
struct _stat64 buf64;
ret = _fstat64(fd, &buf64);
if (!ret)
msvcr90_stat64_to_stat32(&buf64, buf);
return ret;
}
/*********************************************************************
* _stat32 (MSVCR90.@)
*/
int CDECL _stat32(const char *path, struct _stat32* buf)
{
int ret;
struct _stat64 buf64;
ret = _stat64(path, &buf64);
if (!ret)
msvcr90_stat64_to_stat32(&buf64, buf);
return ret;
}
/*********************************************************************
* _wstat32 (MSVCR90.@)
*/
int CDECL _wstat32(const wchar_t *path, struct _stat32* buf)
{
int ret;
struct _stat64 buf64;
ret = _wstat64(path, &buf64);
if (!ret)
msvcr90_stat64_to_stat32(&buf64, buf);
return ret;
}
/*********************************************************************
* _fstat64i32 (MSVCRT.@) * _fstat64i32 (MSVCRT.@)
*/ */
......
...@@ -484,7 +484,7 @@ ...@@ -484,7 +484,7 @@
@ cdecl _fseeki64(ptr int64 long) msvcrt._fseeki64 @ cdecl _fseeki64(ptr int64 long) msvcrt._fseeki64
@ stub _fseeki64_nolock @ stub _fseeki64_nolock
@ cdecl _fsopen(str str long) msvcrt._fsopen @ cdecl _fsopen(str str long) msvcrt._fsopen
@ stub _fstat32 @ cdecl _fstat32(long ptr)
@ stub _fstat32i64 @ stub _fstat32i64
@ cdecl _fstat64(long ptr) msvcrt._fstat64 @ cdecl _fstat64(long ptr) msvcrt._fstat64
@ cdecl _fstat64i32(long ptr) @ cdecl _fstat64i32(long ptr)
...@@ -963,7 +963,7 @@ ...@@ -963,7 +963,7 @@
@ stub _sprintf_s_l @ stub _sprintf_s_l
@ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l
@ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l @ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l
@ stub _stat32 @ cdecl _stat32(str ptr)
@ stub _stat32i64 @ stub _stat32i64
@ cdecl _stat64(str ptr) msvcrt._stat64 @ cdecl _stat64(str ptr) msvcrt._stat64
@ cdecl _stat64i32(str ptr) @ cdecl _stat64i32(str ptr)
...@@ -1233,7 +1233,7 @@ ...@@ -1233,7 +1233,7 @@
@ cdecl _wspawnvpe(long wstr ptr ptr) msvcrt._wspawnvpe @ cdecl _wspawnvpe(long wstr ptr ptr) msvcrt._wspawnvpe
@ cdecl _wsplitpath(wstr ptr ptr ptr ptr) msvcrt._wsplitpath @ cdecl _wsplitpath(wstr ptr ptr ptr ptr) msvcrt._wsplitpath
@ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) msvcrt._wsplitpath_s @ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) msvcrt._wsplitpath_s
@ stub _wstat32 @ cdecl _wstat32(wstr ptr)
@ stub _wstat32i64 @ stub _wstat32i64
@ cdecl _wstat64(wstr ptr) msvcrt._wstat64 @ cdecl _wstat64(wstr ptr) msvcrt._wstat64
@ cdecl _wstat64i32(wstr ptr) @ cdecl _wstat64i32(wstr ptr)
......
...@@ -83,6 +83,20 @@ struct stat { ...@@ -83,6 +83,20 @@ struct stat {
time_t st_ctime; time_t st_ctime;
}; };
struct _stat32 {
_dev_t st_dev;
_ino_t st_ino;
unsigned short st_mode;
short st_nlink;
short st_uid;
short st_gid;
_dev_t st_rdev;
_off_t st_size;
__time32_t st_atime;
__time32_t st_mtime;
__time32_t st_ctime;
};
struct _stat32i64 { struct _stat32i64 {
_dev_t st_dev; _dev_t st_dev;
_ino_t st_ino; _ino_t st_ino;
...@@ -146,6 +160,8 @@ extern "C" { ...@@ -146,6 +160,8 @@ extern "C" {
int __cdecl _fstat(int,struct _stat*); int __cdecl _fstat(int,struct _stat*);
int __cdecl _stat(const char*,struct _stat*); int __cdecl _stat(const char*,struct _stat*);
int __cdecl _fstat32(int, struct _stat32*);
int __cdecl _stat32(const char*, struct _stat32*);
int __cdecl _fstati64(int,struct _stati64*); int __cdecl _fstati64(int,struct _stati64*);
int __cdecl _stati64(const char*,struct _stati64*); int __cdecl _stati64(const char*,struct _stati64*);
int __cdecl _fstat64(int,struct _stat64*); int __cdecl _fstat64(int,struct _stat64*);
...@@ -155,6 +171,7 @@ int __cdecl _umask(int); ...@@ -155,6 +171,7 @@ int __cdecl _umask(int);
#ifndef _WSTAT_DEFINED #ifndef _WSTAT_DEFINED
#define _WSTAT_DEFINED #define _WSTAT_DEFINED
int __cdecl _wstat(const wchar_t*,struct _stat*); int __cdecl _wstat(const wchar_t*,struct _stat*);
int __cdecl _wstat32(const wchar_t*, struct _stat32*);
int __cdecl _wstati64(const wchar_t*,struct _stati64*); int __cdecl _wstati64(const wchar_t*,struct _stati64*);
int __cdecl _wstat64(const wchar_t*,struct _stat64*); int __cdecl _wstat64(const wchar_t*,struct _stat64*);
#endif /* _WSTAT_DEFINED */ #endif /* _WSTAT_DEFINED */
......
...@@ -148,6 +148,20 @@ struct stat { ...@@ -148,6 +148,20 @@ struct stat {
time_t st_ctime; time_t st_ctime;
}; };
struct _stat32 {
_dev_t st_dev;
_ino_t st_ino;
unsigned short st_mode;
short st_nlink;
short st_uid;
short st_gid;
_dev_t st_rdev;
_off_t st_size;
__time32_t st_atime;
__time32_t st_mtime;
__time32_t st_ctime;
};
struct _stati64 { struct _stati64 {
_dev_t st_dev; _dev_t st_dev;
_ino_t st_ino; _ino_t st_ino;
...@@ -264,6 +278,7 @@ int __cdecl _wsystem(const wchar_t*); ...@@ -264,6 +278,7 @@ int __cdecl _wsystem(const wchar_t*);
#ifndef _WSTAT_DEFINED #ifndef _WSTAT_DEFINED
#define _WSTAT_DEFINED #define _WSTAT_DEFINED
int __cdecl _wstat(const wchar_t*,struct _stat*); int __cdecl _wstat(const wchar_t*,struct _stat*);
int __cdecl _wstat32(const wchar_t*, struct _stat32*);
int __cdecl _wstati64(const wchar_t*,struct _stati64*); int __cdecl _wstati64(const wchar_t*,struct _stati64*);
int __cdecl _wstat64(const wchar_t*,struct _stat64*); int __cdecl _wstat64(const wchar_t*,struct _stat64*);
#endif /* _WSTAT_DEFINED */ #endif /* _WSTAT_DEFINED */
......
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