From cfe48c3aee5749b24b6d213c95e1bb6961d3084b Mon Sep 17 00:00:00 2001
From: Dirk Zimoch <dirk.zimoch@psi.ch>
Date: Tue, 20 Oct 2015 17:53:07 +0200
Subject: [PATCH] skip duplicate includes

---
 App/tools/expandDBD.tcl | 30 +++++++++++++++++++++++-------
 1 file changed, 23 insertions(+), 7 deletions(-)

diff --git a/App/tools/expandDBD.tcl b/App/tools/expandDBD.tcl
index ebdc143c..a746fc96 100755
--- a/App/tools/expandDBD.tcl
+++ b/App/tools/expandDBD.tcl
@@ -8,6 +8,7 @@ set epicsversion 3.13
 set quiet 0
 set recordtypes 0
 set seachpath {}
+set filesDone {}
 
 while {[llength $argv]} {
     switch -glob -- [lindex $argv 0] {
@@ -80,20 +81,35 @@ scanmatch $global_context {include[ \t]+"?([^"]*)"?} {
     continue
 }
 
-
-proc includeFile {context name} {
-    global global_context FileName
-    set file [opendbd $name]
-    set FileName($file) $name
+proc includeFile {context filename} {
+    global global_context FileName filesDone matchInfo quiet
+    set basename [file tail $filename]
+    if {[lsearch $filesDone $basename ] != -1} {
+        if {!$quiet} {
+            puts stderr "Warning: skipping duplicate file $basename included from $FileName($matchInfo(handle))"
+        }
+        return
+    }
+    if {$filename != "dbCommon.dbd"} { lappend filesDone [file tail $filename] }
+    set file [opendbd $filename]
+    set FileName($file) $filename
+    #puts "#include $filename from $FileName($matchInfo(handle))"
     scanfile $context $file
     close $file
 }   
 
 foreach filename $argv {
+    global filesDone quiet
+    set basename [file tail $filename]
+    if {[lsearch $filesDone $basename] != -1} {
+        if {!$quiet} {
+            puts stderr "Warning: skipping duplicate file $basename from command line"
+        }
+        continue
+    }
+    if {$basename != "dbCommon.dbd"} { lappend filesDone $basename }
     set file [open $filename]
     set FileName($file) $filename
     scanfile $global_context $file
     close $file
 }
-
-# $Header: /cvs/G/DRV/misc/App/tools/expandDBD.tcl,v 1.4 2011/12/22 10:33:20 zimoch Exp $
-- 
GitLab