diff options
author | David Robillard <d@drobilla.net> | 2007-04-02 00:26:21 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-04-02 00:26:21 +0000 |
commit | a23b21908e4d0fab277a9f6f7d5a3b5a69746740 (patch) | |
tree | a12085c9eb5873d48ecf08ffe030fa2b459d6ef6 /src | |
parent | 69559bddc0ae41f1f81241d92675009f86fa79b1 (diff) | |
download | raul-a23b21908e4d0fab277a9f6f7d5a3b5a69746740.tar.gz raul-a23b21908e4d0fab277a9f6f7d5a3b5a69746740.tar.bz2 raul-a23b21908e4d0fab277a9f6f7d5a3b5a69746740.zip |
List appending.
Make SMFReader abort gracefully on non-SMF files.
git-svn-id: http://svn.drobilla.net/lad/raul@389 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r-- | src/SMFReader.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/SMFReader.cpp b/src/SMFReader.cpp index 56232cf..a267e48 100644 --- a/src/SMFReader.cpp +++ b/src/SMFReader.cpp @@ -97,6 +97,19 @@ SMFReader::open(const string& filename) if (_fd) { // Read type (bytes 8..9) + fseek(_fd, 0, SEEK_SET); + char mthd[5]; + mthd[4] = '\0'; + fread(mthd, 1, 4, _fd); + if (strcmp(mthd, "MThd")) { + cerr << "File is not an SMF file, aborting." << endl; + fclose(_fd); + _fd = NULL; + return false; + } + + + // Read type (bytes 8..9) fseek(_fd, 8, SEEK_SET); uint16_t type_be = 0; fread(&type_be, 2, 1, _fd); @@ -153,7 +166,7 @@ SMFReader::seek_to_track(unsigned track) if (!strcmp(id, "MTrk")) { ++track_pos; - std::cerr << "Found track " << track_pos << endl; + //std::cerr << "Found track " << track_pos << endl; } else { std::cerr << "Unknown chunk ID " << id << endl; } |