From afb84237b8c3024f2f35346ba3ee4532e1a8b507 Mon Sep 17 00:00:00 2001
From: dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>
Date: Sun, 19 Jan 2003 21:02:02 +0000
Subject: Release-1.3-rc2-20030119

---
 INSTALL                                     |   4 +-
 README                                      |   4 +-
 VERSION                                     |   2 +-
 addon/doxmlparser/include/doxmlintf.h       |   2 +-
 addon/doxmlparser/src/basehandler.h         |   2 +-
 addon/doxmlparser/src/baseiterator.h        |   2 +-
 addon/doxmlparser/src/compoundhandler.cpp   |   2 +-
 addon/doxmlparser/src/compoundhandler.h     |   2 +-
 addon/doxmlparser/src/dochandler.cpp        |   2 +-
 addon/doxmlparser/src/dochandler.h          |   2 +-
 addon/doxmlparser/src/doxmlintf.h           |   2 +-
 addon/doxmlparser/src/graphhandler.h        |   2 +-
 addon/doxmlparser/src/linkedtexthandler.cpp |   2 +-
 addon/doxmlparser/src/linkedtexthandler.h   |   2 +-
 addon/doxmlparser/src/loamhandler.h         |   2 +-
 addon/doxmlparser/src/mainhandler.cpp       |   2 +-
 addon/doxmlparser/src/mainhandler.h         |   2 +-
 addon/doxmlparser/src/memberhandler.cpp     |   2 +-
 addon/doxmlparser/src/memberhandler.h       |   2 +-
 addon/doxmlparser/src/paramhandler.cpp      |   2 +-
 addon/doxmlparser/src/paramhandler.h        |   2 +-
 addon/doxmlparser/src/sectionhandler.cpp    |   2 +-
 addon/doxmlparser/src/sectionhandler.h      |   2 +-
 addon/doxmlparser/test/main.cpp             |   2 +-
 addon/doxywizard/Makefile.in                |   2 +-
 addon/doxywizard/Makefile.win_nmake.in      |   2 +-
 addon/doxywizard/doxywizard.cpp             |   2 +-
 addon/doxywizard/doxywizard.h               |   2 +-
 addon/doxywizard/doxywizard.pro.in          |   2 +-
 addon/doxywizard/doxywizard.t               |   2 +-
 addon/doxywizard/inputbool.cpp              |   2 +-
 addon/doxywizard/inputbool.h                |   2 +-
 addon/doxywizard/inputint.cpp               |   2 +-
 addon/doxywizard/inputint.h                 |   2 +-
 addon/doxywizard/inputstring.cpp            |   2 +-
 addon/doxywizard/inputstring.h              |   2 +-
 addon/doxywizard/inputstrlist.cpp           |   2 +-
 addon/doxywizard/inputstrlist.h             |   2 +-
 addon/doxywizard/pagewidget.cpp             |   2 +-
 addon/doxywizard/pagewidget.h               |   2 +-
 addon/doxywizard/pixmaps.cpp                |   2 +-
 addon/doxywizard/pixmaps.h                  |   2 +-
 addon/doxywizard/qtbc.h                     |   2 +-
 doc/Makefile.in                             |   2 +-
 doc/Makefile.win_make.in                    |   2 +-
 doc/Makefile.win_nmake.in                   |   2 +-
 doc/arch.doc                                |   2 +-
 doc/autolink.doc                            |   2 +-
 doc/commands.doc                            |   5 +-
 doc/config.doc                              |   2 +-
 doc/diagrams.doc                            |   2 +-
 doc/docblocks.doc                           |   2 +-
 doc/doxygen.sty                             |   6 +-
 doc/doxygen_manual.tex                      |   4 +-
 doc/doxygen_usage.doc                       |   2 +-
 doc/doxysearch_usage.doc                    |   2 +-
 doc/doxytag_usage.doc                       |   2 +-
 doc/doxywizard_usage.doc                    |   2 +-
 doc/external.doc                            |   2 +-
 doc/faq.doc                                 |   2 +-
 doc/features.doc                            |   2 +-
 doc/formulas.doc                            |   2 +-
 doc/grouping.doc                            |   2 +-
 doc/history.doc                             |   2 +-
 doc/htmlcmds.doc                            |   2 +-
 doc/index.doc                               |  11 +-
 doc/install.doc                             |   9 +-
 doc/installdox_usage.doc                    |   2 +-
 doc/language.doc                            |   2 +-
 doc/output.doc                              |   2 +-
 doc/preprocessing.doc                       |   2 +-
 doc/starting.doc                            |   2 +-
 doc/trouble.doc                             |   8 +-
 packages/rpm/doxygen.spec                   |   2 +-
 src/Makefile.in                             |   2 +-
 src/bufstr.h                                |   2 +-
 src/classdef.cpp                            |   2 +-
 src/classdef.h                              |   2 +-
 src/classlist.cpp                           |   2 +-
 src/classlist.h                             |   2 +-
 src/cmdmapper.cpp                           |   2 +-
 src/cmdmapper.h                             |   2 +-
 src/code.h                                  |   2 +-
 src/code.l                                  |   4 +-
 src/commentcnv.h                            |   2 +-
 src/commentcnv.l                            |   2 +-
 src/config.l                                |   2 +-
 src/constexp.h                              |   2 +-
 src/constexp.l                              |   2 +-
 src/constexp.y                              |   2 +-
 src/cppvalue.cpp                            |   2 +-
 src/cppvalue.h                              |   2 +-
 src/debug.cpp                               |   2 +-
 src/debug.h                                 |   2 +-
 src/declinfo.h                              |   2 +-
 src/declinfo.l                              |   2 +-
 src/defargs.h                               |   2 +-
 src/defargs.l                               |   2 +-
 src/defgen.cpp                              |   2 +-
 src/defgen.h                                |   2 +-
 src/define.cpp                              |   2 +-
 src/define.h                                |   2 +-
 src/definition.cpp                          |   2 +-
 src/definition.h                            |   2 +-
 src/diagram.cpp                             |   2 +-
 src/diagram.h                               |   2 +-
 src/docparser.cpp                           |   9 +-
 src/docparser.h                             |   2 +-
 src/doctokenizer.h                          |   2 +-
 src/doctokenizer.l                          |  14 ++-
 src/docvisitor.h                            |   2 +-
 src/dot.cpp                                 |   2 +-
 src/dot.h                                   |   2 +-
 src/doxygen.cpp                             |   6 +-
 src/doxygen.h                               |   2 +-
 src/doxygen.pro.in                          |   6 +-
 src/doxysearch.cpp                          |   2 +-
 src/doxysearch.pro.in                       |   3 +-
 src/doxytag.l                               |   4 +-
 src/doxytag.pro.in                          |   2 +-
 src/doxytag.t                               |   2 +-
 src/entry.cpp                               |   2 +-
 src/entry.h                                 |   2 +-
 src/example.h                               |   2 +-
 src/filedef.cpp                             |   9 +-
 src/filedef.h                               |   4 +-
 src/filename.cpp                            |   2 +-
 src/filename.h                              |   2 +-
 src/formula.cpp                             |   2 +-
 src/formula.h                               |   2 +-
 src/groupdef.cpp                            |   2 +-
 src/groupdef.h                              |   2 +-
 src/htmlattrib.h                            |   2 +-
 src/htmldocvisitor.cpp                      | 106 ++++++++++++++++--
 src/htmldocvisitor.h                        |   7 +-
 src/htmlgen.cpp                             |   6 +-
 src/htmlgen.h                               |   2 +-
 src/htmlhelp.cpp                            |   2 +-
 src/htmlhelp.h                              |   2 +-
 src/image.cpp                               |   2 +-
 src/image.h                                 |   2 +-
 src/index.cpp                               |   2 +-
 src/index.h                                 |   2 +-
 src/instdox.cpp                             |   2 +-
 src/instdox.h                               |   2 +-
 src/language.cpp                            |   2 +-
 src/language.h                              |   2 +-
 src/latexdocvisitor.cpp                     |  92 ++++++++++++++--
 src/latexdocvisitor.h                       |   7 +-
 src/latexgen.cpp                            |  12 +-
 src/latexgen.h                              |   2 +-
 src/libdoxycfg.pro.in                       |   4 +-
 src/libdoxygen.pro.in                       |   5 +-
 src/logos.cpp                               |   2 +-
 src/logos.h                                 |   2 +-
 src/main.cpp                                |   2 +-
 src/mandocvisitor.cpp                       |  97 ++++++++++++++--
 src/mandocvisitor.h                         |   7 +-
 src/mangen.cpp                              |   2 +-
 src/mangen.h                                |   2 +-
 src/memberdef.cpp                           |   2 +-
 src/memberdef.h                             |   2 +-
 src/membergroup.cpp                         |   2 +-
 src/membergroup.h                           |   2 +-
 src/memberlist.cpp                          |   2 +-
 src/memberlist.h                            |   2 +-
 src/membername.cpp                          |   2 +-
 src/membername.h                            |   2 +-
 src/message.cpp                             |   2 +-
 src/message.h                               |   2 +-
 src/namespacedef.cpp                        |   2 +-
 src/namespacedef.h                          |   2 +-
 src/outputgen.cpp                           |   2 +-
 src/outputgen.h                             |   2 +-
 src/outputlist.cpp                          |   2 +-
 src/outputlist.h                            |   2 +-
 src/packagedef.cpp                          |   2 +-
 src/packagedef.h                            |   2 +-
 src/page.h                                  |   2 +-
 src/perlmodgen.cpp                          |   2 +-
 src/perlmodgen.h                            |   2 +-
 src/pngenc.cpp                              |   2 +-
 src/pngenc.h                                |   2 +-
 src/pre.h                                   |   2 +-
 src/pre.l                                   |   2 +-
 src/printdocvisitor.h                       |   2 +-
 src/qtbc.h                                  |   2 +-
 src/reflist.cpp                             |   2 +-
 src/reflist.h                               |   2 +-
 src/rtfdocvisitor.cpp                       | 105 +++++++++++++++---
 src/rtfdocvisitor.h                         |   7 +-
 src/rtfgen.cpp                              |   2 +-
 src/rtfgen.h                                |   2 +-
 src/rtfstyle.cpp                            |   2 +-
 src/rtfstyle.h                              |   2 +-
 src/scanner.h                               |   2 +-
 src/scanner.l                               |  10 +-
 src/searchindex.cpp                         |   2 +-
 src/searchindex.h                           |   2 +-
 src/section.h                               |   2 +-
 src/sortdict.h                              |   2 +-
 src/suffixtree.cpp                          |   2 +-
 src/suffixtree.h                            |   2 +-
 src/tagreader.cpp                           |   7 +-
 src/tagreader.h                             |   2 +-
 src/translator.h                            |   2 +-
 src/translator_br.h                         |   2 +-
 src/translator_ca.h                         |   2 +-
 src/translator_cn.h                         |   2 +-
 src/translator_cz.h                         |   2 +-
 src/translator_de.h                         |   4 +-
 src/translator_dk.h                         |   2 +-
 src/translator_en.h                         |   2 +-
 src/translator_es.h                         |   2 +-
 src/translator_fi.h                         |   2 +-
 src/translator_fr.h                         |   2 +-
 src/translator_gr.h                         |   2 +-
 src/translator_hr.h                         |   2 +-
 src/translator_hu.h                         |   2 +-
 src/translator_it.h                         |   2 +-
 src/translator_jp.h                         |   2 +-
 src/translator_kr.h                         |   2 +-
 src/translator_nl.h                         |   2 +-
 src/translator_no.h                         |   2 +-
 src/translator_pl.h                         |   2 +-
 src/translator_pt.h                         |   2 +-
 src/translator_ro.h                         |   2 +-
 src/translator_ru.h                         |   2 +-
 src/translator_se.h                         |   2 +-
 src/translator_si.h                         |   2 +-
 src/translator_sk.h                         |   2 +-
 src/translator_sr.h                         |   2 +-
 src/translator_tw.h                         |   2 +-
 src/translator_ua.h                         |   2 +-
 src/treeview.h                              | 165 +++++++---------------------
 src/treeview.js                             | 165 +++++++---------------------
 src/util.cpp                                |  88 +++++++++++----
 src/util.h                                  |   2 +-
 src/version.h                               |   2 +-
 src/xmldocvisitor.cpp                       | 111 +++++++++++++++----
 src/xmldocvisitor.h                         |   7 +-
 src/xmlgen.cpp                              |  13 ++-
 src/xmlgen.h                                |   2 +-
 243 files changed, 935 insertions(+), 610 deletions(-)

diff --git a/INSTALL b/INSTALL
index db62ec0..503f795 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,7 @@
-DOXYGEN Version 1.3-rc2-20030106
+DOXYGEN Version 1.3-rc2-20030119
 
 Please read the installation section of the manual 
 (http://www.doxygen.org/install.html) for instructions.
 
 --------
-Dimitri van Heesch (06 January 2003)
+Dimitri van Heesch (19 January 2003)
diff --git a/README b/README
index a88f864..299ca5b 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-DOXYGEN Version 1.3_rc2_20030106
+DOXYGEN Version 1.3_rc2_20030119
 
 Please read INSTALL for compilation instructions.
 
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
 
 Enjoy,
 
-Dimitri van Heesch (dimitri@stack.nl) (06 January 2003)
+Dimitri van Heesch (dimitri@stack.nl) (19 January 2003)
diff --git a/VERSION b/VERSION
index ee4f2b1..41d507f 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.3-rc2-20030106
+1.3-rc2-20030119
diff --git a/addon/doxmlparser/include/doxmlintf.h b/addon/doxmlparser/include/doxmlintf.h
index 0e66f80..481cb2f 100644
--- a/addon/doxmlparser/include/doxmlintf.h
+++ b/addon/doxmlparser/include/doxmlintf.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/basehandler.h b/addon/doxmlparser/src/basehandler.h
index 6137259..1674cbd 100644
--- a/addon/doxmlparser/src/basehandler.h
+++ b/addon/doxmlparser/src/basehandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/baseiterator.h b/addon/doxmlparser/src/baseiterator.h
index bbcf7cf..ac8eeb1 100644
--- a/addon/doxmlparser/src/baseiterator.h
+++ b/addon/doxmlparser/src/baseiterator.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/compoundhandler.cpp b/addon/doxmlparser/src/compoundhandler.cpp
index 4c64a54..5667844 100644
--- a/addon/doxmlparser/src/compoundhandler.cpp
+++ b/addon/doxmlparser/src/compoundhandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/compoundhandler.h b/addon/doxmlparser/src/compoundhandler.h
index e68faf3..3f6e251 100644
--- a/addon/doxmlparser/src/compoundhandler.h
+++ b/addon/doxmlparser/src/compoundhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/dochandler.cpp b/addon/doxmlparser/src/dochandler.cpp
index 34079a9..a44f7e1 100644
--- a/addon/doxmlparser/src/dochandler.cpp
+++ b/addon/doxmlparser/src/dochandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/dochandler.h b/addon/doxmlparser/src/dochandler.h
index aa9d3f3..349e955 100644
--- a/addon/doxmlparser/src/dochandler.h
+++ b/addon/doxmlparser/src/dochandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h
index 0e66f80..481cb2f 100644
--- a/addon/doxmlparser/src/doxmlintf.h
+++ b/addon/doxmlparser/src/doxmlintf.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/graphhandler.h b/addon/doxmlparser/src/graphhandler.h
index 891c3db..9170764 100644
--- a/addon/doxmlparser/src/graphhandler.h
+++ b/addon/doxmlparser/src/graphhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/linkedtexthandler.cpp b/addon/doxmlparser/src/linkedtexthandler.cpp
index 8633096..10f3a07 100644
--- a/addon/doxmlparser/src/linkedtexthandler.cpp
+++ b/addon/doxmlparser/src/linkedtexthandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/linkedtexthandler.h b/addon/doxmlparser/src/linkedtexthandler.h
index c023c9f..6cd4ee4 100644
--- a/addon/doxmlparser/src/linkedtexthandler.h
+++ b/addon/doxmlparser/src/linkedtexthandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/loamhandler.h b/addon/doxmlparser/src/loamhandler.h
index 24c05b1..f7e5a3f 100644
--- a/addon/doxmlparser/src/loamhandler.h
+++ b/addon/doxmlparser/src/loamhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/mainhandler.cpp b/addon/doxmlparser/src/mainhandler.cpp
index 9de1e47..d6fcb2b 100644
--- a/addon/doxmlparser/src/mainhandler.cpp
+++ b/addon/doxmlparser/src/mainhandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/mainhandler.h b/addon/doxmlparser/src/mainhandler.h
index 4a10b4d..9153ca2 100644
--- a/addon/doxmlparser/src/mainhandler.h
+++ b/addon/doxmlparser/src/mainhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/memberhandler.cpp b/addon/doxmlparser/src/memberhandler.cpp
index d19fb82..062ea4a 100644
--- a/addon/doxmlparser/src/memberhandler.cpp
+++ b/addon/doxmlparser/src/memberhandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/memberhandler.h b/addon/doxmlparser/src/memberhandler.h
index 5fc43a4..506ae79 100644
--- a/addon/doxmlparser/src/memberhandler.h
+++ b/addon/doxmlparser/src/memberhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/paramhandler.cpp b/addon/doxmlparser/src/paramhandler.cpp
index 7fa2be4..a19ec1b 100644
--- a/addon/doxmlparser/src/paramhandler.cpp
+++ b/addon/doxmlparser/src/paramhandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/paramhandler.h b/addon/doxmlparser/src/paramhandler.h
index 074e2ac..1f160f2 100644
--- a/addon/doxmlparser/src/paramhandler.h
+++ b/addon/doxmlparser/src/paramhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/sectionhandler.cpp b/addon/doxmlparser/src/sectionhandler.cpp
index dee05f0..1bbdf3c 100644
--- a/addon/doxmlparser/src/sectionhandler.cpp
+++ b/addon/doxmlparser/src/sectionhandler.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/src/sectionhandler.h b/addon/doxmlparser/src/sectionhandler.h
index 36705ea..42d3340 100644
--- a/addon/doxmlparser/src/sectionhandler.h
+++ b/addon/doxmlparser/src/sectionhandler.h
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxmlparser/test/main.cpp b/addon/doxmlparser/test/main.cpp
index 3addfa9..4b8425c 100644
--- a/addon/doxmlparser/test/main.cpp
+++ b/addon/doxmlparser/test/main.cpp
@@ -3,7 +3,7 @@
  * $Id$
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/Makefile.in b/addon/doxywizard/Makefile.in
index 3dc316f..b2e8306 100644
--- a/addon/doxywizard/Makefile.in
+++ b/addon/doxywizard/Makefile.in
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 1997-2002 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 # 
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/Makefile.win_nmake.in b/addon/doxywizard/Makefile.win_nmake.in
index 69d1dbd..8635e89 100644
--- a/addon/doxywizard/Makefile.win_nmake.in
+++ b/addon/doxywizard/Makefile.win_nmake.in
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 1997-2002 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 # 
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/doxywizard.cpp b/addon/doxywizard/doxywizard.cpp
index 4c6b91e..34ed0d5 100644
--- a/addon/doxywizard/doxywizard.cpp
+++ b/addon/doxywizard/doxywizard.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/doxywizard.h b/addon/doxywizard/doxywizard.h
index 17b54d1..bbb8682 100644
--- a/addon/doxywizard/doxywizard.h
+++ b/addon/doxywizard/doxywizard.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/doxywizard.pro.in b/addon/doxywizard/doxywizard.pro.in
index d0748f7..7543659 100644
--- a/addon/doxywizard/doxywizard.pro.in
+++ b/addon/doxywizard/doxywizard.pro.in
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 1997-2002 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby
diff --git a/addon/doxywizard/doxywizard.t b/addon/doxywizard/doxywizard.t
index bebb1be..88a86bf 100644
--- a/addon/doxywizard/doxywizard.t
+++ b/addon/doxywizard/doxywizard.t
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 2000 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby
diff --git a/addon/doxywizard/inputbool.cpp b/addon/doxywizard/inputbool.cpp
index 33ecf2f..7389ffb 100644
--- a/addon/doxywizard/inputbool.cpp
+++ b/addon/doxywizard/inputbool.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/inputbool.h b/addon/doxywizard/inputbool.h
index ca4520c..878a895 100644
--- a/addon/doxywizard/inputbool.h
+++ b/addon/doxywizard/inputbool.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/inputint.cpp b/addon/doxywizard/inputint.cpp
index 038f0d4..58249ae 100644
--- a/addon/doxywizard/inputint.cpp
+++ b/addon/doxywizard/inputint.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/inputint.h b/addon/doxywizard/inputint.h
index f9e28a1..bbd81de 100644
--- a/addon/doxywizard/inputint.h
+++ b/addon/doxywizard/inputint.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/inputstring.cpp b/addon/doxywizard/inputstring.cpp
index 0ca9d15..212abef 100644
--- a/addon/doxywizard/inputstring.cpp
+++ b/addon/doxywizard/inputstring.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/inputstring.h b/addon/doxywizard/inputstring.h
index a1d443c..05b0a33 100644
--- a/addon/doxywizard/inputstring.h
+++ b/addon/doxywizard/inputstring.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/inputstrlist.cpp b/addon/doxywizard/inputstrlist.cpp
index 8b96dc7..3bd97ff 100644
--- a/addon/doxywizard/inputstrlist.cpp
+++ b/addon/doxywizard/inputstrlist.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/inputstrlist.h b/addon/doxywizard/inputstrlist.h
index 9595ff9..3af1fb5 100644
--- a/addon/doxywizard/inputstrlist.h
+++ b/addon/doxywizard/inputstrlist.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/pagewidget.cpp b/addon/doxywizard/pagewidget.cpp
index 39ba7c9..85a0216 100644
--- a/addon/doxywizard/pagewidget.cpp
+++ b/addon/doxywizard/pagewidget.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/pagewidget.h b/addon/doxywizard/pagewidget.h
index 14ac6d9..579f375 100644
--- a/addon/doxywizard/pagewidget.h
+++ b/addon/doxywizard/pagewidget.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/pixmaps.cpp b/addon/doxywizard/pixmaps.cpp
index b547b64..cd23a80 100644
--- a/addon/doxywizard/pixmaps.cpp
+++ b/addon/doxywizard/pixmaps.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/pixmaps.h b/addon/doxywizard/pixmaps.h
index 75d74e6..457376d 100644
--- a/addon/doxywizard/pixmaps.h
+++ b/addon/doxywizard/pixmaps.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/addon/doxywizard/qtbc.h b/addon/doxywizard/qtbc.h
index 0f23e42..5f9abc9 100644
--- a/addon/doxywizard/qtbc.h
+++ b/addon/doxywizard/qtbc.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/Makefile.in b/doc/Makefile.in
index ae932f7..d1b422d 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 1997-2002 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/Makefile.win_make.in b/doc/Makefile.win_make.in
index bc1b772..0f91e85 100644
--- a/doc/Makefile.win_make.in
+++ b/doc/Makefile.win_make.in
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 1997-2002 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/Makefile.win_nmake.in b/doc/Makefile.win_nmake.in
index 9775095..0fb69c3 100644
--- a/doc/Makefile.win_nmake.in
+++ b/doc/Makefile.win_nmake.in
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 1997-2002 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/arch.doc b/doc/arch.doc
index 71b9ff5..07cb781 100644
--- a/doc/arch.doc
+++ b/doc/arch.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/autolink.doc b/doc/autolink.doc
index 3bb0e9a..9925a8e 100644
--- a/doc/autolink.doc
+++ b/doc/autolink.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/commands.doc b/doc/commands.doc
index 2477479..14fd61f 100644
--- a/doc/commands.doc
+++ b/doc/commands.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -409,7 +409,8 @@ doxygen. Unrecognized commands are treated as normal text.
  */
 \endverbatim
 
- You can refer to the main page using \\ref index.
+ You can refer to the main page using \\ref index (if the treeview
+ is disabled, otherwise you should use \\ref main).
 
  \sa section \ref cmdsection "\\section", 
      section \ref cmdsubsection "\\subsection" and 
diff --git a/doc/config.doc b/doc/config.doc
index 653360a..5c260fb 100644
--- a/doc/config.doc
+++ b/doc/config.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/diagrams.doc b/doc/diagrams.doc
index b6109ca..9ba9a7d 100644
--- a/doc/diagrams.doc
+++ b/doc/diagrams.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/docblocks.doc b/doc/docblocks.doc
index 47a40e2..9c7ac40 100644
--- a/doc/docblocks.doc
+++ b/doc/docblocks.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/doxygen.sty b/doc/doxygen.sty
index bada1f9..04cf9f1 100644
--- a/doc/doxygen.sty
+++ b/doc/doxygen.sty
@@ -1,7 +1,7 @@
 %
 % 
 %
-% Copyright (C) 1997-2002 by Dimitri van Heesch.
+% Copyright (C) 1997-2003 by Dimitri van Heesch.
 %
 % Permission to use, copy, modify, and distribute this software and its
 % documentation under the terms of the GNU General Public License is hereby 
@@ -24,8 +24,8 @@
         {\fancyplain{}{\bfseries\rightmark}}
 \rhead[\fancyplain{}{\bfseries\leftmark}]
         {\fancyplain{}{\bfseries\thepage}}
-\rfoot[\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2002}]{}
-\lfoot[]{\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2002}}
+\rfoot[\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2003}]{}
+\lfoot[]{\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2003}}
 \cfoot{}
 \newenvironment{CompactList}
 {\begin{list}{}{
diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex
index ffac9a7..d345e00 100644
--- a/doc/doxygen_manual.tex
+++ b/doc/doxygen_manual.tex
@@ -1,7 +1,7 @@
 %
 % 
 %
-% Copyright (C) 1997-2002 by Dimitri van Heesch.
+% Copyright (C) 1997-2003 by Dimitri van Heesch.
 %
 % Permission to use, copy, modify, and distribute this software and its
 % documentation under the terms of the GNU General Public License is hereby 
@@ -37,7 +37,7 @@
 \begin{center}
 Manual for version $VERSION\\[2ex]
 Written by Dimitri van Heesch\\[2ex]
-\copyright 1997-2002
+\copyright 1997-2003
 \end{center}
 \end{titlepage}
 \clearemptydoublepage
diff --git a/doc/doxygen_usage.doc b/doc/doxygen_usage.doc
index bf86ffb..0fdff93 100644
--- a/doc/doxygen_usage.doc
+++ b/doc/doxygen_usage.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/doxysearch_usage.doc b/doc/doxysearch_usage.doc
index 51d3d46..3310d0a 100644
--- a/doc/doxysearch_usage.doc
+++ b/doc/doxysearch_usage.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/doxytag_usage.doc b/doc/doxytag_usage.doc
index 76ae8b7..6d7a5e1 100644
--- a/doc/doxytag_usage.doc
+++ b/doc/doxytag_usage.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/doxywizard_usage.doc b/doc/doxywizard_usage.doc
index 05d1d9f..cb227d6 100644
--- a/doc/doxywizard_usage.doc
+++ b/doc/doxywizard_usage.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/external.doc b/doc/external.doc
index 994bd7f..6e92d2d 100644
--- a/doc/external.doc
+++ b/doc/external.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/faq.doc b/doc/faq.doc
index 836da50..5459573 100644
--- a/doc/faq.doc
+++ b/doc/faq.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/features.doc b/doc/features.doc
index 3d5e985..fd5ff70 100644
--- a/doc/features.doc
+++ b/doc/features.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/formulas.doc b/doc/formulas.doc
index 52a30e7..b81ef44 100644
--- a/doc/formulas.doc
+++ b/doc/formulas.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/grouping.doc b/doc/grouping.doc
index 0c854a0..8ad0b07 100644
--- a/doc/grouping.doc
+++ b/doc/grouping.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/history.doc b/doc/history.doc
index 3b1129a..ffc3513 100644
--- a/doc/history.doc
+++ b/doc/history.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/htmlcmds.doc b/doc/htmlcmds.doc
index eadb8d1..61b84bc 100644
--- a/doc/htmlcmds.doc
+++ b/doc/htmlcmds.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/index.doc b/doc/index.doc
index 59281a6..2e54c0e 100644
--- a/doc/index.doc
+++ b/doc/index.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -54,7 +54,7 @@ but is set-up to be highly portable. As a result, it runs on most
 other Unix flavors as well. Furthermore, executables for 
 Windows 9x/NT and Mac OS X are available.
 
-This manual is divided into three parts, each of which is divided into several 
+\n This manual is divided into three parts, each of which is divided into several 
 sections.
 
 The first part forms a user manual:
@@ -110,11 +110,11 @@ The third part provides information for developers:
               output languages.
 </ul>
 
-<h2>Doxygen license</h2>
+\n<h2>Doxygen license</h2>
 \addindex license
 \addindex GPL
 
-Copyright &copy; 1997-2002 by 
+Copyright &copy; 1997-2003 by 
 <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>.<p>
 
 Permission to use, copy, modify, and distribute this software and its
@@ -187,6 +187,9 @@ Thanks go to:
 <li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
     an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a> 
     organizer!
+<li>Steve Upstill of <a href="http://www.wetadigital.com/digital/index_flash.htm">
+    Weta Digital</a> for sending me some 
+    <a href="http://www.lordoftherings.net/">Lord of the Rings</a> goodies.
 <li>The band <a href="http://www.porcupinetree.com">Porcupine Tree</a> for 
     providing hours of great music to listen to while coding.
 <li>many, many others for suggestions, patches and bug reports.
diff --git a/doc/install.doc b/doc/install.doc
index e35153b..92c2416 100644
--- a/doc/install.doc
+++ b/doc/install.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -63,7 +63,7 @@ tools should be installed.
     \latexonly \\par (see {\tt http://www.tug.org/interest.html\#free})\endlatexonly.
     This is needed for generating LaTeX, Postscript, and PDF output.
 <li><a href="http://www.research.att.com/sw/tools/graphviz/">
-    the Graph visualization toolkit version 1.5 or higher</a>
+    the Graph visualization toolkit version 1.8.10 or higher</a>
     \latexonly \\par (see {\tt http://www.research.att.com/sw/tools/graphviz/})\endlatexonly.
     Needed for the include dependency graphs, 
     the graphical inheritance graphs, and the collaboration graphs.
@@ -362,7 +362,8 @@ or omit the -O2 for the particular files in the Makefile.
 Due to a change in the way image maps are generated, older versions
 of doxygen (\<=1.2.17) will not work correctly with newer versions of
 graphviz (\>=1.8.8). The effect of this incompatibility is that
-generated graphs in HTML are not properly clickable.
+generated graphs in HTML are not properly clickable. For doxygen 1.3
+it is recommended to use at least graphviz 1.8.10 or higher.
 
 \section install_src_windows Compiling from source on Windows
 
@@ -480,7 +481,7 @@ Here is what is required:
     distribution before compiling.
 
 <li><a href="http://www.research.att.com/sw/tools/graphviz/">
-    the Graph visualization toolkit version 1.5</a><br>
+    the Graph visualization toolkit version 1.8.10</a><br>
     \latexonly(see {\tt http://www.research.att.com/sw/tools/graphviz/})\endlatexonly.
     Needed for the include dependency graphs, the graphical inheritance graphs,
     and the collaboration graphs.
diff --git a/doc/installdox_usage.doc b/doc/installdox_usage.doc
index a939ec2..a3794e1 100644
--- a/doc/installdox_usage.doc
+++ b/doc/installdox_usage.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/language.doc b/doc/language.doc
index 27f4ec3..a48c753 100644
--- a/doc/language.doc
+++ b/doc/language.doc
@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
 that the text fragments that doxygen generates can be produced in
 languages other than English (the default) at configuration time.
 
-Currently (version 1.3-rc2-20021224), 28 languages 
+Currently (version 1.3-rc2-20030106), 28 languages 
 are supported (sorted alphabetically): 
 Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, 
 Czech, Danish, Dutch, English, Finnish, 
diff --git a/doc/output.doc b/doc/output.doc
index e4ee62f..160cb82 100644
--- a/doc/output.doc
+++ b/doc/output.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/preprocessing.doc b/doc/preprocessing.doc
index bb46765..557310b 100644
--- a/doc/preprocessing.doc
+++ b/doc/preprocessing.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/starting.doc b/doc/starting.doc
index c3b7065..a765128 100644
--- a/doc/starting.doc
+++ b/doc/starting.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/doc/trouble.doc b/doc/trouble.doc
index c904ad4..0fca3b2 100644
--- a/doc/trouble.doc
+++ b/doc/trouble.doc
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -49,7 +49,8 @@
 \endverbatim
   then doxygen will remove the braces and correctly parse the result.
 <li>Not all names in code fragments that are included in the documentation
-    are replaced by links (for instance when using \c SOURCE_BROWSER = \c YES). 
+    are replaced by links (for instance when using \c SOURCE_BROWSER = \c YES)
+    and links to overloaded members may point to the wrong member.
     This also holds for the "Referenced by" list that is generated for
     each function.
 
@@ -65,6 +66,9 @@
     moment. It only works if there is a specialized template class as
     well.
 <li>Not all special commands are properly translated to RTF.
+<li>Version 1.8.6 of dot (and maybe earlier versions too) do not 
+    generate proper map files, causing the graphs that doxygen generates
+    not to be properly clickable.
 </ul>
 
 
diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec
index 91e46b8..dc12e3c 100644
--- a/packages/rpm/doxygen.spec
+++ b/packages/rpm/doxygen.spec
@@ -1,6 +1,6 @@
 Summary: A documentation system for C/C++.
 Name: doxygen
-Version: 1.3_rc2_20030106
+Version: 1.3_rc2_20030119
 Release: 1
 Epoch: 1
 Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
diff --git a/src/Makefile.in b/src/Makefile.in
index 4dda18e..689efb7 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -2,7 +2,7 @@
 #
 # 
 #
-# Copyright (C) 1997-2002 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 # 
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/bufstr.h b/src/bufstr.h
index 21257c0..c79287e 100644
--- a/src/bufstr.h
+++ b/src/bufstr.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 24c68ab..aacf994 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/classdef.h b/src/classdef.h
index 86a3b3a..36abdb7 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/classlist.cpp b/src/classlist.cpp
index 9483329..06614b8 100644
--- a/src/classlist.cpp
+++ b/src/classlist.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/classlist.h b/src/classlist.h
index 877fa03..720f721 100644
--- a/src/classlist.h
+++ b/src/classlist.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/cmdmapper.cpp b/src/cmdmapper.cpp
index 57dceef..50f72af 100644
--- a/src/cmdmapper.cpp
+++ b/src/cmdmapper.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/cmdmapper.h b/src/cmdmapper.h
index dbb9624..c69acb9 100644
--- a/src/cmdmapper.h
+++ b/src/cmdmapper.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/code.h b/src/code.h
index db1ab18..fd6cbb8 100644
--- a/src/code.h
+++ b/src/code.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/code.l b/src/code.l
index 2ffd99e..13f92d1 100644
--- a/src/code.l
+++ b/src/code.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -740,7 +740,7 @@ static bool getLink(const char *className,
       {
 	addDocCrossReference(g_currentMemberDef,md);
       }
-      //printf("d->getOutputBase()=`%s' name=`%s' member name=`%s'\n",d->getOutputFileBase().data(),d->name().data(),md->name().data());
+      //printf("d->getReference()=`%s' d->getOutputBase()=`%s' name=`%s' member name=`%s'\n",d->getReference().data(),d->getOutputFileBase().data(),d->name().data(),md->name().data());
      
       writeMultiLineCodeLink(ol,d->getReference(),d->getOutputFileBase(),
 	                       md->getBodyAnchor(),text ? text : memberName);
diff --git a/src/commentcnv.h b/src/commentcnv.h
index 41cd661..fc7cb79 100644
--- a/src/commentcnv.h
+++ b/src/commentcnv.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/commentcnv.l b/src/commentcnv.l
index 4e3e8e3..aa8b37b 100644
--- a/src/commentcnv.l
+++ b/src/commentcnv.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/config.l b/src/config.l
index 60bd014..8b63659 100644
--- a/src/config.l
+++ b/src/config.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/constexp.h b/src/constexp.h
index 818dbaf..905cb4a 100644
--- a/src/constexp.h
+++ b/src/constexp.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/constexp.l b/src/constexp.l
index 0135e3a..264c9d6 100644
--- a/src/constexp.l
+++ b/src/constexp.l
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/constexp.y b/src/constexp.y
index 9063c52..1fd1c8f 100644
--- a/src/constexp.y
+++ b/src/constexp.y
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-1999 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/cppvalue.cpp b/src/cppvalue.cpp
index 642ae2d..8573638 100644
--- a/src/cppvalue.cpp
+++ b/src/cppvalue.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/cppvalue.h b/src/cppvalue.h
index e216bda..8c7d336 100644
--- a/src/cppvalue.h
+++ b/src/cppvalue.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/debug.cpp b/src/debug.cpp
index e9f3135..321452a 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/debug.h b/src/debug.h
index 4cec994..be68039 100644
--- a/src/debug.h
+++ b/src/debug.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/declinfo.h b/src/declinfo.h
index f6fa2c5..facddc2 100644
--- a/src/declinfo.h
+++ b/src/declinfo.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/declinfo.l b/src/declinfo.l
index ddcde3c..ba0b877 100644
--- a/src/declinfo.l
+++ b/src/declinfo.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/defargs.h b/src/defargs.h
index d1452cb..4d6c072 100644
--- a/src/defargs.h
+++ b/src/defargs.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/defargs.l b/src/defargs.l
index 7e08225..8bdffa3 100644
--- a/src/defargs.l
+++ b/src/defargs.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/defgen.cpp b/src/defgen.cpp
index 62d86d4..2aed0bf 100644
--- a/src/defgen.cpp
+++ b/src/defgen.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/defgen.h b/src/defgen.h
index 2348342..0f5f82a 100644
--- a/src/defgen.h
+++ b/src/defgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/define.cpp b/src/define.cpp
index f3148b0..d512315 100644
--- a/src/define.cpp
+++ b/src/define.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/define.h b/src/define.h
index 5f2a413..549e79c 100644
--- a/src/define.h
+++ b/src/define.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/definition.cpp b/src/definition.cpp
index 3f1ff1b..e3b35f5 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/definition.h b/src/definition.h
index 0fc367c..c3c726a 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/diagram.cpp b/src/diagram.cpp
index 8924346..c1291de 100644
--- a/src/diagram.cpp
+++ b/src/diagram.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/diagram.h b/src/diagram.h
index 1dddd96..69426b0 100644
--- a/src/diagram.h
+++ b/src/diagram.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/docparser.cpp b/src/docparser.cpp
index bc5d872..2cfa394 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -2161,11 +2161,15 @@ int DocIndexEntry::parse()
     warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: expected whitespace after \\addindex command");
     goto endindexentry;
   }
+  doctokenizerYYsetStateTitle();
   m_entry="";
-  while ((tok=doctokenizerYYlex()) && tok!=TK_WHITESPACE && tok!=TK_NEWPARA)
+  while ((tok=doctokenizerYYlex()))
   {
     switch (tok)
     {
+      case TK_WHITESPACE:
+        m_entry+=" ";
+        break;
       case TK_WORD: 
       case TK_LNKWORD: 
         m_entry+=g_token->name;
@@ -2216,6 +2220,7 @@ int DocIndexEntry::parse()
     }
   }
   if (tok!=TK_WHITESPACE) retval=tok;
+  doctokenizerYYsetStatePara();
 endindexentry:
   DBG(("DocIndexEntry::parse() end retval=%x\n",retval));
   DocNode *n=g_nodeStack.pop();
diff --git a/src/docparser.h b/src/docparser.h
index d7c83d2..23e9465 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/doctokenizer.h b/src/doctokenizer.h
index 658e8a7..c258ee1 100644
--- a/src/doctokenizer.h
+++ b/src/doctokenizer.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/doctokenizer.l b/src/doctokenizer.l
index 61a98b5..5b8ae93 100644
--- a/src/doctokenizer.l
+++ b/src/doctokenizer.l
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -293,8 +293,8 @@ WORD2     "."|","|"("|")"|"["|"]"|":"|";"|"\?"
 WORD1NQ   [^ \t\n\r\\@<>()\[\]:;\?{}&$#,."]+ 
 WORD2NQ   "."|","|"("|")"|"["|"]"|":"|";"|"\?"
 HTMLTAG   "<"(("/")?){ID}({WS}+{ATTRIB})*">" 
-HTMLKEYL  "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p"
-HTMLKEYU  "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P"
+HTMLKEYL  "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p"
+HTMLKEYU  "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P"
 HTMLKEYW  {HTMLKEYL}|{HTMLKEYU}
 LABELID   [a-z_A-Z][a-z_A-Z0-9\-]*
 
@@ -402,8 +402,12 @@ LABELID   [a-z_A-Z][a-z_A-Z0-9\-]*
 			 g_token->attribs.clear();
                          int startNamePos=1;
                          if (g_token->name.at(1)=='/') startNamePos++;
-                         int attSep = g_token->name.find(' ');
-                         if (attSep!=-1) // tag has one or more options
+			 int attSep=0;
+			 while (attSep<yyleng && !isspace(yytext[attSep]))
+			 {
+			   attSep++;
+			 }
+                         if (attSep!=yyleng) // tag has one or more options
                          {
                            parseHtmlAttribs(g_token->name.mid(attSep+1,g_token->name.length()-attSep-2));
                            g_token->name=g_token->name.mid(startNamePos,attSep-1).lower();
diff --git a/src/docvisitor.h b/src/docvisitor.h
index eb94e08..949781e 100644
--- a/src/docvisitor.h
+++ b/src/docvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/dot.cpp b/src/dot.cpp
index 6fedd24..928692b 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/dot.h b/src/dot.h
index 4b358c1..5646482 100644
--- a/src/dot.h
+++ b/src/dot.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 1eab93d..ba2943c 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -6689,7 +6689,7 @@ static void copyStyleSheet()
         cssf.readBlock(buffer,cssf.size());
         df.writeBlock(buffer,cssf.size());
         df.flush();
-        delete buffer;
+        delete[] buffer;
       }
       else
       {
@@ -7000,7 +7000,7 @@ static void readFormulaRepository()
 
 static void usage(const char *name)
 {
-  msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2002\n\n",versionString);
+  msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2003\n\n",versionString);
   msg("You can use doxygen in a number of ways:\n\n");
   msg("1) Use doxygen to generate a template configuration file:\n");
   msg("    %s [-s] -g [configName]\n\n",name);
diff --git a/src/doxygen.h b/src/doxygen.h
index d33ed94..ce69f94 100644
--- a/src/doxygen.h
+++ b/src/doxygen.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/doxygen.pro.in b/src/doxygen.pro.in
index dbb006f..237d22d 100644
--- a/src/doxygen.pro.in
+++ b/src/doxygen.pro.in
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 1997-2002 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
@@ -26,8 +26,10 @@ win32-msvc:TMAKE_LFLAGS    += /LIBPATH:..\lib
 win32-borland:LIBS         += qtools.lib png.lib doxygen.lib doxycfg.lib shell32.lib 
 win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk
 win32:TMAKE_CXXFLAGS       += -DQT_NODLL
-win32-g++:TMAKE_CXXFLAGS   += -D_WIN32 -D__CYGWIN__ -DALL_STATIC
+win32-g++:LIBS             = -L../lib -ldoxygen -ldoxycfg -lqtools -lpng.dll
+win32-g++:TMAKE_CXXFLAGS   += -fno-exceptions -fno-rtti
 INCLUDEPATH                += ../qtools ../libpng .
+win32-g++:INCLUDEPATH      -= ../libpng
 DESTDIR                    =  ../bin
 TARGET                     =  doxygen
 unix:TARGETDEPS            =  ../lib/libdoxygen.a ../lib/libdoxycfg.a
diff --git a/src/doxysearch.cpp b/src/doxysearch.cpp
index a521625..ebdf223 100644
--- a/src/doxysearch.cpp
+++ b/src/doxysearch.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/doxysearch.pro.in b/src/doxysearch.pro.in
index 17c90e7..07865cd 100644
--- a/src/doxysearch.pro.in
+++ b/src/doxysearch.pro.in
@@ -1,7 +1,7 @@
 # 
 # 
 #
-# Copyright (C) 1997-1999 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 # 
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
@@ -17,3 +17,4 @@ CONFIG       =	console warn_on $extraopts
 SOURCES      =	doxysearch.cpp
 TARGET       =	../bin/doxysearch
 OBJECTS_DIR  =  ../objects
+win32-g++:TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti
diff --git a/src/doxytag.l b/src/doxytag.l
index 18d940e..f80a12b 100644
--- a/src/doxytag.l
+++ b/src/doxytag.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -505,7 +505,7 @@ void parseFileOrDir(const char *fileName)
 
 void usage(const char *name)
 {
-  fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-2002\n\n",
+  fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-2003\n\n",
       versionString);
   fprintf(stderr,"  Generates a tag file and/or a search index for a set of HTML files\n\n");
   fprintf(stderr,"Usage: %s [-t tag_file] [-s index_file] [ html_file [html_file...] ]\n",name);
diff --git a/src/doxytag.pro.in b/src/doxytag.pro.in
index 3016535..6fc00c7 100644
--- a/src/doxytag.pro.in
+++ b/src/doxytag.pro.in
@@ -1,7 +1,7 @@
 # 
 # 
 #
-# Copyright (C) 1997-1999 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 # 
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/doxytag.t b/src/doxytag.t
index b56e0a1..0094b6d 100644
--- a/src/doxytag.t
+++ b/src/doxytag.t
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 1997-1999 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/entry.cpp b/src/entry.cpp
index 8db6cd1..041c7ee 100644
--- a/src/entry.cpp
+++ b/src/entry.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/entry.h b/src/entry.h
index ba4afbf..752337e 100644
--- a/src/entry.h
+++ b/src/entry.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/example.h b/src/example.h
index 81a1b21..87f44f7 100644
--- a/src/example.h
+++ b/src/example.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/filedef.cpp b/src/filedef.cpp
index e48b398..9d9edcc 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -36,14 +36,17 @@
     \a the file name, and \a ref is an HTML anchor name if the
     file was read from a tag file or 0 otherwise
 */
-FileDef::FileDef(const char *p,const char *nm,const char *lref)
+FileDef::FileDef(const char *p,const char *nm,
+                 const char *lref,const char *dn)
    : Definition((QCString)p+nm,1,nm)
 {
   path=p;
   filepath=path+nm;
   filename=nm;
-  diskname=nm;
+  diskname=dn;
+  if (diskname.isEmpty()) diskname=nm;
   setReference(lref);
+  //printf("new FileDef(path=%s,name=%s,ref=%s)\n",p,nm,lref);
   classSDict     = new ClassSDict(17);
   includeList   = new QList<IncludeInfo>;
   includeList->setAutoDelete(TRUE);
diff --git a/src/filedef.h b/src/filedef.h
index d49cd8f..1850a7c 100644
--- a/src/filedef.h
+++ b/src/filedef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -65,7 +65,7 @@ class FileDef : public Definition
   public:
     //enum FileType { Source, Header, Unknown };
 
-    FileDef(const char *p,const char *n,const char *ref=0);
+    FileDef(const char *p,const char *n,const char *ref=0,const char *dn=0);
    ~FileDef();
     DefType definitionType() { return TypeFile; }
 
diff --git a/src/filename.cpp b/src/filename.cpp
index cbcceed..131f362 100644
--- a/src/filename.cpp
+++ b/src/filename.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/filename.h b/src/filename.h
index 0a0a7a5..c537deb 100644
--- a/src/filename.h
+++ b/src/filename.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/formula.cpp b/src/formula.cpp
index 3965bdf..913a4d5 100644
--- a/src/formula.cpp
+++ b/src/formula.cpp
@@ -2,7 +2,7 @@
  i
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/formula.h b/src/formula.h
index f703ee9..e876ac9 100644
--- a/src/formula.h
+++ b/src/formula.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 4ddc35f..5a1346b 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/groupdef.h b/src/groupdef.h
index 9246c9f..79d1c21 100644
--- a/src/groupdef.h
+++ b/src/groupdef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/htmlattrib.h b/src/htmlattrib.h
index 4715002..ffe9615 100644
--- a/src/htmlattrib.h
+++ b/src/htmlattrib.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 12f2654..3f52ee2 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -24,6 +24,7 @@
 #include "code.h"
 #include "dot.h"
 #include "message.h"
+#include "config.h"
 
 static QString htmlAttribsToString(const HtmlAttribList &attribs)
 {
@@ -230,21 +231,22 @@ void HtmlDocVisitor::visit(DocIncOperator *op)
   //    op->type(),op->isFirst(),op->isLast(),op->text().data());
   if (op->isFirst()) 
   {
-    m_t << "<div class=\"fragment\"><pre>";
-    m_hide = TRUE;
+    if (!m_hide) m_t << "<div class=\"fragment\"><pre>";
+    pushEnabled();
+    m_hide=TRUE;
   }
   if (op->type()!=DocIncOperator::Skip) 
   {
-    parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
+    if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
   }
   if (op->isLast())  
   {
-    m_hide = FALSE;
-    m_t << "</pre></div>"; 
+    popEnabled();
+    if (!m_hide) m_t << "</pre></div>"; 
   }
   else
   {
-    m_t << endl;
+    if (!m_hide) m_t << endl;
   }
 }
 
@@ -277,6 +279,7 @@ void HtmlDocVisitor::visit(DocIndexEntry *)
 
 void HtmlDocVisitor::visitPre(DocAutoList *l)
 {
+  if (m_hide) return;
   if (l->isEnumList())
   {
     m_t << "<ol>";
@@ -290,6 +293,7 @@ void HtmlDocVisitor::visitPre(DocAutoList *l)
 
 void HtmlDocVisitor::visitPost(DocAutoList *l)
 {
+  if (m_hide) return;
   if (l->isEnumList())
   {
     m_t << "</ol>";
@@ -303,11 +307,13 @@ void HtmlDocVisitor::visitPost(DocAutoList *l)
 
 void HtmlDocVisitor::visitPre(DocAutoListItem *)
 {
+  if (m_hide) return;
   m_t << "<li>";
 }
 
 void HtmlDocVisitor::visitPost(DocAutoListItem *) 
 {
+  if (m_hide) return;
   m_t << "</li>";
 }
 
@@ -317,13 +323,14 @@ void HtmlDocVisitor::visitPre(DocPara *)
 
 void HtmlDocVisitor::visitPost(DocPara *p)
 {
+  if (m_hide) return;
   if (!p->isLast() &&            // omit <p> for last paragraph
       !(p->parent() &&           // and for parameter sections
         p->parent()->kind()==DocNode::Kind_ParamSect
        ) 
      ) 
   {
-    m_t << "<p>";
+    m_t << "<p>\n";
   }
 }
 
@@ -339,6 +346,7 @@ void HtmlDocVisitor::visitPost(DocRoot *)
 
 void HtmlDocVisitor::visitPre(DocSimpleSect *s)
 {
+  if (m_hide) return;
   m_t << "<dl compact><dt><b>";
   switch(s->type())
   {
@@ -384,6 +392,7 @@ void HtmlDocVisitor::visitPre(DocSimpleSect *s)
 
 void HtmlDocVisitor::visitPost(DocSimpleSect *)
 {
+  if (m_hide) return;
   m_t << "</dd></dl>\n";
 }
 
@@ -393,34 +402,40 @@ void HtmlDocVisitor::visitPre(DocTitle *)
 
 void HtmlDocVisitor::visitPost(DocTitle *)
 {
+  if (m_hide) return;
   m_t << "</b></dt><dd>";
 }
 
 void HtmlDocVisitor::visitPre(DocSimpleList *sl)
 {
+  if (m_hide) return;
   m_t << "<ul>";
   if (!sl->isPreformatted()) m_t << "\n";
 }
 
 void HtmlDocVisitor::visitPost(DocSimpleList *sl)
 {
+  if (m_hide) return;
   m_t << "</ul>";
   if (!sl->isPreformatted()) m_t << "\n";
 }
 
 void HtmlDocVisitor::visitPre(DocSimpleListItem *)
 {
+  if (m_hide) return;
   m_t << "<li>";
 }
 
 void HtmlDocVisitor::visitPost(DocSimpleListItem *li) 
 {
+  if (m_hide) return;
   m_t << "</li>";
   if (!li->isPreformatted()) m_t << "\n";
 }
 
 void HtmlDocVisitor::visitPre(DocSection *s)
 {
+  if (m_hide) return;
   m_t << "<h" << s->level()+1 << ">";
   m_t << "<a name=\"" << s->anchor();
   m_t << "\"></a>" << endl;
@@ -434,6 +449,7 @@ void HtmlDocVisitor::visitPost(DocSection *)
 
 void HtmlDocVisitor::visitPre(DocHtmlList *s)
 {
+  if (m_hide) return;
   if (s->type()==DocHtmlList::Ordered) 
     m_t << "<ol" << htmlAttribsToString(s->attribs()) << ">\n"; 
   else 
@@ -442,6 +458,7 @@ void HtmlDocVisitor::visitPre(DocHtmlList *s)
 
 void HtmlDocVisitor::visitPost(DocHtmlList *s) 
 {
+  if (m_hide) return;
   if (s->type()==DocHtmlList::Ordered) 
     m_t << "</ol>"; 
   else 
@@ -451,12 +468,14 @@ void HtmlDocVisitor::visitPost(DocHtmlList *s)
 
 void HtmlDocVisitor::visitPre(DocHtmlListItem *i)
 {
+  if (m_hide) return;
   m_t << "<li" << htmlAttribsToString(i->attribs()) << ">";
   if (!i->isPreformatted()) m_t << "\n";
 }
 
 void HtmlDocVisitor::visitPost(DocHtmlListItem *) 
 {
+  if (m_hide) return;
   m_t << "</li>\n";
 }
 
@@ -474,36 +493,43 @@ void HtmlDocVisitor::visitPost(DocHtmlListItem *)
 
 void HtmlDocVisitor::visitPre(DocHtmlDescList *dl)
 {
+  if (m_hide) return;
   m_t << "<dl" << htmlAttribsToString(dl->attribs()) << ">\n";
 }
 
 void HtmlDocVisitor::visitPost(DocHtmlDescList *) 
 {
+  if (m_hide) return;
   m_t << "</dl>\n";
 }
 
 void HtmlDocVisitor::visitPre(DocHtmlDescTitle *dt)
 {
+  if (m_hide) return;
   m_t << "<dt" << htmlAttribsToString(dt->attribs()) << ">";
 }
 
 void HtmlDocVisitor::visitPost(DocHtmlDescTitle *) 
 {
+  if (m_hide) return;
   m_t << "</dt>\n";
 }
 
 void HtmlDocVisitor::visitPre(DocHtmlDescData *dd)
 {
+  if (m_hide) return;
   m_t << "<dd" << htmlAttribsToString(dd->attribs()) << ">";
 }
 
 void HtmlDocVisitor::visitPost(DocHtmlDescData *) 
 {
+  if (m_hide) return;
   m_t << "</dd>\n";
 }
 
 void HtmlDocVisitor::visitPre(DocHtmlTable *t)
 {
+  if (m_hide) return;
   bool hasBorder      = FALSE;
   bool hasCellSpacing = FALSE;
   bool hasCellPadding = FALSE;
@@ -525,21 +551,25 @@ void HtmlDocVisitor::visitPre(DocHtmlTable *t)
 
 void HtmlDocVisitor::visitPost(DocHtmlTable *) 
 {
+  if (m_hide) return;
   m_t << "</table>\n";
 }
 
 void HtmlDocVisitor::visitPre(DocHtmlRow *tr)
 {
+  if (m_hide) return;
   m_t << "<tr" << htmlAttribsToString(tr->attribs()) << ">\n";
 }
 
 void HtmlDocVisitor::visitPost(DocHtmlRow *) 
 {
+  if (m_hide) return;
   m_t << "</tr>\n";
 }
 
 void HtmlDocVisitor::visitPre(DocHtmlCell *c)
 {
+  if (m_hide) return;
   if (c->isHeading()) 
   {
     m_t << "<th" << htmlAttribsToString(c->attribs()) << ">"; 
@@ -552,11 +582,13 @@ void HtmlDocVisitor::visitPre(DocHtmlCell *c)
 
 void HtmlDocVisitor::visitPost(DocHtmlCell *c) 
 {
+  if (m_hide) return;
   if (c->isHeading()) m_t << "</th>"; else m_t << "</td>";
 }
 
 void HtmlDocVisitor::visitPre(DocHtmlCaption *c)
 {
+  if (m_hide) return;
   bool hasAlign      = FALSE;
   HtmlAttribListIterator li(c->attribs());
   HtmlAttrib *att;
@@ -571,38 +603,45 @@ void HtmlDocVisitor::visitPre(DocHtmlCaption *c)
 
 void HtmlDocVisitor::visitPost(DocHtmlCaption *) 
 {
+  if (m_hide) return;
   m_t << "</caption>\n";
 }
 
 void HtmlDocVisitor::visitPre(DocInternal *)
 {
+  if (m_hide) return;
   m_t << "<p><b>" << theTranslator->trForInternalUseOnly() << "</b></p>" << endl;
   m_t << "<p>" << endl;
 }
 
 void HtmlDocVisitor::visitPost(DocInternal *) 
 {
+  if (m_hide) return;
   m_t << "</p>" << endl;
 }
 
 void HtmlDocVisitor::visitPre(DocHRef *href)
 {
+  if (m_hide) return;
   m_t << "<a href=\"" << href->url() << "\">";
 }
 
 void HtmlDocVisitor::visitPost(DocHRef *) 
 {
+  if (m_hide) return;
   m_t << "</a>";
 }
 
 void HtmlDocVisitor::visitPre(DocHtmlHeader *header)
 {
+  if (m_hide) return;
   m_t << "<h" << header->level() 
       << htmlAttribsToString(header->attribs()) << ">";
 }
 
 void HtmlDocVisitor::visitPost(DocHtmlHeader *header) 
 {
+  if (m_hide) return;
   m_t << "</h" << header->level() << ">\n";
 }
 
@@ -610,6 +649,7 @@ void HtmlDocVisitor::visitPre(DocImage *img)
 {
   if (img->type()==DocImage::Html)
   {
+    if (m_hide) return;
     QString baseName=img->name();
     int i;
     if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1)
@@ -626,6 +666,7 @@ void HtmlDocVisitor::visitPre(DocImage *img)
   }
   else // other format -> skip
   {
+    pushEnabled();
     m_hide=TRUE;
   }
 }
@@ -634,6 +675,7 @@ void HtmlDocVisitor::visitPost(DocImage *img)
 {
   if (img->type()==DocImage::Html)
   {
+    if (m_hide) return;
     if (img->hasCaption())
     {
       m_t << "</strong></p>";
@@ -642,12 +684,13 @@ void HtmlDocVisitor::visitPost(DocImage *img)
   }
   else // other format
   {
-    m_hide=FALSE;
+    popEnabled();
   }
 }
 
 void HtmlDocVisitor::visitPre(DocDotFile *df)
 {
+  if (m_hide) return;
   QString baseName=df->file();
   int i;
   if ((i=baseName.findRev('/'))!=-1)
@@ -672,6 +715,7 @@ void HtmlDocVisitor::visitPre(DocDotFile *df)
 
 void HtmlDocVisitor::visitPost(DocDotFile *df) 
 {
+  if (m_hide) return;
   if (df->hasCaption())
   {
     m_t << "</strong></p>" << endl;
@@ -681,28 +725,33 @@ void HtmlDocVisitor::visitPost(DocDotFile *df)
 
 void HtmlDocVisitor::visitPre(DocLink *lnk)
 {
+  if (m_hide) return;
   startLink(lnk->ref(),lnk->file(),lnk->anchor());
 }
 
 void HtmlDocVisitor::visitPost(DocLink *) 
 {
+  if (m_hide) return;
   endLink();
 }
 
 void HtmlDocVisitor::visitPre(DocRef *ref)
 {
+  if (m_hide) return;
   startLink(ref->ref(),ref->file(),ref->anchor());
   if (!ref->hasLinkText()) filter(ref->targetTitle());
 }
 
 void HtmlDocVisitor::visitPost(DocRef *) 
 {
+  if (m_hide) return;
   endLink();
   m_t << " ";
 }
 
 void HtmlDocVisitor::visitPre(DocSecRefItem *ref)
 {
+  if (m_hide) return;
   QString refName=ref->file();
   if (refName.right(Doxygen::htmlFileExtension.length())!=
       QString(Doxygen::htmlFileExtension))
@@ -715,31 +764,46 @@ void HtmlDocVisitor::visitPre(DocSecRefItem *ref)
 
 void HtmlDocVisitor::visitPost(DocSecRefItem *) 
 {
+  if (m_hide) return;
   m_t << "</a> ";
 }
 
 void HtmlDocVisitor::visitPre(DocSecRefList *)
 {
+  if (m_hide) return;
   m_t << "<multicol cols=3>" << endl;
   m_t << "<ul>" << endl;
 }
 
 void HtmlDocVisitor::visitPost(DocSecRefList *) 
 {
+  if (m_hide) return;
   m_t << "</ul>" << endl;
   m_t << "</multicol>" << endl;
 }
 
-void HtmlDocVisitor::visitPre(DocLanguage *)
+void HtmlDocVisitor::visitPre(DocLanguage *l)
 {
+  QString langId = Config_getEnum("OUTPUT_LANGUAGE");
+  if (l->id().lower()!=langId.lower())
+  {
+    pushEnabled();
+    m_hide = TRUE;
+  }
 }
 
-void HtmlDocVisitor::visitPost(DocLanguage *) 
+void HtmlDocVisitor::visitPost(DocLanguage *l) 
 {
+  QString langId = Config_getEnum("OUTPUT_LANGUAGE");
+  if (l->id().lower()!=langId.lower())
+  {
+    popEnabled();
+  }
 }
 
 void HtmlDocVisitor::visitPre(DocParamSect *s)
 {
+  if (m_hide) return;
   m_t << "<dl compact><dt><b>";
   switch(s->type())
   {
@@ -759,12 +823,14 @@ void HtmlDocVisitor::visitPre(DocParamSect *s)
 
 void HtmlDocVisitor::visitPost(DocParamSect *)
 {
+  if (m_hide) return;
   m_t << "  </table>" << endl;
   m_t << "</dl>" << endl;
 }
 
 void HtmlDocVisitor::visitPre(DocParamList *pl)
 {
+  if (m_hide) return;
   m_t << "    <tr><td valign=top><em>";
   QStrListIterator li(pl->parameters());
   const char *s;
@@ -779,11 +845,13 @@ void HtmlDocVisitor::visitPre(DocParamList *pl)
 
 void HtmlDocVisitor::visitPost(DocParamList *)
 {
+  if (m_hide) return;
   m_t << "</td></tr>" << endl;
 }
 
 void HtmlDocVisitor::visitPre(DocXRefItem *x)
 {
+  if (m_hide) return;
   m_t << "<dl compact><dt><b><a class=\"el\" href=\"" 
     << x->file() << Doxygen::htmlFileExtension << "#" << x->anchor() << "\">";
   filter(x->title());
@@ -792,16 +860,19 @@ void HtmlDocVisitor::visitPre(DocXRefItem *x)
 
 void HtmlDocVisitor::visitPost(DocXRefItem *)
 {
+  if (m_hide) return;
   m_t << "</dd></dl>" << endl;
 }
 
 void HtmlDocVisitor::visitPre(DocInternalRef *ref)
 {
+  if (m_hide) return;
   startLink(0,ref->file(),ref->anchor());
 }
 
 void HtmlDocVisitor::visitPost(DocInternalRef *) 
 {
+  if (m_hide) return;
   endLink();
   m_t << " ";
 }
@@ -869,3 +940,16 @@ void HtmlDocVisitor::endLink()
   m_t << "</a>";
 }
 
+void HtmlDocVisitor::pushEnabled()
+{
+  m_enabled.push(new bool(m_hide));
+}
+
+void HtmlDocVisitor::popEnabled()
+{
+  bool *v=m_enabled.pop();
+  ASSERT(v!=0);
+  m_hide = *v;
+  delete v;
+}
+
diff --git a/src/htmldocvisitor.h b/src/htmldocvisitor.h
index c2202a7..aad92e3 100644
--- a/src/htmldocvisitor.h
+++ b/src/htmldocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -20,6 +20,7 @@
 #define _HTMLDOCVISITOR_H
 
 #include "docvisitor.h"
+#include <qstack.h>
 
 class QTextStream;
 class BaseCodeDocInterface;
@@ -136,6 +137,9 @@ class HtmlDocVisitor : public DocVisitor
                    const QString &anchor);
     void endLink();
 
+    void pushEnabled();
+    void popEnabled();
+
     //--------------------------------------
     // state variables
     //--------------------------------------
@@ -144,6 +148,7 @@ class HtmlDocVisitor : public DocVisitor
     BaseCodeDocInterface &m_ci;
     bool m_insidePre;
     bool m_hide;
+    QStack<bool> m_enabled;
 };
 
 #endif
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 020f57e..516b05e 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -191,7 +191,7 @@ void HtmlGenerator::writeFooterFile(QFile &file)
     << "</a> $doxygenversion";
   //  << " " << theTranslator->trWrittenBy()
   //  << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n"
-  //  << " &copy;&nbsp;1997-2002"
+  //  << " &copy;&nbsp;1997-2003"
   t << "</small></address>\n"
     << "</body>\n"
     << "</html>\n";
@@ -288,7 +288,7 @@ void HtmlGenerator::writeFooter(int part,bool external)
     default:
       if (g_footer.isEmpty())
       {
-        //t << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n &copy;&nbsp;1997-2002";
+        //t << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n &copy;&nbsp;1997-2003";
         t << "</small></address>\n</body>\n</html>\n";
       }
       break;
diff --git a/src/htmlgen.h b/src/htmlgen.h
index 9e29d89..32c71ac 100644
--- a/src/htmlgen.h
+++ b/src/htmlgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp
index 027c0d8..2036fab 100644
--- a/src/htmlhelp.cpp
+++ b/src/htmlhelp.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/htmlhelp.h b/src/htmlhelp.h
index 3e85494..e7f5d97 100644
--- a/src/htmlhelp.h
+++ b/src/htmlhelp.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/image.cpp b/src/image.cpp
index 5806230..b6160f4 100644
--- a/src/image.cpp
+++ b/src/image.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/image.h b/src/image.h
index f5efe91..b0c98e2 100644
--- a/src/image.h
+++ b/src/image.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/index.cpp b/src/index.cpp
index df48b79..966accc 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/index.h b/src/index.h
index 6acf4a7..f6d546e 100644
--- a/src/index.h
+++ b/src/index.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/instdox.cpp b/src/instdox.cpp
index 3ae5760..55402d0 100644
--- a/src/instdox.cpp
+++ b/src/instdox.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/instdox.h b/src/instdox.h
index a6b2a73..6ff8ff5 100644
--- a/src/instdox.h
+++ b/src/instdox.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/language.cpp b/src/language.cpp
index 85f5858..5a2b9d2 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/language.h b/src/language.h
index 9c5ffc9..5d1f3ec 100644
--- a/src/language.h
+++ b/src/language.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index 645c357..00cf338 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -285,17 +285,18 @@ void LatexDocVisitor::visit(DocIncOperator *op)
   //    op->type(),op->isFirst(),op->isLast(),op->text().data());
   if (op->isFirst()) 
   {
-    m_t << "\n\n\\footnotesize\\begin{verbatim}"; 
+    if (!m_hide) m_t << "\n\n\\footnotesize\\begin{verbatim}"; 
+    pushEnabled();
     m_hide = TRUE;
   }
   if (op->type()!=DocIncOperator::Skip) 
   {
-    parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
+    if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
   }
   if (op->isLast())  
   {
-    m_hide = FALSE;
-    m_t << "\\end{verbatim}\\normalsize" << endl; 
+    popEnabled();
+    if (m_hide) m_t << "\\end{verbatim}\\normalsize" << endl; 
   }
   else
   {
@@ -311,6 +312,7 @@ void LatexDocVisitor::visit(DocFormula *f)
 
 void LatexDocVisitor::visit(DocIndexEntry *i)
 {
+  if (m_hide) return;
   m_t << "\\index{" << escapeLabelName(i->entry()) << "@{";
   escapeMakeIndexChars(i->entry());
   m_t << "}}";
@@ -322,6 +324,7 @@ void LatexDocVisitor::visit(DocIndexEntry *i)
 
 void LatexDocVisitor::visitPre(DocAutoList *l)
 {
+  if (m_hide) return;
   if (l->isEnumList())
   {
     m_t << "\\begin{enumerate}" << endl;
@@ -334,6 +337,7 @@ void LatexDocVisitor::visitPre(DocAutoList *l)
 
 void LatexDocVisitor::visitPost(DocAutoList *l)
 {
+  if (m_hide) return;
   if (l->isEnumList())
   {
     m_t << "\\end{enumerate}" << endl;
@@ -346,6 +350,7 @@ void LatexDocVisitor::visitPost(DocAutoList *l)
 
 void LatexDocVisitor::visitPre(DocAutoListItem *)
 {
+  if (m_hide) return;
   m_t << "\\item ";
 }
 
@@ -359,6 +364,7 @@ void LatexDocVisitor::visitPre(DocPara *)
 
 void LatexDocVisitor::visitPost(DocPara *p)
 {
+  if (m_hide) return;
   if (!p->isLast() &&            // omit <p> for last paragraph
       !(p->parent() &&           // and for parameter sections
         p->parent()->kind()==DocNode::Kind_ParamSect
@@ -376,6 +382,7 @@ void LatexDocVisitor::visitPost(DocRoot *)
 
 void LatexDocVisitor::visitPre(DocSimpleSect *s)
 {
+  if (m_hide) return;
   m_t << "\\begin{Desc}\n\\item[";
   switch(s->type())
   {
@@ -425,6 +432,7 @@ void LatexDocVisitor::visitPre(DocSimpleSect *s)
 
 void LatexDocVisitor::visitPost(DocSimpleSect *)
 {
+  if (m_hide) return;
   m_t << "\\end{Desc}" << endl;
 }
 
@@ -434,22 +442,26 @@ void LatexDocVisitor::visitPre(DocTitle *)
 
 void LatexDocVisitor::visitPost(DocTitle *)
 {
+  if (m_hide) return;
   m_insideItem=FALSE;
   m_t << "]";
 }
 
 void LatexDocVisitor::visitPre(DocSimpleList *)
 {
+  if (m_hide) return;
   m_t << "\\begin{itemize}" << endl;
 }
 
 void LatexDocVisitor::visitPost(DocSimpleList *)
 {
+  if (m_hide) return;
   m_t << "\\end{itemize}" << endl;
 }
 
 void LatexDocVisitor::visitPre(DocSimpleListItem *)
 {
+  if (m_hide) return;
   m_t << "\\item ";
 }
 
@@ -459,6 +471,7 @@ void LatexDocVisitor::visitPost(DocSimpleListItem *)
 
 void LatexDocVisitor::visitPre(DocSection *s)
 {
+  if (m_hide) return;
   if (Config_getBool("PDF_HYPERLINKS"))
   {
     m_t << "\\hypertarget{" << s->file() << "_" << s->anchor() << "}{}";
@@ -493,6 +506,7 @@ void LatexDocVisitor::visitPost(DocSection *)
 
 void LatexDocVisitor::visitPre(DocHtmlList *s)
 {
+  if (m_hide) return;
   if (s->type()==DocHtmlList::Ordered) 
     m_t << "\\begin{enumerate}" << endl; 
   else 
@@ -501,6 +515,7 @@ void LatexDocVisitor::visitPre(DocHtmlList *s)
 
 void LatexDocVisitor::visitPost(DocHtmlList *s) 
 {
+  if (m_hide) return;
   if (s->type()==DocHtmlList::Ordered) 
     m_t << "\\end{enumerate}" << endl; 
   else 
@@ -509,6 +524,7 @@ void LatexDocVisitor::visitPost(DocHtmlList *s)
 
 void LatexDocVisitor::visitPre(DocHtmlListItem *)
 {
+  if (m_hide) return;
   m_t << "\\item ";
 }
 
@@ -530,22 +546,26 @@ void LatexDocVisitor::visitPost(DocHtmlListItem *)
 
 void LatexDocVisitor::visitPre(DocHtmlDescList *)
 {
+  if (m_hide) return;
   m_t << "\\begin{description}" << endl;
 }
 
 void LatexDocVisitor::visitPost(DocHtmlDescList *) 
 {
+  if (m_hide) return;
   m_t << "\\end{description}" << endl;
 }
 
 void LatexDocVisitor::visitPre(DocHtmlDescTitle *)
 {
+  if (m_hide) return;
   m_t << "\\item[";
   m_insideItem=TRUE;
 }
 
 void LatexDocVisitor::visitPost(DocHtmlDescTitle *) 
 {
+  if (m_hide) return;
   m_insideItem=FALSE;
   m_t << "]";
 }
@@ -560,6 +580,7 @@ void LatexDocVisitor::visitPost(DocHtmlDescData *)
 
 void LatexDocVisitor::visitPre(DocHtmlTable *t)
 {
+  if (m_hide) return;
   if (t->hasCaption()) 
   {
     m_t << "\\begin{table}[h]";
@@ -569,6 +590,7 @@ void LatexDocVisitor::visitPre(DocHtmlTable *t)
 
 void LatexDocVisitor::visitPost(DocHtmlTable *t) 
 {
+  if (m_hide) return;
   if (t->hasCaption())
   {
     m_t << "\\end{table}\n";
@@ -581,11 +603,13 @@ void LatexDocVisitor::visitPost(DocHtmlTable *t)
 
 void LatexDocVisitor::visitPre(DocHtmlCaption *)
 {
+  if (m_hide) return;
   m_t << "\\\\\\hline\n\\end{TabularC}\n\\centering\n\\caption{";
 }
 
 void LatexDocVisitor::visitPost(DocHtmlCaption *) 
 {
+  if (m_hide) return;
   m_t << "}\n";
 }
 
@@ -595,6 +619,7 @@ void LatexDocVisitor::visitPre(DocHtmlRow *)
 
 void LatexDocVisitor::visitPost(DocHtmlRow *) 
 {
+  if (m_hide) return;
   m_t << "\\\\\\hline\n";
 }
 
@@ -604,22 +629,26 @@ void LatexDocVisitor::visitPre(DocHtmlCell *)
 
 void LatexDocVisitor::visitPost(DocHtmlCell *c) 
 {
+  if (m_hide) return;
   if (!c->isLast()) m_t << "&";
 }
 
 void LatexDocVisitor::visitPre(DocInternal *)
 {
+  if (m_hide) return;
   m_t << "\\begin{Desc}" << endl 
     << "\\item[" << theTranslator->trForInternalUseOnly() << "]" << endl;
 }
 
 void LatexDocVisitor::visitPost(DocInternal *) 
 {
+  if (m_hide) return;
   m_t << "\\end{Desc}" << endl;
 }
 
 void LatexDocVisitor::visitPre(DocHRef *href)
 {
+  if (m_hide) return;
   if (Config_getBool("PDF_HYPERLINKS"))
   {
     m_t << "\\href{";
@@ -631,11 +660,13 @@ void LatexDocVisitor::visitPre(DocHRef *href)
 
 void LatexDocVisitor::visitPost(DocHRef *) 
 {
+  if (m_hide) return;
   m_t << "}";
 }
 
 void LatexDocVisitor::visitPre(DocHtmlHeader *header)
 {
+  if (m_hide) return;
   if (Config_getBool("COMPACT_LATEX"))
   {
     switch(header->level())
@@ -661,6 +692,7 @@ void LatexDocVisitor::visitPre(DocHtmlHeader *header)
 
 void LatexDocVisitor::visitPost(DocHtmlHeader *) 
 {
+  if (m_hide) return;
   m_t << "}";
 }
 
@@ -668,6 +700,7 @@ void LatexDocVisitor::visitPre(DocImage *img)
 {
   if (img->type()==DocImage::Latex)
   {
+    if (m_hide) return;
     if (img->hasCaption())
     {
       m_t << "\\begin{figure}[H]" << endl;
@@ -699,6 +732,7 @@ void LatexDocVisitor::visitPre(DocImage *img)
   }
   else // other format -> skip
   {
+    pushEnabled();
     m_hide=TRUE;
   }
 }
@@ -707,6 +741,7 @@ void LatexDocVisitor::visitPost(DocImage *img)
 {
   if (img->type()==DocImage::Latex)
   {
+    if (m_hide) return;
     m_t << "}" << endl; // end mbox or caption
     if (img->hasCaption())
     {
@@ -716,12 +751,13 @@ void LatexDocVisitor::visitPost(DocImage *img)
   }
   else // other format
   {
-    m_hide=FALSE;
+    popEnabled();
   }
 }
 
 void LatexDocVisitor::visitPre(DocDotFile *df)
 {
+  if (m_hide) return;
   QString baseName=df->file();
   int i;
   if ((i=baseName.findRev('/'))!=-1)
@@ -767,6 +803,7 @@ void LatexDocVisitor::visitPre(DocDotFile *df)
 
 void LatexDocVisitor::visitPost(DocDotFile *df) 
 {
+  if (m_hide) return;
   m_t << "}" << endl; // end mbox or caption
   if (df->hasCaption())
   {
@@ -777,38 +814,45 @@ void LatexDocVisitor::visitPost(DocDotFile *df)
 
 void LatexDocVisitor::visitPre(DocLink *lnk)
 {
+  if (m_hide) return;
   startLink(lnk->ref(),lnk->file(),lnk->anchor());
 }
 
 void LatexDocVisitor::visitPost(DocLink *) 
 {
+  if (m_hide) return;
   endLink();
 }
 
 void LatexDocVisitor::visitPre(DocRef *ref)
 {
+  if (m_hide) return;
   startLink(ref->ref(),ref->file(),ref->anchor());
   if (!ref->hasLinkText()) filter(ref->targetTitle());
 }
 
 void LatexDocVisitor::visitPost(DocRef *) 
 {
+  if (m_hide) return;
   endLink();
   m_t << " ";
 }
 
 void LatexDocVisitor::visitPre(DocSecRefItem *)
 {
+  if (m_hide) return;
   m_t << "\\item \\contentsline{section}{";
 }
 
 void LatexDocVisitor::visitPost(DocSecRefItem *ref) 
 {
+  if (m_hide) return;
   m_t << "}{\\ref{" << ref->anchor() << "}}{}" << endl;
 }
 
 void LatexDocVisitor::visitPre(DocSecRefList *)
 {
+  if (m_hide) return;
   m_t << "\\footnotesize" << endl;
   m_t << "\\begin{multicols}{2}" << endl;
   m_t << "\\begin{CompactList}" << endl;
@@ -816,21 +860,34 @@ void LatexDocVisitor::visitPre(DocSecRefList *)
 
 void LatexDocVisitor::visitPost(DocSecRefList *) 
 {
+  if (m_hide) return;
   m_t << "\\end{CompactList}" << endl;
   m_t << "\\end{multicols}" << endl;
   m_t << "\\normalsize" << endl;
 }
 
-void LatexDocVisitor::visitPre(DocLanguage *)
+void LatexDocVisitor::visitPre(DocLanguage *l)
 {
+  QString langId = Config_getEnum("OUTPUT_LANGUAGE");
+  if (l->id().lower()!=langId.lower())
+  {
+    pushEnabled();
+    m_hide = TRUE;
+  }
 }
 
-void LatexDocVisitor::visitPost(DocLanguage *) 
+void LatexDocVisitor::visitPost(DocLanguage *l) 
 {
+  QString langId = Config_getEnum("OUTPUT_LANGUAGE");
+  if (l->id().lower()!=langId.lower())
+  {
+    popEnabled();
+  }
 }
 
 void LatexDocVisitor::visitPre(DocParamSect *s)
 {
+  if (m_hide) return;
   m_t << "\\begin{Desc}" << endl;
   m_t << "\\item[";
   switch(s->type())
@@ -850,12 +907,14 @@ void LatexDocVisitor::visitPre(DocParamSect *s)
 
 void LatexDocVisitor::visitPost(DocParamSect *)
 {
+  if (m_hide) return;
   m_t << "\\end{description}" << endl;
   m_t << "\\end{Desc}" << endl;
 }
 
 void LatexDocVisitor::visitPre(DocParamList *pl)
 {
+  if (m_hide) return;
   m_t << "\\item[{\\em ";
   QStrListIterator li(pl->parameters());
   const char *s;
@@ -876,6 +935,7 @@ void LatexDocVisitor::visitPost(DocParamList *)
 
 void LatexDocVisitor::visitPre(DocXRefItem *x)
 {
+  if (m_hide) return;
   m_t << "\\begin{Desc}" << endl;
   m_t << "\\item[";
   if (Config_getBool("PDF_HYPERLINKS"))
@@ -894,16 +954,19 @@ void LatexDocVisitor::visitPre(DocXRefItem *x)
 
 void LatexDocVisitor::visitPost(DocXRefItem *)
 {
+  if (m_hide) return;
   m_t << "\\end{Desc}" << endl;
 }
 
 void LatexDocVisitor::visitPre(DocInternalRef *ref)
 {
+  if (m_hide) return;
   startLink(0,ref->file(),ref->anchor());
 }
 
 void LatexDocVisitor::visitPost(DocInternalRef *) 
 {
+  if (m_hide) return;
   endLink();
   m_t << " ";
 }
@@ -951,3 +1014,16 @@ void LatexDocVisitor::endLink()
   m_t << "}";
 }
 
+void LatexDocVisitor::pushEnabled()
+{
+  m_enabled.push(new bool(m_hide));
+}
+
+void LatexDocVisitor::popEnabled()
+{
+  bool *v=m_enabled.pop();
+  ASSERT(v!=0);
+  m_hide = *v;
+  delete v;
+}
+
diff --git a/src/latexdocvisitor.h b/src/latexdocvisitor.h
index 2d52dd7..f0a8204 100644
--- a/src/latexdocvisitor.h
+++ b/src/latexdocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -20,6 +20,7 @@
 #define _LATEXDOCVISITOR_H
 
 #include "docvisitor.h"
+#include <qstack.h>
 
 class QTextStream;
 class BaseCodeDocInterface;
@@ -137,6 +138,9 @@ class LatexDocVisitor : public DocVisitor
     void endLink();
     QString escapeMakeIndexChars(const char *s);
 
+    void pushEnabled();
+    void popEnabled();
+
     //--------------------------------------
     // state variables
     //--------------------------------------
@@ -146,6 +150,7 @@ class LatexDocVisitor : public DocVisitor
     bool m_insidePre;
     bool m_insideItem;
     bool m_hide;
+    QStack<bool> m_enabled;
 };
 
 #endif
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index e04045d..7c9e136 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -274,7 +274,7 @@ static void writeDefaultHeaderPart1(QTextStream &t)
   {
     // The command is not empty.  Put it to the output.
     // if the command is empty, no output is needed.
-    t << sLanguageSupportCommand;
+    t << sLanguageSupportCommand << endl;
   }
 
   t << "\\usepackage{doxygen}\n";
@@ -425,12 +425,12 @@ void LatexGenerator::writeStyleSheetFile(QFile &f)
   t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName );
   t << " doxygen";
   //t << " " << theTranslator->trWrittenBy() << " ";
-  //t << "Dimitri van Heesch \\copyright~1997-2002";
+  //t << "Dimitri van Heesch \\copyright~1997-2003";
   writeDefaultStyleSheetPart2(t);
   t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName );
   t << " doxygen";
   //t << " << theTranslator->trWrittenBy() << " ";
-  //t << "Dimitri van Heesch \\copyright~1997-2002";
+  //t << "Dimitri van Heesch \\copyright~1997-2003";
   writeDefaultStyleSheetPart3(t);
 }
 
@@ -837,14 +837,14 @@ void LatexGenerator::writeStyleInfo(int part)
       break;
     case 2:
       {
-        //t << " Dimitri van Heesch \\copyright~1997-2002";
+        //t << " Dimitri van Heesch \\copyright~1997-2003";
         t << "}]{}\n";
         writeDefaultStyleSheetPart2(t);
       }
       break;
     case 4:
       {
-        //t << " Dimitri van Heesch \\copyright~1997-2002";
+        //t << " Dimitri van Heesch \\copyright~1997-2003";
         writeDefaultStyleSheetPart3(t);
         endPlainFile();
       }
diff --git a/src/latexgen.h b/src/latexgen.h
index 7227daf..f3cf484 100644
--- a/src/latexgen.h
+++ b/src/latexgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/libdoxycfg.pro.in b/src/libdoxycfg.pro.in
index 2455a5b..f1fe76d 100644
--- a/src/libdoxycfg.pro.in
+++ b/src/libdoxycfg.pro.in
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 1997-2002 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
@@ -19,7 +19,7 @@ CONFIG       =	console warn_on staticlib $extraopts
 HEADERS      =  config.h	
 SOURCES      =	config.cpp 
 win32:TMAKE_CXXFLAGS       += -DQT_NODLL
-win32-g++:TMAKE_CXXFLAGS   += -D_WIN32 -D__CYGWIN__ -DALL_STATIC
+win32-g++:TMAKE_CXXFLAGS   += -fno-exceptions -fno-rtti
 INCLUDEPATH                += ../qtools
 win32:INCLUDEPATH          += .
 DESTDIR                    =  ../lib
diff --git a/src/libdoxygen.pro.in b/src/libdoxygen.pro.in
index b323aa7..0b7c1a4 100644
--- a/src/libdoxygen.pro.in
+++ b/src/libdoxygen.pro.in
@@ -1,7 +1,7 @@
 #
 # 
 #
-# Copyright (C) 1997-2002 by Dimitri van Heesch.
+# Copyright (C) 1997-2003 by Dimitri van Heesch.
 #
 # Permission to use, copy, modify, and distribute this software and its
 # documentation under the terms of the GNU General Public License is hereby 
@@ -181,10 +181,11 @@ SOURCES      =	ce_lex.cpp \
 
 win32:TMAKE_CXXFLAGS       += -DQT_NODLL 
 win32-msvc:TMAKE_CXXFLAGS  += -Zm200
-win32-g++:TMAKE_CXXFLAGS   += -D_WIN32 -D__CYGWIN__ -DALL_STATIC
+win32-g++:TMAKE_CXXFLAGS   += -fno-exceptions -fno-rtti
 INCLUDEPATH                += ../qtools
 INCLUDEPATH                += ../libpng
 win32:INCLUDEPATH          += .
+win32-g++:INCLUDEPATH      = ../qtools /usr/include/libpng12
 DESTDIR                    =  ../lib
 TARGET                     =  doxygen
 OBJECTS_DIR                =  ../objects
diff --git a/src/logos.cpp b/src/logos.cpp
index 2653019..8d77943 100644
--- a/src/logos.cpp
+++ b/src/logos.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/logos.h b/src/logos.h
index 33732cf..3141d04 100644
--- a/src/logos.h
+++ b/src/logos.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/main.cpp b/src/main.cpp
index 082c0d7..4e49de4 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/mandocvisitor.cpp b/src/mandocvisitor.cpp
index 7700e5f..be61553 100644
--- a/src/mandocvisitor.cpp
+++ b/src/mandocvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -245,25 +245,32 @@ void ManDocVisitor::visit(DocIncOperator *op)
   //    op->type(),op->isFirst(),op->isLast(),op->text().data());
   if (op->isFirst()) 
   {
-    if (!m_firstCol) m_t << endl;
-    m_t << ".PP" << endl;
-    m_t << ".nf" << endl;
+    if (!m_hide)
+    {
+      if (!m_firstCol) m_t << endl;
+      m_t << ".PP" << endl;
+      m_t << ".nf" << endl;
+    }
+    pushEnabled();
     m_hide = TRUE;
   }
   if (op->type()!=DocIncOperator::Skip) 
   {
-    parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
+    if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
   }
   if (op->isLast())  
   {
-    m_hide = FALSE;
-    if (!m_firstCol) m_t << endl;
-    m_t << ".PP" << endl;
-    m_firstCol=TRUE;
+    popEnabled();
+    if (!m_hide)
+    {
+      if (!m_firstCol) m_t << endl;
+      m_t << ".PP" << endl;
+      m_firstCol=TRUE;
+    }
   }
   else
   {
-    m_t << endl;
+    if (!m_hide) m_t << endl;
   }
 }
 
@@ -283,17 +290,20 @@ void ManDocVisitor::visit(DocIndexEntry *)
 
 void ManDocVisitor::visitPre(DocAutoList *)
 {
+  if (m_hide) return;
   m_indent+=2;
 }
 
 void ManDocVisitor::visitPost(DocAutoList *)
 {
+  if (m_hide) return;
   m_indent-=2;
   m_t << ".PP" << endl;
 }
 
 void ManDocVisitor::visitPre(DocAutoListItem *li)
 {
+  if (m_hide) return;
   QCString ws;
   ws.fill(' ',m_indent-2);
   if (!m_firstCol) m_t << endl;
@@ -312,6 +322,7 @@ void ManDocVisitor::visitPre(DocAutoListItem *li)
 
 void ManDocVisitor::visitPost(DocAutoListItem *) 
 {
+  if (m_hide) return;
   m_t << endl;
   m_firstCol=TRUE;
 }
@@ -322,6 +333,7 @@ void ManDocVisitor::visitPre(DocPara *)
 
 void ManDocVisitor::visitPost(DocPara *p)
 {
+  if (m_hide) return;
   if (!p->isLast() &&            // omit <p> for last paragraph
       !(p->parent() &&           // and for parameter sections
         p->parent()->kind()==DocNode::Kind_ParamSect
@@ -344,6 +356,7 @@ void ManDocVisitor::visitPost(DocRoot *)
 
 void ManDocVisitor::visitPre(DocSimpleSect *s)
 {
+  if (m_hide) return;
   if (!m_firstCol)
   { 
     m_t << endl;
@@ -395,6 +408,7 @@ void ManDocVisitor::visitPre(DocSimpleSect *s)
 
 void ManDocVisitor::visitPost(DocSimpleSect *)
 {
+  if (m_hide) return;
   if (!m_firstCol) m_t << endl;
   m_t << ".RE" << endl;
   m_t << ".PP" << endl;
@@ -407,23 +421,27 @@ void ManDocVisitor::visitPre(DocTitle *)
 
 void ManDocVisitor::visitPost(DocTitle *)
 {
+  if (m_hide) return;
   m_t << "\\fP";
   m_t << ".RS 4" << endl;
 }
 
 void ManDocVisitor::visitPre(DocSimpleList *)
 {
+  if (m_hide) return;
   m_indent+=2;
 }
 
 void ManDocVisitor::visitPost(DocSimpleList *)
 {
+  if (m_hide) return;
   m_indent-=2;
   m_t << ".PP" << endl;
 }
 
 void ManDocVisitor::visitPre(DocSimpleListItem *)
 {
+  if (m_hide) return;
   QCString ws;
   ws.fill(' ',m_indent-2);
   if (!m_firstCol) m_t << endl;
@@ -433,12 +451,14 @@ void ManDocVisitor::visitPre(DocSimpleListItem *)
 
 void ManDocVisitor::visitPost(DocSimpleListItem *) 
 {
+  if (m_hide) return;
   m_t << endl;
   m_firstCol=TRUE;
 }
 
 void ManDocVisitor::visitPre(DocSection *s)
 {
+  if (m_hide) return;
   if (!m_firstCol) m_t << endl;
   if (s->level()==1) m_t << ".SH"; else m_t << ".SS";
   m_t << " \"";
@@ -454,17 +474,20 @@ void ManDocVisitor::visitPost(DocSection *)
 
 void ManDocVisitor::visitPre(DocHtmlList *)
 {
+  if (m_hide) return;
   m_indent+=2;
 }
 
 void ManDocVisitor::visitPost(DocHtmlList *) 
 {
+  if (m_hide) return;
   m_indent-=2;
   m_t << ".PP" << endl;
 }
 
 void ManDocVisitor::visitPre(DocHtmlListItem *li)
 {
+  if (m_hide) return;
   QCString ws;
   ws.fill(' ',m_indent-2);
   if (!m_firstCol) m_t << endl;
@@ -483,6 +506,7 @@ void ManDocVisitor::visitPre(DocHtmlListItem *li)
 
 void ManDocVisitor::visitPost(DocHtmlListItem *) 
 {
+  if (m_hide) return;
   m_t << endl;
   m_firstCol=TRUE;
 }
@@ -509,6 +533,7 @@ void ManDocVisitor::visitPre(DocHtmlDescList *)
 
 void ManDocVisitor::visitPost(DocHtmlDescList *) 
 {
+  if (m_hide) return;
   if (!m_firstCol) m_t << endl;
   m_t << ".PP" << endl;
   m_firstCol=TRUE;
@@ -516,6 +541,7 @@ void ManDocVisitor::visitPost(DocHtmlDescList *)
 
 void ManDocVisitor::visitPre(DocHtmlDescTitle *)
 {
+  if (m_hide) return;
   if (!m_firstCol) m_t << endl;
   m_t << ".IP \"\\fB";
   m_firstCol=FALSE;
@@ -523,6 +549,7 @@ void ManDocVisitor::visitPre(DocHtmlDescTitle *)
 
 void ManDocVisitor::visitPost(DocHtmlDescTitle *) 
 {
+  if (m_hide) return;
   m_t << "\\fP\" 1c" << endl;
   m_firstCol=TRUE;
 }
@@ -569,6 +596,7 @@ void ManDocVisitor::visitPost(DocHtmlCell *)
 
 void ManDocVisitor::visitPre(DocInternal *)
 {
+  if (m_hide) return;
   if (!m_firstCol) m_t << endl;
   m_t << ".PP" << endl;
   m_t << "\\fB" << theTranslator->trForInternalUseOnly() << "\\fP" << endl;
@@ -577,6 +605,7 @@ void ManDocVisitor::visitPre(DocInternal *)
 
 void ManDocVisitor::visitPost(DocInternal *) 
 {
+  if (m_hide) return;
   if (!m_firstCol) m_t << endl;
   m_t << ".RE" << endl;
   m_t << ".PP" << endl;
@@ -585,16 +614,19 @@ void ManDocVisitor::visitPost(DocInternal *)
 
 void ManDocVisitor::visitPre(DocHRef *)
 {
+  if (m_hide) return;
   m_t << "\\fC";
 }
 
 void ManDocVisitor::visitPost(DocHRef *) 
 {
+  if (m_hide) return;
   m_t << "\\fP";
 }
 
 void ManDocVisitor::visitPre(DocHtmlHeader *header)
 {
+  if (m_hide) return;
   if (!m_firstCol) m_t << endl;
   if (header->level()==1) m_t << ".SH"; else m_t << ".SS";
   m_t << " \"";
@@ -602,6 +634,7 @@ void ManDocVisitor::visitPre(DocHtmlHeader *header)
 
 void ManDocVisitor::visitPost(DocHtmlHeader *header) 
 {
+  if (m_hide) return;
   m_t << "\"" << endl;
   if (header->level()==1) m_t << ".PP" << endl;
   m_firstCol=TRUE;
@@ -625,27 +658,32 @@ void ManDocVisitor::visitPost(DocDotFile *)
 
 void ManDocVisitor::visitPre(DocLink *)
 {
+  if (m_hide) return;
   m_t << "\\fB";
 }
 
 void ManDocVisitor::visitPost(DocLink *) 
 {
+  if (m_hide) return;
   m_t << "\\fP";
 }
 
 void ManDocVisitor::visitPre(DocRef *ref)
 {
+  if (m_hide) return;
   m_t << "\\fB";
   if (!ref->hasLinkText()) filter(ref->targetTitle());
 }
 
 void ManDocVisitor::visitPost(DocRef *) 
 {
+  if (m_hide) return;
   m_t << "\\fP";
 }
 
 void ManDocVisitor::visitPre(DocSecRefItem *)
 {
+  if (m_hide) return;
   QCString ws;
   ws.fill(' ',m_indent-2);
   if (!m_firstCol) m_t << endl;
@@ -655,31 +693,46 @@ void ManDocVisitor::visitPre(DocSecRefItem *)
 
 void ManDocVisitor::visitPost(DocSecRefItem *) 
 {
+  if (m_hide) return;
   m_t << endl;
   m_firstCol=TRUE;
 }
 
 void ManDocVisitor::visitPre(DocSecRefList *)
 {
+  if (m_hide) return;
   m_indent+=2;
 }
 
 void ManDocVisitor::visitPost(DocSecRefList *) 
 {
+  if (m_hide) return;
   m_indent-=2;
   m_t << ".PP" << endl;
 }
 
-void ManDocVisitor::visitPre(DocLanguage *)
+void ManDocVisitor::visitPre(DocLanguage *l)
 {
+  QString langId = Config_getEnum("OUTPUT_LANGUAGE");
+  if (l->id().lower()!=langId.lower())
+  {
+    pushEnabled();
+    m_hide = TRUE;
+  }
 }
 
-void ManDocVisitor::visitPost(DocLanguage *) 
+void ManDocVisitor::visitPost(DocLanguage *l) 
 {
+  QString langId = Config_getEnum("OUTPUT_LANGUAGE");
+  if (l->id().lower()!=langId.lower())
+  {
+    popEnabled();
+  }
 }
 
 void ManDocVisitor::visitPre(DocParamSect *s)
 {
+  if (m_hide) return;
   if (!m_firstCol)
   { 
     m_t << endl;
@@ -703,6 +756,7 @@ void ManDocVisitor::visitPre(DocParamSect *s)
 
 void ManDocVisitor::visitPost(DocParamSect *)
 {
+  if (m_hide) return;
   if (!m_firstCol) m_t << endl;
   m_t << ".RE" << endl;
   m_t << ".PP" << endl;
@@ -711,6 +765,7 @@ void ManDocVisitor::visitPost(DocParamSect *)
 
 void ManDocVisitor::visitPre(DocParamList *pl)
 {
+  if (m_hide) return;
   m_t << "\\fI";
   QStrListIterator li(pl->parameters());
   const char *s;
@@ -725,6 +780,7 @@ void ManDocVisitor::visitPre(DocParamList *pl)
 
 void ManDocVisitor::visitPost(DocParamList *pl)
 {
+  if (m_hide) return;
   if (!pl->isLast())
   {
     if (!m_firstCol) m_t << endl;
@@ -734,6 +790,7 @@ void ManDocVisitor::visitPost(DocParamList *pl)
 
 void ManDocVisitor::visitPre(DocXRefItem *x)
 {
+  if (m_hide) return;
   if (!m_firstCol)
   { 
     m_t << endl;
@@ -747,6 +804,7 @@ void ManDocVisitor::visitPre(DocXRefItem *x)
 
 void ManDocVisitor::visitPost(DocXRefItem *)
 {
+  if (m_hide) return;
   if (!m_firstCol) m_t << endl;
   m_t << ".RE" << endl;
   m_t << ".PP" << endl;
@@ -755,11 +813,13 @@ void ManDocVisitor::visitPost(DocXRefItem *)
 
 void ManDocVisitor::visitPre(DocInternalRef *)
 {
+  if (m_hide) return;
   m_t << "\\fB";
 }
 
 void ManDocVisitor::visitPost(DocInternalRef *) 
 {
+  if (m_hide) return;
   m_t << "\\fP";
 }
 
@@ -797,3 +857,16 @@ void ManDocVisitor::filter(const char *str)
   }
 }
 
+void ManDocVisitor::pushEnabled()
+{
+  m_enabled.push(new bool(m_hide));
+}
+
+void ManDocVisitor::popEnabled()
+{
+  bool *v=m_enabled.pop();
+  ASSERT(v!=0);
+  m_hide = *v;
+  delete v;
+}
+
diff --git a/src/mandocvisitor.h b/src/mandocvisitor.h
index cb3f5cc..d4043de 100644
--- a/src/mandocvisitor.h
+++ b/src/mandocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -20,6 +20,7 @@
 #define _MANDOCVISITOR_H
 
 #include "docvisitor.h"
+#include <qstack.h>
 
 class QTextStream;
 class BaseCodeDocInterface;
@@ -133,6 +134,9 @@ class ManDocVisitor : public DocVisitor
     
     void filter(const char *str);
 
+    void pushEnabled();
+    void popEnabled();
+
     //--------------------------------------
     // state variables
     //--------------------------------------
@@ -143,6 +147,7 @@ class ManDocVisitor : public DocVisitor
     bool m_hide;
     bool m_firstCol;
     int  m_indent;
+    QStack<bool> m_enabled;
 };
 
 #endif
diff --git a/src/mangen.cpp b/src/mangen.cpp
index d6df66d..77cc5ce 100644
--- a/src/mangen.cpp
+++ b/src/mangen.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/mangen.h b/src/mangen.h
index 9c91102..43da3f9 100644
--- a/src/mangen.h
+++ b/src/mangen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index bff8512..0cbe74c 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/memberdef.h b/src/memberdef.h
index 360d382..9801ca0 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/membergroup.cpp b/src/membergroup.cpp
index a7f82a4..d6137f4 100644
--- a/src/membergroup.cpp
+++ b/src/membergroup.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/membergroup.h b/src/membergroup.h
index d3062ec..c9e6222 100644
--- a/src/membergroup.h
+++ b/src/membergroup.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index f694159..28a3e9a 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/memberlist.h b/src/memberlist.h
index 8dba41b..c45584d 100644
--- a/src/memberlist.h
+++ b/src/memberlist.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/membername.cpp b/src/membername.cpp
index 59da4d9..140b342 100644
--- a/src/membername.cpp
+++ b/src/membername.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/membername.h b/src/membername.h
index a5700fd..3493f0a 100644
--- a/src/membername.h
+++ b/src/membername.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/message.cpp b/src/message.cpp
index 95a63db..558bcf1 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/message.h b/src/message.h
index 725270d..789cd99 100644
--- a/src/message.h
+++ b/src/message.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index fa73bc0..cf9dbb3 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/namespacedef.h b/src/namespacedef.h
index 37c1e9b..34da0d5 100644
--- a/src/namespacedef.h
+++ b/src/namespacedef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/outputgen.cpp b/src/outputgen.cpp
index 1b5dcea..d8d1c82 100644
--- a/src/outputgen.cpp
+++ b/src/outputgen.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/outputgen.h b/src/outputgen.h
index 037eafc..046f47e 100644
--- a/src/outputgen.h
+++ b/src/outputgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/outputlist.cpp b/src/outputlist.cpp
index 5826cca..d943415 100644
--- a/src/outputlist.cpp
+++ b/src/outputlist.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/outputlist.h b/src/outputlist.h
index bd47bbe..b21ae50 100644
--- a/src/outputlist.h
+++ b/src/outputlist.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/packagedef.cpp b/src/packagedef.cpp
index 5f87030..ecea2f7 100644
--- a/src/packagedef.cpp
+++ b/src/packagedef.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/packagedef.h b/src/packagedef.h
index 0f1ba81..0835f74 100644
--- a/src/packagedef.h
+++ b/src/packagedef.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/page.h b/src/page.h
index c7c7579..3177c42 100644
--- a/src/page.h
+++ b/src/page.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp
index 5814163..9589370 100644
--- a/src/perlmodgen.cpp
+++ b/src/perlmodgen.cpp
@@ -3,7 +3,7 @@
  *
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  * Authors: Dimitri van Heesch, Miguel Lobo.
  *
  * Permission to use, copy, modify, and distribute this software and its
diff --git a/src/perlmodgen.h b/src/perlmodgen.h
index ec8c623..3466b8b 100644
--- a/src/perlmodgen.h
+++ b/src/perlmodgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/pngenc.cpp b/src/pngenc.cpp
index 18d7085..3ed69b3 100644
--- a/src/pngenc.cpp
+++ b/src/pngenc.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2001 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/pngenc.h b/src/pngenc.h
index 598cf80..a08107e 100644
--- a/src/pngenc.h
+++ b/src/pngenc.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2001 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/pre.h b/src/pre.h
index 6213bfa..59eae9b 100644
--- a/src/pre.h
+++ b/src/pre.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/pre.l b/src/pre.l
index 5b55691..61bdda3 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h
index 550abde..684dd74 100644
--- a/src/printdocvisitor.h
+++ b/src/printdocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/qtbc.h b/src/qtbc.h
index 0f23e42..5f9abc9 100644
--- a/src/qtbc.h
+++ b/src/qtbc.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/reflist.cpp b/src/reflist.cpp
index 7d49575..c3a3951 100644
--- a/src/reflist.cpp
+++ b/src/reflist.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/reflist.h b/src/reflist.h
index d282c13..c8d0937 100644
--- a/src/reflist.h
+++ b/src/reflist.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp
index 93faa02..f741aed 100644
--- a/src/rtfdocvisitor.cpp
+++ b/src/rtfdocvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -364,24 +364,31 @@ void RTFDocVisitor::visit(DocIncOperator *op)
   //    op->type(),op->isFirst(),op->isLast(),op->text().data());
   if (op->isFirst()) 
   {
-    m_t << "{" << endl;
-    m_t << "\\par" << endl;
-    m_t << rtf_Style_Reset << getStyle("CodeExample");
+    if (!m_hide)
+    {
+      m_t << "{" << endl;
+      m_t << "\\par" << endl;
+      m_t << rtf_Style_Reset << getStyle("CodeExample");
+    }
+    pushEnabled();
     m_hide = TRUE;
   }
   if (op->type()!=DocIncOperator::Skip) 
   {
-    parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
+    if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
   }
   if (op->isLast())  
   {
-    m_hide = FALSE;
-    m_t << "\\par" << endl; 
-    m_t << "}" << endl;
+    popEnabled();
+    if (!m_hide)
+    {
+      m_t << "\\par" << endl; 
+      m_t << "}" << endl;
+    }
   }
   else
   {
-    m_t << endl;
+    if (!m_hide) m_t << endl;
   }
 }
 
@@ -394,6 +401,7 @@ void RTFDocVisitor::visit(DocFormula *f)
 
 void RTFDocVisitor::visit(DocIndexEntry *i)
 {
+  if (m_hide) return;
   m_t << "{\\xe \\v " << i->entry() << "}" << endl;
 }
 
@@ -403,6 +411,7 @@ void RTFDocVisitor::visit(DocIndexEntry *i)
 
 void RTFDocVisitor::visitPre(DocAutoList *l)
 {
+  if (m_hide) return;
   m_t << "{" << endl;
   incIndentLevel();
   rtf_listItemInfo[m_indentLevel].isEnum = l->isEnumList();
@@ -411,6 +420,7 @@ void RTFDocVisitor::visitPre(DocAutoList *l)
 
 void RTFDocVisitor::visitPost(DocAutoList *)
 {
+  if (m_hide) return;
   m_t << "\\par" << endl;
   m_t << "}" << endl;
   decIndentLevel();
@@ -418,6 +428,7 @@ void RTFDocVisitor::visitPost(DocAutoList *)
 
 void RTFDocVisitor::visitPre(DocAutoListItem *)
 {
+  if (m_hide) return;
   m_t << "\\par" << endl;
   m_t << rtf_Style_Reset;
   if (rtf_listItemInfo[m_indentLevel].isEnum)
@@ -442,6 +453,7 @@ void RTFDocVisitor::visitPre(DocPara *)
 
 void RTFDocVisitor::visitPost(DocPara *p)
 {
+  if (m_hide) return;
   if (!p->isLast() &&            // omit <p> for last paragraph
       !(p->parent() &&           // and for parameter sections
         p->parent()->kind()==DocNode::Kind_ParamSect
@@ -459,6 +471,7 @@ void RTFDocVisitor::visitPost(DocRoot *)
 
 void RTFDocVisitor::visitPre(DocSimpleSect *s)
 {
+  if (m_hide) return;
   m_t << "{"; // start desc
   m_t << "{\\b "; // start bold
   m_t << "\\par" << endl;
@@ -509,6 +522,7 @@ void RTFDocVisitor::visitPre(DocSimpleSect *s)
 
 void RTFDocVisitor::visitPost(DocSimpleSect *)
 {
+  if (m_hide) return;
   m_t << "\\par" << endl;
   decIndentLevel();
   m_t << "}"; // end desc
@@ -520,6 +534,7 @@ void RTFDocVisitor::visitPre(DocTitle *)
 
 void RTFDocVisitor::visitPost(DocTitle *)
 {
+  if (m_hide) return;
   m_t << "}"; // end bold
   m_t << "\\par" << endl;
   incIndentLevel();
@@ -528,6 +543,7 @@ void RTFDocVisitor::visitPost(DocTitle *)
 
 void RTFDocVisitor::visitPre(DocSimpleList *)
 {
+  if (m_hide) return;
   m_t << "{" << endl;
   incIndentLevel();
   rtf_listItemInfo[m_indentLevel].isEnum = FALSE;
@@ -535,6 +551,7 @@ void RTFDocVisitor::visitPre(DocSimpleList *)
 
 void RTFDocVisitor::visitPost(DocSimpleList *)
 {
+  if (m_hide) return;
   decIndentLevel();
   m_t << "\\par" << endl;
   m_t << "}" << endl;
@@ -542,6 +559,7 @@ void RTFDocVisitor::visitPost(DocSimpleList *)
 
 void RTFDocVisitor::visitPre(DocSimpleListItem *)
 {
+  if (m_hide) return;
   m_t << "\\par" << rtf_Style_Reset << getStyle("ListBullet") << endl;
 }
 
@@ -551,6 +569,7 @@ void RTFDocVisitor::visitPost(DocSimpleListItem *)
 
 void RTFDocVisitor::visitPre(DocSection *s)
 {
+  if (m_hide) return;
   m_t << "{" // start section
       << rtf_Style_Reset;
   QString heading;
@@ -566,12 +585,14 @@ void RTFDocVisitor::visitPre(DocSection *s)
 
 void RTFDocVisitor::visitPost(DocSection *) 
 {
+  if (m_hide) return;
   m_t << "\\par" << endl;
   m_t << "}"; // end section
 }
 
 void RTFDocVisitor::visitPre(DocHtmlList *l)
 {
+  if (m_hide) return;
   m_t << "{" << endl;
   incIndentLevel();
   rtf_listItemInfo[m_indentLevel].isEnum = l->type()==DocHtmlList::Ordered; 
@@ -580,12 +601,14 @@ void RTFDocVisitor::visitPre(DocHtmlList *l)
 
 void RTFDocVisitor::visitPost(DocHtmlList *) 
 {
+  if (m_hide) return;
   m_t << "\\par" << endl << "}" << endl;
   decIndentLevel();
 }
 
 void RTFDocVisitor::visitPre(DocHtmlListItem *)
 {
+  if (m_hide) return;
   m_t << "\\par" << endl;
   m_t << rtf_Style_Reset;
   if (rtf_listItemInfo[m_indentLevel].isEnum)
@@ -621,24 +644,28 @@ void RTFDocVisitor::visitPost(DocHtmlListItem *)
 
 void RTFDocVisitor::visitPre(DocHtmlDescList *)
 {
+  if (m_hide) return;
   m_t << "{" << endl;
   m_t << rtf_Style_Reset << getStyle("ListContinue");
 }
 
 void RTFDocVisitor::visitPost(DocHtmlDescList *) 
 {
+  if (m_hide) return;
   m_t << "}" << endl;
   m_t << "\\par" << endl;
 }
 
 void RTFDocVisitor::visitPre(DocHtmlDescTitle *)
 {
+  if (m_hide) return;
   m_t << "\\par" << endl;
   m_t << "{\\b ";
 }
 
 void RTFDocVisitor::visitPost(DocHtmlDescTitle *) 
 {
+  if (m_hide) return;
   m_t << "}" << endl;
   m_t << "\\par" << endl;
 }
@@ -653,11 +680,13 @@ void RTFDocVisitor::visitPost(DocHtmlDescData *)
 
 void RTFDocVisitor::visitPre(DocHtmlTable *)
 {
+  if (m_hide) return;
   m_t << "\\par" << endl;
 }
 
 void RTFDocVisitor::visitPost(DocHtmlTable *t) 
 {
+  if (m_hide) return;
   if (!t->hasCaption())
   {
     m_t << endl; 
@@ -677,6 +706,7 @@ void RTFDocVisitor::visitPost(DocHtmlCaption *)
 
 void RTFDocVisitor::visitPre(DocHtmlRow *r)
 {
+  if (m_hide) return;
   uint i,columnWidth=rtf_pageWidth/r->numCells();
   m_t << "\\trowd \\trgaph108\\trleft-108"
          "\\trbrdrt\\brdrs\\brdrw10 "
@@ -699,6 +729,7 @@ void RTFDocVisitor::visitPre(DocHtmlRow *r)
 
 void RTFDocVisitor::visitPost(DocHtmlRow *) 
 {
+  if (m_hide) return;
   m_t << endl;
   m_t << "\\pard \\widctlpar\\intbl\\adjustright" << endl;
   m_t << "{\\row }" << endl;
@@ -706,16 +737,19 @@ void RTFDocVisitor::visitPost(DocHtmlRow *)
 
 void RTFDocVisitor::visitPre(DocHtmlCell *)
 {
+  if (m_hide) return;
   m_t << "{";
 }
 
 void RTFDocVisitor::visitPost(DocHtmlCell *) 
 {
+  if (m_hide) return;
   m_t << "\\cell }";
 }
 
 void RTFDocVisitor::visitPre(DocInternal *)
 {
+  if (m_hide) return;
   m_t << "{"; // start desc
   m_t << "{\\b "; // start bold
   m_t << theTranslator->trForInternalUseOnly();
@@ -727,6 +761,7 @@ void RTFDocVisitor::visitPre(DocInternal *)
 
 void RTFDocVisitor::visitPost(DocInternal *) 
 {
+  if (m_hide) return;
   m_t << "\\par" << endl;
   decIndentLevel();
   m_t << "}"; // end desc
@@ -734,6 +769,7 @@ void RTFDocVisitor::visitPost(DocInternal *)
 
 void RTFDocVisitor::visitPre(DocHRef *href)
 {
+  if (m_hide) return;
   if (Config_getBool("RTF_HYPERLINKS"))
   {
     m_t << "{\\field "
@@ -753,6 +789,7 @@ void RTFDocVisitor::visitPre(DocHRef *href)
 
 void RTFDocVisitor::visitPost(DocHRef *) 
 {
+  if (m_hide) return;
   if (Config_getBool("RTF_HYPERLINKS"))
   { 
     m_t <<     "}"
@@ -767,6 +804,7 @@ void RTFDocVisitor::visitPost(DocHRef *)
 
 void RTFDocVisitor::visitPre(DocHtmlHeader *header)
 {
+  if (m_hide) return;
   m_t << "{" // start section
       << rtf_Style_Reset;
   QString heading;
@@ -781,6 +819,7 @@ void RTFDocVisitor::visitPre(DocHtmlHeader *header)
 
 void RTFDocVisitor::visitPost(DocHtmlHeader *) 
 {
+  if (m_hide) return;
   m_t << "\\par" << endl;
   m_t << "}" << endl; // end section
 }
@@ -802,12 +841,13 @@ void RTFDocVisitor::visitPre(DocImage *img)
   {
   }
   // hide caption since it is not supported at the moment
+  pushEnabled();
   m_hide=TRUE;
 }
 
 void RTFDocVisitor::visitPost(DocImage *) 
 {
-  m_hide=FALSE;
+  popEnabled();
 }
 
 void RTFDocVisitor::visitPre(DocDotFile *df)
@@ -829,32 +869,37 @@ void RTFDocVisitor::visitPre(DocDotFile *df)
   m_t << "}" << endl;
 
   // hide caption since it is not supported at the moment
+  pushEnabled();
   m_hide=TRUE;
 }
 
 void RTFDocVisitor::visitPost(DocDotFile *) 
 {
-  m_hide=FALSE;
+  popEnabled();
 }
 
 void RTFDocVisitor::visitPre(DocLink *lnk)
 {
+  if (m_hide) return;
   startLink(lnk->ref(),lnk->file(),lnk->anchor());
 }
 
 void RTFDocVisitor::visitPost(DocLink *lnk) 
 {
+  if (m_hide) return;
   endLink(lnk->ref());
 }
 
 void RTFDocVisitor::visitPre(DocRef *ref)
 {
+  if (m_hide) return;
   startLink(ref->ref(),ref->file(),ref->anchor());
   if (!ref->hasLinkText()) filter(ref->targetTitle());
 }
 
 void RTFDocVisitor::visitPost(DocRef *ref) 
 {
+  if (m_hide) return;
   endLink(ref->ref());
   m_t << " ";
 }
@@ -870,6 +915,7 @@ void RTFDocVisitor::visitPost(DocSecRefItem *)
 
 void RTFDocVisitor::visitPre(DocSecRefList *)
 {
+  if (m_hide) return;
   m_t << "{" << endl;
   incIndentLevel();
   m_t << rtf_Style_Reset << getStyle("LatexTOC") << endl;
@@ -878,21 +924,34 @@ void RTFDocVisitor::visitPre(DocSecRefList *)
 
 void RTFDocVisitor::visitPost(DocSecRefList *) 
 {
+  if (m_hide) return;
   decIndentLevel();
   m_t << "\\par" << endl;
   m_t << "}";
 }
 
-void RTFDocVisitor::visitPre(DocLanguage *)
+void RTFDocVisitor::visitPre(DocLanguage *l)
 {
+  QString langId = Config_getEnum("OUTPUT_LANGUAGE");
+  if (l->id().lower()!=langId.lower())
+  {
+    pushEnabled();
+    m_hide = TRUE;
+  }
 }
 
-void RTFDocVisitor::visitPost(DocLanguage *) 
+void RTFDocVisitor::visitPost(DocLanguage *l) 
 {
+  QString langId = Config_getEnum("OUTPUT_LANGUAGE");
+  if (l->id().lower()!=langId.lower())
+  {
+    popEnabled();
+  }
 }
 
 void RTFDocVisitor::visitPre(DocParamSect *s)
 {
+  if (m_hide) return;
   m_t << "{"; // start param list
   m_t << "\\par" << endl;
   m_t << "{\\b "; // start bold
@@ -915,6 +974,7 @@ void RTFDocVisitor::visitPre(DocParamSect *s)
 
 void RTFDocVisitor::visitPost(DocParamSect *)
 {
+  if (m_hide) return;
   //m_t << "\\par" << endl;
   decIndentLevel();
   m_t << "}" << endl;
@@ -922,6 +982,7 @@ void RTFDocVisitor::visitPost(DocParamSect *)
 
 void RTFDocVisitor::visitPre(DocParamList *pl)
 {
+  if (m_hide) return;
   m_t << "{\\i ";
   QStrListIterator li(pl->parameters());
   const char *s;
@@ -936,11 +997,13 @@ void RTFDocVisitor::visitPre(DocParamList *pl)
 
 void RTFDocVisitor::visitPost(DocParamList *)
 {
+  if (m_hide) return;
   m_t << "\\par" << endl;
 }
 
 void RTFDocVisitor::visitPre(DocXRefItem *x)
 {
+  if (m_hide) return;
   m_t << "{"; // start param list
   m_t << "{\\b "; // start bold
   m_t << "\\par" << endl;
@@ -984,6 +1047,7 @@ void RTFDocVisitor::visitPre(DocXRefItem *x)
 
 void RTFDocVisitor::visitPost(DocXRefItem *)
 {
+  if (m_hide) return;
   m_t << "\\par" << endl;
   decIndentLevel();
   m_t << "}" << endl; // end xref item
@@ -991,11 +1055,13 @@ void RTFDocVisitor::visitPost(DocXRefItem *)
 
 void RTFDocVisitor::visitPre(DocInternalRef *ref)
 {
+  if (m_hide) return;
   startLink("",ref->file(),ref->anchor());
 }
 
 void RTFDocVisitor::visitPost(DocInternalRef *) 
 {
+  if (m_hide) return;
   endLink("");
   m_t << " ";
 }
@@ -1098,3 +1164,16 @@ void RTFDocVisitor::endLink(const QString &ref)
   }
 }
 
+void RTFDocVisitor::pushEnabled()
+{
+  m_enabled.push(new bool(m_hide));
+}
+
+void RTFDocVisitor::popEnabled()
+{
+  bool *v=m_enabled.pop();
+  ASSERT(v!=0);
+  m_hide = *v;
+  delete v;
+}
+
diff --git a/src/rtfdocvisitor.h b/src/rtfdocvisitor.h
index 40487d1..7a6bbc8 100644
--- a/src/rtfdocvisitor.h
+++ b/src/rtfdocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -20,6 +20,7 @@
 #define _RTFDOCVISITOR_H
 
 #include "docvisitor.h"
+#include <qstack.h>
 
 class QTextStream;
 class BaseCodeDocInterface;
@@ -139,6 +140,9 @@ class RTFDocVisitor : public DocVisitor
     void incIndentLevel();
     void decIndentLevel();
 
+    void pushEnabled();
+    void popEnabled();
+
     //--------------------------------------
     // state variables
     //--------------------------------------
@@ -148,6 +152,7 @@ class RTFDocVisitor : public DocVisitor
     bool m_insidePre;
     bool m_hide;
     int m_indentLevel;
+    QStack<bool> m_enabled;
 };
 
 #endif
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index d76d817..88d0f62 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Parker Waechter & Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Parker Waechter & Dimitri van Heesch.
  *
  * Style sheet additions by Alexander Bartolich
  *
diff --git a/src/rtfgen.h b/src/rtfgen.h
index 751622b..d85b8c7 100644
--- a/src/rtfgen.h
+++ b/src/rtfgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Parker Waechter & Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Parker Waechter & Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/rtfstyle.cpp b/src/rtfstyle.cpp
index 950b4ba..1d59a18 100644
--- a/src/rtfstyle.cpp
+++ b/src/rtfstyle.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/rtfstyle.h b/src/rtfstyle.h
index 260f922..58505e9 100644
--- a/src/rtfstyle.h
+++ b/src/rtfstyle.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/scanner.h b/src/scanner.h
index 80efb9a..01fbb5d 100644
--- a/src/scanner.h
+++ b/src/scanner.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/scanner.l b/src/scanner.l
index aba1dca..778f179 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -3566,6 +3566,10 @@ CHARLIT   (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
 <ClassDocArg2>"\n"			{ yyLineNr++; 
 					  newDocState();
 					}
+<ClassDocArg2>{B}*"*/"			{
+					  newDocState();
+  					  unput('/');unput('*');
+  					}
 <ClassDocArg3>[<]?{FILE}[>]?		{
   					  //printf("ClassDocArg3=%s\n",yytext);
  					  current->includeName = yytext;
@@ -3576,6 +3580,10 @@ CHARLIT   (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
 <ClassDocArg3>"\n"			{ yyLineNr++; 
   					  newDocState();
 					}
+<ClassDocArg3>{B}*"*/"			{
+					  newDocState();
+  					  unput('/');unput('*');
+  					}
 <FileDocArg1>{FILE}			{
   					  current->name = stripQuotes(yytext);
 					  newDocState();
diff --git a/src/searchindex.cpp b/src/searchindex.cpp
index fa3600d..48047fb 100644
--- a/src/searchindex.cpp
+++ b/src/searchindex.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/searchindex.h b/src/searchindex.h
index e93709f..f5ae41c 100644
--- a/src/searchindex.h
+++ b/src/searchindex.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/section.h b/src/section.h
index 8210bfc..6aca0c0 100644
--- a/src/section.h
+++ b/src/section.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/sortdict.h b/src/sortdict.h
index 903fea3..5659d71 100644
--- a/src/sortdict.h
+++ b/src/sortdict.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/suffixtree.cpp b/src/suffixtree.cpp
index d247f4d..641f502 100644
--- a/src/suffixtree.cpp
+++ b/src/suffixtree.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/suffixtree.h b/src/suffixtree.h
index 4d0f6a3..28d2a6c 100644
--- a/src/suffixtree.h
+++ b/src/suffixtree.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/tagreader.cpp b/src/tagreader.cpp
index 8302eb5..2b81982 100644
--- a/src/tagreader.cpp
+++ b/src/tagreader.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -1054,7 +1054,10 @@ void TagFileParser::buildLists(Entry *root)
     
     QString fullName = m_tagName+":"+tfi->path+stripPath(tfi->name);
     fe->fileName = fullName;
-    FileDef *fd = new FileDef(m_tagName+":"+tfi->path,tfi->name,m_tagName);
+    FileDef *fd = new FileDef(m_tagName+":"+tfi->path,
+                              tfi->name,m_tagName,
+                              tfi->filename
+                             );
     FileName *mn;
     if ((mn=Doxygen::inputNameDict->find(tfi->name)))
     {
diff --git a/src/tagreader.h b/src/tagreader.h
index 8a62504..8a0df39 100644
--- a/src/tagreader.h
+++ b/src/tagreader.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator.h b/src/translator.h
index 578ecf3..5875e6e 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_br.h b/src/translator_br.h
index 8549d64..5d686f0 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_ca.h b/src/translator_ca.h
index e232cde..2d54273 100644
--- a/src/translator_ca.h
+++ b/src/translator_ca.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_cn.h b/src/translator_cn.h
index 2e5d54f..cd1f9f8 100644
--- a/src/translator_cn.h
+++ b/src/translator_cn.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_cz.h b/src/translator_cz.h
index 4e241a3..7d8f88a 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_de.h b/src/translator_de.h
index af7483a..03d54cd 100644
--- a/src/translator_de.h
+++ b/src/translator_de.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -101,7 +101,7 @@ class TranslatorGerman : public Translator
     {
       QCString result="\\usepackage{ngerman}\n";
       result+="\\usepackage{t1enc}% Trennung verbessern bei Umlauten\n";
-      result+="%\\usepackage[latin1]{inputenc}% Kodierung (cp850,latin1,ansinew)\n";
+      //result+="%\\usepackage[latin1]{inputenc}% Kodierung (cp850,latin1,ansinew)\n";
       return result;
     }
 
diff --git a/src/translator_dk.h b/src/translator_dk.h
index 2810157..98e6db5 100644
--- a/src/translator_dk.h
+++ b/src/translator_dk.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_en.h b/src/translator_en.h
index 8b4ab26..288461b 100644
--- a/src/translator_en.h
+++ b/src/translator_en.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_es.h b/src/translator_es.h
index 41b5acd..c3d39e2 100644
--- a/src/translator_es.h
+++ b/src/translator_es.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_fi.h b/src/translator_fi.h
index 98a63b2..5865dbd 100644
--- a/src/translator_fi.h
+++ b/src/translator_fi.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_fr.h b/src/translator_fr.h
index c956de5..9934f8f 100644
--- a/src/translator_fr.h
+++ b/src/translator_fr.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2001 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_gr.h b/src/translator_gr.h
index 0e701d6..6016da7 100644
--- a/src/translator_gr.h
+++ b/src/translator_gr.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_hr.h b/src/translator_hr.h
index c3b847d..b512626 100644
--- a/src/translator_hr.h
+++ b/src/translator_hr.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_hu.h b/src/translator_hu.h
index ff3ba87..c4459a9 100644
--- a/src/translator_hu.h
+++ b/src/translator_hu.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_it.h b/src/translator_it.h
index 836bdd5..13145fb 100644
--- a/src/translator_it.h
+++ b/src/translator_it.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_jp.h b/src/translator_jp.h
index f1a788d..3a4b904 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2000 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_kr.h b/src/translator_kr.h
index 5d6d9eb..6d14a25 100644
--- a/src/translator_kr.h
+++ b/src/translator_kr.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_nl.h b/src/translator_nl.h
index f07e089..88c157b 100644
--- a/src/translator_nl.h
+++ b/src/translator_nl.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_no.h b/src/translator_no.h
index e582072..f6aebff 100644
--- a/src/translator_no.h
+++ b/src/translator_no.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_pl.h b/src/translator_pl.h
index 9dced0d..e21a2f1 100644
--- a/src/translator_pl.h
+++ b/src/translator_pl.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_pt.h b/src/translator_pt.h
index ff0bade..47733b2 100644
--- a/src/translator_pt.h
+++ b/src/translator_pt.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_ro.h b/src/translator_ro.h
index 22209de..32d9aaf 100644
--- a/src/translator_ro.h
+++ b/src/translator_ro.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_ru.h b/src/translator_ru.h
index 7083e37..2dbbaed 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2000 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_se.h b/src/translator_se.h
index 5fba0d0..c1b5cd2 100644
--- a/src/translator_se.h
+++ b/src/translator_se.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_si.h b/src/translator_si.h
index cef1f33..1e9afbd 100644
--- a/src/translator_si.h
+++ b/src/translator_si.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2000 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_sk.h b/src/translator_sk.h
index dfcb2db..6498c4c 100644
--- a/src/translator_sk.h
+++ b/src/translator_sk.h
@@ -2,7 +2,7 @@
  *
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_sr.h b/src/translator_sr.h
index 8822774..631da9c 100644
--- a/src/translator_sr.h
+++ b/src/translator_sr.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_tw.h b/src/translator_tw.h
index 57b9757..a4c68fc 100644
--- a/src/translator_tw.h
+++ b/src/translator_tw.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/translator_ua.h b/src/translator_ua.h
index 77421eb..fad3aee 100644
--- a/src/translator_ua.h
+++ b/src/translator_ua.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2000 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/treeview.h b/src/treeview.h
index aa65bfe..9cbcccd 100644
--- a/src/treeview.h
+++ b/src/treeview.h
@@ -103,20 +103,13 @@
 " \n"
 "function hideFolder() \n"
 "{ \n"
-"  if (browserVersion == 1 || browserVersion == 3) \n"
-"  { \n"
+"  if (browserVersion == 1 || browserVersion == 3) { \n"
 "    if (this.navObj.style.display == \"none\") \n"
-"    {\n"
-"      return\n"
-"    }\n"
+"      return \n"
 "    this.navObj.style.display = \"none\" \n"
-"  } \n"
-"  else \n"
-"  { \n"
+"  } else { \n"
 "    if (this.navObj.visibility == \"hidden\") \n"
-"    {\n"
 "      return \n"
-"    }\n"
 "    this.navObj.visibility = \"hidden\" \n"
 "  } \n"
 "   \n"
@@ -125,11 +118,11 @@
 " \n"
 "function initializeFolder(level, lastNode, leftSide) \n"
 "{ \n"
-"  var j=0 \n"
-"  var i=0 \n"
-"  var numberOfFolders \n"
-"  var numberOfDocs \n"
-"  var nc \n"
+"var j=0 \n"
+"var i=0 \n"
+"var numberOfFolders \n"
+"var numberOfDocs \n"
+"var nc \n"
 "      \n"
 "  nc = this.nChildren \n"
 "   \n"
@@ -173,12 +166,9 @@
 " \n"
 "function drawFolder(leftSide) \n"
 "{ \n"
-"  if (browserVersion == 2) \n"
-"  { \n"
-"    if (!doc.yPos)\n"
-"    {\n"
+"  if (browserVersion == 2) { \n"
+"    if (!doc.yPos) \n"
 "      doc.yPos=8 \n"
-"    }\n"
 "    doc.write(\"<layer id='folder\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n"
 "  } \n"
 "  if (browserVersion == 3) \n"
@@ -188,9 +178,7 @@
 "   \n"
 "  doc.write(\"\\n<table \") \n"
 "  if (browserVersion == 1) \n"
-"  {\n"
 "    doc.write(\" id='folder\" + this.id + \"' style='position:block;' \") \n"
-"  }\n"
 "  doc.write(\" border=0 cellspacing=0 cellpadding=0>\") \n"
 "  doc.write(\"\\n<tr><td>\") \n"
 "  doc.write(leftSide) \n"
@@ -204,9 +192,7 @@
 "    doc.write(this.desc + \"</a>\") \n"
 "  } \n"
 "  else \n"
-"  {\n"
 "    doc.write(this.desc) \n"
-"  }\n"
 "  if (this.tagName!=\"\")\n"
 "  {\n"
 "    doc.write(\" [external]\")\n"
@@ -214,30 +200,23 @@
 "  doc.write(\"</td>\")  \n"
 "  doc.write(\"\\n</table>\\n\") \n"
 "   \n"
-"  if (browserVersion == 2) \n"
-"  { \n"
+"  if (browserVersion == 2) { \n"
 "    doc.write(\"</layer>\") \n"
 "  } \n"
-"  if (browserVersion == 3) \n"
-"  { \n"
+"  if (browserVersion == 3) { \n"
 "    doc.write(\"</div>\") \n"
 "  } \n"
 " \n"
-"  if (browserVersion == 1) \n"
-"  { \n"
+"  if (browserVersion == 1) { \n"
 "    this.navObj = doc.all[\"folder\"+this.id] \n"
 "    this.iconImg = doc.all[\"folderIcon\"+this.id] \n"
 "    this.nodeImg = doc.all[\"nodeIcon\"+this.id] \n"
-"  } \n"
-"  else if (browserVersion == 2) \n"
-"  { \n"
+"  } else if (browserVersion == 2) { \n"
 "    this.navObj = doc.layers[\"folder\"+this.id] \n"
 "    this.iconImg = this.navObj.document.images[\"folderIcon\"+this.id] \n"
 "    this.nodeImg = this.navObj.document.images[\"nodeIcon\"+this.id] \n"
 "    doc.yPos=doc.yPos+this.navObj.clip.height \n"
-"  } \n"
-"  else if (browserVersion == 3) \n"
-"  {\n"
+"  } else if (browserVersion == 3) {\n"
 "    this.navObj = doc.getElementById(\"folder\"+this.id)\n"
 "    this.iconImg = doc.images.namedItem(\"folderIcon\"+this.id)\n"
 "    this.nodeImg = doc.images.namedItem(\"nodeIcon\"+this.id)\n"
@@ -324,7 +303,6 @@
 "  this.createIndex() \n"
 " \n"
 "  if (level>0) \n"
-"  {\n"
 "    if (lastNode) //the last 'brother' in the children array \n"
 "    { \n"
 "      this.renderOb(leftSide + \"<img src='ftv2lastnode.png' width=16 height=22>\") \n"
@@ -335,29 +313,20 @@
 "      this.renderOb(leftSide + \"<img src='ftv2node.png' width=16 height=22>\") \n"
 "      leftSide = leftSide + \"<img src='ftv2vertline.png' width=16 height=22>\" \n"
 "    } \n"
-"  }\n"
 "  else \n"
-"  {\n"
 "    this.renderOb(\"\")   \n"
-"  }\n"
 "} \n"
 " \n"
 "function drawItem(leftSide) \n"
 "{ \n"
-"  if (browserVersion == 2)\n"
-"  {\n"
-"    doc.write(\"<layer id='item\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\")\n"
-"  }\n"
-"  else if (browserVersion == 3)\n"
-"  {\n"
-"    doc.write(\"<div id='item\" + this.id + \"' style='display:block;'>\")\n"
-"  }\n"
+"  if (browserVersion == 2) \n"
+"    doc.write(\"<layer id='item\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n"
+"  if (browserVersion == 3) \n"
+"    doc.write(\"<div id='item\" + this.id + \"' style='display:block;'>\") \n"
 "     \n"
 "  doc.write(\"\\n<table \") \n"
-"  if (browserVersion == 1)\n"
-"  {\n"
-"    doc.write(\" id='item\" + this.id + \"' style='position:block;' \")\n"
-"  }\n"
+"  if (browserVersion == 1) \n"
+"    doc.write(\" id='item\" + this.id + \"' style='position:block;' \") \n"
 "  doc.write(\" border=0 cellspacing=0 cellpadding=0>\\n\") \n"
 "  doc.write(\"<tr><td>\") \n"
 "  doc.write(leftSide) \n"
@@ -373,13 +342,9 @@
 "  } \n"
 "  doc.write(\"</td>\\n<td valign=middle nowrap>\") \n"
 "  if (USETEXTLINKS && this.link!=\"\") \n"
-"  {\n"
 "    doc.write(\"<a href=\" + this.link + \">\" + this.desc + \"</a>\") \n"
-"  }\n"
 "  else \n"
-"  {\n"
 "    doc.write(this.desc) \n"
-"  }\n"
 "  if (this.tagName!=\"\")\n"
 "  {\n"
 "    doc.write(\" [external]\");\n"
@@ -387,27 +352,18 @@
 "  doc.write(\"\\n</table>\\n\") \n"
 "   \n"
 "  if (browserVersion == 2) \n"
-"  {\n"
 "    doc.write(\"</layer>\") \n"
-"  }\n"
-"  else if (browserVersion == 3) \n"
-"  {\n"
+"  if (browserVersion == 3) \n"
 "    doc.write(\"</div>\")\n"
-"  }\n"
 " \n"
-"  if (browserVersion == 1) \n"
-"  { \n"
+"  if (browserVersion == 1) { \n"
 "    this.navObj = doc.all[\"item\"+this.id] \n"
 "    this.iconImg = doc.all[\"itemIcon\"+this.id] \n"
-"  } \n"
-"  else if (browserVersion == 2) \n"
-"  { \n"
+"  } else if (browserVersion == 2) { \n"
 "    this.navObj = doc.layers[\"item\"+this.id] \n"
 "    this.iconImg = this.navObj.document.images[\"itemIcon\"+this.id] \n"
 "    doc.yPos=doc.yPos+this.navObj.clip.height \n"
-"  } \n"
-"  else if (browserVersion == 3) \n"
-"  {\n"
+"  } else if (browserVersion == 3) {\n"
 "    this.navObj = doc.getElementById(\"item\"+this.id)\n"
 "    this.iconImg = doc.images.namedItem(\"itemIcon\"+this.id)\n"
 "  }\n"
@@ -420,13 +376,9 @@
 "function display() \n"
 "{ \n"
 "  if (browserVersion == 1 || browserVersion == 3) \n"
-"  {\n"
 "    this.navObj.style.display = \"block\" \n"
-"  }\n"
 "  else \n"
-"  {\n"
-"    this.navObj.visibility = \"show\"\n"
-"  }\n"
+"    this.navObj.visibility = \"show\" \n"
 "} \n"
 " \n"
 "function createEntryIndex() \n"
@@ -477,49 +429,18 @@
 "  clickedFolder.setState(!state) //open<->close  \n"
 "} \n"
 " \n"
-"function preLoadIcons() \n"
-"{\n"
-"  var auxImg\n"
-"  auxImg = new Image();\n"
-"  auxImg.src = \"ftv2blank.png\";\n"
-"  auxImg.src = \"ftv2doc.png\";\n"
-"  auxImg.src = \"ftv2folderclosed.png\";\n"
-"  auxImg.src = \"ftv2folderopen.png\";\n"
-"  auxImg.src = \"ftv2lastnode.png\";\n"
-"  auxImg.src = \"ftv2link.png\";\n"
-"  auxImg.src = \"ftv2mlastnode.png\";\n"
-"  auxImg.src = \"ftv2mnode.png\";\n"
-"  auxImg.src = \"ftv2node.png\";\n"
-"  auxImg.src = \"ftv2plastnode.png\";\n"
-"  auxImg.src = \"ftv2pnode.png\";\n"
-"  auxImg.src = \"ftv2vertline.png\";\n"
-"}\n"
-"\n"
 "function initializeDocument() \n"
 "{ \n"
-"  preLoadIcons()\n"
-"\n"
-"  var ua = window.navigator.userAgent.toLowerCase();\n"
-"  if ((ua.indexOf('msie')!=-1) && (navigator.version>=4))\n"
-"  {\n"
-"    browserVersion = 1  // IE >= 4.x\n"
-"  }\n"
-"  else if (ua.indexOf('opera')!=-1)\n"
-"  {\n"
-"    browserVersion = 3; // Opera\n"
-"  }\n"
-"  else if (ua.indexOf('gecko')!=-1)\n"
-"  {\n"
-"    browserVersion = 3; // NS6 or Mozilla\n"
-"  }\n"
-"  else if (ua.indexOf('mozilla')!=-1)\n"
-"  {\n"
-"    browserVersion = 2; // NS4\n"
-"  }\n"
-"  else\n"
-"  {\n"
-"    browserVersion = 0; // unknown or old browser\n"
-"  }\n"
+"  doc = document;\n"
+"  if (doc.all) \n"
+"    browserVersion = 1 //IE4   \n"
+"  else \n"
+"    if (doc.layers) \n"
+"      browserVersion = 2 //NS4 \n"
+"    else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)\n"
+"        browserVersion = 3 //mozilla\n"
+"      else \n"
+"        browserVersion = 0 //other \n"
 "\n"
 "  foldersTree.initialize(0, 1, \"\") \n"
 "  foldersTree.display()\n"
@@ -539,7 +460,6 @@
 "// Auxiliary Functions for Folder-Treee backward compatibility \n"
 "// ********************************************************* \n"
 " \n"
-" \n"
 "function gFld(description, tagName, hreference) \n"
 "{ \n"
 "  folder = new Folder(description, tagName, hreference) \n"
@@ -572,10 +492,9 @@
 "// Global variables \n"
 "// **************** \n"
 " \n"
-"var USETEXTLINKS = 1\n"
-"var indexOfEntries = new Array \n"
-"var nEntries = 0 \n"
-"var doc = document \n"
-"var browserVersion = 0 \n"
-"var selectedFolder=0\n"
-"\n"
+"USETEXTLINKS = 1\n"
+"indexOfEntries = new Array \n"
+"nEntries = 0 \n"
+"doc = document \n"
+"browserVersion = 0 \n"
+"selectedFolder=0\n"
diff --git a/src/treeview.js b/src/treeview.js
index a9ff9b5..6b5ef51 100644
--- a/src/treeview.js
+++ b/src/treeview.js
@@ -103,20 +103,13 @@ function propagateChangesInState(folder)
  
 function hideFolder() 
 { 
-  if (browserVersion == 1 || browserVersion == 3) 
-  { 
+  if (browserVersion == 1 || browserVersion == 3) { 
     if (this.navObj.style.display == "none") 
-    {
-      return
-    }
+      return 
     this.navObj.style.display = "none" 
-  } 
-  else 
-  { 
+  } else { 
     if (this.navObj.visibility == "hidden") 
-    {
       return 
-    }
     this.navObj.visibility = "hidden" 
   } 
    
@@ -125,11 +118,11 @@ function hideFolder()
  
 function initializeFolder(level, lastNode, leftSide) 
 { 
-  var j=0 
-  var i=0 
-  var numberOfFolders 
-  var numberOfDocs 
-  var nc 
+var j=0 
+var i=0 
+var numberOfFolders 
+var numberOfDocs 
+var nc 
       
   nc = this.nChildren 
    
@@ -173,12 +166,9 @@ function initializeFolder(level, lastNode, leftSide)
  
 function drawFolder(leftSide) 
 { 
-  if (browserVersion == 2) 
-  { 
-    if (!doc.yPos)
-    {
+  if (browserVersion == 2) { 
+    if (!doc.yPos) 
       doc.yPos=8 
-    }
     doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>") 
   } 
   if (browserVersion == 3) 
@@ -188,9 +178,7 @@ function drawFolder(leftSide)
    
   doc.write("\n<table ") 
   if (browserVersion == 1) 
-  {
     doc.write(" id='folder" + this.id + "' style='position:block;' ") 
-  }
   doc.write(" border=0 cellspacing=0 cellpadding=0>") 
   doc.write("\n<tr><td>") 
   doc.write(leftSide) 
@@ -204,9 +192,7 @@ function drawFolder(leftSide)
     doc.write(this.desc + "</a>") 
   } 
   else 
-  {
     doc.write(this.desc) 
-  }
   if (this.tagName!="")
   {
     doc.write(" [external]")
@@ -214,30 +200,23 @@ function drawFolder(leftSide)
   doc.write("</td>")  
   doc.write("\n</table>\n") 
    
-  if (browserVersion == 2) 
-  { 
+  if (browserVersion == 2) { 
     doc.write("</layer>") 
   } 
-  if (browserVersion == 3) 
-  { 
+  if (browserVersion == 3) { 
     doc.write("</div>") 
   } 
  
-  if (browserVersion == 1) 
-  { 
+  if (browserVersion == 1) { 
     this.navObj = doc.all["folder"+this.id] 
     this.iconImg = doc.all["folderIcon"+this.id] 
     this.nodeImg = doc.all["nodeIcon"+this.id] 
-  } 
-  else if (browserVersion == 2) 
-  { 
+  } else if (browserVersion == 2) { 
     this.navObj = doc.layers["folder"+this.id] 
     this.iconImg = this.navObj.document.images["folderIcon"+this.id] 
     this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] 
     doc.yPos=doc.yPos+this.navObj.clip.height 
-  } 
-  else if (browserVersion == 3) 
-  {
+  } else if (browserVersion == 3) {
     this.navObj = doc.getElementById("folder"+this.id)
     this.iconImg = doc.images.namedItem("folderIcon"+this.id)
     this.nodeImg = doc.images.namedItem("nodeIcon"+this.id)
@@ -324,7 +303,6 @@ function initializeItem(level, lastNode, leftSide)
   this.createIndex() 
  
   if (level>0) 
-  {
     if (lastNode) //the last 'brother' in the children array 
     { 
       this.renderOb(leftSide + "<img src='ftv2lastnode.png' width=16 height=22>") 
@@ -335,29 +313,20 @@ function initializeItem(level, lastNode, leftSide)
       this.renderOb(leftSide + "<img src='ftv2node.png' width=16 height=22>") 
       leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>" 
     } 
-  }
   else 
-  {
     this.renderOb("")   
-  }
 } 
  
 function drawItem(leftSide) 
 { 
-  if (browserVersion == 2)
-  {
-    doc.write("<layer id='item" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
-  }
-  else if (browserVersion == 3)
-  {
-    doc.write("<div id='item" + this.id + "' style='display:block;'>")
-  }
+  if (browserVersion == 2) 
+    doc.write("<layer id='item" + this.id + "' top=" + doc.yPos + " visibility=hidden>") 
+  if (browserVersion == 3) 
+    doc.write("<div id='item" + this.id + "' style='display:block;'>") 
      
   doc.write("\n<table ") 
-  if (browserVersion == 1)
-  {
-    doc.write(" id='item" + this.id + "' style='position:block;' ")
-  }
+  if (browserVersion == 1) 
+    doc.write(" id='item" + this.id + "' style='position:block;' ") 
   doc.write(" border=0 cellspacing=0 cellpadding=0>\n") 
   doc.write("<tr><td>") 
   doc.write(leftSide) 
@@ -373,13 +342,9 @@ function drawItem(leftSide)
   } 
   doc.write("</td>\n<td valign=middle nowrap>") 
   if (USETEXTLINKS && this.link!="") 
-  {
     doc.write("<a href=" + this.link + ">" + this.desc + "</a>") 
-  }
   else 
-  {
     doc.write(this.desc) 
-  }
   if (this.tagName!="")
   {
     doc.write(" [external]");
@@ -387,27 +352,18 @@ function drawItem(leftSide)
   doc.write("\n</table>\n") 
    
   if (browserVersion == 2) 
-  {
     doc.write("</layer>") 
-  }
-  else if (browserVersion == 3) 
-  {
+  if (browserVersion == 3) 
     doc.write("</div>")
-  }
  
-  if (browserVersion == 1) 
-  { 
+  if (browserVersion == 1) { 
     this.navObj = doc.all["item"+this.id] 
     this.iconImg = doc.all["itemIcon"+this.id] 
-  } 
-  else if (browserVersion == 2) 
-  { 
+  } else if (browserVersion == 2) { 
     this.navObj = doc.layers["item"+this.id] 
     this.iconImg = this.navObj.document.images["itemIcon"+this.id] 
     doc.yPos=doc.yPos+this.navObj.clip.height 
-  } 
-  else if (browserVersion == 3) 
-  {
+  } else if (browserVersion == 3) {
     this.navObj = doc.getElementById("item"+this.id)
     this.iconImg = doc.images.namedItem("itemIcon"+this.id)
   }
@@ -420,13 +376,9 @@ function drawItem(leftSide)
 function display() 
 { 
   if (browserVersion == 1 || browserVersion == 3) 
-  {
     this.navObj.style.display = "block" 
-  }
   else 
-  {
-    this.navObj.visibility = "show"
-  }
+    this.navObj.visibility = "show" 
 } 
  
 function createEntryIndex() 
@@ -477,49 +429,18 @@ function clickOnNode(folderId)
   clickedFolder.setState(!state) //open<->close  
 } 
  
-function preLoadIcons() 
-{
-  var auxImg
-  auxImg = new Image();
-  auxImg.src = "ftv2blank.png";
-  auxImg.src = "ftv2doc.png";
-  auxImg.src = "ftv2folderclosed.png";
-  auxImg.src = "ftv2folderopen.png";
-  auxImg.src = "ftv2lastnode.png";
-  auxImg.src = "ftv2link.png";
-  auxImg.src = "ftv2mlastnode.png";
-  auxImg.src = "ftv2mnode.png";
-  auxImg.src = "ftv2node.png";
-  auxImg.src = "ftv2plastnode.png";
-  auxImg.src = "ftv2pnode.png";
-  auxImg.src = "ftv2vertline.png";
-}
-
 function initializeDocument() 
 { 
-  preLoadIcons()
-
-  var ua = window.navigator.userAgent.toLowerCase();
-  if ((ua.indexOf('msie')!=-1) && (navigator.version>=4))
-  {
-    browserVersion = 1  // IE >= 4.x
-  }
-  else if (ua.indexOf('opera')!=-1)
-  {
-    browserVersion = 3; // Opera
-  }
-  else if (ua.indexOf('gecko')!=-1)
-  {
-    browserVersion = 3; // NS6 or Mozilla
-  }
-  else if (ua.indexOf('mozilla')!=-1)
-  {
-    browserVersion = 2; // NS4
-  }
-  else
-  {
-    browserVersion = 0; // unknown or old browser
-  }
+  doc = document;
+  if (doc.all) 
+    browserVersion = 1 //IE4   
+  else 
+    if (doc.layers) 
+      browserVersion = 2 //NS4 
+    else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)
+        browserVersion = 3 //mozilla
+      else 
+        browserVersion = 0 //other 
 
   foldersTree.initialize(0, 1, "") 
   foldersTree.display()
@@ -539,7 +460,6 @@ function initializeDocument()
 // Auxiliary Functions for Folder-Treee backward compatibility 
 // ********************************************************* 
  
- 
 function gFld(description, tagName, hreference) 
 { 
   folder = new Folder(description, tagName, hreference) 
@@ -572,10 +492,9 @@ function insDoc(parentFolder, document)
 // Global variables 
 // **************** 
  
-var USETEXTLINKS = 1
-var indexOfEntries = new Array 
-var nEntries = 0 
-var doc = document 
-var browserVersion = 0 
-var selectedFolder=0
-
+USETEXTLINKS = 1
+indexOfEntries = new Array 
+nEntries = 0 
+doc = document 
+browserVersion = 0 
+selectedFolder=0
diff --git a/src/util.cpp b/src/util.cpp
index b0b2244..f7da9b5 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -94,36 +94,76 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
 #ifndef _WIN32
   isBatchFile=isBatchFile;
   /*! taken from the system() manpage on my Linux box */
-  int pid,status;
+  int pid,status=0;
 
   if (command==0) return 1;
-  pid = fork();
-  if (pid==-1) return -1;
-  if (pid==0)
-  {
-    char buf[4096];
-    strcpy(buf,command);
-    strcat(buf," ");
-    strcat(buf,args);
-    const char * argv[4];
-    argv[0] = "sh";
-    argv[1] = "-c";
-    argv[2] = buf;
-    argv[3] = 0;
-    execve("/bin/sh",(char * const *)argv,environ);
-    exit(127);
+
+//#ifdef _OS_SOLARIS_
+
+  // on Solaris fork() duplicates the memory usage
+  // so we use vfork instead
+  
+  char buf[4096];
+  strcpy(buf,command);
+  strcat(buf," ");
+  strcat(buf,args);
+  
+  // spawn shell
+  if ((pid=vfork())<0)
+  {
+    status=-1;
   }
-  for (;;)
+  else if (pid==0)
   {
-    if (waitpid(pid,&status,0)==-1)
-    {
-      if (errno!=EINTR) return -1;
-    }
-    else
+     execl("/bin/sh","sh","-c",buf,(char*)0);
+     _exit(127);
+  }
+  else
+  {
+    while (waitpid(pid,&status,0 )<0)
     {
-      return status;
+      if (errno!=EINTR)
+      {
+        status=-1;
+        break;
+      }
     }
   }
+  return status;
+
+//#else  /* Other unices where clients do copy on demand for the parent's pages 
+//        * when forked.
+//        */
+//
+//  pid = fork();
+//  if (pid==-1) return -1;
+//  if (pid==0)
+//  {
+//    char buf[4096];
+//    strcpy(buf,command);
+//    strcat(buf," ");
+//    strcat(buf,args);
+//    const char * argv[4];
+//    argv[0] = "sh";
+//    argv[1] = "-c";
+//    argv[2] = buf;
+//    argv[3] = 0;
+//    execve("/bin/sh",(char * const *)argv,environ);
+//    exit(127);
+//  }
+//  for (;;)
+//  {
+//    if (waitpid(pid,&status,0)==-1)
+//    {
+//      if (errno!=EINTR) return -1;
+//    }
+//    else
+//    {
+//      return status;
+//    }
+//  }
+//#endif
+
 #else
   if (isBatchFile)
   {
diff --git a/src/util.h b/src/util.h
index 19c6640..c35d437 100644
--- a/src/util.h
+++ b/src/util.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/version.h b/src/version.h
index 600735b..1d6667a 100644
--- a/src/version.h
+++ b/src/version.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp
index 531fa92..a8d1d91 100644
--- a/src/xmldocvisitor.cpp
+++ b/src/xmldocvisitor.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -25,6 +25,7 @@
 #include "code.h"
 #include "dot.h"
 #include "message.h"
+#include "util.h"
 
 XmlDocVisitor::XmlDocVisitor(QTextStream &t,BaseCodeDocInterface &ci) 
   : m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE) 
@@ -222,21 +223,25 @@ void XmlDocVisitor::visit(DocIncOperator *op)
   //    op->type(),op->isFirst(),op->isLast(),op->text().data());
   if (op->isFirst()) 
   {
-    m_t << "<programlisting>";
+    if (!m_hide)
+    {
+      m_t << "<programlisting>";
+    }
+    pushEnabled();
     m_hide = TRUE;
   }
   if (op->type()!=DocIncOperator::Skip) 
   {
-    parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
+    if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
   }
   if (op->isLast())  
   {
-    m_hide = FALSE;
-    m_t << "</programlisting>"; 
+    popEnabled();
+    if (!m_hide) m_t << "</programlisting>"; 
   }
   else
   {
-    m_t << endl;
+    if (!m_hide) m_t << endl;
   }
 }
 
@@ -250,6 +255,7 @@ void XmlDocVisitor::visit(DocFormula *f)
 
 void XmlDocVisitor::visit(DocIndexEntry *ie)
 {
+  if (m_hide) return;
   m_t << "<indexentry>"
            "<primaryie>";
   filter(ie->entry());
@@ -264,6 +270,7 @@ void XmlDocVisitor::visit(DocIndexEntry *ie)
 
 void XmlDocVisitor::visitPre(DocAutoList *l)
 {
+  if (m_hide) return;
   if (l->isEnumList())
   {
     m_t << "<orderedlist>\n";
@@ -276,6 +283,7 @@ void XmlDocVisitor::visitPre(DocAutoList *l)
 
 void XmlDocVisitor::visitPost(DocAutoList *l)
 {
+  if (m_hide) return;
   if (l->isEnumList())
   {
     m_t << "</orderedlist>\n";
@@ -288,21 +296,25 @@ void XmlDocVisitor::visitPost(DocAutoList *l)
 
 void XmlDocVisitor::visitPre(DocAutoListItem *)
 {
+  if (m_hide) return;
   m_t << "<listitem>";
 }
 
 void XmlDocVisitor::visitPost(DocAutoListItem *) 
 {
+  if (m_hide) return;
   m_t << "</listitem>";
 }
 
 void XmlDocVisitor::visitPre(DocPara *) 
 {
+  if (m_hide) return;
   m_t << "<para>";
 }
 
 void XmlDocVisitor::visitPost(DocPara *)
 {
+  if (m_hide) return;
   m_t << "</para>";
 }
 
@@ -318,6 +330,7 @@ void XmlDocVisitor::visitPost(DocRoot *)
 
 void XmlDocVisitor::visitPre(DocSimpleSect *s)
 {
+  if (m_hide) return;
   m_t << "<simplesect kind=\"";
   switch(s->type())
   {
@@ -360,42 +373,50 @@ void XmlDocVisitor::visitPre(DocSimpleSect *s)
 
 void XmlDocVisitor::visitPost(DocSimpleSect *)
 {
+  if (m_hide) return;
   m_t << "</simplesect>\n";
 }
 
 void XmlDocVisitor::visitPre(DocTitle *)
 {
+  if (m_hide) return;
   m_t << "<title>";
 }
 
 void XmlDocVisitor::visitPost(DocTitle *)
 {
+  if (m_hide) return;
   m_t << "</title>";
 }
 
 void XmlDocVisitor::visitPre(DocSimpleList *)
 {
+  if (m_hide) return;
   m_t << "<itemizedlist>\n";
 }
 
 void XmlDocVisitor::visitPost(DocSimpleList *)
 {
+  if (m_hide) return;
   m_t << "</itemizedlist>\n";
 }
 
 void XmlDocVisitor::visitPre(DocSimpleListItem *)
 {
+  if (m_hide) return;
   m_t << "<listitem>";
 }
 
 void XmlDocVisitor::visitPost(DocSimpleListItem *) 
 {
+  if (m_hide) return;
   m_t << "</listitem>\n";
 }
 
 void XmlDocVisitor::visitPre(DocSection *s)
 {
-  m_t << "<sect" << s->level()+1 << ">";
+  if (m_hide) return;
+  m_t << "<sect" << s->level()+1 << " id=\"" << s->id() << "\">";
   filter(s->title());
   m_t << "</sect" << s->level()+1 << ">\n";
 }
@@ -406,6 +427,7 @@ void XmlDocVisitor::visitPost(DocSection *)
 
 void XmlDocVisitor::visitPre(DocHtmlList *s)
 {
+  if (m_hide) return;
   if (s->type()==DocHtmlList::Ordered) 
     m_t << "<orderedlist>\n"; 
   else 
@@ -414,6 +436,7 @@ void XmlDocVisitor::visitPre(DocHtmlList *s)
 
 void XmlDocVisitor::visitPost(DocHtmlList *s) 
 {
+  if (m_hide) return;
   if (s->type()==DocHtmlList::Ordered) 
     m_t << "</orderedlist>\n"; 
   else 
@@ -422,117 +445,140 @@ void XmlDocVisitor::visitPost(DocHtmlList *s)
 
 void XmlDocVisitor::visitPre(DocHtmlListItem *)
 {
+  if (m_hide) return;
   m_t << "<listitem>\n";
 }
 
 void XmlDocVisitor::visitPost(DocHtmlListItem *) 
 {
+  if (m_hide) return;
   m_t << "</listitem>\n";
 }
 
 void XmlDocVisitor::visitPre(DocHtmlDescList *)
 {
+  if (m_hide) return;
   m_t << "<variablelist>\n";
 }
 
 void XmlDocVisitor::visitPost(DocHtmlDescList *) 
 {
+  if (m_hide) return;
   m_t << "</variablelist>\n";
 }
 
 void XmlDocVisitor::visitPre(DocHtmlDescTitle *)
 {
+  if (m_hide) return;
   m_t << "<varlistentry><term>";
 }
 
 void XmlDocVisitor::visitPost(DocHtmlDescTitle *) 
 {
+  if (m_hide) return;
   m_t << "</term></varlistentry>\n";
 }
 
 void XmlDocVisitor::visitPre(DocHtmlDescData *)
 {
+  if (m_hide) return;
   m_t << "<listitem>";
 }
 
 void XmlDocVisitor::visitPost(DocHtmlDescData *) 
 {
+  if (m_hide) return;
   m_t << "</listitem>\n";
 }
 
 void XmlDocVisitor::visitPre(DocHtmlTable *t)
 {
+  if (m_hide) return;
   m_t << "<table rows=\"" << t->numRows() 
       << "\" cols=\"" << t->numCols() << "\">" ;
 }
 
 void XmlDocVisitor::visitPost(DocHtmlTable *) 
 {
+  if (m_hide) return;
   m_t << "</table>\n";
 }
 
 void XmlDocVisitor::visitPre(DocHtmlRow *)
 {
+  if (m_hide) return;
   m_t << "<row>\n";
 }
 
 void XmlDocVisitor::visitPost(DocHtmlRow *) 
 {
+  if (m_hide) return;
   m_t << "</row>\n";
 }
 
 void XmlDocVisitor::visitPre(DocHtmlCell *c)
 {
+  if (m_hide) return;
   if (c->isHeading()) m_t << "<entry thead=\"yes\">"; else m_t << "<entry thead=\"no\">";
 }
 
 void XmlDocVisitor::visitPost(DocHtmlCell *) 
 {
+  if (m_hide) return;
   m_t << "</entry>"; 
 }
 
 void XmlDocVisitor::visitPre(DocHtmlCaption *)
 {
+  if (m_hide) return;
   m_t << "<caption>";
 }
 
 void XmlDocVisitor::visitPost(DocHtmlCaption *) 
 {
+  if (m_hide) return;
   m_t << "</caption>\n";
 }
 
 void XmlDocVisitor::visitPre(DocInternal *)
 {
+  if (m_hide) return;
   m_t << "<internal>";
 }
 
 void XmlDocVisitor::visitPost(DocInternal *) 
 {
+  if (m_hide) return;
   m_t << "</internal>" << endl;
 }
 
 void XmlDocVisitor::visitPre(DocHRef *href)
 {
+  if (m_hide) return;
   m_t << "<ulink url=\"" << href->url() << "\">";
 }
 
 void XmlDocVisitor::visitPost(DocHRef *) 
 {
+  if (m_hide) return;
   m_t << "</ulink>";
 }
 
 void XmlDocVisitor::visitPre(DocHtmlHeader *header)
 {
+  if (m_hide) return;
   m_t << "<heading" << header->level() << ">";
 }
 
 void XmlDocVisitor::visitPost(DocHtmlHeader *header) 
 {
+  if (m_hide) return;
   m_t << "</heading" << header->level() << ">\n";
 }
 
 void XmlDocVisitor::visitPre(DocImage *img)
 {
+  if (m_hide) return;
   m_t << "<image type=\"";
   switch(img->type())
   {
@@ -566,73 +612,87 @@ void XmlDocVisitor::visitPre(DocImage *img)
 
 void XmlDocVisitor::visitPost(DocImage *) 
 {
+  if (m_hide) return;
   m_t << "</image>" << endl;
 }
 
 void XmlDocVisitor::visitPre(DocDotFile *df)
 {
+  if (m_hide) return;
   m_t << "<dotfile name=\"" << df->file() << "\">";
 }
 
 void XmlDocVisitor::visitPost(DocDotFile *) 
 {
+  if (m_hide) return;
   m_t << "</dotfile>" << endl;
 }
 
 void XmlDocVisitor::visitPre(DocLink *lnk)
 {
+  if (m_hide) return;
   startLink(lnk->ref(),lnk->file(),lnk->anchor());
 }
 
 void XmlDocVisitor::visitPost(DocLink *) 
 {
+  if (m_hide) return;
   endLink();
 }
 
 void XmlDocVisitor::visitPre(DocRef *ref)
 {
+  if (m_hide) return;
   startLink(ref->ref(),ref->file(),ref->anchor());
   if (!ref->hasLinkText()) filter(ref->targetTitle());
 }
 
 void XmlDocVisitor::visitPost(DocRef *) 
 {
+  if (m_hide) return;
   endLink();
   m_t << " ";
 }
 
 void XmlDocVisitor::visitPre(DocSecRefItem *ref)
 {
+  if (m_hide) return;
   m_t << "<tocitem id=\"" << ref->file() << "_1" << ref->anchor() << "\">";
 }
 
 void XmlDocVisitor::visitPost(DocSecRefItem *) 
 {
+  if (m_hide) return;
   m_t << "</tocitem>" << endl;
 }
 
 void XmlDocVisitor::visitPre(DocSecRefList *)
 {
+  if (m_hide) return;
   m_t << "<toclist>" << endl;
 }
 
 void XmlDocVisitor::visitPost(DocSecRefList *) 
 {
+  if (m_hide) return;
   m_t << "</toclist>" << endl;
 }
 
 void XmlDocVisitor::visitPre(DocLanguage *l)
 {
+  if (m_hide) return;
   m_t << "<language id=\"" << l->id() << "\">";
 }
 
 void XmlDocVisitor::visitPost(DocLanguage *) 
 {
+  if (m_hide) return;
   m_t << "</language>" << endl;
 }
 
 void XmlDocVisitor::visitPre(DocParamSect *s)
 {
+  if (m_hide) return;
   m_t << "<parameterlist kind=\"";
   switch(s->type())
   {
@@ -650,11 +710,13 @@ void XmlDocVisitor::visitPre(DocParamSect *s)
 
 void XmlDocVisitor::visitPost(DocParamSect *)
 {
+  if (m_hide) return;
   m_t << "</parameterlist>" << endl;
 }
 
 void XmlDocVisitor::visitPre(DocParamList *pl)
 {
+  if (m_hide) return;
   QStrListIterator li(pl->parameters());
   const char *s;
   for (li.toFirst();(s=li.current());++li)
@@ -668,11 +730,13 @@ void XmlDocVisitor::visitPre(DocParamList *pl)
 
 void XmlDocVisitor::visitPost(DocParamList *)
 {
+  if (m_hide) return;
   m_t << "</parameterdescription>";
 }
 
 void XmlDocVisitor::visitPre(DocXRefItem *x)
 {
+  if (m_hide) return;
   m_t << "<xrefsect id=\"";
   m_t << x->file() << "_1" << x->anchor();
   m_t << "\">";
@@ -684,28 +748,33 @@ void XmlDocVisitor::visitPre(DocXRefItem *x)
 
 void XmlDocVisitor::visitPost(DocXRefItem *)
 {
+  if (m_hide) return;
   m_t << "</xrefdescription>";
   m_t << "</xrefsect>";
 }
 
 void XmlDocVisitor::visitPre(DocInternalRef *ref)
 {
+  if (m_hide) return;
   startLink(0,ref->file(),ref->anchor());
 }
 
 void XmlDocVisitor::visitPost(DocInternalRef *) 
 {
+  if (m_hide) return;
   endLink();
   m_t << " ";
 }
 
 void XmlDocVisitor::visitPre(DocCopy *c)
 {
+  if (m_hide) return;
   m_t << "<copydoc link=\"" << c->link() << "\">";
 }
 
 void XmlDocVisitor::visitPost(DocCopy *)
 {
+  if (m_hide) return;
   m_t << "</copydoc>" << endl;
 }
 
@@ -719,20 +788,7 @@ void XmlDocVisitor::visitPost(DocText *)
 
 void XmlDocVisitor::filter(const char *str)
 { 
-  if (str==0) return;
-  const char *p=str;
-  char c;
-  while (*p)
-  {
-    c=*p++;
-    switch(c)
-    {
-      case '<':  m_t << "&lt;"; break;
-      case '>':  m_t << "&gt;"; break;
-      case '&':  m_t << "&amp;"; break;
-      default:   m_t << c;
-    }
-  }
+  m_t << convertToXML(str);
 }
 
 void XmlDocVisitor::startLink(const QString &ref,const QString &file,const QString &anchor)
@@ -751,3 +807,16 @@ void XmlDocVisitor::endLink()
   m_t << "</ref>";
 }
 
+void XmlDocVisitor::pushEnabled()
+{
+  m_enabled.push(new bool(m_hide));
+}
+
+void XmlDocVisitor::popEnabled()
+{
+  bool *v=m_enabled.pop();
+  ASSERT(v!=0);
+  m_hide = *v;
+  delete v;
+}
+
diff --git a/src/xmldocvisitor.h b/src/xmldocvisitor.h
index 95f5afe..bbb80f6 100644
--- a/src/xmldocvisitor.h
+++ b/src/xmldocvisitor.h
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -20,6 +20,7 @@
 #define _XMLDOCVISITOR_H
 
 #include "docvisitor.h"
+#include <qstack.h>
 
 class QTextStream;
 class BaseCodeDocInterface;
@@ -136,6 +137,9 @@ class XmlDocVisitor : public DocVisitor
                    const QString &anchor);
     void endLink();
 
+    void pushEnabled();
+    void popEnabled();
+
     //--------------------------------------
     // state variables
     //--------------------------------------
@@ -144,6 +148,7 @@ class XmlDocVisitor : public DocVisitor
     BaseCodeDocInterface &m_ci;
     bool m_insidePre;
     bool m_hide;
+    QStack<bool> m_enabled;
 };
 
 #endif
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index 8fade1a..ef16705 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -3,7 +3,7 @@
  * 
  *
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
@@ -187,7 +187,7 @@ class XMLCodeGenerator : public BaseCodeDocInterface
     XMLCodeGenerator(QTextStream &t) : m_t(t), m_lineNumber(-1),
       m_insideCodeLine(FALSE), m_normalHLNeedStartTag(TRUE), 
       m_insideSpecialHL(FALSE) {}
-    virtual ~XMLCodeGenerator() {}
+    virtual ~XMLCodeGenerator() { }
     
     void codify(const char *text) 
     {
@@ -302,6 +302,10 @@ class XMLCodeGenerator : public BaseCodeDocInterface
         if (extRef) m_external=extRef;
       }
     }
+    void finish()
+    {
+      if (m_insideCodeLine) endCodeLine();
+    }
 
   private:
     QTextStream &m_t;  
@@ -394,14 +398,13 @@ void writeXMLCodeBlock(QTextStream &t,FileDef *fd)
 {
   initParseCodeContext();
   XMLCodeGenerator *xmlGen = new XMLCodeGenerator(t);
-  //xmlGen->m_inParStack.push(TRUE);
   parseCode(*xmlGen,
             0,
             fileToString(fd->absFilePath(),Config_getBool("FILTER_SOURCE_FILES")),
             FALSE,
             0,
             fd);
-  //t << xmlGen->getContents();
+  xmlGen->finish();
   delete xmlGen;
 }
 
@@ -525,6 +528,8 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
     t << "        <type>";
     linkifyText(TextGeneratorXMLImpl(t),scopeName,md->name(),typeStr);
     t << "</type>" << endl;
+    t << "        <definition>" << md->definition() << "</definition>" << endl;
+    t << "        <argsstring>" << md->argsString() << "</argsstring>" << endl;
   }
 
   t << "        <name>" << convertToXML(md->name()) << "</name>" << endl;
diff --git a/src/xmlgen.h b/src/xmlgen.h
index 3a76e0e..3643959 100644
--- a/src/xmlgen.h
+++ b/src/xmlgen.h
@@ -2,7 +2,7 @@
  *
  * 
  *
- * Copyright (C) 1997-2002 by Dimitri van Heesch.
+ * Copyright (C) 1997-2003 by Dimitri van Heesch.
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation under the terms of the GNU General Public License is hereby 
-- 
cgit v0.12

