chiark
/
gitweb
/
~ianmdlvl
/
reprap-play.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
toplevel-find: recurse on toplevels-from
[reprap-play.git]
/
toplevel-find
diff --git
a/toplevel-find
b/toplevel-find
index 3e3c28b90cb1f6cf8ad97fa0a88d9cff9aa29973..35f73e6b9d7f060b118e89757946e0030b1e5f2b 100755
(executable)
--- a/
toplevel-find
+++ b/
toplevel-find
@@
-1,18
+1,27
@@
#!/usr/bin/perl -w
use strict;
#!/usr/bin/perl -w
use strict;
+use IO::File;
+
@ARGV==1 or die;
my $base = $ARGV[0];
$base =~ m/^\-/ and die;
@ARGV==1 or die;
my $base = $ARGV[0];
$base =~ m/^\-/ and die;
-open F, "$base.scad" or die "$base.scad $!";
-while (<F>) {
+
+sub read_file ($) {
+ my ($fn) = @_;
+ my $f = new IO::File "$fn", '<' or die "$fn $!";
+ while (<$f>) {
if (m#^//// toplevels-from:#) {
if (m#^//// toplevels-from:#) {
-
defined($_ = <F
>) 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 $!;
}
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 $!;
close STDOUT or die $!;
+