From: YongHaoHu Subject: [PATCH 5/6]: msvcp110: Add tr2_sys__Lstat implementation and test.(resend) Message-Id: <559608D4.7070400@gmail.com> Date: Fri, 3 Jul 2015 12:00:20 +0800 --- dlls/msvcp110/msvcp110.spec | 4 ++-- dlls/msvcp120/msvcp120.spec | 4 ++-- dlls/msvcp120/tests/msvcp120.c | 40 +++++++++++++++++++++++++++++++++++++ dlls/msvcp120_app/msvcp120_app.spec | 4 ++-- dlls/msvcp90/ios.c | 21 +++++++++++++++++++ 5 files changed, 67 insertions(+), 6 deletions(-) diff --git a/dlls/msvcp110/msvcp110.spec b/dlls/msvcp110/msvcp110.spec index 35e856c..05144ee 100644 --- a/dlls/msvcp110/msvcp110.spec +++ b/dlls/msvcp110/msvcp110.spec @@ -1605,8 +1605,8 @@ @ cdecl -arch=win32 ?_Lockit_dtor@_Lockit@std@@CAXPAV12@@Z(ptr) _Lockit__Lockit_dtor @ cdecl -arch=win64 ?_Lockit_dtor@_Lockit@std@@CAXPEAV12@@Z(ptr) _Lockit__Lockit_dtor @ cdecl ?_Lockit_dtor@_Lockit@std@@SAXH@Z(long) _Lockit_free -@ stub -arch=win32 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z -@ stub -arch=win64 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z +@ cdecl -arch=win32 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z(str ptr) tr2_sys__Lstat +@ cdecl -arch=win64 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z(str ptr) tr2_sys__Lstat @ stub -arch=win32 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PB_WAAH@Z @ stub -arch=win64 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEB_WAEAH@Z @ stub -arch=win32 ?_MP_Add@std@@YAXQA_K_K@Z diff --git a/dlls/msvcp120/msvcp120.spec b/dlls/msvcp120/msvcp120.spec index e319ed5..e9a7217 100644 --- a/dlls/msvcp120/msvcp120.spec +++ b/dlls/msvcp120/msvcp120.spec @@ -1566,8 +1566,8 @@ @ cdecl -arch=win32 ?_Lockit_dtor@_Lockit@std@@CAXPAV12@@Z(ptr) _Lockit__Lockit_dtor @ cdecl -arch=win64 ?_Lockit_dtor@_Lockit@std@@CAXPEAV12@@Z(ptr) _Lockit__Lockit_dtor @ cdecl ?_Lockit_dtor@_Lockit@std@@SAXH@Z(long) _Lockit_free -@ stub -arch=win32 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z -@ stub -arch=win64 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z +@ cdecl -arch=win32 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z(str ptr) tr2_sys__Lstat +@ cdecl -arch=win64 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z(str ptr) tr2_sys__Lstat @ stub -arch=win32 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PB_WAAH@Z @ stub -arch=win64 ?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEB_WAEAH@Z @ stub -arch=win32 ?_MP_Add@std@@YAXQA_K_K@Z diff --git a/dlls/msvcp120/tests/msvcp120.c b/dlls/msvcp120/tests/msvcp120.c index a150e29..3d5f7c1 100644 --- a/dlls/msvcp120/tests/msvcp120.c +++ b/dlls/msvcp120/tests/msvcp120.c @@ -82,6 +82,7 @@ static int (__cdecl *p_tr2_sys__Copy_file)(char const*, char const*, MSVCP_bool) static int (__cdecl *p_tr2_sys__Rename)(char const*, char const*); static space_info (__cdecl *p_tr2_sys__Statvfs)(char const*); static file_type (__cdecl *p_tr2_sys__Stat)(char const*, int *); +static file_type (__cdecl *p_tr2_sys__Lstat)(char const*, int *); static HMODULE msvcp; #define SETNOFAIL(x,y) x = (void*)GetProcAddress(msvcp,y) @@ -130,6 +131,8 @@ static BOOL init(void) "?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PEBD@Z"); SET(p_tr2_sys__Stat, "?_Stat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z"); + SET(p_tr2_sys__Lstat, + "?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PEBDAEAH@Z"); } else { SET(p_tr2_sys__File_size, "?_File_size@sys@tr2@std@@YA_KPBD@Z"); @@ -151,6 +154,8 @@ static BOOL init(void) "?_Statvfs@sys@tr2@std@@YA?AUspace_info@123@PBD@Z"); SET(p_tr2_sys__Stat, "?_Stat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z"); + SET(p_tr2_sys__Lstat, + "?_Lstat@sys@tr2@std@@YA?AW4file_type@123@PBDAAH@Z"); } msvcr = GetModuleHandleA("msvcr120.dll"); @@ -743,6 +748,40 @@ static void test_tr2_sys__Stat(void) ok(RemoveDirectoryA("tr2_test_dir"), "expect tr2_test_dir to exist\n"); } +static void test_tr2_sys__Lstat(void) +{ + int i, err_code; + HANDLE file; + file_type val; + struct { + char const *path; + file_type ret; + int err_code; + } tests[] = { + { NULL, status_unknown, ERROR_INVALID_PARAMETER }, + { "tr2_test_dir", directory_file, ERROR_SUCCESS }, + { "tr2_test_dir\\f1", regular_file, ERROR_SUCCESS }, + { "tr2_test_dir\\not_exist_file ", file_not_found, ERROR_SUCCESS }, + { "tr2_test_dir\\??invalid_name>>", file_not_found, ERROR_SUCCESS } + }; + + CreateDirectoryA("tr2_test_dir", NULL); + file = CreateFileA("tr2_test_dir/f1", 0, 0, NULL, CREATE_ALWAYS, 0, NULL); + ok(file != INVALID_HANDLE_VALUE, "create file failed: INVALID_HANDLE_VALUE\n"); + CloseHandle(file); + + for(i=0; i