#! /bin/sh # This script scans the directories of Exim test scripts and lists the first # comment line of each one, which gives a description. The output is piped via # "more". If the script has an argument, it is a pattern that is used to select # only certain subdirectories. If the script has a second argument, it is a # pattern that is used to select only certain test titles from the selected # directories. /usr/bin/perl -w - "$1" "$2" <<'PerlEnd' | less $dirpat = "$ARGV[0]"; $filpat = "$ARGV[1]"; opendir(SCRIPTS, "scripts") || die "** Failed to opendir(SCRIPTS): $!\n"; @subdirs = readdir(SCRIPTS); closedir(SCRIPTS); foreach $subdir (sort @subdirs) { my($first) = 1; next if $subdir =~ /^\./; next if $dirpat ne "" && $subdir !~ /$dirpat/i; opendir(TESTS, "scripts/$subdir") || die "** Failed to opendir(scripts/$subdir): $!\n"; @tests = readdir(TESTS); closedir(TESTS); foreach $file (sort @tests) { next if $file !~ /^\d\d\d\d$/; open(IN, "scripts/$subdir/$file") || die "** Failed to open scripts/$subdir/$file: $!\n"; my($heading) = substr(<IN>, 2); close(IN); if ($filpat eq "" || $heading =~ /$filpat/i) { if ($first) { print "\n=== $subdir ===\n"; if (open(REQUIRES, "scripts/$subdir/REQUIRES")) { my($indent) = ""; print "=== Requires: "; while (<REQUIRES>) { print $indent, $_; $indent = " "; } print "\n" if $indent eq ""; close (REQUIRES); } $first = 0; } printf("%s/%s %s", (substr $subdir, 5), $file, $heading); } } } PerlEnd # End