summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2018-06-11 17:47:37 (GMT)
committeralbert-github <albert.tests@gmail.com>2018-06-11 17:47:37 (GMT)
commit5d89de25fa5aa146ab65a88f09a7cc729dea3e51 (patch)
treed85a6daafac6bc1472090835bce09eca85ea08ec /src
parent4536982bdebc0056d0c5d64a12881f20b5801c06 (diff)
downloadDoxygen-5d89de25fa5aa146ab65a88f09a7cc729dea3e51.zip
Doxygen-5d89de25fa5aa146ab65a88f09a7cc729dea3e51.tar.gz
Doxygen-5d89de25fa5aa146ab65a88f09a7cc729dea3e51.tar.bz2
Resolve inconsistency in formula repositories.
HTML and RTF have their own directory with formula repository files. These can get out of sync when HTML and RTF versions are not always build together (and both are required again).
Diffstat (limited to 'src')
-rw-r--r--src/doxygen.cpp52
-rw-r--r--src/doxygen.h2
2 files changed, 45 insertions, 9 deletions
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index bc244b7..1fb9a1c 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -9752,14 +9752,17 @@ int readFileOrDirectory(const char *s,
//----------------------------------------------------------------------------
-void readFormulaRepository()
+void readFormulaRepository(QCString dir, bool cmp)
{
- QFile f(Config_getString(HTML_OUTPUT)+"/formula.repository");
+ static int current_repository = 0;
+ int new_repository = 0;
+ QFile f(dir+"/formula.repository");
if (f.open(IO_ReadOnly)) // open repository
{
msg("Reading formula repository...\n");
QTextStream t(&f);
QCString line;
+ Formula *f;
while (!t.eof())
{
line=t.readLine().utf8();
@@ -9773,14 +9776,42 @@ void readFormulaRepository()
{
QCString formName = line.left(se);
QCString formText = line.right(line.length()-se-1);
- Formula *f=new Formula(formText);
- Doxygen::formulaList->setAutoDelete(TRUE);
- Doxygen::formulaList->append(f);
- Doxygen::formulaDict->insert(formText,f);
- Doxygen::formulaNameDict->insert(formName,f);
+ if (cmp)
+ {
+ if ((f=Doxygen::formulaDict->find(formText))==0)
+ {
+ err("discrepancy between formula repositories! Remove "
+ "formula.repository and from_* files from output directories.");
+ exit(1);
+ }
+ QCString formLabel;
+ formLabel.sprintf("\\form#%d",f->getId());
+ if (formLabel != formName)
+ {
+ err("discrepancy between formula repositories! Remove "
+ "formula.repository and from_* files from output directories.");
+ exit(1);
+ }
+ new_repository++;
+ }
+ else
+ {
+ f=new Formula(formText);
+ Doxygen::formulaList->setAutoDelete(TRUE);
+ Doxygen::formulaList->append(f);
+ Doxygen::formulaDict->insert(formText,f);
+ Doxygen::formulaNameDict->insert(formName,f);
+ current_repository++;
+ }
}
}
}
+ if (cmp && (current_repository != new_repository))
+ {
+ err("size discrepancy between formula repositories! Remove "
+ "formula.repository and from_* files from output directories.");
+ exit(1);
+ }
}
//----------------------------------------------------------------------------
@@ -11070,7 +11101,12 @@ void parseInput()
if (Config_getBool(GENERATE_HTML))
{
- readFormulaRepository();
+ readFormulaRepository(Config_getString(HTML_OUTPUT));
+ }
+ if (Config_getBool(GENERATE_RTF))
+ {
+ // in case GENERRATE_HTML is set we just have to compare, both repositories should be identical
+ readFormulaRepository(Config_getString(RTF_OUTPUT),Config_getBool(GENERATE_HTML));
}
/**************************************************************************
diff --git a/src/doxygen.h b/src/doxygen.h
index b3467c1..7bd05a4 100644
--- a/src/doxygen.h
+++ b/src/doxygen.h
@@ -159,7 +159,7 @@ void searchInputFiles(StringList &inputFiles);
void parseInput();
void generateOutput();
void readAliases();
-void readFormulaRepository();
+void readFormulaRepository(QCString dir, bool cmp = FALSE);
void cleanUpDoxygen();
int readFileOrDirectory(const char *s,
FileNameList *fnList,