From 66d35c4048882f5d8d63f53460908ed672d7a658 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Fri, 5 Oct 2012 14:54:00 +0200 Subject: [PATCH] msvcp60: Added __Fiopen implementation. --- dlls/msvcp60/ios.c | 78 +++++++++++++++++++++++++++++++++++++++ dlls/msvcp60/msvcp60.spec | 4 +- 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/dlls/msvcp60/ios.c b/dlls/msvcp60/ios.c index f09abc2717f..cf3620a516d 100644 --- a/dlls/msvcp60/ios.c +++ b/dlls/msvcp60/ios.c @@ -2413,6 +2413,84 @@ MSVCP_bool __thiscall basic_filebuf_char_is_open(const basic_filebuf_char *this) return this->file != NULL; } +/* ?_Fiopen@std@@YAPAU_iobuf@@PB_WHH@Z */ +/* ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z */ +static FILE* _Fiopen_wchar(const wchar_t *name, int mode, int prot) +{ + static const wchar_t rW[] = {'r',0}; + static const struct { + int mode; + const wchar_t str[4]; + const wchar_t str_bin[4]; + } str_mode[] = { + {OPENMODE_out, {'w',0}, {'w','b',0}}, + {OPENMODE_out|OPENMODE_app, {'a',0}, {'a','b',0}}, + {OPENMODE_app, {'a',0}, {'a','b',0}}, + {OPENMODE_out|OPENMODE_trunc, {'w',0}, {'w','b',0}}, + {OPENMODE_in, {'r',0}, {'r','b',0}}, + {OPENMODE_in|OPENMODE_out, {'r','+',0}, {'r','+','b',0}}, + {OPENMODE_in|OPENMODE_out|OPENMODE_trunc, {'w','+',0}, {'w','+','b',0}}, + {OPENMODE_in|OPENMODE_out|OPENMODE_app, {'a','+',0}, {'a','+','b',0}}, + {OPENMODE_in|OPENMODE_app, {'a','+',0}, {'a','+','b',0}} + }; + + int real_mode = mode & ~(OPENMODE_ate|OPENMODE__Nocreate|OPENMODE__Noreplace|OPENMODE_binary); + int mode_idx; + FILE *f = NULL; + + TRACE("(%s %d %d)\n", debugstr_w(name), mode, prot); + + for(mode_idx=0; mode_idx