aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Elliston <bje@gnu.org>2018-12-10 11:39:50 +1100
committerBen Elliston <bje@gnu.org>2018-12-10 11:39:50 +1100
commit8efa01a023d9168bb6cb8a1a4024b007e94e4114 (patch)
tree9ef4df7287e2fa960592847827d66166dd21b958
parent00e2a4272ba0a4dd037d362b9f6554a978627f5f (diff)
downloaddejagnu-8efa01a023d9168bb6cb8a1a4024b007e94e4114.zip
dejagnu-8efa01a023d9168bb6cb8a1a4024b007e94e4114.tar.gz
dejagnu-8efa01a023d9168bb6cb8a1a4024b007e94e4114.tar.bz2
* lib/utils.exp (getdirs): Use glob -nocomplain rather than glob
and catching the "no files matched glob pattern" error message. Catching the error message was the wrong thing to do because the foreach loop then iterates over each word in the error message as if they were matches.
-rw-r--r--ChangeLog8
-rw-r--r--lib/utils.exp53
2 files changed, 30 insertions, 31 deletions
diff --git a/ChangeLog b/ChangeLog
index 0671775..3a06cdb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2018-12-10 Ben Elliston <bje@gnu.org>
+ * lib/utils.exp (getdirs): Use glob -nocomplain rather than glob
+ and catching the "no files matched glob pattern" error
+ message. Catching the error message was the wrong thing to do
+ because the foreach loop then iterates over each word in the error
+ message as if they were matches.
+
+2018-12-10 Ben Elliston <bje@gnu.org>
+
* testsuite/runtest.all/utils.test (getdirs): Add a test for the
non-existent directory case.
diff --git a/lib/utils.exp b/lib/utils.exp
index 57a6831..6acfa7c 100644
--- a/lib/utils.exp
+++ b/lib/utils.exp
@@ -44,44 +44,35 @@ proc getdirs { args } {
set pattern "*"
}
verbose "Looking in $path for directories that match \"${pattern}\"" 3
- catch "glob $path/$pattern" tmp
- if { $tmp ne "" } {
- foreach i $tmp {
- if {[file isdirectory $i]} {
- switch -- "[file tail $i]" {
- "testsuite" -
- "config" -
- "lib" -
- ".git" -
- ".svn" -
- "CVS" -
- "RCS" -
- "SCCS" {
- verbose "Ignoring directory [file tail $i]" 3
- continue
- }
- default {
- if {[file readable $i]} {
- verbose "Found directory [file tail $i]" 3
- lappend dirs $i
- if { $alldirs } {
- eval lappend dirs [getdirs -all $i $pattern]
- }
+ set dirs [list]
+ foreach i [glob -nocomplain $path/$pattern] {
+ if {[file isdirectory $i]} {
+ switch -- "[file tail $i]" {
+ "testsuite" -
+ "config" -
+ "lib" -
+ ".git" -
+ ".svn" -
+ "CVS" -
+ "RCS" -
+ "SCCS" {
+ verbose "Ignoring directory [file tail $i]" 3
+ continue
+ }
+ default {
+ if {[file readable $i]} {
+ verbose "Found directory [file tail $i]" 3
+ lappend dirs $i
+ if { $alldirs } {
+ eval lappend dirs [getdirs -all $i $pattern]
}
}
}
}
}
- } else {
- perror $tmp
- return ""
}
- if {![info exists dirs]} {
- return ""
- } else {
- return $dirs
- }
+ return $dirs
}