aboutsummaryrefslogtreecommitdiffstats
path: root/CVSROOT/logcheck
diff options
context:
space:
mode:
Diffstat (limited to 'CVSROOT/logcheck')
-rwxr-xr-xCVSROOT/logcheck71
1 files changed, 71 insertions, 0 deletions
diff --git a/CVSROOT/logcheck b/CVSROOT/logcheck
new file mode 100755
index 00000000000..eaa9cdf8294
--- /dev/null
+++ b/CVSROOT/logcheck
@@ -0,0 +1,71 @@
+#! /usr/bin/perl
+#
+# $Id$
+#
+# This hack is to sanitise the results of what the user may have
+# "done" while editing the commit log message.. :-) Peter Wemm.
+#
+# Note: this uses an enhancement to cvs's verifymsg functionality.
+# Normally, the check is advisory only, the FreeBSD version reads
+# back the file after the verifymsg file so that this script can
+# can make changes.
+#
+
+if (!@ARGV) {
+ die "Usage: logcheck filename\n";
+}
+$filename = $ARGV[0];
+$tmpfile = $filename . "tmp";
+
+open(IN, "< $filename") ||
+ die "cvsedit: Cannot open for reading: $filename: $!\n";
+
+open(OUT, "> $tmpfile") ||
+ die "cvsedit: Cannot open for writing: $tmpfile: $!\n";
+
+# In-place edit the result of the user's edit on the file.
+$blank = 0; # true if the last line was blank
+$first = 0; # true if we have seen the first real text
+while(<IN>) {
+
+ # Dont let CVS: lines upset things, strip them out.
+ if (/^CVS:/) {
+ next;
+ }
+
+ chop; # strip trailing newline
+ s/[\s]+$//; # strip trailing whitespace
+
+ # collapse multiple blank lines, and trailing blank lines.
+ if (/^$/) {
+ # Blank line. Remember in case more text follows.
+ $blank = 1;
+ next;
+ } else {
+ # Delete if they only have whitespace after them.
+ if (/^Reviewed by:$/i ||
+ /^Submitted by:$/i ||
+ /^Obtained from:$/i ||
+ /^PR:$/i) {
+ next;
+ }
+ if ($blank && $first) {
+ # Previous line(s) was blank, this isn't. Close the
+ # collapsed section.
+ print OUT "\n";
+ }
+ $blank = 0; # record non-blank
+ $first = 1; # record first line
+ print OUT "$_\n";
+ }
+}
+close(IN);
+close(OUT);
+
+unlink($filename . "~"); # Nuke likely editor backups..
+unlink($filename . ".bak"); # Nuke likely editor backups..
+
+rename("$tmpfile", "$filename") ||
+ die("logcheck: Could not rename $tmpfile to $filename: $!");
+
+exit(0);