doxygen icon indicating copy to clipboard operation
doxygen copied to clipboard

Manpages require excessive backslash-escaping (Origin: bugzilla #654871)

Open doxygen opened this issue 7 years ago • 1 comments

status NEW severity normal in component general for --- Reported in version 1.7.4 on platform Other Assigned to: Dimitri van Heesch

On 2011-07-18 20:48:58 +0000, Bas Wijnen wrote:

I got incorrect manpages from the code:
..., std::string const &delimiters = std::string (" \t\v\f\a\n\r\0", 8));

Which results in a manpage containing:
std::string(' \\t\\v\\f\\a\\n\\r\\0', 8))

(As an aside, the double quotes have been replaces with single quotes, which
is not correct C++)

The problem is that man appearantly evaluates this thing three times before
displaying. This means that every backslash must be thrice doubled, leading
to 8 backslashes:
' \\\\\\\\t\\\\\\\\v\\\\\\\\f\\\\\\\\a\\\\\\\\n\\\\\\\\r\\\\\\\\0'

This gives the result of a single backslash in the manpage as shown by man
and no more warnings from man.

Arguably this is a bug in man. However, given that everybody uses it with
the current syntax, I don't think it's realistic to request a parser change
for it.

doxygen avatar Jul 02 '18 05:07 doxygen

Due to a missing example and used settings it is a bit hard to reproduce though with the simple example:

/// \file

/// the delimiters
std::string const &delimiters = std::string (" \t\v\f\a\n\r\0", 8));

we get (for the 1.7.4 and the current 1.9.8 doxygen version): image

so even worse:

  • (nearly) all informatiion is gone
  • the " is replaced by '

albert-github avatar Sep 09 '23 10:09 albert-github