wgnd-watch.pl
changeset 23 7484e32fdc72
parent 22 bba8b3344c26
child 26 a815b43eec44
--- a/wgnd-watch.pl	Thu May 03 15:14:47 2012 +0200
+++ b/wgnd-watch.pl	Thu May 03 22:33:34 2012 +0200
@@ -24,9 +24,10 @@
 use warnings;
 
 my $VERSION = '0.1';
-my $ME = $0;
+my $ME      = $0;
 
 use File::Basename;
+
 # File::Rsync in squeeze does not support --xattrs yet
 #use File::Rsync;
 use Getopt::Long;
@@ -58,27 +59,27 @@
 }
 
 my %opts = (
-    daemon => 1,
-    map =>  'wgnd-watch.map.pl',
+    daemon  => 1,
+    map     => 'wgnd-watch.map.pl',
     pidfile => '/var/run/wgnd-watch.pid'
 );
 
 GetOptions(
-    "map=s"  => \$opts{map},
-    "daemon!" => \$opts{daemon},
+    "map=s"     => \$opts{map},
+    "daemon!"   => \$opts{daemon},
     "pidfile=s" => \$opts{pidfile},
-    "h|help!" => sub { pod2usage( -verbose => 0, -exitval => 0 ) },
-    "m|man!"  => sub {
+    "h|help!"   => sub { pod2usage(-verbose => 0, -exitval => 0) },
+    "m|man!"    => sub {
         pod2usage(
             -verbose   => 2,
             -exitval   => 0,
-            -noperldoc => ( `perldoc -V 2>/dev/null`, $? != 0 )[-1]
+            -noperldoc => (`perldoc -V 2>/dev/null`, $? != 0)[-1]
         );
     },
 ) or pod2usage();
 
 our $source;
-use lib ('.', $ENV{HOME}, '/etc'); 
+use lib ('.', $ENV{HOME}, '/etc');
 require $opts{map};
 
 $0 = "$ME @ARGV";
@@ -90,17 +91,17 @@
     open STDIN,  "</dev/null" or die "Can't redir STDIN: $!\n";
     open STDOUT, ">/dev/null" or die "Can't redir STDOUT: $!\n";
 
-    defined (my $pid = fork) or die "Can't fork: $!\n";
+    defined(my $pid = fork) or die "Can't fork: $!\n";
     if ($pid) {
         dolog "Child is [$pid]";
         exit 0;
     }
     POSIX::setsid()
-        or die "Can't setsid: $!\n";
+      or die "Can't setsid: $!\n";
     open(STDERR, ">&STDOUT") or die "Can't dup stdout: $!\n";
 
     open(P, '>', $opts{pidfile})
-        or die "Can't open '>', '$opts{pidfile}': $!\n";
+      or die "Can't open '>', '$opts{pidfile}': $!\n";
     print P $$;
     close P;
     $master = $$;
@@ -108,30 +109,34 @@
 }
 
 my $inotify = new Linux::Inotify2
-    or die "Can't create new inotify object: $!\n";
+  or die "Can't create new inotify object: $!\n";
 my @rsync = qw(/usr/bin/rsync -ihv -aAX);
 
 for (keys %{$source}) {
 
     # add watchers
-    $inotify->watch ("$_", IN_CREATE, sub {
+    $inotify->watch(
+        "$_",
+        IN_CREATE,
+        sub {
 
             my $pid = fork;
 
             if (not defined $pid) {
                 warn "Can't fork: $!\n";
             } elsif ($pid == 0) {
-                my $e = shift;
+                my $e    = shift;
                 my $name = $e->fullname;
-                dolog "$name was created\n" if $e->IN_CREATE;
-                dolog "$name is no longer mounted\n" if $e->IN_UNMOUNT;
-                dolog "$name is gone\n" if $e->IN_IGNORED;
+                dolog "$name was created\n"               if $e->IN_CREATE;
+                dolog "$name is no longer mounted\n"      if $e->IN_UNMOUNT;
+                dolog "$name is gone\n"                   if $e->IN_IGNORED;
                 dolog "events for $name have been lost\n" if $e->IN_Q_OVERFLOW;
-                exec @rsync, $source->{$e->{w}->{name}}, $name;
+                exec @rsync, $source->{ $e->{w}->{name} }, $name;
                 warn "Can't exec: $!\n";
             }
 
-        }) or die "Can't add watch: $!\n";
+        }
+    ) or die "Can't add watch: $!\n";
 }
 
 while (1) {
@@ -146,7 +151,10 @@
 
 END {
 
-    unlink $opts{pidfile} if $opts{daemon} and defined $master and $master eq $$;
+    unlink $opts{pidfile}
+      if $opts{daemon}
+          and defined $master
+          and $master eq $$;
     dolog "exit";
     closelog;