aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukáš Lalinský <lalinsky@gmail.com>2011-06-09 18:58:45 +0200
committerLukáš Lalinský <lalinsky@gmail.com>2011-06-09 18:58:45 +0200
commitc3c88b4f550d11db241247b3b4bc3c8154e6d53f (patch)
tree78bc259039308fe44d76b2ea0622262c864b8f2a
parent8eb32577bdcdc6f565f3a3807b188d4cee11d5f7 (diff)
parenta224e7cd6dce0a3ee77a6765eaf2142074c901a9 (diff)
Merge remote branch 'lalinsky/abstract-io'
-rw-r--r--taglib/CMakeLists.txt3
-rw-r--r--taglib/toolkit/tfilestream.cpp36
-rw-r--r--taglib/toolkit/tfilestream.h2
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.