--- src/.svn/text-base/doxygen.cpp.svn-base	2010-11-06 20:30:56.688632400 +0100
+++ src/doxygen.cpp	2010-11-07 19:59:42.935406200 +0100
@@ -9132,6 +9132,8 @@
   Doxygen::parserManager->registerParser("c",       new CLanguageScanner, TRUE);
   Doxygen::parserManager->registerParser("python",  new PythonLanguageScanner);
   Doxygen::parserManager->registerParser("fortran", new FortranLanguageScanner);
+  Doxygen::parserManager->registerParser("fortran_fixed", new FortranLanguageScannerFixed);
+  Doxygen::parserManager->registerParser("fortran_free",  new FortranLanguageScannerFree);
   Doxygen::parserManager->registerParser("vhdl",    new VHDLLanguageScanner);
   Doxygen::parserManager->registerParser("dbusxml", new DBusXMLScanner);
 
@@ -10394,7 +10396,6 @@
   // what categories we find in this function.
   if (Config_getBool("GENERATE_HTML") && searchEngine)
   {
-    msg("Generating search indices...\n");
     QCString searchDirName = Config_getString("HTML_OUTPUT")+"/search";
     QDir searchDir(searchDirName);
     if (!searchDir.exists() && !searchDir.mkdir(searchDirName))
--- src/.svn/text-base/fortrancode.h.svn-base	2010-11-06 20:30:54.786632400 +0100
+++ src/fortrancode.h	2010-11-07 19:59:43.023406200 +0100
@@ -28,7 +28,7 @@
 void parseFortranCode(CodeOutputInterface &,const char *,const QCString &, 
             bool ,const char *,FileDef *fd=0,
             int startLine=-1,int endLine=-1,bool inlineFragment=FALSE,
-            MemberDef *memberDef=0,bool showLineNumbers=TRUE);
+            MemberDef *memberDef=0,bool showLineNumbers=TRUE, int codeType = FORTRAN_UNKNOWN);
 void resetFortranCodeParserState();
 void codeFreeScanner();
 
--- src/.svn/text-base/fortrancode.l.svn-base	2010-11-06 20:30:54.807632400 +0100
+++ src/fortrancode.l	2010-11-07 19:59:43.112406200 +0100
@@ -124,6 +124,7 @@
 // count in variable declaration to filter out
 //  declared from referenced names
 static int 	     bracketCount = 0; 
+static int 	     fortranCodeType = FORTRAN_UNKNOWN;
 
 // simplified way to know if this is fixed form
 // duplicate in fortranscanner.l
@@ -132,6 +133,8 @@
   int column=0;
   bool skipLine=FALSE;
 
+  if (fortranCodeType == FORTRAN_FIXED) return TRUE;
+  if (fortranCodeType == FORTRAN_FREE) return FALSE;
   for (int i=0;;i++) 
   {
     column++;
@@ -992,10 +995,11 @@
 void parseFortranCode(CodeOutputInterface &od,const char *className,const QCString &s, 
                   bool exBlock, const char *exName,FileDef *fd,
 		  int startLine,int endLine,bool inlineFragment,
-		  MemberDef *memberDef,bool)
+		  MemberDef *memberDef,bool showLineNumbers, int codeType)
 {
   //printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd);
 
+  fortranCodeType = codeType;
   // used parameters
   (void)memberDef;
   (void)className;
--- src/.svn/text-base/fortranscanner.h.svn-base	2010-11-06 20:30:55.626632400 +0100
+++ src/fortranscanner.h	2010-11-07 19:59:43.201406200 +0100
@@ -27,6 +27,10 @@
 class FortranLanguageScanner : public ParserInterface
 {
   public:
+    FortranLanguageScanner()
+    {
+      codeType = FORTRAN_UNKNOWN;
+    } 
     virtual ~FortranLanguageScanner() {}
     void parseInput(const char *fileName,
                     const char *fileBuf,
@@ -46,6 +50,26 @@
                   );
     void resetCodeParserState();
     void parsePrototype(const char *text);
+
+    int codeType;
+};
+
+class FortranLanguageScannerFree : public FortranLanguageScanner
+{
+  public:
+    FortranLanguageScannerFree()
+    {
+      codeType = FORTRAN_FREE;
+    } 
+};
+
+class FortranLanguageScannerFixed : public FortranLanguageScanner
+{
+  public:
+    FortranLanguageScannerFixed()
+    {
+      codeType = FORTRAN_FIXED;
+    } 
 };
 
 #endif
--- src/.svn/text-base/fortranscanner.l.svn-base	2010-11-06 20:30:55.797632400 +0100
+++ src/fortranscanner.l	2010-11-07 19:59:43.289406200 +0100
@@ -51,7 +51,6 @@
 #include <qfile.h>
 #include <qmap.h>
   
-#include "fortranscanner.h"
 #include "entry.h"
 #include "message.h"
 #include "config.h"
@@ -60,6 +59,7 @@
 #include "defargs.h"
 #include "language.h"
 #include "commentscan.h" 
+#include "fortranscanner.h"
 #include "fortrancode.h"
 #include "pre.h"
 
@@ -161,6 +162,8 @@
 
 static char              stringStartSymbol; // single or double quote
 
+static int 	        fortranCodeType = FORTRAN_UNKNOWN;
+
 //! Accumulated modifiers of current statement, eg variable declaration.
 static SymbolModifiers currentModifiers;
 //! Holds program scope->symbol name->symbol modifiers.
@@ -963,6 +972,8 @@
   int column=0;
   bool skipLine=FALSE;
 
+  if (fortranCodeType == FORTRAN_FIXED) return TRUE;
+  if (fortranCodeType == FORTRAN_FREE) return FALSE;
   for(int i=0;;i++) {
     column++;
 
@@ -1760,6 +1771,7 @@
 void FortranLanguageScanner::parseInput(const char *fileName,const char *fileBuf,Entry *root)
 {
   g_thisParser = this;
+  fortranCodeType = this->codeType;
   ::parseMain(fileName,fileBuf,root);
 }
 
@@ -1778,7 +1790,7 @@
 {
   ::parseFortranCode(codeOutIntf,scopeName,input,isExampleBlock,exampleName,
                      fileDef,startLine,endLine,inlineFragment,memberDef,
-                     showLineNumbers);
+                     showLineNumbers,this->codeType);
 }
 
 bool FortranLanguageScanner::needsPreprocessing(const QCString &extension)
--- src/.svn/text-base/util.cpp.svn-base	2010-11-06 20:30:55.441632400 +0100
+++ src/util.cpp	2010-11-07 19:59:43.378406200 +0100
@@ -3194,7 +3194,6 @@
   }
   if (cd && cd->isUsedOnly()) cd=0; // ignore types introduced by usage relations
 
-  //printf("cd=%p mtype=%p\n",cd,mType);
   //printf("  getCanonicalTypeForIdentifer: symbol=%s word=%s cd=%s d=%s fs=%s cd->isTemplate=%d\n",
   //    symName.data(),
   //    word.data(),
@@ -3265,8 +3264,7 @@
   }
   else if (mType && mType->isTypedef()) // a typedef
   {
-    //result = mType->qualifiedName(); // changed after 1.7.2
-    result = mType->typeString();
+    result = mType->qualifiedName();
   }
   else // fallback
   {
@@ -6428,6 +6426,8 @@
   { "c++",         "c",       SrcLangExt_Cpp    },
   { "python",      "python",  SrcLangExt_Python },
   { "fortran",     "fortran", SrcLangExt_F90    },
+  { "fortran_fixed","fortran_fixed", SrcLangExt_F90    },
+  { "fortran_free", "fortran_free",  SrcLangExt_F90    },
   { "vhdl",        "vhdl",    SrcLangExt_VHDL   },
   { "dbusxml",     "dbusxml", SrcLangExt_XML    },
   { 0,             0,        (SrcLangExt)0      }
--- src/.svn/text-base/util.h.svn-base	2010-11-06 20:30:56.832632400 +0100
+++ src/util.h	2010-11-07 19:59:43.466406200 +0100
@@ -382,5 +382,8 @@
 QCString externalRef(const QCString &relPath,const QCString &ref,bool href);
 int nextUtf8CharPosition(const QCString &utf8Str,int len,int startPos);
 
+#define FORTRAN_UNKNOWN 0
+#define FORTRAN_FREE    1
+#define FORTRAN_FIXED   2
 #endif
 
--- src/.svn/text-base/config.xml.svn-base	2010-11-06 20:30:54.863632400 +0100
+++ src/config.xml	2010-11-07 19:59:43.556406200 +0100
@@ -222,14 +222,17 @@
 VHDL. 
 ' defval='0'/>
     <option type='list' id='EXTENSION_MAPPING' format='string' docs='
-Doxygen selects the parser to use depending on the extension of the files it 
-parses. With this tag you can assign which parser to use for a given extension. 
-Doxygen has a built-in mapping, but you can override or extend it using this 
-tag. The format is ext=language, where ext is a file extension, and language 
-is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, 
-C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make 
-doxygen treat .inc files as Fortran files (default is PHP), and .f files as C 
-(default is Fortran), use: inc=Fortran f=C. Note that for custom extensions 
+Doxygen selects the parser to use depending on the extension of the files it
+parses.  With this tag you can assign which parser to use for a given extension.
+Doxygen has a built-in mapping, but you can override or extend it using this
+tag. The format is ext=language, where ext is a file extension, and language
+is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
+C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: Fortran_Fixed,
+free formatted Fortran: Fortran_Free, unknown formatted Fortran: Fortran. In
+the later case the parser tries to guess whether the code is fixed otr free
+formatted code, this is the default), VHDL. For instance to make doxygen treat
+.inc files as Fortran files (default is PHP), and .f files as C (default is
+Fortran), use: inc=Fortran f=C. Note that for custom extensions 
 you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
 '>
     </option>
@@ -1267,15 +1270,15 @@
 If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
 this tag can be used to specify a list of macro names that should be expanded. 
 The macro definition that is found in the sources will be used. 
-Use the PREDEFINED tag if you want to use a different macro definition that
-overrules the definition found in the source code. 
+Use the PREDEFINED tag if you want to use a different macro definition. 
 ' depends='ENABLE_PREPROCESSING'>
     </option>
     <option type='bool' id='SKIP_FUNCTION_MACROS' docs='
 If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-doxygen&apos;s preprocessor will remove all references to function-like macros 
-that are alone on a line, have an all uppercase name, and do not end with a 
-semicolon, because these will confuse the parser if not removed. 
+doxygen&apos;s preprocessor will remove all function-like macros that are alone 
+on a line, have an all uppercase name, and do not end with a semicolon. Such 
+function macros are typically used for boiler-plate code, and will confuse 
+the parser if not removed. 
 ' defval='1' depends='ENABLE_PREPROCESSING'/>
   </group>
   <group name='External' docs='Configuration::additions related to external references'>
@@ -1350,14 +1353,15 @@
 between CPU load and processing speed.  
 ' defval='0' minval='0' maxval='32'/>
     <option type='string' id='DOT_FONTNAME' format='string' docs='
-By default doxygen will write a font called Helvetica to the output 
-directory and reference it in all dot files that doxygen generates. 
-When you want a differently looking font you can specify the font name 
+By default doxygen will write a font called FreeSans.ttf to the output 
+directory and reference it in all dot files that doxygen generates. This 
+font does not include all possible unicode characters however, so when you need 
+these (or just want a differently looking font) you can specify the font name 
 using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
 which can be done by putting it in a standard location or by setting the 
 DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
 containing the font. 
-' defval='Helvetica' depends='HAVE_DOT'/>
+' defval='FreeSans.ttf' depends='HAVE_DOT'/>
     <option type='int' id='DOT_FONTSIZE' docs='
 The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
 The default size is 10pt. 
@@ -1437,7 +1441,6 @@
       <value name='png'/>
       <value name='jpg'/>
       <value name='gif'/>
-      <value name='svg'/>
     </option>
     <option type='string' id='DOT_PATH' format='dir' docs='
 The tag DOT_PATH can be used to specify the path where the dot tool can be 
--- doc/.svn/text-base/config.doc.svn-base	2010-11-06 20:31:10.993632400 +0100
+++ doc/config.doc	2010-11-07 19:59:43.645406200 +0100
@@ -565,14 +565,18 @@
 \anchor cfg_extension_mapping
 <dt>\c EXTENSION_MAPPING <dd>
  \addindex EXTENSION_MAPPING
- Doxygen selects the parser to use depending on the extension of the files it parses.
- With this tag you can assign which parser to use for a given extension.
- Doxygen has a built-in mapping, but you can override or extend it using this tag.
- The format is ext=language, where ext is a file extension, and language is one of
- the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
- Objective-C, Python, Fortran, VHDL. For instance to make doxygen treat
- .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
- use: inc=Fortran f=C
+ Doxygen selects the parser to use depending on the extension of the files it
+ parses.  With this tag you can assign which parser to use for a given extension.
+ Doxygen has a built-in mapping, but you can override or extend it using this
+ tag. The format is ext=language, where ext is a file extension, and language
+ is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
+ C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: Fortran_Fixed,
+ free formatted Fortran: Fortran_Free, unknown formatted Fortran: Fortran. In
+ the later case the parser tries to guess whether the code is fixed otr free
+ formatted code, this is the default), VHDL. For instance to make doxygen treat
+ .inc files as Fortran files (default is PHP), and .f files as C (default is
+ Fortran), use: inc=Fortran f=C. Note that for custom extensions
+ you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
 
 \anchor cfg_subgrouping
 <dt>\c SUBGROUPING <dd>
