From 66a1c085c0bf09f9e42cc68e7514ecf1197f62c8 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sun, 9 Dec 2007 17:28:29 +0000 Subject: Expand ~/ to the HOME env var (see also patch #1846545) svn-id: r29797 --- NEWS | 2 ++ backends/fs/posix/posix-fs.cpp | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) 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) { -- cgit v1.2.3