aboutsummaryrefslogtreecommitdiff
path: root/backends/fs
diff options
context:
space:
mode:
authorMax Horn2007-12-09 17:28:29 +0000
committerMax Horn2007-12-09 17:28:29 +0000
commit66a1c085c0bf09f9e42cc68e7514ecf1197f62c8 (patch)
treee91979e720890ea5a1718b7d8d89875d5b09c82a /backends/fs
parentc84d9c1588ec3c7531dd4c0146369e6b35e5c059 (diff)
downloadscummvm-rg350-66a1c085c0bf09f9e42cc68e7514ecf1197f62c8.tar.gz
scummvm-rg350-66a1c085c0bf09f9e42cc68e7514ecf1197f62c8.tar.bz2
scummvm-rg350-66a1c085c0bf09f9e42cc68e7514ecf1197f62c8.zip
Expand ~/ to the HOME env var (see also patch #1846545)
svn-id: r29797
Diffstat (limited to 'backends/fs')
-rw-r--r--backends/fs/posix/posix-fs.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/backends/fs/posix/posix-fs.cpp b/backends/fs/posix/posix-fs.cpp
index 8d455b99e3..436e0908dd 100644
--- a/backends/fs/posix/posix-fs.cpp
+++ b/backends/fs/posix/posix-fs.cpp
@@ -143,7 +143,19 @@ POSIXFilesystemNode::POSIXFilesystemNode() {
POSIXFilesystemNode::POSIXFilesystemNode(const String &p, bool verify) {
assert(p.size() > 0);
- _path = p;
+ // Expand "~/" to the value of the HOME env variable
+ if (p.hasPrefix("~/")) {
+ const char *home = getenv("HOME");
+ if (home != NULL && strlen(home) < MAXPATHLEN) {
+ _path = home;
+ // Skip over the tilda. We know that p contains at least
+ // two chars, so this is safe:
+ _path += p.c_str() + 1;
+ }
+ } else {
+ _path = p;
+ }
+
_displayName = lastPathComponent(_path);
if (verify) {