summaryrefslogtreecommitdiff
path: root/source4/script/buildtree.pl
blob: a40036aa55cadcd700cc9f259193f6543719e742 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#! /usr/bin/env perl -w
    eval 'exec /usr/bin/env 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{builddir});
my $srcdir = abs_path($ENV{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");
	}
}