summaryrefslogtreecommitdiff
path: root/libs/ardour/utils.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-03-20 07:43:19 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-03-20 07:43:19 -0400
commita2d657721094e31f1f17ae0bd406bbe36bbc9e98 (patch)
tree735c5d7312a737d6c11672ef88d0029b89c145c4 /libs/ardour/utils.cc
parentb2a667266bb285f73e4701be55c10633846ace56 (diff)
move path_expand() and search_path_expand() into libpbd, and use them to expand search paths given to pathscanner objects (always)
Diffstat (limited to 'libs/ardour/utils.cc')
-rw-r--r--libs/ardour/utils.cc106
1 files changed, 0 insertions, 106 deletions
diff --git a/libs/ardour/utils.cc b/libs/ardour/utils.cc
index ad0823ddaf..aedc78988f 100644
--- a/libs/ardour/utils.cc
+++ b/libs/ardour/utils.cc
@@ -307,112 +307,6 @@ path_is_paired (string path, string& pair_base)
return false;
}
-string
-path_expand (string path)
-{
- if (path.empty()) {
- return path;
- }
-
- /* tilde expansion */
-
- if (path[0] == '~') {
- if (path.length() == 1) {
- return Glib::get_home_dir();
- }
-
- if (path[1] == '/') {
- path.replace (0, 1, Glib::get_home_dir());
- } else {
- /* can't handle ~roger, so just leave it */
- }
- }
-
- /* now do $VAR substitution, since wordexp isn't reliable */
-
- regex_t compiled_pattern;
- const int nmatches = 100;
- regmatch_t matches[nmatches];
-
- if (regcomp (&compiled_pattern, "\\$([a-zA-Z_][a-zA-Z0-9_]*|\\{[a-zA-Z_][a-zA-Z0-9_]*\\})", REG_EXTENDED)) {
- cerr << "bad regcomp\n";
- return path;
- }
-
- while (true) {
-
- if (regexec (&compiled_pattern, path.c_str(), nmatches, matches, 0)) {
- break;
- }
-
- /* matches[0] gives the entire match */
-
- string match = path.substr (matches[0].rm_so, matches[0].rm_eo - matches[0].rm_so);
-
- /* try to get match from the environment */
-
- if (match[1] == '{') {
- /* ${FOO} form */
- match = match.substr (2, match.length() - 3);
- }
-
- char* matched_value = getenv (match.c_str());
-
- if (matched_value) {
- path.replace (matches[0].rm_so, matches[0].rm_eo - matches[0].rm_so, matched_value);
- } else {
- path.replace (matches[0].rm_so, matches[0].rm_eo - matches[0].rm_so, string());
- }
-
- /* go back and do it again with whatever remains after the
- * substitution
- */
- }
-
- regfree (&compiled_pattern);
-
- /* canonicalize */
-
- char buf[PATH_MAX+1];
-
- if (realpath (path.c_str(), buf)) {
- return buf;
- } else {
- return string();
- }
-}
-
-string
-search_path_expand (string path)
-{
- if (path.empty()) {
- return path;
- }
-
- vector<string> s;
- vector<string> n;
-
- split (path, s, ':');
-
- for (vector<string>::iterator i = s.begin(); i != s.end(); ++i) {
- string exp = path_expand (*i);
- if (!exp.empty()) {
- n.push_back (exp);
- }
- }
-
- string r;
-
- for (vector<string>::iterator i = n.begin(); i != n.end(); ++i) {
- if (!r.empty()) {
- r += ':';
- }
- r += *i;
- }
-
- return r;
-}
-
#if __APPLE__
string
CFStringRefToStdString(CFStringRef stringRef)