aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--backends/fs/posix/posix-fs.cpp14
2 files changed, 15 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 7087a31afd..a26ebfb523 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,8 @@ For a more comprehensive changelog for the latest experimental SVN code, see:
- Improved detection of new game variants and localized versions.
- Completely reworked internal access to files. (GSoC Task)
- Added option to delete games from the list with Del key.
+ - Added support for "~/" prefix being substituted by $HOME in paths
+ on POSIX systems (Linux, Mac OS X etc.).
AGI:
- Added support for AGI256 and AGI256-2 hacks (GSoC Task)
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) {