#!/usr/bin/perl -- # -*- Mode: perl; indent-tabs-mode: nil -*- # # The contents of this file are subject to the Netscape Public # License Version 1.1 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at http://www.mozilla.org/NPL/ # # Software distributed under the License is distributed on an "AS # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or # implied. See the License for the specific language governing # rights and limitations under the License. # # The Original Code is the Tinderbox build tool. # # The Initial Developer of the Original Code is Netscape Communications # Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # # Contributor(s): use strict; use Fcntl qw(:flock); require 'tbglobals.pl'; require 'showbuilds.pl'; # Process the form arguments my %form = &split_cgi_args(); my %cookie_jar = &split_cookie_args(); my ($args, $tree, $logfile, $errorparser, $buildname, $buildtime); if (defined($args = $form{log})) { # Use simplified arguments that uses the logfile as a key. ($tree, $logfile) = split /\//, $args; $tree = &require_only_one_tree($tree); my $br = tb_find_build_record($tree, $logfile); $errorparser = $br->{errorparser}; $buildname = $br->{buildname}; $buildtime = $br->{buildtime}; } else { # Use old style arguments; $tree = &require_only_one_tree($form{tree}); $logfile = $form{logfile}; $errorparser = $form{errorparser}; $buildname = $form{buildname}; $buildtime = $form{buildtime}; } print "Content-Type:text/html\n"; # Remember email address in cookie # if (defined $ENV{REQUEST_METHOD} and $ENV{REQUEST_METHOD} eq 'POST' and defined $form{note}) { # Expire the cookie 5 months from now print "Set-Cookie: email=$form{who}; expires=" . toGMTString(time + 86400 * 152) . "; path=/\n"; } print "\n\n"; if ($form{note}) { # Form Submission. # Add the comment. my $note = $form{note}; my $who = $form{who}; $note =~ s/\&/&/gi; $note =~ s/\/>/gi; my $enc_note = url_encode($note); my $now = time; # Save comment to the notes.txt file. # my $err = 0; open NOTES, ">>", "$tree/notes.txt" or $err++; if ($err) { print "Error\n"; print "

Could not open $tree/notes.txt for writing.

\n"; print "

Please contact the webmaster.

\n"; die "Could not open $tree/notes.txt for writing.\n"; } flock NOTES, LOCK_EX; print NOTES "$buildtime|$buildname|$who|$now|$enc_note\n"; # Find the latest times for the "other" trees my (%quickdata); tb_loadquickparseinfo($tree, $form{maxdate}, \%quickdata, 1); foreach my $element (keys %form) { # The checkboxes for the builds have "NAME" set to the build name if (defined $quickdata{$element}->{buildtime}) { print NOTES "$quickdata{$element}->{buildtime}|$element|$who|$now|$enc_note\n"; } } close NOTES; # Give a confirmation # print "

The following comment has been added to the log

\n"; print "
\n[$who - ".print_time($now)."]\n$note\n
"; my $enc_buildname = url_encode($buildname); print "

" ."Go back to the Error Log
" ."Go back to the build Page"; # Rebuild the static tinderbox pages my %new_form = (); $new_form{tree} = $tree; &tb_build_static(\%new_form); } else { # Print the form to submit a comment if ($buildname eq '' or $buildtime == 0) { print "

Invalid parameters

\n"; die "\n"; } # Retrieve the email address from the cookie jar. # my $emailvalue = ''; $emailvalue = " value='$cookie_jar{email}'" if defined $cookie_jar{email}; print <<__END_FORM; Add a Comment to $buildname log
Add a Log Comment
$buildname
Email address:
Comment:

Additional Builds
(Comment will be added to the most recent cycle.)
__END_FORM # Find the names of the "other" trees my (%quickdata); tb_loadquickparseinfo($tree, $form{maxdate}, \%quickdata); my $ignore_builds = &tb_load_ignorebuilds($tree); # Add a checkbox for the each of the other builds for my $other_build_name (sort keys %quickdata) { if ($other_build_name ne '' and $other_build_name ne $buildname and not $ignore_builds->{$other_build_name}) { print ""; print "$other_build_name
\n"; } } print "
"; print "
\n\n"; }