diff --git a/utils/scan-build b/utils/scan-build
index d9ecba7..1140577 100755
--- a/utils/scan-build
+++ b/utils/scan-build
@@ -21,7 +21,6 @@
 use Term::ANSIColor qw(:constants);
 use Cwd;
 use Sys::Hostname;
-use File::Basename;
 
 my $Verbose = 0;       # Verbose output from this script.
 my $Prog = "scan-build";
@@ -82,7 +81,7 @@
 # Some initial preprocessing of Clang options.
 ##----------------------------------------------------------------------------##
 
-my $ClangSB = "$RealBin/clang";
+my $ClangSB = Cwd::realpath("$RealBin/clang");
 my $Clang = $ClangSB;
 
 if (! -x $ClangSB) {
@@ -399,22 +398,26 @@
 sub CopyFiles {
 
   my $Dir = shift;
+
+  my $JS = Cwd::realpath("$RealBin/sorttable.js");
   
   DieDiag("Cannot find 'sorttable.js'.\n")
-    if (! -r "$RealBin/sorttable.js");  
+    if (! -r $JS);  
 
-  system ("cp", "$RealBin/sorttable.js", "$Dir");
+  system ("cp", $JS, "$Dir");
 
   DieDiag("Could not copy 'sorttable.js' to '$Dir'.\n")
     if (! -r "$Dir/sorttable.js");
     
+  my $CSS = Cwd::realpath("$RealBin/scanview.css");
+  
   DieDiag("Cannot find 'scanview.css'.\n")
-    if (! -r "$RealBin/scanview.css");  
+    if (! -r $CSS);
 
-  system ("cp", "$RealBin/scanview.css", "$Dir");
+  system ("cp", $CSS, "$Dir");
 
   DieDiag("Could not copy 'scanview.css' to '$Dir'.\n")
-    if (! -r "$Dir/scanview.css");
+    if (! -r $CSS);
 }
 
 ##----------------------------------------------------------------------------##
@@ -803,6 +806,8 @@
 print <<ENDTEXT;
 OPTIONS:
 
+ -analyze-headers - Also analyze functions in #included files.
+
  -o             - Target directory for HTML report files.  Subdirectories
                   will be created as needed to represent separate "runs" of
                   the analyzer.  If this option is not specified, a directory
@@ -907,6 +912,7 @@
 # Process command-line arguments.
 ##----------------------------------------------------------------------------##
 
+my $AnalyzeHeaders = 0;
 my $HtmlDir;           # Parent directory to store HTML files.
 my $IgnoreErrors = 0;  # Ignore build errors.
 my $ViewResults  = 0;  # View results when the build terminates.
@@ -929,6 +935,12 @@
     exit 0;
   }
   
+  if ($arg eq '-analyze-headers') {
+    shift @ARGV;    
+    $AnalyzeHeaders = 1;
+    next;
+  }
+  
   if (defined $AvailableAnalyses{$arg}) {
     shift @ARGV;
     push @AnalysesToRun, $arg;
@@ -1041,7 +1053,7 @@
 # Set the appropriate environment variables.
 SetHtmlEnv(\@ARGV, $HtmlDir);
 
-my $Cmd = "$RealBin/ccc-analyzer";
+my $Cmd = Cwd::realpath("$RealBin/ccc-analyzer");
 
 DieDiag("Executable 'ccc-analyzer' does not exist at '$Cmd'\n")
   if (! -x $Cmd);
@@ -1076,6 +1088,10 @@
   }
 }
 
+if ($AnalyzeHeaders) {
+  push @AnalysesToRun,"-analyzer-opt-analyze-headers";  
+}
+
 $ENV{'CCC_ANALYZER_ANALYSIS'} = join ' ',@AnalysesToRun;
 
 # Run the build.
@@ -1087,7 +1103,7 @@
 if ($ViewResults and -r "$HtmlDir/index.html") {
   Diag "Analysis run complete.\n";
   Diag "Viewing analysis results in '$HtmlDir' using scan-view.\n";
-  my $ScanView = "$RealBin/scan-view";
+  my $ScanView = Cwd::realpath("$RealBin/scan-view");
   if (! -x $ScanView) { $ScanView = "scan-view"; }
   exec $ScanView, "$HtmlDir";
 }
