X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Fos_win32.cpp;h=a6e5da7c5ad060b40f5b0c6b32ba4d99f4367d67;hb=08afc52c4cc5fe8740722d7715fd66baa3dd9ffa;hp=72bf218a04db6e3be44b629d2c8a78c71b91ce43;hpb=1717ef203cf08fd393e2b905a9ed7f9465c8f47d;p=lyx.git diff --git a/src/support/os_win32.cpp b/src/support/os_win32.cpp index 72bf218a04..a6e5da7c5a 100644 --- a/src/support/os_win32.cpp +++ b/src/support/os_win32.cpp @@ -60,11 +60,13 @@ #include #endif - +#if defined(_MSC_VER) && (_MSC_VER >= 1900) +#else extern "C" { extern void __wgetmainargs(int * argc, wchar_t *** argv, wchar_t *** envp, int expand_wildcards, int * new_mode); } +#endif using namespace std; @@ -157,10 +159,14 @@ void init(int argc, char * argv[]) // Get the wide program arguments array +#if defined(_MSC_VER) && (_MSC_VER >= 1900) + argv_ = CommandLineToArgvW(GetCommandLineW(), &argc_); +#else wchar_t ** envp = 0; int newmode = 0; __wgetmainargs(&argc_, &argv_, &envp, -1, &newmode); - LASSERT(argc == argc_, /**/); +#endif + LATTEST(argc == argc_); // If Cygwin is detected, query the cygdrive prefix. // The cygdrive prefix is needed for translating windows style paths @@ -212,7 +218,7 @@ void init(int argc, char * argv[]) string utf8_argv(int i) { - LASSERT(i < argc_, /**/); + LASSERT(i < argc_, return ""); return fromqstr(QString::fromWCharArray(argv_[i])); } @@ -312,7 +318,7 @@ static QString const get_long_path(QString const & short_path) long_path.resize(result); result = GetLongPathNameW((wchar_t *) short_path.utf16(), &long_path[0], long_path.size()); - LASSERT(result <= long_path.size(), /**/); + LATTEST(result <= long_path.size()); } return (result == 0) ? short_path : QString::fromWCharArray(&long_path[0]); @@ -339,7 +345,7 @@ static QString const get_short_path(QString const & long_path, file_access how) short_path.resize(result); result = GetShortPathNameW((wchar_t *) long_path.utf16(), &short_path[0], short_path.size()); - LASSERT(result <= short_path.size(), /**/); + LATTEST(result <= short_path.size()); } return (result == 0) ? long_path : QString::fromWCharArray(&short_path[0]); @@ -458,12 +464,6 @@ shell_type shell() } -int timeout_min() -{ - return 30; -} - - char path_separator(path_type type) { if (type == TEXENGINE) @@ -520,7 +520,7 @@ string const GetFolderPath::operator()(folder_id _id) const id = CSIDL_APPDATA; break; default: - LASSERT(false, /**/); + LASSERT(false, return string()); } HRESULT const result = (folder_path_func_)(0, id, 0, SHGFP_TYPE_CURRENT, @@ -550,19 +550,34 @@ bool autoOpenFile(string const & filename, auto_open_mode const mode, { string const texinputs = os::latex_path_list( replaceCurdirPath(path, lyxrc.texinputs_prefix)); + string const otherinputs = os::latex_path_list(path); 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); + string const oldtexinputs = getEnv("TEXINPUTS"); + string const newtexinputs = "." + sep + texinputs + sep + oldtexinputs; + string const oldbibinputs = getEnv("BIBINPUTS"); + string const newbibinputs = "." + sep + otherinputs + sep + oldbibinputs; + string const oldbstinputs = getEnv("BSTINPUTS"); + string const newbstinputs = "." + sep + otherinputs + sep + oldbstinputs; + string const oldtexfonts = getEnv("TEXFONTS"); + string const newtexfonts = "." + sep + otherinputs + sep + oldtexfonts; + if (!path.empty() && !lyxrc.texinputs_prefix.empty()) { + setEnv("TEXINPUTS", newtexinputs); + setEnv("BIBINPUTS", newbibinputs); + setEnv("BSTINPUTS", newbstinputs); + setEnv("TEXFONTS", newtexfonts); + } // reference: http://msdn.microsoft.com/en-us/library/bb762153.aspx char const * action = (mode == VIEW) ? "open" : "edit"; - bool success = reinterpret_cast(ShellExecute(NULL, action, + bool success = reinterpret_cast(ShellExecute(NULL, action, to_local8bit(from_utf8(filename)).c_str(), NULL, NULL, 1)) > 32; - if (!path.empty() && !lyxrc.texinputs_prefix.empty()) - setEnv("TEXINPUTS", oldval); + if (!path.empty() && !lyxrc.texinputs_prefix.empty()) { + setEnv("TEXINPUTS", oldtexinputs); + setEnv("BIBINPUTS", oldbibinputs); + setEnv("BSTINPUTS", oldbstinputs); + setEnv("TEXFONTS", oldtexfonts); + } return success; }