-rwxr-xr-x | scripts/makecfg.pl | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/scripts/makecfg.pl b/scripts/makecfg.pl index d7dc41e..de9d71a 100755 --- a/scripts/makecfg.pl +++ b/scripts/makecfg.pl @@ -12,10 +12,9 @@ close(FILE); my ($dirname,$dir,$file,@files,$filename,$tagname,$name,$caps,$pre,$post,$sources,@dupecheck,$basedir); +my @founddirs; $file = shift || die; $basedir = shift; -push(@files, $file); -foreach(@files){ -my $cfg=$_; +my $cfg=$file; ($dirname=$cfg)=~s,(.*)/(.*),$1,; ($filename=$cfg)=~s,(.*/)(.*),$2,; @@ -39,4 +38,9 @@ if(-e "$dirname/config.in.in"){ } } else { + my ($firstletter, $rest); + $firstletter = substr($tagname, 0, 1); + $rest = substr($tagname, 1); + $firstletter =~ tr/a-z/A-Z/; + $tagname = $firstletter . $rest; $pre = "menu \"$tagname\"\n"; $post = "endmenu\n"; @@ -48,8 +52,23 @@ print $pre; @dupecheck=(); File::Find::find({wanted => \&wanted}, $dirname); +@::founddirs=sort(@::founddirs); +foreach (@::founddirs) { + if(grep(/^$_\/config.in$/, @dupecheck)){ + next; + } + my $nslashes = $_ =~ tr!/!!; + my $dirnslashes = $dirname =~ tr!/!!; + $dirnslashes++; + if($dirnslashes != $nslashes){next;} + my $reldir; + if (defined($basedir)) { + ($reldir=$_)=~s,^$basedir/,,; + } + print " source " . $reldir . "/config.in\n"; + push(@dupecheck, $_ . "/config.in"); +} print $post; select(STDOUT); close(CFG); -} exit; @@ -61,19 +80,5 @@ use vars qw/*name *dir *prune/; sub wanted { if( /config.in$/s ) { - if(grep(/^$File::Find::dir\/config.in$/, @dupecheck)){ - return; - } - my $nslashes = $File::Find::dir =~ tr!/!!; - my $dirnslashes = $dirname =~ tr!/!!; - $dirnslashes++; -# print STDERR "dirnslashes is $dirnslashes\n"; -# print STDERR "nslashes is $nslashes\n"; - if($dirnslashes != $nslashes){return;} - my $reldir; - if (defined($basedir)) { - ($reldir=$File::Find::dir)=~s,^$basedir/,,; - } - print " source " . $reldir . "/config.in\n"; - push(@dupecheck, $File::Find::dir . "/config.in"); + push(@::founddirs,$File::Find::dir); } } |