Fix default rule match
[tclrobot.git] / robot.tcl
index 968e64e..2d9ea64 100755 (executable)
--- a/robot.tcl
+++ b/robot.tcl
@@ -1,5 +1,5 @@
 #!/usr/bin/tclsh 
-# $Id: robot.tcl,v 1.36 2003/06/10 11:55:18 adam Exp $
+# $Id: robot.tcl,v 1.41 2003/06/10 13:16:16 adam Exp $
 #
 proc RobotFileNext1 {area lead} {
     # puts "RobotFileNext1 area=$area lead=$lead"
@@ -131,7 +131,7 @@ proc RobotFileUnlink {task area host path} {
     for {set i $l} {$i > 0} {incr i -1} {
         set path [join [lrange $comp 0 $i] /]
        if {![catch {glob $path/*}]} return
-        exec rmdir ./$path
+        exec rmdir $path
     }
     # puts "RobotFileUnlink end"
 }
@@ -148,6 +148,8 @@ proc RobotFileOpen {task area host path {mode w}} {
     global status
     global debuglevel
 
+    puts "RobotFileOpen task=$task path=$path"
+
     if {![info exists workdir]} {
        return stdout
     }
@@ -169,7 +171,10 @@ proc RobotFileOpen {task area host path {mode w}} {
 
     for {set i 0} {$i <= $len} {incr i} {
         set d [lindex $comp $i]
-        if {[catch {cd $d}]} {
+       if {[string length $d] == 0} {
+           cd /
+       } elseif {[catch {cd $d}]} {
+           puts "mkdir (1) d=$d"
             exec mkdir $d
             cd ./$d
            if {![string compare $area unvisited] && $i == $len && $mode == "w"} {
@@ -193,6 +198,7 @@ proc RobotFileOpen {task area host path {mode w}} {
         set d "d[lindex $comp $i]" 
         if {[string length $d] > 1} {
             if {[catch {cd $d}]} {
+               puts "mkdir (2) d=$d"
                 exec mkdir $d
                 cd ./$d
             }
@@ -219,8 +225,10 @@ proc RobotStartJob {fname t} {
     set f [open $fname r]
     set xml [read $f]
     puts "Reading $fname"
-    regexp {<status>([^<]*)</status>} $xml x status
     close $f
+    if {![regexp {<status>([^<]*)</status>} $xml x status]} {
+       return
+    }
     if {$status == "done"} {
         puts "already done"
         return
@@ -1058,6 +1066,8 @@ proc checkrule {task type this} {
     global control
     global debuglevel
 
+    set default_ret 1
+
     if {$debuglevel > 3} {
         puts "CHECKRULE $type $this"
     }
@@ -1071,6 +1081,7 @@ proc checkrule {task type this} {
             # consider mask (! negates)
             set masks [lindex $l 2]
            set ok 0
+           set default_ret 0
            foreach mask $masks {       
                 if {$debuglevel > 4} {
                     puts "consider single mask $mask"
@@ -1102,9 +1113,9 @@ proc checkrule {task type this} {
         }
     }
     if {$debuglevel > 3} {
-        puts "CHECKRULE MATCH OK"
+        puts "CHECKRULE MATCH DEFAULT $default_ret"
     }
-    return 1
+    return $default_ret
 }