From dd36d5ab2befb21dbf095121472b51b946e10ee9 Mon Sep 17 00:00:00 2001 From: "Leigh B. Stoller" Date: Tue, 25 Sep 2007 13:29:36 +0000 Subject: [PATCH] Fix up the logname creation to work when there is a log file from a previous attempt. --- tbsetup/Template.pm.in | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/tbsetup/Template.pm.in b/tbsetup/Template.pm.in index 65997c4a9..dd185813e 100644 --- a/tbsetup/Template.pm.in +++ b/tbsetup/Template.pm.in @@ -463,18 +463,32 @@ sub CreateLogFile($$$) my $pid = $self->pid(); my $projroot = PROJROOT(); my $logdir = "$projroot/$pid/templates/logs"; - my $logname = "$logdir/$prefix.${guid}-${vers}.log"; - - return -1 - if (-e $logname); + my $linkname = "$logdir/$prefix.${guid}-${vers}.log"; return -1 if (! -d $logdir && !mkdir($logdir, 0775)); + my $logname = `mktemp $logdir/$prefix.${guid}-${vers}.XXXXXX`; + + if ($logname =~ /^([-\@\w\.\/]+)$/) { + $logname = $1; + } + else { + return -1; + } + + if (-e $linkname) { + return -1 + if (! unlink($linkname)); + } Template::mysystem("touch $logname") == 0 or return -1; - - $$ppath = $logname; + + if (! link($logname, $linkname)) { + print STDERR "*** Cannot link $logname,$linkname: $!\n"; + return -1; + } + $$ppath = $linkname; return 0; } -- GitLab