http://www.lyx.org/trac/ticket/4177
This patch ensures that only environment variable strings (i.e. strings that start with $) are replaced when the resolved environment variable is not an empty string.
Ok and does this also work at other platforms ? Vincent
Index: src/support/filetools.cpp =================================================================== --- src/support/filetools.cpp (revision 28998) +++ src/support/filetools.cpp (working copy) @@ -526,16 +526,23 @@ 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; }