Module: wine Branch: master Commit: de6546568812333a9b938363357c184598d95201 URL: http://source.winehq.org/git/wine.git/?a=commit;h=de6546568812333a9b93836335...
Author: YongHao Hu christopherwuy@gmail.com Date: Sat Jun 13 00:30:07 2015 +0800
msvcp110: Add tr2_sys__Current_get implementation and test.
---
dlls/msvcp110/msvcp110.spec | 4 ++-- dlls/msvcp120/msvcp120.spec | 4 ++-- dlls/msvcp120/tests/msvcp120.c | 29 +++++++++++++++++++++++++++++ dlls/msvcp120_app/msvcp120_app.spec | 4 ++-- dlls/msvcp90/ios.c | 11 +++++++++++ 5 files changed, 46 insertions(+), 6 deletions(-)
diff --git a/dlls/msvcp110/msvcp110.spec b/dlls/msvcp110/msvcp110.spec index c388eaf..13d790e 100644 --- a/dlls/msvcp110/msvcp110.spec +++ b/dlls/msvcp110/msvcp110.spec @@ -1167,8 +1167,8 @@ @ stub -arch=win64 ?_Copy_file@sys@tr2@std@@YAHPEBD0_N@Z @ stub -arch=win32 ?_Copy_file@sys@tr2@std@@YAHPB_W0_N@Z @ stub -arch=win64 ?_Copy_file@sys@tr2@std@@YAHPEB_W0_N@Z -@ stub -arch=win32 ?_Current_get@sys@tr2@std@@YAPADPAD@Z -@ stub -arch=win64 ?_Current_get@sys@tr2@std@@YAPEADPEAD@Z +@ cdecl -arch=win32 ?_Current_get@sys@tr2@std@@YAPADPAD@Z(ptr) tr2_sys__Current_get +@ cdecl -arch=win64 ?_Current_get@sys@tr2@std@@YAPEADPEAD@Z(ptr) tr2_sys__Current_get @ stub -arch=win32 ?_Current_get@sys@tr2@std@@YAPA_WPA_W@Z @ stub -arch=win64 ?_Current_get@sys@tr2@std@@YAPEA_WPEA_W@Z @ stub -arch=win32 ?_Current_set@sys@tr2@std@@YA_NPBD@Z diff --git a/dlls/msvcp120/msvcp120.spec b/dlls/msvcp120/msvcp120.spec index c74e6ca..9547473 100644 --- a/dlls/msvcp120/msvcp120.spec +++ b/dlls/msvcp120/msvcp120.spec @@ -1132,8 +1132,8 @@ @ stub -arch=win64 ?_Copy_file@sys@tr2@std@@YAHPEBD0_N@Z @ stub -arch=win32 ?_Copy_file@sys@tr2@std@@YAHPB_W0_N@Z @ stub -arch=win64 ?_Copy_file@sys@tr2@std@@YAHPEB_W0_N@Z -@ stub -arch=win32 ?_Current_get@sys@tr2@std@@YAPADAAY0BAE@D@Z -@ stub -arch=win64 ?_Current_get@sys@tr2@std@@YAPEADAEAY0BAE@D@Z +@ cdecl -arch=win32 ?_Current_get@sys@tr2@std@@YAPADAAY0BAE@D@Z(ptr) tr2_sys__Current_get +@ cdecl -arch=win64 ?_Current_get@sys@tr2@std@@YAPEADAEAY0BAE@D@Z(ptr) tr2_sys__Current_get @ stub -arch=win32 ?_Current_get@sys@tr2@std@@YAPA_WAAY0BAE@_W@Z @ stub -arch=win64 ?_Current_get@sys@tr2@std@@YAPEA_WAEAY0BAE@_W@Z @ stub -arch=win32 ?_Current_set@sys@tr2@std@@YA_NPBD@Z diff --git a/dlls/msvcp120/tests/msvcp120.c b/dlls/msvcp120/tests/msvcp120.c index defa934..6760a13 100644 --- a/dlls/msvcp120/tests/msvcp120.c +++ b/dlls/msvcp120/tests/msvcp120.c @@ -61,6 +61,7 @@ static void (CDECL *p__Do_call)(void *this); /* filesystem */ static ULONGLONG(__cdecl *p_tr2_sys__File_size)(char const*); static int (__cdecl *p_tr2_sys__Equivalent)(char const*, char const*); +static char* (__cdecl *p_tr2_sys__Current_get)(char *);
static HMODULE msvcp; #define SETNOFAIL(x,y) x = (void*)GetProcAddress(msvcp,y) @@ -93,11 +94,15 @@ static BOOL init(void) "?_File_size@sys@tr2@std@@YA_KPEBD@Z"); SET(p_tr2_sys__Equivalent, "?_Equivalent@sys@tr2@std@@YAHPEBD0@Z"); + SET(p_tr2_sys__Current_get, + "?_Current_get@sys@tr2@std@@YAPEADAEAY0BAE@D@Z"); } else { SET(p_tr2_sys__File_size, "?_File_size@sys@tr2@std@@YA_KPBD@Z"); SET(p_tr2_sys__Equivalent, "?_Equivalent@sys@tr2@std@@YAHPBD0@Z"); + SET(p_tr2_sys__Current_get, + "?_Current_get@sys@tr2@std@@YAPADAAY0BAE@D@Z"); }
msvcr = GetModuleHandleA("msvcr120.dll"); @@ -395,6 +400,29 @@ static void test_tr2_sys__Equivalent(void) ok(SetCurrentDirectoryA(current_path), "SetCurrentDirectoryA failed\n"); }
+static void test_tr2_sys__Current_get(void) +{ + char temp_path[MAX_PATH], current_path[MAX_PATH], origin_path[MAX_PATH]; + char *temp; + memset(origin_path, 0, MAX_PATH); + GetCurrentDirectoryA(MAX_PATH, origin_path); + memset(temp_path, 0, MAX_PATH); + GetTempPathA(MAX_PATH, temp_path); + + ok(SetCurrentDirectoryA(temp_path), "SetCurrentDirectoryA to temp_path failed\n"); + memset(current_path, 0, MAX_PATH); + temp = p_tr2_sys__Current_get(current_path); + ok(temp == current_path, "p_tr2_sys__Current_get returned different buffer\n"); + temp[strlen(temp)] = '\'; + ok(!strcmp(temp_path, current_path), "test_tr2_sys__Current_get(): expect: %s, got %s\n", temp_path, current_path); + + ok(SetCurrentDirectoryA(origin_path), "SetCurrentDirectoryA to origin_path failed\n"); + memset(current_path, 0, MAX_PATH); + temp = p_tr2_sys__Current_get(current_path); + ok(temp == current_path, "p_tr2_sys__Current_get returned different buffer\n"); + ok(!strcmp(origin_path, current_path), "test_tr2_sys__Current_get(): expect: %s, got %s\n", origin_path, current_path); +} + START_TEST(msvcp120) { if(!init()) return; @@ -406,5 +434,6 @@ START_TEST(msvcp120)
test_tr2_sys__File_size(); test_tr2_sys__Equivalent(); + test_tr2_sys__Current_get(); FreeLibrary(msvcp); } diff --git a/dlls/msvcp120_app/msvcp120_app.spec b/dlls/msvcp120_app/msvcp120_app.spec index fdbda65..11e208a 100644 --- a/dlls/msvcp120_app/msvcp120_app.spec +++ b/dlls/msvcp120_app/msvcp120_app.spec @@ -1132,8 +1132,8 @@ @ stub -arch=win64 ?_Copy_file@sys@tr2@std@@YAHPEBD0_N@Z @ stub -arch=win32 ?_Copy_file@sys@tr2@std@@YAHPB_W0_N@Z @ stub -arch=win64 ?_Copy_file@sys@tr2@std@@YAHPEB_W0_N@Z -@ stub -arch=win32 ?_Current_get@sys@tr2@std@@YAPADAAY0BAE@D@Z -@ stub -arch=win64 ?_Current_get@sys@tr2@std@@YAPEADAEAY0BAE@D@Z +@ cdecl -arch=win32 ?_Current_get@sys@tr2@std@@YAPADAAY0BAE@D@Z(ptr) msvcp120.?_Current_get@sys@tr2@std@@YAPADAAY0BAE@D@Z +@ cdecl -arch=win64 ?_Current_get@sys@tr2@std@@YAPEADAEAY0BAE@D@Z(ptr) msvcp120.?_Current_get@sys@tr2@std@@YAPEADAEAY0BAE@D@Z @ stub -arch=win32 ?_Current_get@sys@tr2@std@@YAPA_WAAY0BAE@_W@Z @ stub -arch=win64 ?_Current_get@sys@tr2@std@@YAPEA_WAEAY0BAE@_W@Z @ stub -arch=win32 ?_Current_set@sys@tr2@std@@YA_NPBD@Z diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c index d68e26a..e11d8c4 100644 --- a/dlls/msvcp90/ios.c +++ b/dlls/msvcp90/ios.c @@ -14241,6 +14241,17 @@ int __cdecl tr2_sys__Equivalent(char const* path1, char const* path2) ); }
+/* ?_Current_get@sys@tr2@std@@YAPADAAY0BAE@D@Z */ +/* ?_Current_get@sys@tr2@std@@YAPEADAEAY0BAE@D@Z */ +char* __cdecl tr2_sys__Current_get(char *current_path) +{ + TRACE("(%p)\n", current_path); + + if(!GetCurrentDirectoryA(MAX_PATH, current_path)) + return NULL; + return current_path; +} + /* ??0strstream@std@@QAE@PADHH@Z */ /* ??0strstream@std@@QEAA@PEAD_JH@Z */ #if STREAMSIZE_BITS == 64