From 0e3cd15d80f32f4ea6eec64bd46c1c452d61942e Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Tue, 23 Jun 2015 18:40:53 +0000 Subject: [PATCH] 98_backup.pm: execute in the background if called from FHEMWEB to avoid double execution git-svn-id: https://svn.fhem.de/fhem/trunk@8810 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_backup.pm | 12 ++++++++---- fhem/fhem.pl | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/fhem/FHEM/98_backup.pm b/fhem/FHEM/98_backup.pm index ad717aa4d..53ade05d8 100644 --- a/fhem/FHEM/98_backup.pm +++ b/fhem/FHEM/98_backup.pm @@ -29,7 +29,7 @@ use warnings; sub CommandBackup($$); sub parseConfig($); sub readModpath($$); -sub createArchiv($); +sub createArchiv($$); my @pathname; @@ -96,7 +96,7 @@ CommandBackup($$) $ret = readModpath($modpath,$backupdir); # create archiv - $ret = createArchiv($backupdir); + $ret = createArchiv($backupdir, $cl); @pathname = []; undef @pathname; @@ -159,9 +159,9 @@ readModpath($$) } sub -createArchiv($) +createArchiv($$) { - my $backupdir = shift; + my ($backupdir,$cl) = @_; my $backupcmd = (!defined($attr{global}{backupcmd}) ? undef : $attr{global}{backupcmd}); my $symlink = (!defined($attr{global}{backupsymlink}) ? "no" : $attr{global}{backupsymlink}); my $tarOpts; @@ -188,6 +188,10 @@ createArchiv($) } Log 2, "Backup with command: $cmd"; + if($cl && ref($cl) eq "HASH" && $cl->{TYPE} && $cl->{TYPE} eq "FHEMWEB") { + system("($cmd; echo Backup done) 2>&1 &"); + return "Started the backup in the background, watch the log for details"; + } $ret = `($cmd) 2>&1`; if($ret) { diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 90914ea3d..98e65c1b2 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -1189,7 +1189,7 @@ OpenLogfile($) $defs{global}{logfile} = $attr{global}{logfile}; open(LOG, ">>$currlogfile") || return("Can't open $currlogfile: $!"); - redirectStdinStdErr() if($init_done); + redirectStdinStdErr(); } LOG->autoflush(1);