X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Fos_cygwin.cpp;h=92cbf15fbb3c8075fbf7d1ff6487d2fff8e6d7f6;hb=22d52f5f08cba82c85019634420f4204da56ec6b;hp=6f5d57fdaf631f96ff640b03819664d945b71f97;hpb=3efc6385d7f6dbad8175411e74407c95e49b3881;p=lyx.git diff --git a/src/support/os_cygwin.cpp b/src/support/os_cygwin.cpp index 6f5d57fdaf..92cbf15fbb 100644 --- a/src/support/os_cygwin.cpp +++ b/src/support/os_cygwin.cpp @@ -15,12 +15,16 @@ #include +#include "LyXRC.h" + #include "support/os.h" +#include "support/debug.h" +#include "support/environment.h" #include "support/FileName.h" +#include "support/filetools.h" #include "support/lassert.h" #include "support/lstrings.h" -#include "support/debug.h" #include #include @@ -223,7 +227,7 @@ void init(int argc, char * argv[]) string utf8_argv(int i) { - LASSERT(i < argc_, /**/); + LASSERT(i < argc_, return ""); return to_utf8(from_local8bit(argv_[i])); } @@ -343,6 +347,19 @@ string latex_path(string const & p) } +string latex_path_list(string const & p) +{ + // We may need a posix style path or a windows style path (depending + // on windows_style_tex_paths_), but we use always forward slashes, + // since this is standard for all tex engines. + + if (windows_style_tex_paths_) + return convert_path_list(p, PathStyle(windows)); + + return convert_path_list(p, PathStyle(posix)); +} + + bool is_valid_strftime(string const & p) { string::size_type pos = p.find_first_of('%'); @@ -381,14 +398,11 @@ shell_type shell() } -int timeout_min() +char path_separator(path_type type) { - return 3; -} + if (type == TEXENGINE) + return windows_style_tex_paths_ ? ';' : ':'; - -char path_separator() -{ return ':'; } @@ -415,13 +429,30 @@ bool canAutoOpenFile(string const & ext, auto_open_mode const mode) } -bool autoOpenFile(string const & filename, auto_open_mode const mode) +bool autoOpenFile(string const & filename, auto_open_mode const mode, + string const & path) { + string const texinputs = os::latex_path_list( + replaceCurdirPath(path, lyxrc.texinputs_prefix)); + string const sep = windows_style_tex_paths_ ? ";" : ":"; + string const oldval = getEnv("TEXINPUTS"); + string const newval = "." + sep + texinputs + sep + oldval; + if (!path.empty() && !lyxrc.texinputs_prefix.empty()) { + setEnv("TEXINPUTS", newval); + cygwin_internal(CW_SYNC_WINENV); + } + // reference: http://msdn.microsoft.com/en-us/library/bb762153.aspx string const win_path = to_local8bit(from_utf8(convert_path(filename, PathStyle(windows)))); char const * action = (mode == VIEW) ? "open" : "edit"; - return reinterpret_cast(ShellExecute(NULL, action, - win_path.c_str(), NULL, NULL, 1)) > 32; + bool success = reinterpret_cast(ShellExecute(NULL, action, + win_path.c_str(), NULL, NULL, 1)) > 32; + + if (!path.empty() && !lyxrc.texinputs_prefix.empty()) { + setEnv("TEXINPUTS", oldval); + cygwin_internal(CW_SYNC_WINENV); + } + return success; }