msvcp110: Add tr2_sys__Make_dir implementation and test.

This commit is contained in:
YongHao Hu 2015-06-13 00:31:30 +08:00 committed by Alexandre Julliard
parent 64dfb08550
commit 9939b5f564
5 changed files with 51 additions and 6 deletions

View File

@ -1617,8 +1617,8 @@
@ stub -arch=win64 ?_MP_Mul@std@@YAXQEA_K_K1@Z
@ stub -arch=win32 ?_MP_Rem@std@@YAXQA_K_K@Z
@ stub -arch=win64 ?_MP_Rem@std@@YAXQEA_K_K@Z
@ stub -arch=win32 ?_Make_dir@sys@tr2@std@@YAHPBD@Z
@ stub -arch=win64 ?_Make_dir@sys@tr2@std@@YAHPEBD@Z
@ cdecl -arch=win32 ?_Make_dir@sys@tr2@std@@YAHPBD@Z(str) tr2_sys__Make_dir
@ cdecl -arch=win64 ?_Make_dir@sys@tr2@std@@YAHPEBD@Z(str) tr2_sys__Make_dir
@ stub -arch=win32 ?_Make_dir@sys@tr2@std@@YAHPB_W@Z
@ stub -arch=win64 ?_Make_dir@sys@tr2@std@@YAHPEB_W@Z
@ cdecl -arch=win32 ?_Makeloc@_Locimp@locale@std@@CAPAV123@ABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) locale__Locimp__Makeloc

View File

@ -1578,8 +1578,8 @@
@ stub -arch=win64 ?_MP_Mul@std@@YAXQEA_K_K1@Z
@ stub -arch=win32 ?_MP_Rem@std@@YAXQA_K_K@Z
@ stub -arch=win64 ?_MP_Rem@std@@YAXQEA_K_K@Z
@ stub -arch=win32 ?_Make_dir@sys@tr2@std@@YAHPBD@Z
@ stub -arch=win64 ?_Make_dir@sys@tr2@std@@YAHPEBD@Z
@ cdecl -arch=win32 ?_Make_dir@sys@tr2@std@@YAHPBD@Z(str) tr2_sys__Make_dir
@ cdecl -arch=win64 ?_Make_dir@sys@tr2@std@@YAHPEBD@Z(str) tr2_sys__Make_dir
@ stub -arch=win32 ?_Make_dir@sys@tr2@std@@YAHPB_W@Z
@ stub -arch=win64 ?_Make_dir@sys@tr2@std@@YAHPEB_W@Z
@ cdecl -arch=win32 ?_Makeloc@_Locimp@locale@std@@CAPAV123@ABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) locale__Locimp__Makeloc

View File

@ -64,6 +64,7 @@ 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 MSVCP_bool (__cdecl *p_tr2_sys__Current_set)(char const*);
static int (__cdecl *p_tr2_sys__Make_dir)(char const*);
static HMODULE msvcp;
#define SETNOFAIL(x,y) x = (void*)GetProcAddress(msvcp,y)
@ -100,6 +101,8 @@ static BOOL init(void)
"?_Current_get@sys@tr2@std@@YAPEADAEAY0BAE@D@Z");
SET(p_tr2_sys__Current_set,
"?_Current_set@sys@tr2@std@@YA_NPEBD@Z");
SET(p_tr2_sys__Make_dir,
"?_Make_dir@sys@tr2@std@@YAHPEBD@Z");
} else {
SET(p_tr2_sys__File_size,
"?_File_size@sys@tr2@std@@YA_KPBD@Z");
@ -109,6 +112,8 @@ static BOOL init(void)
"?_Current_get@sys@tr2@std@@YAPADAAY0BAE@D@Z");
SET(p_tr2_sys__Current_set,
"?_Current_set@sys@tr2@std@@YA_NPBD@Z");
SET(p_tr2_sys__Make_dir,
"?_Make_dir@sys@tr2@std@@YAHPBD@Z");
}
msvcr = GetModuleHandleA("msvcr120.dll");
@ -469,6 +474,29 @@ static void test_tr2_sys__Current_set(void)
ok(!strcmp(origin_path, current_path), "test_tr2_sys__Current_get(): expect: %s, got %s\n", origin_path, current_path);
}
static void test_tr2_sys__Make_dir(void)
{
int ret, i;
struct {
char const *path;
int val;
} tests[] = {
{ "tr2_test_dir", 1 },
{ "tr2_test_dir", 0 },
{ NULL, -1 },
{ "??invalid_name>>", -1 }
};
for(i=0; i<sizeof(tests)/sizeof(tests[0]); i++) {
errno = 0xdeadbeef;
ret = p_tr2_sys__Make_dir(tests[i].path);
ok(ret == tests[i].val, "tr2_sys__Make_dir(): test %d expect: %d, got %d\n", i+1, tests[i].val, ret);
ok(errno == 0xdeadbeef, "tr2_sys__Make_dir(): test %d errno expect 0xdeadbeef, got %d\n", i+1, errno);
}
ok(RemoveDirectoryA("tr2_test_dir"), "Expected tr2_test_dir to exist\n");
}
START_TEST(msvcp120)
{
if(!init()) return;
@ -482,5 +510,6 @@ START_TEST(msvcp120)
test_tr2_sys__Equivalent();
test_tr2_sys__Current_get();
test_tr2_sys__Current_set();
test_tr2_sys__Make_dir();
FreeLibrary(msvcp);
}

View File

@ -1578,8 +1578,8 @@
@ stub -arch=win64 ?_MP_Mul@std@@YAXQEA_K_K1@Z
@ stub -arch=win32 ?_MP_Rem@std@@YAXQA_K_K@Z
@ stub -arch=win64 ?_MP_Rem@std@@YAXQEA_K_K@Z
@ stub -arch=win32 ?_Make_dir@sys@tr2@std@@YAHPBD@Z
@ stub -arch=win64 ?_Make_dir@sys@tr2@std@@YAHPEBD@Z
@ cdecl -arch=win32 ?_Make_dir@sys@tr2@std@@YAHPBD@Z(str) msvcp120.?_Make_dir@sys@tr2@std@@YAHPBD@Z
@ cdecl -arch=win64 ?_Make_dir@sys@tr2@std@@YAHPEBD@Z(str) msvcp120.?_Make_dir@sys@tr2@std@@YAHPEBD@Z
@ stub -arch=win32 ?_Make_dir@sys@tr2@std@@YAHPB_W@Z
@ stub -arch=win64 ?_Make_dir@sys@tr2@std@@YAHPEB_W@Z
@ cdecl -arch=win32 ?_Makeloc@_Locimp@locale@std@@CAPAV123@ABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) msvcp120.?_Makeloc@_Locimp@locale@std@@CAPAV123@ABV_Locinfo@3@HPAV123@PBV23@@Z

View File

@ -14260,6 +14260,22 @@ MSVCP_bool __cdecl tr2_sys__Current_set(char const* path)
return SetCurrentDirectoryA(path) != 0;
}
/* ?_Make_dir@sys@tr2@std@@YAHPBD@Z */
/* ?_Make_dir@sys@tr2@std@@YAHPEBD@Z */
int __cdecl tr2_sys__Make_dir(char const* path)
{
TRACE("(%p)\n", path);
if(!CreateDirectoryA(path, NULL)) {
if(GetLastError() == ERROR_ALREADY_EXISTS)
return 0;
else
return -1;
}
return 1;
}
/* ??0strstream@std@@QAE@PADHH@Z */
/* ??0strstream@std@@QEAA@PEAD_JH@Z */
#if STREAMSIZE_BITS == 64