Wouldn't it be nice if plugin presets had a description/comment?
[ardour.git] / libs / ardour / audio_library.cc
index 4a6089dac3668ba6273a7d1c10b6122c4b51a9e6..4d78bdac86563e62c66cc3e8b3778cd8eb9a6bb3 100644 (file)
 #include <glibmm/convert.h>
 
 #include "pbd/compose.h"
+#include "pbd/error.h"
+#include "pbd/file_utils.h"
 
 #include "ardour/audio_library.h"
-#include "ardour/utils.h"
 #include "ardour/filesystem_paths.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using namespace PBD;
@@ -105,15 +106,15 @@ AudioLibrary::get_tags (string member)
 {
        vector<string> tags;
 #ifdef HAVE_LRDF
+       char * uri = strdup(Glib::filename_to_uri(member).c_str());
 
        lrdf_statement pattern;
-       pattern.subject = strdup(Glib::filename_to_uri(member).c_str());
+       pattern.subject = uri;
        pattern.predicate = const_cast<char*>(TAG);
        pattern.object = 0;
        pattern.object_type = lrdf_literal;
 
        lrdf_statement* matches = lrdf_matches (&pattern);
-       free (pattern.subject);
 
        lrdf_statement* current = matches;
        while (current != 0) {
@@ -125,6 +126,7 @@ AudioLibrary::get_tags (string member)
        lrdf_free_statements (matches);
 
        sort (tags.begin(), tags.end());
+       free (uri);
 #endif
        return tags;
 }
@@ -156,8 +158,8 @@ AudioLibrary::search_members_and (vector<string>& members, const vector<string>&
                }
                lrdf_free_uris(ulist);
 
-           sort(members.begin(), members.end());
-           unique(members.begin(), members.end());
+           sort (members.begin(), members.end());
+           members.erase (unique (members.begin(), members.end()), members.end());
        }
 
        // memory clean up