From: YongHao Hu Subject: [PATCH 04/12] msvcp110: Add tr2_sys__Read_dir implementation.(resend) Message-Id: <55ED9D71.4070602@gmail.com> Date: Mon, 7 Sep 2015 22:21:37 +0800 --- dlls/msvcp110/msvcp110.spec | 4 ++-- dlls/msvcp120/msvcp120.spec | 4 ++-- dlls/msvcp120_app/msvcp120_app.spec | 4 ++-- dlls/msvcp90/ios.c | 25 +++++++++++++++++++++++++ 4 files changed, 31 insertions(+), 6 deletions(-) mode change 100644 => 100755 dlls/msvcp90/ios.c diff --git a/dlls/msvcp110/msvcp110.spec b/dlls/msvcp110/msvcp110.spec index 18c6001..2e4b45d 100644 --- a/dlls/msvcp110/msvcp110.spec +++ b/dlls/msvcp110/msvcp110.spec @@ -1711,8 +1711,8 @@ @ stub -arch=win32 ?_Raise_handler@std@@3P6AXABVexception@stdext@@@ZA @ stub -arch=win64 ?_Raise_handler@std@@3P6AXAEBVexception@stdext@@@ZEA @ cdecl ?_Random_device@std@@YAIXZ() _Random_device -@ stub -arch=win32 ?_Read_dir@sys@tr2@std@@YAPADPADPAXAAW4file_type@123@@Z -@ stub -arch=win64 ?_Read_dir@sys@tr2@std@@YAPEADPEADPEAXAEAW4file_type@123@@Z +@ cdecl -arch=win32 ?_Read_dir@sys@tr2@std@@YAPADPADPAXAAW4file_type@123@@Z(str ptr ptr) tr2_sys__Read_dir +@ cdecl -arch=win64 ?_Read_dir@sys@tr2@std@@YAPEADPEADPEAXAEAW4file_type@123@@Z(str ptr ptr) tr2_sys__Read_dir @ stub -arch=win32 ?_Read_dir@sys@tr2@std@@YAPA_WPA_WPAXAAW4file_type@123@@Z @ stub -arch=win64 ?_Read_dir@sys@tr2@std@@YAPEA_WPEA_WPEAXAEAW4file_type@123@@Z @ stub -arch=arm ?_Release@_Pad@std@@QAAXXZ diff --git a/dlls/msvcp120/msvcp120.spec b/dlls/msvcp120/msvcp120.spec index 560346d..7be8789 100644 --- a/dlls/msvcp120/msvcp120.spec +++ b/dlls/msvcp120/msvcp120.spec @@ -1672,8 +1672,8 @@ @ stub -arch=win32 ?_Raise_handler@std@@3P6AXABVexception@stdext@@@ZA @ stub -arch=win64 ?_Raise_handler@std@@3P6AXAEBVexception@stdext@@@ZEA @ cdecl ?_Random_device@std@@YAIXZ() _Random_device -@ stub -arch=win32 ?_Read_dir@sys@tr2@std@@YAPADAAY0BAE@DPAXAAW4file_type@123@@Z -@ stub -arch=win64 ?_Read_dir@sys@tr2@std@@YAPEADAEAY0BAE@DPEAXAEAW4file_type@123@@Z +@ cdecl -arch=win32 ?_Read_dir@sys@tr2@std@@YAPADAAY0BAE@DPAXAAW4file_type@123@@Z(str ptr ptr) tr2_sys__Read_dir +@ cdecl -arch=win64 ?_Read_dir@sys@tr2@std@@YAPEADAEAY0BAE@DPEAXAEAW4file_type@123@@Z(str ptr ptr) tr2_sys__Read_dir @ stub -arch=win32 ?_Read_dir@sys@tr2@std@@YAPA_WAAY0BAE@_WPAXAAW4file_type@123@@Z @ stub -arch=win64 ?_Read_dir@sys@tr2@std@@YAPEA_WAEAY0BAE@_WPEAXAEAW4file_type@123@@Z @ stub -arch=arm ?_Release@_Pad@std@@QAAXXZ diff --git a/dlls/msvcp120_app/msvcp120_app.spec b/dlls/msvcp120_app/msvcp120_app.spec index 0cf7bca..c2f27ed 100644 --- a/dlls/msvcp120_app/msvcp120_app.spec +++ b/dlls/msvcp120_app/msvcp120_app.spec @@ -1672,8 +1672,8 @@ @ stub -arch=win32 ?_Raise_handler@std@@3P6AXABVexception@stdext@@@ZA @ stub -arch=win64 ?_Raise_handler@std@@3P6AXAEBVexception@stdext@@@ZEA @ cdecl ?_Random_device@std@@YAIXZ() msvcp120.?_Random_device@std@@YAIXZ -@ stub -arch=win32 ?_Read_dir@sys@tr2@std@@YAPADAAY0BAE@DPAXAAW4file_type@123@@Z -@ stub -arch=win64 ?_Read_dir@sys@tr2@std@@YAPEADAEAY0BAE@DPEAXAEAW4file_type@123@@Z +@ cdecl -arch=win32 ?_Read_dir@sys@tr2@std@@YAPADAAY0BAE@DPAXAAW4file_type@123@@Z(str ptr ptr) msvcp120.?_Read_dir@sys@tr2@std@@YAPADAAY0BAE@DPAXAAW4file_type@123@@Z +@ cdecl -arch=win64 ?_Read_dir@sys@tr2@std@@YAPEADAEAY0BAE@DPEAXAEAW4file_type@123@@Z(str ptr ptr) msvcp120.?_Read_dir@sys@tr2@std@@YAPEADAEAY0BAE@DPEAXAEAW4file_type@123@@Z @ stub -arch=win32 ?_Read_dir@sys@tr2@std@@YAPA_WAAY0BAE@_WPAXAAW4file_type@123@@Z @ stub -arch=win64 ?_Read_dir@sys@tr2@std@@YAPEA_WAEAY0BAE@_WPEAXAEAW4file_type@123@@Z @ stub -arch=arm ?_Release@_Pad@std@@QAAXXZ diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c old mode 100644 new mode 100755 index 5fcc5bf..6dc9044 --- a/dlls/msvcp90/ios.c +++ b/dlls/msvcp90/ios.c @@ -14475,6 +14475,31 @@ void* __cdecl tr2_sys__Open_dir(char* target, char const* dest, int* err_code, e return handle; } +/* ?_Read_dir@sys@tr2@std@@YAPADAAY0BAE@DPAXAAW4file_type@123@@Z */ +/* ?_Read_dir@sys@tr2@std@@YAPEADAEAY0BAE@DPEAXAEAW4file_type@123@@Z */ +char* __cdecl tr2_sys__Read_dir(char* target, void* handle, enum file_type* type) +{ + WIN32_FIND_DATAA data; + TRACE("(%s %p %p)\n", debugstr_a(target), handle, type); + if(!FindNextFileA(handle, &data)) { + *type = status_unknown; + return (char*)""; + } + while(!strcmp(data.cFileName, ".") || !strcmp(data.cFileName, "..")) { + if(!FindNextFileA(handle, &data)) { + *type = status_unknown; + return NULL; + } + } + + strcpy(target, data.cFileName); + if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + *type = directory_file; + else + *type = regular_file; + return target; +} + /* ??0strstream@std@@QAE@PADHH@Z */ /* ??0strstream@std@@QEAA@PEAD_JH@Z */ #if STREAMSIZE_BITS == 64