From 4b53fa6f2956ccf4b0cdb98adeceeaf66b67612b Mon Sep 17 00:00:00 2001 From: weidai Date: Sat, 11 Jul 2009 01:48:12 +0000 Subject: handle Unicode filenames git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@472 57ff6487-cd31-0410-9ec3-f628ee90f5f0 --- files.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'files.h') diff --git a/files.h b/files.h index 2c4e2b8..a47e856 100644 --- a/files.h +++ b/files.h @@ -27,6 +27,11 @@ public: {StoreInitialize(MakeParameters(Name::InputStreamPointer(), &in));} FileStore(const char *filename) {StoreInitialize(MakeParameters(Name::InputFileName(), filename));} +#if defined(CRYPTOPP_UNIX_AVAILABLE) || _MSC_VER >= 1400 + //! specify file with Unicode name. On non-Windows OS, this function assumes that setlocale() has been called. + FileStore(const wchar_t *filename) + {StoreInitialize(MakeParameters(Name::InputFileNameWide(), filename));} +#endif std::istream* GetStream() {return m_stream;} @@ -59,6 +64,11 @@ public: : SourceTemplate(attachment) {SourceInitialize(pumpAll, MakeParameters(Name::InputStreamPointer(), &in));} FileSource(const char *filename, bool pumpAll, BufferedTransformation *attachment = NULL, bool binary=true) : SourceTemplate(attachment) {SourceInitialize(pumpAll, MakeParameters(Name::InputFileName(), filename)(Name::InputBinaryMode(), binary));} +#if defined(CRYPTOPP_UNIX_AVAILABLE) || _MSC_VER >= 1400 + //! specify file with Unicode name. On non-Windows OS, this function assumes that setlocale() has been called. + FileSource(const wchar_t *filename, bool pumpAll, BufferedTransformation *attachment = NULL, bool binary=true) + : SourceTemplate(attachment) {SourceInitialize(pumpAll, MakeParameters(Name::InputFileNameWide(), filename)(Name::InputBinaryMode(), binary));} +#endif std::istream* GetStream() {return m_store.GetStream();} }; @@ -79,7 +89,12 @@ public: FileSink(std::ostream &out) {IsolatedInitialize(MakeParameters(Name::OutputStreamPointer(), &out));} FileSink(const char *filename, bool binary=true) - {IsolatedInitialize(MakeParameters(Name::OutputFileName(), filename)("OutputBinaryMode", binary));} + {IsolatedInitialize(MakeParameters(Name::OutputFileName(), filename)(Name::OutputBinaryMode(), binary));} +#if defined(CRYPTOPP_UNIX_AVAILABLE) || _MSC_VER >= 1400 + //! specify file with Unicode name. On non-Windows OS, this function assumes that setlocale() has been called. + FileSink(const wchar_t *filename, bool binary=true) + {IsolatedInitialize(MakeParameters(Name::OutputFileNameWide(), filename)(Name::OutputBinaryMode(), binary));} +#endif std::ostream* GetStream() {return m_stream;} -- cgit v1.2.1