diff options
author | Lukáš Lalinský <lalinsky@gmail.com> | 2011-06-09 18:58:45 +0200 |
---|---|---|
committer | Lukáš Lalinský <lalinsky@gmail.com> | 2011-06-09 18:58:45 +0200 |
commit | c3c88b4f550d11db241247b3b4bc3c8154e6d53f (patch) | |
tree | 78bc259039308fe44d76b2ea0622262c864b8f2a | |
parent | 8eb32577bdcdc6f565f3a3807b188d4cee11d5f7 (diff) | |
parent | a224e7cd6dce0a3ee77a6765eaf2142074c901a9 (diff) |
Merge remote branch 'lalinsky/abstract-io'
-rw-r--r-- | taglib/CMakeLists.txt | 3 | ||||
-rw-r--r-- | taglib/toolkit/tfilestream.cpp | 36 | ||||
-rw-r--r-- | taglib/toolkit/tfilestream.h | 2 |
3 files changed, 26 insertions, 15 deletions
diff --git a/taglib/CMakeLists.txt b/taglib/CMakeLists.txt index 3e7ae76a..0bb01d08 100644 --- a/taglib/CMakeLists.txt +++ b/taglib/CMakeLists.txt @@ -38,7 +38,10 @@ set(tag_HDRS toolkit/tstringlist.h toolkit/tbytevector.h toolkit/tbytevectorlist.h + toolkit/tbytevectorstream.h + toolkit/tiostream.h toolkit/tfile.h + toolkit/tfilestream.h toolkit/tmap.h toolkit/tmap.tcc mpeg/mpegfile.h diff --git a/taglib/toolkit/tfilestream.cpp b/taglib/toolkit/tfilestream.cpp index ce2bf11f..45e4cdde 100644 --- a/taglib/toolkit/tfilestream.cpp +++ b/taglib/toolkit/tfilestream.cpp @@ -68,7 +68,7 @@ struct FileNameHandle : public std::string class FileStream::FileStreamPrivate { public: - FileStreamPrivate(FileName fileName); + FileStreamPrivate(FileName fileName, bool openReadOnly); FILE *file; @@ -79,7 +79,7 @@ public: static const uint bufferSize = 1024; }; -FileStream::FileStreamPrivate::FileStreamPrivate(FileName fileName) : +FileStream::FileStreamPrivate::FileStreamPrivate(FileName fileName, bool openReadOnly) : file(0), name(fileName), readOnly(true), @@ -91,12 +91,16 @@ FileStream::FileStreamPrivate::FileStreamPrivate(FileName fileName) : if(wcslen((const wchar_t *) fileName) > 0) { - file = _wfopen(name, L"rb+"); - - if(file) - readOnly = false; - else + if(openReadOnly) file = _wfopen(name, L"rb"); + else { + file = _wfopen(name, L"rb+"); + + if(file) + readOnly = false; + else + file = _wfopen(name, L"rb"); + } if(file) return; @@ -105,12 +109,16 @@ FileStream::FileStreamPrivate::FileStreamPrivate(FileName fileName) : #endif - file = fopen(name, "rb+"); - - if(file) - readOnly = false; - else + if(openReadOnly) file = fopen(name, "rb"); + else { + file = fopen(name, "rb+"); + + if(file) + readOnly = false; + else + file = fopen(name, "rb"); + } if(!file) { @@ -122,9 +130,9 @@ FileStream::FileStreamPrivate::FileStreamPrivate(FileName fileName) : // public members //////////////////////////////////////////////////////////////////////////////// -FileStream::FileStream(FileName file) +FileStream::FileStream(FileName file, bool openReadOnly) { - d = new FileStreamPrivate(file); + d = new FileStreamPrivate(file, openReadOnly); } FileStream::~FileStream() diff --git a/taglib/toolkit/tfilestream.h b/taglib/toolkit/tfilestream.h index 65ed5fb5..fa113b73 100644 --- a/taglib/toolkit/tfilestream.h +++ b/taglib/toolkit/tfilestream.h @@ -52,7 +52,7 @@ namespace TagLib { * Construct a File object and opens the \a file. \a file should be a * be a C-string in the local file system encoding. */ - FileStream(FileName file); + FileStream(FileName file, bool openReadOnly = false); /*! * Destroys this FileStream instance. |