summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2016-09-01 13:55:33 (GMT)
committeralbert-github <albert.tests@gmail.com>2016-09-01 13:55:33 (GMT)
commit752523cd122d6ffdd72c89955005d77819740675 (patch)
treee42a42cb8da231faf52bd16b3c8723f4e46b60e7
parent8fb2578917109778a7c589e68545d6be3ca7b104 (diff)
downloadDoxygen-752523cd122d6ffdd72c89955005d77819740675.zip
Doxygen-752523cd122d6ffdd72c89955005d77819740675.tar.gz
Doxygen-752523cd122d6ffdd72c89955005d77819740675.tar.bz2
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).
-rw-r--r--src/doxygen.cpp3
-rw-r--r--src/portable.cpp24
-rw-r--r--src/portable.h1
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);