]> git.lyx.org Git - features.git/commitdiff
Fix bug #4177: Lyx fails to open files with a $ character in their name.
authorVincent van Ravesteijn <vfr@lyx.org>
Sat, 9 May 2009 17:06:54 +0000 (17:06 +0000)
committerVincent van Ravesteijn <vfr@lyx.org>
Sat, 9 May 2009 17:06:54 +0000 (17:06 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29587 a592a061-630c-0410-9148-cb99ea01b6c8

src/support/filetools.cpp

index cd098031740ad48131d0a5fa132538c602b7777a..69a6c4d7e534bdfa36ea87585b9cfbc0688a331c 100644 (file)
@@ -523,16 +523,23 @@ string const replaceEnvironmentPath(string const & path)
        static boost::regex envvar_br_re("(.*)" + envvar_br + "(.*)");
        static boost::regex envvar_re("(.*)" + envvar + "(.*)");
        boost::smatch what;
-
-       string result = path;
+       string result;
+       string remaining = path;
        while (1) {
-               regex_match(result, what, envvar_br_re);
+               regex_match(remaining, what, envvar_br_re);
                if (!what[0].matched) {
-                       regex_match(result, what, envvar_re);
-                       if (!what[0].matched)
+                       regex_match(remaining, what, envvar_re);
+                       if (!what[0].matched) {
+                               result += remaining;
                                break;
+                       }
                }
-               result = what.str(1) + getEnv(what.str(2)) + what.str(3);
+               string env_var = getEnv(what.str(2));
+               if (!env_var.empty())
+                       result += what.str(1) + env_var;
+               else
+                       result += what.str(1) + "$" + what.str(2);
+               remaining = what.str(3);
        }
        return result;
 }