* Add DSF and DSDIFF file types management
* Fixes for some build chains
* unit64_t replaced by unsigned long long, warning fixes
* Remove C++11 extension incompatible with some build chains (enumeration in a nested name specifier)
* Change typedef types (uint, ulong, ...) to standard types
remove BUILD_FRAMEWORK changes from this pull request
* Replace deprecated String::null and ByteVector::null by String() and ByteVector()
Styling update, thanks to FestusHagen
* Restyling
* Restyling to reduce length of excessively long lines
* Add to detectByExtension
* Added `isSupported(IOStream *stream)` to `DSF::File` and `DSDIFF::File`
CVE-2018-11439 is caused by a failure to check the minimum length
of a ogg flac header. This header is detailed in full at:
https://xiph.org/flac/ogg_mapping.html. Added more strict checking
for entire header.
If TDRC is encrypted, FrameFactory::createFrame() returns UnknownFrame
which causes problems in rebuildAggregateFrames() when it is assumed
that TDRC is a TextIdentificationFrame
powerpc is a platform with 'char' == 'unsigned char'.
As a result '-1' is not expressible in char and build fails as:
```
# '-funsigned-char' to force test build failure on other platforms
$ cmake .. -DBUILD_TESTS=YES -DCMAKE_CXX_FLAGS="-O2 -funsigned-char" -DCMAKE_C_FLAGS="-O2 -funsigned-char"
...
$ make check
tests/test_synchdata.cpp: In member function 'void TestID3v2SynchData::testToUIntBroken()':
tests/test_synchdata.cpp:78:33: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
char data[] = { 0, 0, 0, -1 };
^
```
The fix is to expliticly cast -1 to 'char'.
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Don't rely on _WIN32_WINNT value to enable WinRT support.
if _WIN32_WINNT is not set manually, it is defaulted to SDK version. So
if you use SDK > 8 you cannot use TagLib under Win7 and lower because of
CreateFile2 function dependency.
PLATFORM_WINRT option (OFF by default) was introduced to enable WinRT
build.
Related issues: https://github.com/Microsoft/vcpkg/issues/1240
The name 'isValidStream' is a little misleading because it doesn't check if the stream is really valid. Additionally, 'isSupported' can be naturally overloaded.
FileRef doesn't work with ByteVectorStream as reported at #796, since ByteVectorStream is not associated with a file name and FileRef detects file types based on file extensions.
This commit makes FileRef to work with ByteVectorStream by enabling it to detect file types based on the actual content of a stream.