diff --git a/doxygen-percent_sign.patch b/doxygen-percent_sign.patch new file mode 100644 index 0000000..7f9b071 --- /dev/null +++ b/doxygen-percent_sign.patch @@ -0,0 +1,187 @@ +diff --git a/src/docbookvisitor.cpp b/src/docbookvisitor.cpp +index c748162..526ed49 100644 +--- a/src/docbookvisitor.cpp ++++ b/src/docbookvisitor.cpp +@@ -81,7 +81,7 @@ void DocbookDocVisitor::visit(DocSymbol *s) + } + else + { +- err("DocBook: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); ++ err("DocBook: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE)); + } + } + +diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp +index 647007b..f6878b9 100644 +--- a/src/htmldocvisitor.cpp ++++ b/src/htmldocvisitor.cpp +@@ -190,7 +190,7 @@ void HtmlDocVisitor::visit(DocSymbol *s) + } + else + { +- err("HTML: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); ++ err("HTML: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE)); + } + } + +diff --git a/src/htmlentity.cpp b/src/htmlentity.cpp +index 7f07b57..c7ff1da 100644 +--- a/src/htmlentity.cpp ++++ b/src/htmlentity.cpp +@@ -354,23 +354,41 @@ void HtmlEntityMapper::deleteInstance() + /*! @brief Access routine to the UTF8 code of the HTML entity + * + * @param symb Code of the requested HTML entity ++ * @param useInPrintf If TRUE the result will be escaped such that it can be ++ * used in a printf string pattern + * @return the UTF8 code of the HTML entity, + * in case the UTF code is unknown \c NULL is returned. + */ +-const char *HtmlEntityMapper::utf8(DocSymbol::SymType symb) const ++const char *HtmlEntityMapper::utf8(DocSymbol::SymType symb,bool useInPrintf) const + { +- return g_htmlEntities[symb].UTF8; ++ if (useInPrintf && symb==DocSymbol::Sym_Percent) ++ { ++ return "%%"; // escape for printf ++ } ++ else ++ { ++ return g_htmlEntities[symb].UTF8; ++ } + } + + /*! @brief Access routine to the html code of the HTML entity + * +- * @param symb Code of the requested HTML entity +- * @return the html of the HTML entity, ++ * @param symb Code of the requested HTML entity ++ * @param useInPrintf If TRUE the result will be escaped such that it can be ++ * used in a printf string pattern ++ * @return the html representation of the HTML entity, + * in case the html code is unknown \c NULL is returned. + */ +-const char *HtmlEntityMapper::html(DocSymbol::SymType symb) const ++const char *HtmlEntityMapper::html(DocSymbol::SymType symb,bool useInPrintf) const + { +- return g_htmlEntities[symb].html; ++ if (useInPrintf && symb==DocSymbol::Sym_Percent) ++ { ++ return "%%"; // escape for printf ++ } ++ else ++ { ++ return g_htmlEntities[symb].html; ++ } + } + + /*! @brief Access routine to the XML code of the HTML entity +diff --git a/src/htmlentity.h b/src/htmlentity.h +index b92eb1d..9cebeb3 100644 +--- a/src/htmlentity.h ++++ b/src/htmlentity.h +@@ -27,8 +27,8 @@ class HtmlEntityMapper + static HtmlEntityMapper *instance(); + static void deleteInstance(); + DocSymbol::SymType name2sym(const QCString &symName) const; +- const char *utf8(DocSymbol::SymType symb) const; +- const char *html(DocSymbol::SymType symb) const; ++ const char *utf8(DocSymbol::SymType symb,bool useInPrintf=FALSE) const; ++ const char *html(DocSymbol::SymType symb,bool useInPrintf=FALSE) const; + const char *xml(DocSymbol::SymType symb) const; + const char *docbook(DocSymbol::SymType symb) const; + const char *latex(DocSymbol::SymType symb) const; +diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp +index c2c884b..aefcac3 100644 +--- a/src/latexdocvisitor.cpp ++++ b/src/latexdocvisitor.cpp +@@ -154,7 +154,7 @@ void LatexDocVisitor::visit(DocSymbol *s) + } + else + { +- err("LaTeX: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); ++ err("LaTeX: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE)); + } + } + +diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp +index 276313c..7fa0153 100644 +--- a/src/perlmodgen.cpp ++++ b/src/perlmodgen.cpp +@@ -606,7 +606,7 @@ void PerlModDocVisitor::visit(DocSymbol *sy) + } + else + { +- err("perl: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(sy->symbol())); ++ err("perl: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(sy->symbol(),TRUE)); + } + } + +diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h +index 7a077e9..ee4104e 100644 +--- a/src/printdocvisitor.h ++++ b/src/printdocvisitor.h +@@ -57,21 +57,14 @@ class PrintDocVisitor : public DocVisitor + void visit(DocSymbol *s) + { + indent_leaf(); +- const char *res = HtmlEntityMapper::instance()->utf8(s->symbol()); ++ const char *res = HtmlEntityMapper::instance()->utf8(s->symbol(),TRUE); + if (res) + { +- if (qstrcmp(res,"%")==0) +- { +- printf("%%"); +- } +- else +- { +- printf("%s",res); +- } ++ printf("%s",res); + } + else + { +- printf("print: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); ++ printf("print: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE)); + } + } + void visit(DocURL *u) +diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp +index 2b60d5b..05c8247 100644 +--- a/src/rtfdocvisitor.cpp ++++ b/src/rtfdocvisitor.cpp +@@ -129,7 +129,7 @@ void RTFDocVisitor::visit(DocSymbol *s) + } + else + { +- err("RTF: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); ++ err("RTF: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE)); + } + m_lastIsPara=FALSE; + } +diff --git a/src/textdocvisitor.cpp b/src/textdocvisitor.cpp +index a313b0a..6f3151f 100644 +--- a/src/textdocvisitor.cpp ++++ b/src/textdocvisitor.cpp +@@ -33,7 +33,7 @@ void TextDocVisitor::visit(DocSymbol *s) + } + else + { +- err("text: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); ++ err("text: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE)); + } + } + +diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp +index 27c8bb9..b906fc1 100644 +--- a/src/xmldocvisitor.cpp ++++ b/src/xmldocvisitor.cpp +@@ -78,7 +78,7 @@ void XmlDocVisitor::visit(DocSymbol *s) + } + else + { +- err("XML: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol())); ++ err("XML: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE)); + } + } + diff --git a/doxygen.spec b/doxygen.spec index 884daee..a6555a0 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -2,7 +2,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.11 -Release: 2%{?dist} +Release: 3%{?dist} # No version is specified. License: GPL+ @@ -13,6 +13,7 @@ Source1: doxywizard.png Source2: doxywizard.desktop # upstream fixes +Patch1: doxygen-percent_sign.patch BuildRequires: perl BuildRequires: tex(dvips) @@ -63,6 +64,7 @@ Requires: texlive-epstopdf-bin %prep %setup -q +%patch1 -p1 -R # convert into utf-8 iconv --from=ISO-8859-1 --to=UTF-8 LANGUAGE.HOWTO > LANGUAGE.HOWTO.new @@ -118,6 +120,9 @@ desktop-file-install \ %changelog +* Mon Feb 22 2016 Than Ngo - 1:1.8.11-3 +- fix bz#1305739, Unescaped percent sign in doxygen + * Wed Feb 03 2016 Fedora Release Engineering - 1:1.8.11-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild