Dirty %PATH% hack for Windows
This commit is contained in:
parent
f7bd9d5478
commit
50662ac174
1 changed files with 21 additions and 0 deletions
21
main.c
21
main.c
|
@ -128,6 +128,9 @@ int main(int argc, char **argv)
|
||||||
.region = NULL,
|
.region = NULL,
|
||||||
};
|
};
|
||||||
#ifdef NMRPFLASH_WINDOWS
|
#ifdef NMRPFLASH_WINDOWS
|
||||||
|
char *newpath = NULL;
|
||||||
|
char *oldpath = NULL;
|
||||||
|
char *windir = NULL;
|
||||||
WSADATA wsa;
|
WSADATA wsa;
|
||||||
|
|
||||||
val = WSAStartup(MAKEWORD(2, 2), &wsa);
|
val = WSAStartup(MAKEWORD(2, 2), &wsa);
|
||||||
|
@ -135,6 +138,24 @@ int main(int argc, char **argv)
|
||||||
win_perror2("WSAStartup", val);
|
win_perror2("WSAStartup", val);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _WIN64
|
||||||
|
// This dirty hack works around the WOW64 file system redirector[1], which would prevent
|
||||||
|
// us from calling programs residing in %windir%\System32 when running on a 64bit system
|
||||||
|
// (since nmrpflash is currently shipped as 32bit only).
|
||||||
|
//
|
||||||
|
// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx
|
||||||
|
|
||||||
|
oldpath = getenv("PATH");
|
||||||
|
windir = getenv("WINDIR");
|
||||||
|
if (oldpath && windir) {
|
||||||
|
newpath = malloc(strlen(oldpath) + strlen(windir) + 32);
|
||||||
|
sprintf(newpath, "%s;%s\\Sysnative", oldpath, windir);
|
||||||
|
SetEnvironmentVariable("PATH", newpath);
|
||||||
|
free(newpath);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
opterr = 0;
|
opterr = 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue