diff options
Diffstat (limited to 'source4/script/buildtree.pl')
-rw-r--r-- | source4/script/buildtree.pl | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/source4/script/buildtree.pl b/source4/script/buildtree.pl new file mode 100644 index 00000000000..41cbb3ad765 --- /dev/null +++ b/source4/script/buildtree.pl @@ -0,0 +1,40 @@ +#! /usr/bin/perl -w + eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' + if 0; #$running_under_some_shell + +use strict; +use File::Find (); +use File::Path qw(mkpath); +use Cwd 'abs_path'; + +# Set the variable $File::Find::dont_use_nlink if you're using AFS, +# since AFS cheats. + +# for the convenience of &wanted calls, including -eval statements: +use vars qw/*name *dir *prune/; +*name = *File::Find::name; +*dir = *File::Find::dir; +*prune = *File::Find::prune; +my $builddir = abs_path($ENV{samba_builddir}); +my $srcdir = abs_path($ENV{samba_srcdir}); +sub wanted; + + + +# Traverse desired filesystems +File::Find::find({wanted => \&wanted, no_chdir => 1}, $srcdir); +exit; + + +sub wanted { + my ($dev,$ino,$mode,$nlink,$uid,$gid,$newdir); + + if ((($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && + (-d _) && (($newdir = abs_path($_)) !~ /$builddir/)) + { + $newdir =~ s!$srcdir!$builddir!; + mkpath($newdir); + print("Creating $newdir\n"); + } +} + |