+ //cerr << "SMFSource::seek_to_footer_position: At position: " << ftell(_fd);
+ size_t read_bytes = fread(buffer, sizeof(uint8_t), 4, _fd);
+ /*cerr << " read size: " << read_bytes << " buffer: ";
+ for (size_t i=0; i < read_bytes; ++i) {
+ printf("%x ", buffer[i]);
+ }
+ printf("\n");
+ */
+
+ if( (read_bytes == 4) &&
+ buffer[0] == 0x00 &&
+ buffer[1] == 0xFF &&
+ buffer[2] == 0x2F &&
+ buffer[3] == 0x00) {
+ // there is one, so overwrite it
+ fseek(_fd, -4, SEEK_END);
+ } else {
+ // there is none, so append
+ fseek(_fd, 0, SEEK_END);
+ }