YongHao Hu : msvcp110: Add tr2_sys__Rename_wchar implementation and test.
Module: wine Branch: master Commit: 64eb3813c47c0db2b8bab39dc2ab3f93610d6ec7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=64eb3813c47c0db2b8bab39dc2... Author: YongHao Hu <christopherwuy(a)gmail.com> Date: Wed Aug 19 01:27:27 2015 +0800 msvcp110: Add tr2_sys__Rename_wchar implementation and test. --- dlls/msvcp110/msvcp110.spec | 4 ++-- dlls/msvcp120/msvcp120.spec | 4 ++-- dlls/msvcp120/tests/msvcp120.c | 11 ++++++++++- dlls/msvcp120_app/msvcp120_app.spec | 4 ++-- dlls/msvcp90/ios.c | 14 ++++++++++++++ 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/dlls/msvcp110/msvcp110.spec b/dlls/msvcp110/msvcp110.spec index 49ff921..91e1503 100644 --- a/dlls/msvcp110/msvcp110.spec +++ b/dlls/msvcp110/msvcp110.spec @@ -1724,8 +1724,8 @@ @ cdecl -arch=win64 ?_Remove_dir(a)sys@tr2(a)std@@YA_NPEB_W(a)Z(wstr) tr2_sys__Remove_dir_wchar @ cdecl -arch=win32 ?_Rename(a)sys@tr2(a)std@@YAHPBD0(a)Z(str str) tr2_sys__Rename @ cdecl -arch=win64 ?_Rename(a)sys@tr2(a)std@@YAHPEBD0(a)Z(str str) tr2_sys__Rename -@ stub -arch=win32 ?_Rename(a)sys@tr2(a)std@@YAHPB_W0(a)Z -@ stub -arch=win64 ?_Rename(a)sys@tr2(a)std@@YAHPEB_W0(a)Z +@ cdecl -arch=win32 ?_Rename(a)sys@tr2(a)std@@YAHPB_W0(a)Z(wstr wstr) tr2_sys__Rename_wchar +@ cdecl -arch=win64 ?_Rename(a)sys@tr2(a)std@@YAHPEB_W0(a)Z(wstr wstr) tr2_sys__Rename_wchar @ cdecl -arch=win32 ?_Rep@?$num_put(a)DV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@ABA?AV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@DI(a)Z(ptr ptr long ptr long long) num_put_char__Rep @ cdecl -arch=win64 ?_Rep@?$num_put(a)DV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@AEBA?AV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@D_K(a)Z(ptr ptr ptr long long) num_put_char__Rep @ cdecl -arch=win32 ?_Rep@?$num_put(a)GV?$ostreambuf_iterator(a)GU?$char_traits(a)G@std@@@std@@@std@@ABA?AV?$ostreambuf_iterator(a)GU?$char_traits(a)G@std@@@2(a)V32@GI(a)Z(ptr ptr long ptr long long) num_put_wchar__Rep diff --git a/dlls/msvcp120/msvcp120.spec b/dlls/msvcp120/msvcp120.spec index 2a73662..745fecb 100644 --- a/dlls/msvcp120/msvcp120.spec +++ b/dlls/msvcp120/msvcp120.spec @@ -1685,8 +1685,8 @@ @ cdecl -arch=win64 ?_Remove_dir(a)sys@tr2(a)std@@YA_NPEB_W(a)Z(wstr) tr2_sys__Remove_dir_wchar @ cdecl -arch=win32 ?_Rename(a)sys@tr2(a)std@@YAHPBD0(a)Z(str str) tr2_sys__Rename @ cdecl -arch=win64 ?_Rename(a)sys@tr2(a)std@@YAHPEBD0(a)Z(str str) tr2_sys__Rename -@ stub -arch=win32 ?_Rename(a)sys@tr2(a)std@@YAHPB_W0(a)Z -@ stub -arch=win64 ?_Rename(a)sys@tr2(a)std@@YAHPEB_W0(a)Z +@ cdecl -arch=win32 ?_Rename(a)sys@tr2(a)std@@YAHPB_W0(a)Z(wstr wstr) tr2_sys__Rename_wchar +@ cdecl -arch=win64 ?_Rename(a)sys@tr2(a)std@@YAHPEB_W0(a)Z(wstr wstr) tr2_sys__Rename_wchar @ cdecl -arch=win32 ?_Rep@?$num_put(a)DV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@ABA?AV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@DI(a)Z(ptr ptr long ptr long long) num_put_char__Rep @ cdecl -arch=win64 ?_Rep@?$num_put(a)DV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@AEBA?AV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@D_K(a)Z(ptr ptr ptr long long) num_put_char__Rep @ cdecl -arch=win32 ?_Rep@?$num_put(a)GV?$ostreambuf_iterator(a)GU?$char_traits(a)G@std@@@std@@@std@@ABA?AV?$ostreambuf_iterator(a)GU?$char_traits(a)G@std@@@2(a)V32@GI(a)Z(ptr ptr long ptr long long) num_put_wchar__Rep diff --git a/dlls/msvcp120/tests/msvcp120.c b/dlls/msvcp120/tests/msvcp120.c index 08effda..dc833e9 100644 --- a/dlls/msvcp120/tests/msvcp120.c +++ b/dlls/msvcp120/tests/msvcp120.c @@ -87,6 +87,7 @@ static MSVCP_bool (__cdecl *p_tr2_sys__Remove_dir_wchar)(WCHAR const*); static int (__cdecl *p_tr2_sys__Copy_file)(char const*, char const*, MSVCP_bool); static int (__cdecl *p_tr2_sys__Copy_file_wchar)(WCHAR const*, WCHAR const*, MSVCP_bool); static int (__cdecl *p_tr2_sys__Rename)(char const*, char const*); +static int (__cdecl *p_tr2_sys__Rename_wchar)(WCHAR const*, WCHAR const*); static struct space_info (__cdecl *p_tr2_sys__Statvfs)(char const*); static enum file_type (__cdecl *p_tr2_sys__Stat)(char const*, int *); static enum file_type (__cdecl *p_tr2_sys__Lstat)(char const*, int *); @@ -148,6 +149,8 @@ static BOOL init(void) "?_Copy_file(a)sys@tr2(a)std@@YAHPEB_W0_N(a)Z"); SET(p_tr2_sys__Rename, "?_Rename(a)sys@tr2(a)std@@YAHPEBD0(a)Z"); + SET(p_tr2_sys__Rename_wchar, + "?_Rename(a)sys@tr2(a)std@@YAHPEB_W0(a)Z"); SET(p_tr2_sys__Statvfs, "?_Statvfs(a)sys@tr2(a)std@@YA?AUspace_info(a)123@PEBD(a)Z"); SET(p_tr2_sys__Stat, @@ -185,6 +188,8 @@ static BOOL init(void) "?_Copy_file(a)sys@tr2(a)std@@YAHPB_W0_N(a)Z"); SET(p_tr2_sys__Rename, "?_Rename(a)sys@tr2(a)std@@YAHPBD0(a)Z"); + SET(p_tr2_sys__Rename_wchar, + "?_Rename(a)sys@tr2(a)std@@YAHPB_W0(a)Z"); SET(p_tr2_sys__Statvfs, "?_Statvfs(a)sys@tr2(a)std@@YA?AUspace_info(a)123@PBD(a)Z"); SET(p_tr2_sys__Stat, @@ -694,6 +699,8 @@ static void test_tr2_sys__Rename(void) BY_HANDLE_FILE_INFORMATION info1, info2; char temp_path[MAX_PATH], current_path[MAX_PATH]; LARGE_INTEGER file_size; + WCHAR testW[] = {'t','r','2','_','t','e','s','t','_','d','i','r','/','f','1',0}; + WCHAR testW2[] = {'t','r','2','_','t','e','s','t','_','d','i','r','/','f','w',0}; struct { char const *old_path; char const *new_path; @@ -756,8 +763,10 @@ static void test_tr2_sys__Rename(void) ok(ret == ERROR_ALREADY_EXISTS, "test_tr2_sys__Rename(): expect: ERROR_ALREADY_EXISTS, got %d\n", ret); ok(p_tr2_sys__File_size("tr2_test_dir\\f1") == 7, "test_tr2_sys__Rename(): expect: 7, got %s\n", debugstr_longlong(p_tr2_sys__File_size("tr2_test_dir\\f1"))); ok(p_tr2_sys__File_size("tr2_test_dir\\f1_rename") == 0, "test_tr2_sys__Rename(): expect: 0, got %s\n",debugstr_longlong(p_tr2_sys__File_size("tr2_test_dir\\f1_rename"))); + ret = p_tr2_sys__Rename_wchar(testW, testW2); + ok(ret == ERROR_SUCCESS, "tr2_sys__Rename_wchar(): expect: ERROR_SUCCESS, got %d\n", ret); - ok(DeleteFileA("tr2_test_dir\\f1"), "expect f1 to exist\n"); + ok(DeleteFileW(testW2), "expect fw to exist\n"); ok(DeleteFileA("tr2_test_dir\\f1_rename"), "expect f1_rename to exist\n"); ret = p_tr2_sys__Remove_dir("tr2_test_dir"); ok(ret == 1, "test_tr2_sys__Remove_dir(): expect %d got %d\n", 1, ret); diff --git a/dlls/msvcp120_app/msvcp120_app.spec b/dlls/msvcp120_app/msvcp120_app.spec index 06a2e2d..c5e4da0 100644 --- a/dlls/msvcp120_app/msvcp120_app.spec +++ b/dlls/msvcp120_app/msvcp120_app.spec @@ -1685,8 +1685,8 @@ @ cdecl -arch=win64 ?_Remove_dir(a)sys@tr2(a)std@@YA_NPEB_W(a)Z(wstr) msvcp120.?_Remove_dir(a)sys@tr2(a)std@@YA_NPEB_W(a)Z @ cdecl -arch=win32 ?_Rename(a)sys@tr2(a)std@@YAHPBD0(a)Z(str str) msvcp120.?_Rename(a)sys@tr2(a)std@@YAHPBD0(a)Z @ cdecl -arch=win64 ?_Rename(a)sys@tr2(a)std@@YAHPEBD0(a)Z(str str) msvcp120.?_Rename(a)sys@tr2(a)std@@YAHPEBD0(a)Z -@ stub -arch=win32 ?_Rename(a)sys@tr2(a)std@@YAHPB_W0(a)Z -@ stub -arch=win64 ?_Rename(a)sys@tr2(a)std@@YAHPEB_W0(a)Z +@ cdecl -arch=win32 ?_Rename(a)sys@tr2(a)std@@YAHPB_W0(a)Z(wstr wstr) msvcp120.?_Rename(a)sys@tr2(a)std@@YAHPB_W0(a)Z +@ cdecl -arch=win64 ?_Rename(a)sys@tr2(a)std@@YAHPEB_W0(a)Z(wstr wstr) msvcp120.?_Rename(a)sys@tr2(a)std@@YAHPEB_W0(a)Z @ cdecl -arch=win32 ?_Rep@?$num_put(a)DV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@ABA?AV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@DI(a)Z(ptr ptr long ptr long long) msvcp120.?_Rep@?$num_put(a)DV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@ABA?AV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@DI(a)Z @ cdecl -arch=win64 ?_Rep@?$num_put(a)DV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@AEBA?AV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@D_K(a)Z(ptr ptr ptr long long) msvcp120.?_Rep@?$num_put(a)DV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@std@@@std@@AEBA?AV?$ostreambuf_iterator(a)DU?$char_traits(a)D@std@@@2(a)V32@D_K(a)Z @ cdecl -arch=win32 ?_Rep@?$num_put(a)GV?$ostreambuf_iterator(a)GU?$char_traits(a)G@std@@@std@@@std@@ABA?AV?$ostreambuf_iterator(a)GU?$char_traits(a)G@std@@@2(a)V32@GI(a)Z(ptr ptr long ptr long long) msvcp120.?_Rep@?$num_put(a)GV?$ostreambuf_iterator(a)GU?$char_traits(a)G@std@@@std@@@std@@ABA?AV?$ostreambuf_iterator(a)GU?$char_traits(a)G@std@@@2(a)V32@GI(a)Z diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c index 532c7cf..c7a3be9 100644 --- a/dlls/msvcp90/ios.c +++ b/dlls/msvcp90/ios.c @@ -14844,6 +14844,20 @@ int __cdecl tr2_sys__Copy_file_wchar(WCHAR const* source, WCHAR const* dest, MSV return GetLastError(); } +/* ?_Rename(a)sys@tr2(a)std@@YAHPB_W0(a)Z */ +/* ?_Rename(a)sys@tr2(a)std@@YAHPEB_W0(a)Z */ +int __cdecl tr2_sys__Rename_wchar(WCHAR const* old_path, WCHAR const* new_path) +{ + TRACE("(%s %s)\n", debugstr_w(old_path), debugstr_w(new_path)); + + if(!old_path || !new_path) + return ERROR_INVALID_PARAMETER; + + if(MoveFileExW(old_path, new_path, MOVEFILE_COPY_ALLOWED)) + return ERROR_SUCCESS; + return GetLastError(); +} + /* ??1_Winit(a)std@@QAE(a)XZ */ /* ??1_Winit(a)std@@QAE(a)XZ */ DEFINE_THISCALL_WRAPPER(_Winit_dtor, 4)
participants (1)
-
Alexandre Julliard