mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-27 14:29:21 +00:00
From Enrico Forestieri:
* src/support/os_win32.C (init, latex_path, cygwin_path_fix): Add support for cygwin tetex. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13683 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
2f3ac2d20f
commit
a355878e2c
@ -17,6 +17,7 @@
|
||||
#include "support/os.h"
|
||||
#include "support/os_win32.h"
|
||||
#include "support/lstrings.h"
|
||||
#include "support/filetools.h"
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
@ -62,11 +63,22 @@
|
||||
using std::endl;
|
||||
using std::string;
|
||||
|
||||
using lyx::support::runCommand;
|
||||
using lyx::support::split;
|
||||
|
||||
|
||||
namespace lyx {
|
||||
namespace support {
|
||||
namespace os {
|
||||
|
||||
namespace {
|
||||
|
||||
bool cygwin_path_fix_ = false;
|
||||
|
||||
string cygdrive = "/cygdrive";
|
||||
|
||||
} // namespace anon
|
||||
|
||||
void init(int /* argc */, char * argv[])
|
||||
{
|
||||
/* Note from Angus, 17 Jan 2005:
|
||||
@ -146,6 +158,20 @@ void init(int /* argc */, char * argv[])
|
||||
if (hwndFound != NULL)
|
||||
ShowWindow( hwndFound, SW_HIDE);
|
||||
}
|
||||
|
||||
// If cygwin is detected, query the cygdrive prefix
|
||||
cmd_ret const c = runCommand("sh -c uname");
|
||||
if (c.first != -1 && prefixIs(c.second, "CYGWIN")) {
|
||||
cmd_ret const p = runCommand("mount --show-cygdrive-prefix");
|
||||
// The output of the mount command is as follows:
|
||||
// Prefix Type Flags
|
||||
// /cygdrive system binmode
|
||||
// So, we use the inner split to pass the second line to the
|
||||
// outer split which sets cygdrive with its contents until
|
||||
// the first blank, discarding the unneeded return value.
|
||||
if (p.first != -1 && prefixIs(p.second, "Prefix"))
|
||||
(void) split(split(p.second, '\n'), cygdrive, ' ');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -230,6 +256,20 @@ string internal_path_list(string const & p)
|
||||
|
||||
string latex_path(string const & p)
|
||||
{
|
||||
// We may need a posix style path or a windows style path (depending
|
||||
// on cygwin_path_fix_), but we use always forward slashes, since it
|
||||
// gets written into a .tex file.
|
||||
|
||||
if (cygwin_path_fix_ && is_absolute_path(p)) {
|
||||
string const drive = p.substr(0, 2);
|
||||
string const cygprefix = cygdrive + "/" + drive.substr(0, 1);
|
||||
string const cygpath = subst(subst(p, '\\', '/'), drive, cygprefix);
|
||||
lyxerr[Debug::LATEX]
|
||||
<< "<Cygwin path correction> ["
|
||||
<< p << "]->>["
|
||||
<< cygpath << ']' << endl;
|
||||
return cygpath;
|
||||
}
|
||||
return subst(p, '\\', '/');
|
||||
}
|
||||
|
||||
@ -279,8 +319,10 @@ char path_separator()
|
||||
}
|
||||
|
||||
|
||||
void cygwin_path_fix(bool)
|
||||
{}
|
||||
void cygwin_path_fix(bool use_cygwin_paths)
|
||||
{
|
||||
cygwin_path_fix_ = !use_cygwin_paths;
|
||||
}
|
||||
|
||||
|
||||
namespace {
|
||||
|
Loading…
Reference in New Issue
Block a user