*/
+#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 ()
{
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);
}
}
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
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 += G_SEARCHPATH_SEPARATOR;
+ } else {
+ path = "";
+ }
+ path += base_dir;
+ path += dir;
+
+ g_setenv (varname, path.c_str(), 1);
+}
+
} // namespace PBD