Fix a bug in qdocs handling of excludedirs
authorJan-Arve Saether <jan-arve.saether@nokia.com>
Fri, 17 Aug 2012 09:52:40 +0000 (11:52 +0200)
committerQt by Nokia <qt-info@nokia.com>
Fri, 17 Aug 2012 17:31:50 +0000 (19:31 +0200)
commit526da72e991e11205436a6363b6cfb6948a0eb0c
tree1fd22bbbeee38b4ea00ce0abf437b69385f4de9a
parent8160ca6dfd5332993e22fc82597aac947f335ee6
Fix a bug in qdocs handling of excludedirs

The bug was there because the way qdoc tries to exclude the directories
given in the "excludedirs" variable:
It did a simple string comparision on the candidate path (to include)
with every string in the "excludedirs" variable.

However, this did not work for all cases, since the paths are not
canonicalized.
For instance, the problem I faced was that the following qdocconf
fragment: (config file located in doc/qtwidgets.qdocconf)
sourcedirs  += ..
excludedirs += snippets

Since qdoc would recursively parse all subfolders of sourcedirs, it
would at one point visit the snippets folder, but it would have the
relative path "../doc/snippets", which did not match with "snippets",
causing snippets to not be excluded.

In addition, it seems that qdoc tries hard not to use absolute paths
(maybe because of more human-friendly error messages). I therefore
chose to canonicalize the relative paths.

As a side-effect this also give a better output from qdoc, as
../doc/foo.qdoc:42: Missing link
will become
foo.qdoc:42: Missing link

Change-Id: If9c25fa569abd03542bd12675acd44d8f4e0282c
Reviewed-by: Martin Smith <martin.smith@nokia.com>
src/tools/qdoc/config.cpp
src/tools/qdoc/config.h
src/tools/qdoc/doc/qdoc-manual.qdoc
src/tools/qdoc/location.cpp
src/tools/qdoc/location.h
src/tools/qdoc/main.cpp