summaryrefslogtreecommitdiff
path: root/libs/pbd/pathexpand.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/pbd/pathexpand.cc')
-rw-r--r--libs/pbd/pathexpand.cc28
1 files changed, 20 insertions, 8 deletions
diff --git a/libs/pbd/pathexpand.cc b/libs/pbd/pathexpand.cc
index 4911f12788..5784ec9428 100644
--- a/libs/pbd/pathexpand.cc
+++ b/libs/pbd/pathexpand.cc
@@ -18,8 +18,10 @@
*/
#include <vector>
-#include <climits>
#include <iostream>
+#include <climits>
+#include <cerrno>
+#include <cstdlib>
#include <regex.h>
@@ -32,6 +34,22 @@ using std::string;
using std::vector;
string
+PBD::canonical_path (const std::string& path)
+{
+#ifdef COMPILER_MINGW
+ return path;
+#else
+ char buf[PATH_MAX+1];
+
+ if (!realpath (path.c_str(), buf) && (errno != ENOENT)) {
+ return path;
+ }
+
+ return string (buf);
+#endif
+}
+
+string
PBD::path_expand (string path)
{
if (path.empty()) {
@@ -97,13 +115,7 @@ PBD::path_expand (string path)
/* canonicalize */
- char buf[PATH_MAX+1];
-
- if (realpath (path.c_str(), buf)) {
- return buf;
- } else {
- return string();
- }
+ return canonical_path (path);
}
string