Add Lua bindings for MIDI-parser and Async ports
[ardour.git] / libs / ardour / audiofile_tagger.cc
index c06b712f4e779584ea01c13fb68ca114ef43fce8..0131292680b394e5747cddaf31239165924bbbc6 100644 (file)
 
 #include "ardour/session_metadata.h"
 
-#include "pbd/convert.h"
+#include "pbd/string_convert.h"
 
-#include "taglib/fileref.h"
-#include "taglib/flacfile.h"
-#include "taglib/oggfile.h"
-#include "taglib/tag.h"
-#include "taglib/taglib.h"
-#include "taglib/xiphcomment.h"
+#include <taglib/fileref.h>
+#include <taglib/flacfile.h>
+#include <taglib/oggfile.h>
+#include <taglib/tag.h>
+#include <taglib/taglib.h>
+#include <taglib/xiphcomment.h>
 
-/* Convert Glib::ustring to TagLib::String */
-#define TL_STR(ustring) TagLib::String ((ustring).c_str(), TagLib::String::UTF8)
+/* Convert string to TagLib::String */
+#define TL_STR(string) TagLib::String ((string).c_str(), TagLib::String::UTF8)
 
 using namespace PBD;
 
@@ -40,9 +40,19 @@ namespace ARDOUR
 {
 
 bool
-AudiofileTagger::tag_file (string const & filename, SessionMetadata const & metadata)
+AudiofileTagger::tag_file (std::string const & filename, SessionMetadata const & metadata)
 {
        TagLib::FileRef file (filename.c_str());
+       if (file.isNull()) {
+               std::cerr << "TagLib::FileRef is null for file" << filename  << std::endl;
+               return true; // continue anyway?!
+       }
+
+       if (!file.tag()) {
+               std::cerr << "TagLib::Tag is null for file" << filename  << std::endl;
+               return true; // continue anyway?!
+       }
+
        TagLib::Tag & tag (*file.tag());
 
        tag_generic (tag, metadata);
@@ -108,7 +118,7 @@ AudiofileTagger::tag_vorbis_comment (TagLib::Ogg::XiphComment & tag, SessionMeta
        tag.addField ("MIXER", TL_STR(metadata.mixer()));
        tag.addField ("COMPILATION", TL_STR(metadata.compilation()));
        tag.addField ("DISCSUBTITLE", TL_STR(metadata.disc_subtitle()));
-       tag.addField ("DISCNUMBER", to_string (metadata.disc_number(), std::dec));
+       tag.addField ("DISCNUMBER", to_string (metadata.disc_number()));
 
        // No field for total discs or tracks