From 752523cd122d6ffdd72c89955005d77819740675 Mon Sep 17 00:00:00 2001 From: albert-github Date: Thu, 1 Sep 2016 15:55:33 +0200 Subject: Bug 766059 - DOT_PATH not expanded The original problem in this bug request was that forward slashes were used in the PATH instead of backslashes. In the command shell this does not result in problems, but when calling a program from within doxygen this leads to the problem that the executable cannot be found. In this patch the PATH variable is, just for the process, changed in such a way that ther are back slashes instead of forward slashes (Windows only, not on Cygwin). --- src/doxygen.cpp | 3 ++- src/portable.cpp | 24 +++++++++++++++++++++++- src/portable.h | 1 + 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/doxygen.cpp b/src/doxygen.cpp index d545265..07214cb 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -9987,6 +9987,8 @@ void initDoxygen() setlocale(LC_CTYPE,"C"); // to get isspace(0xA0)==0, needed for UTF-8 setlocale(LC_NUMERIC,"C"); + portable_correct_path(); + Doxygen::runningTime.start(); initPreprocessor(); @@ -10067,7 +10069,6 @@ void initDoxygen() g_compoundKeywordDict.insert("union",(void *)8); g_compoundKeywordDict.insert("interface",(void *)8); g_compoundKeywordDict.insert("exception",(void *)8); - } void cleanUpDoxygen() diff --git a/src/portable.cpp b/src/portable.cpp index 5886793..46adccf 100644 --- a/src/portable.cpp +++ b/src/portable.cpp @@ -448,4 +448,26 @@ bool portable_isAbsolutePath(const char *fileName) return false; } - +/** + * Correct a possible wrong PATH variable + * + * This routine was inspired by the cause for bug 766059 was that in the Windows path there were forward slahes. + */ +void portable_correct_path(void) +{ +#if defined(_WIN32) && !defined(__CYGWIN__) + const char *p = portable_getenv("PATH"); + char *q = (char *)malloc(strlen(p) + 1); + strcpy(q, p); + bool found = false; + for (int i = 0 ; i < strlen(q); i++) + { + if (q[i] == '/') + { + q[i] = '\\'; + found = true; + } + } + if (found) portable_setenv("PATH",q); +#endif +} diff --git a/src/portable.h b/src/portable.h index 1471ce1..c5578a3 100644 --- a/src/portable.h +++ b/src/portable.h @@ -35,6 +35,7 @@ void portable_sysTimerStop(); double portable_getSysElapsedTime(); void portable_sleep(int ms); bool portable_isAbsolutePath(const char *fileName); +void portable_correct_path(void); extern "C" { void * portable_iconv_open(const char* tocode, const char* fromcode); -- cgit v0.12