diff -r 92cbdc24b0fd -r 9dec3ff4489b tele-watch.pl --- a/tele-watch.pl Wed Apr 01 11:11:17 2015 +0200 +++ b/tele-watch.pl Thu Apr 21 14:11:00 2016 +0200 @@ -71,6 +71,21 @@ } 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 $_; + chown $uid, $gid => $_; + chmod $mode & 07777 => $_; + } + exec "true"; # avoid execution of END{ } blocks + } + wait; + }, ); MAIN: { @@ -208,25 +223,33 @@ 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"; + mkdir $dir => 0755; + chown($uid, $gid, $dir); + chmod($mode & 07777, $dir); + } - notice "symlink $dir <= $link"; - unlink $link; - symlink $dir => $link; + if ( "$link" =~ /angebote/gi ) + { + #$link = "/.dtele/Korrespondenz/$e->{name}/Angebote"; + $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);