mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
Stop using 'sh uname' etc for cygdrive, from Enrico Forestieri <forenr@tlc.unipr.it>
* src/support/os_win32.C: Query the registry about cygwin, instead of calling uname git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14276 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
ecaff823df
commit
f3900a9e45
@ -163,17 +163,25 @@ void init(int /* argc */, char * argv[])
|
||||
}
|
||||
|
||||
// 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, ' ');
|
||||
HKEY regKey;
|
||||
char buf[MAX_PATH];
|
||||
DWORD bufSize = sizeof(buf);
|
||||
LONG retVal;
|
||||
|
||||
retVal = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
|
||||
"Software\\Cygnus Solutions\\Cygwin\\mounts v2",
|
||||
0, KEY_QUERY_VALUE, ®Key);
|
||||
if (retVal != ERROR_SUCCESS) {
|
||||
retVal = RegOpenKeyEx(HKEY_CURRENT_USER,
|
||||
"Software\\Cygnus Solutions\\Cygwin\\mounts v2",
|
||||
0, KEY_QUERY_VALUE, ®Key);
|
||||
}
|
||||
if (retVal == ERROR_SUCCESS) {
|
||||
retVal = RegQueryValueEx(regKey, "cygdrive prefix", NULL, NULL,
|
||||
(LPBYTE) buf, &bufSize);
|
||||
RegCloseKey(regKey);
|
||||
if ((retVal == ERROR_SUCCESS) && (bufSize <= MAX_PATH))
|
||||
cygdrive = buf;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user