# HG changeset patch # User Matthias Förste # Date 1524735996 -7200 # Node ID d08f47fd8542b377331f63764b4022dc226304a6 # Parent 8215da26b2fe32f934a155ecd05636c5a10a2637# Parent 21cf0d0ca51bead3d8af2aade92ac8b13509c7ca [merged] diff -r 21cf0d0ca51b -r d08f47fd8542 tele-watch.pl --- a/tele-watch.pl Fri Mar 06 15:32:41 2015 +0100 +++ b/tele-watch.pl Thu Apr 26 11:46:36 2018 +0200 @@ -35,7 +35,8 @@ use File::Find; # homepage hook my $ME = basename $0; -my $VERSION = "0.4:"; +my $VERSION = "0.4:b68c49bc006c+ tip +"; my $opt_block = 1; my $opt_daemon = 1; @@ -59,6 +60,11 @@ # avoid execution of END{ } blocks $clean_pids{$$} = 1; chdir $dir or die "Can't chdir to $dir: $!\n"; + for ('public') { + mkdir $_; + chown $uid, $gid => $_; + chmod $mode & 07777 => $_; + } system("bzr init"); finddepth(sub { chown($uid, $gid, $_); @@ -67,6 +73,22 @@ } wait; }, + Angebote => sub { + my $dir = shift; + my ($uid, $gid, $mode) = (stat $dir)[4, 5, 2]; + defined(my $pid = fork()) or die "Can't fork: $!\n"; + if ($pid == 0) { + chdir $dir or die "Can't chdir to $dir: $!\n"; + for ('subangebote') { + mkdir $_ => 0770; + $gid = getgrnam('PM'); + chown $uid, $gid => $_; + chmod(02770, $_); + } + exec "true"; # avoid execution of END{ } blocks + } + wait; + }, ); my %clean_pids; @@ -212,25 +234,40 @@ my ($uid, $gid, $mode) = (stat $fullname)[ 4, 5, 2 ]; # create a link to each directory found in $target/ - foreach my $t (map { basename($_) } grep { -d } dir "$target/") + foreach my $t (map { basename($_) } grep { -d } reverse(dir "$target/")) { - my $dir = "$target/$t/$e->{name}"; - my $link = "$fullname/$t"; - my $hook = $HOOK{$t} if exists $HOOK{$t} - and ref $HOOK{$t} eq "CODE"; + + my $dir = "$target/$t/$e->{name}"; + + my $link = "$fullname/$t"; + my $hook = $HOOK{$t} if exists $HOOK{$t} + and ref $HOOK{$t} eq "CODE"; - if (!-e $dir) { - notice "mkdir $dir"; - mkdir $dir => 0755; - chown($uid, $gid, $dir); - chmod($mode & 07777, $dir); - } + if (!-e $dir) { + notice "mkdir $dir"; + if ($dir =~ /angebote/gi) { + $gid = getgrnam('PM'); + mkdir $dir => 0770; + chmod(02770, $dir); + } + else { + mkdir $dir => 0755; + chmod($mode & 07777, $dir); + } + + chown($uid, $gid, $dir); + } - notice "symlink $dir <= $link"; - unlink $link; - symlink $dir => $link; + if ( "$link" =~ /angebote/gi ) + { + $link = "$target/Korrespondenz/$e->{name}/Angebote"; + } - $hook->($dir) if defined $hook; + notice "symlink $dir <= $link"; + unlink $link; + symlink $dir => $link; + $hook->($dir) if defined $hook; + } chmod(0555 => $fullname); @@ -431,7 +468,8 @@ =head1 VERSION -This is . +This is b68c49bc006c+ tip +. =cut