Remove 'pipex' from my pbd.vcproj as it's not needed for Ardour3
[ardour.git] / libs / pbd / search_path.cc
index ea08785f68ea24a5d36f4784fc6a65cbab568e64..fe2087f6b151488c6ab3c68a01a4a996ff47bb78 100644 (file)
@@ -17,6 +17,9 @@
 
 */
 
+#include <string>
+
+#include <glib.h>
 #include <glibmm/miscutils.h>
 
 #include "pbd/tokenizer.h"
 
 using namespace std;
 
-namespace {
-
-#ifdef PLATFORM_WINDOWS
-const char * const path_delimiter = ";";
-#else
-const char * const path_delimiter = ":";
-#endif
-
-}
-
 namespace PBD {
 
 Searchpath::Searchpath ()
@@ -46,7 +39,7 @@ Searchpath::Searchpath (const string& path)
 {
        vector<std::string> tmp;
 
-       if (tokenize (path, string(path_delimiter), std::back_inserter (tmp))) {
+       if (tokenize (path, string(G_SEARCHPATH_SEPARATOR_S), std::back_inserter (tmp))) {
                add_directories (tmp);
        }
 }
@@ -79,7 +72,7 @@ Searchpath::to_string () const
 
        for (vector<std::string>::const_iterator i = begin(); i != end(); ++i) {
                path += *i;
-               path += path_delimiter;
+               path += G_SEARCHPATH_SEPARATOR;
        }
 
        path = path.substr (0, path.length() - 1); // drop final separator
@@ -128,4 +121,26 @@ Searchpath::add_subdirectory_to_paths (const string& subdir)
        return *this;
 }
 
+/* This is not part of the Searchpath object, but is closely related to the
+ * whole idea, and we put it here for convenience.
+ */
+
+void 
+export_search_path (const string& base_dir, const char* varname, const char* dir)
+{
+       string path;
+       const char * cstr = g_getenv (varname);
+
+       if (cstr) {
+               path = cstr;
+               path += ':';
+       } else {
+               path = "";
+       }
+       path += base_dir;
+       path += dir;
+
+       g_setenv (varname, path.c_str(), 1);
+}
+
 } // namespace PBD