From: Ian Jackson Date: Sun, 21 Nov 2021 12:59:55 +0000 (+0000) Subject: toplevel-find: recurse on toplevels-from X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=439988612ddcc093fdc54f0d7fa11104a75b893e;p=reprap-play.git toplevel-find: recurse on toplevels-from Signed-off-by: Ian Jackson --- diff --git a/toplevel-find b/toplevel-find index 3e3c28b..35f73e6 100755 --- a/toplevel-find +++ b/toplevel-find @@ -1,18 +1,27 @@ #!/usr/bin/perl -w use strict; +use IO::File; + @ARGV==1 or die; my $base = $ARGV[0]; $base =~ m/^\-/ and die; -open F, "$base.scad" or die "$base.scad $!"; -while () { + +sub read_file ($) { + my ($fn) = @_; + my $f = new IO::File "$fn", '<' or die "$fn $!"; + while (<$f>) { if (m#^//// toplevels-from:#) { - defined($_ = ) or die $!; - m#^include\s+\<(\S+)>\s*$# or die; - open F, "$1" or die "$1 $!"; - next; + defined($_ = <$f>) or die $!; + m#^include\s+\<(\S+)>\s*$# or die; + read_file($1); + next; } next unless m#^\s*(?:////\s?)?module\s+(\w+)\b.*////toplevel\b#; print "$base,$1\n" or die $!; + } + $f->error and die "$fn $!"; } -close F or die $!; + +read_file("$base.scad"); close STDOUT or die $!; +