From e54cd1ad3fc7f4557b8aa3dafec61180323dde66 Mon Sep 17 00:00:00 2001
From: zimoch <zimoch>
Date: Tue, 3 Aug 2010 08:41:28 +0000
Subject: [PATCH] fixed: problem when current dir was not in CVS

---
 App/tools/getVersion.tcl | 37 +++++++++++++++++++++++++------------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/App/tools/getVersion.tcl b/App/tools/getVersion.tcl
index 78a8eea3..aa7f906c 100755
--- a/App/tools/getVersion.tcl
+++ b/App/tools/getVersion.tcl
@@ -6,6 +6,16 @@ set global_context [scancontext create]
 set file_context [scancontext create]
 set skip_context [scancontext create]
 
+scanmatch $global_context {no such directory `(.*)'} {
+    puts stderr "checking directory $matchInfo(submatch0): so such directory  => version test"
+    return
+}
+
+scanmatch $global_context {there is no version here} {
+    puts stderr "checking current directory: not in cvs => version test"
+    return
+}
+
 scanmatch $global_context {^File: .*Up-to-date} {
     set file [lindex $matchInfo(line) 1]
     puts -nonewline stderr "checking $file: "
@@ -88,21 +98,24 @@ scanmatch $file_context {=================} {
     return
 }
 
-#cvs bug: calling cvs status for files in other directories spoils status information for local files.
-#fix: make localfiles non-local: x -> ../dir/x
-set dir ../[file tail [pwd]]
-set files $dir
+# cvs bug: calling cvs status for files in other directories spoils status
+# information for local files.
+# fix: check local and non local files separately
+
+set cvsstatus [open "|cvs status -l -v 2>@ stdout"]
+scanfile $global_context $cvsstatus
+if [catch {close $cvsstatus}] {set version test}
+
+set files {}
 foreach file $argv {
-    if {[file tail $file] == $file} {
-        lappend files $dir/$file
-    } else {
+    if {[file tail $file] != $file} {
         lappend files $file
     }
 }
-
-set cvsstatus [open "|cvs status -l -v $files 2>/dev/null"]
-scanfile $global_context $cvsstatus
-close $cvsstatus
-
+if [llength $files] {
+    set cvsstatus [open "|cvs status -l -v $files 2>@ stdout"]
+    scanfile $global_context $cvsstatus
+    if [catch {close $cvsstatus}] {set version test}
+}
 if {![info exists version]} {set version test}
 puts $version
-- 
GitLab