X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Fsearch_path.cc;h=c441c01211af77200c61f6d1cece92de56265bf7;hb=9907d25ea572f008fcb626eb7cc7ffa4cf9e1d82;hp=ea08785f68ea24a5d36f4784fc6a65cbab568e64;hpb=17ad0a0b61a887362ce07b1f8b59de003ddd9233;p=ardour.git diff --git a/libs/pbd/search_path.cc b/libs/pbd/search_path.cc index ea08785f68..c441c01211 100644 --- a/libs/pbd/search_path.cc +++ b/libs/pbd/search_path.cc @@ -17,6 +17,9 @@ */ +#include + +#include #include #include "pbd/tokenizer.h" @@ -25,16 +28,6 @@ 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 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::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 += G_SEARCHPATH_SEPARATOR; + } else { + path = ""; + } + path += base_dir; + path += dir; + + g_setenv (varname, path.c_str(), 1); +} + } // namespace PBD