diff --git a/.gitignore b/.gitignore index df31c030..b46d2de7 100644 --- a/.gitignore +++ b/.gitignore @@ -81,6 +81,7 @@ /doc/*.hhp /doc/*.hhc /doc/*.hhk +/doc/licence.but /icons/*.png /icons/*.ico /icons/*.icns diff --git a/CHECKLST.txt b/CHECKLST.txt index 034f5708..35de3368 100644 --- a/CHECKLST.txt +++ b/CHECKLST.txt @@ -1,23 +1,6 @@ Checklists for PuTTY administrative procedures ============================================== -Locations of the licence ------------------------- - -The PuTTY copyright notice and licence are stored in multiple -places. At the start of a new year, the copyright year needs -updating in all of them; and when someone sends a massive patch, -their name needs adding in all of them too. - -The LICENCE file in the main source distribution: - - - putty/LICENCE - -The documentation (both the preamble blurb and the licence appendix): - - - putty/doc/blurb.but - - putty/doc/licence.but - Preparing to make a release --------------------------- diff --git a/doc/Makefile b/doc/Makefile index 0477cb30..e7bf287e 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -34,8 +34,8 @@ else VERSIONIDS=vids endif -CHAPTERS := $(SITE) blurb intro gs using config pscp psftp plink pubkey -CHAPTERS += pageant errors faq feedback licence udp pgpkeys sshnames +CHAPTERS := $(SITE) copy blurb intro gs using config pscp psftp plink +CHAPTERS += pubkey pageant errors faq feedback licence udp pgpkeys sshnames CHAPTERS += index $(VERSIONIDS) INPUTS = $(patsubst %,%.but,$(CHAPTERS)) diff --git a/doc/blurb.but b/doc/blurb.but index d04c4ddb..4e3ccf71 100644 --- a/doc/blurb.but +++ b/doc/blurb.but @@ -31,6 +31,6 @@ features not described here; and the \i\cw{pterm} and command-line Unix-specific documentation that currently exists is the \I{man pages for PuTTY tools}man pages. -\copyright This manual is copyright 2001-2015 Simon Tatham. All +\copyright This manual is copyright \shortcopyrightdetails. All rights reserved. You may distribute this documentation under the MIT licence. See \k{licence} for the licence text in full. diff --git a/doc/licence.but b/doc/licence.but deleted file mode 100644 index 333a9192..00000000 --- a/doc/licence.but +++ /dev/null @@ -1,27 +0,0 @@ -\A{licence} PuTTY \ii{Licence} - -PuTTY is \i{copyright} 1997-2015 Simon Tatham. - -Portions copyright Robert de Bath, Joris van Rantwijk, Delian -Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry, -Justin Bradford, Ben Harris, Malcolm Smith, Ahmad Khalifa, Markus -Kuhn, Colin Watson, Christopher Staite, and CORE SDI S.A. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation files -(the \q{Software}), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED \q{AS IS}, WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/licence.pl b/licence.pl index 12d38a55..e1d3a51f 100644 --- a/licence.pl +++ b/licence.pl @@ -2,24 +2,14 @@ # This script generates licence.h (containing the PuTTY licence in the # form of macros expanding to C string literals) from the LICENCE -# master file. +# master file. It also regenerates the licence-related Halibut input +# files. use File::Basename; +# Read the input file. $infile = "LICENCE"; -$outfile = "licence.h"; open my $in, $infile or die "$infile: open: $!\n"; -open my $out, ">", $outfile or die "$outfile: open: $!\n"; -select $out; - -print "/*\n"; -print " * $outfile - macro definitions for the PuTTY licence.\n"; -print " *\n"; -print " * Generated by @{[basename __FILE__]} from $infile.\n"; -print " * You should edit those files rather than editing this one.\n"; -print " */\n"; -print "\n"; - my @lines = (); while (<$in>) { chomp; @@ -41,6 +31,25 @@ for my $line (@lines) { } } +# Get the copyright years and short form of copyright holder. +die "bad format of first paragraph\n" + unless $paras[0] =~ m!copyright ([^\.]*)\.!i; +$shortdetails = $1; + +# Write out licence.h. + +$outfile = "licence.h"; +open my $out, ">", $outfile or die "$outfile: open: $!\n"; +select $out; + +print "/*\n"; +print " * $outfile - macro definitions for the PuTTY licence.\n"; +print " *\n"; +print " * Generated by @{[basename __FILE__]} from $infile.\n"; +print " * You should edit those files rather than editing this one.\n"; +print " */\n"; +print "\n"; + print "#define LICENCE_TEXT(parsep) \\\n"; for my $i (0..$#paras) { my $lit = &stringlit($paras[$i]); @@ -51,10 +60,7 @@ for my $i (0..$#paras) { } print "\n"; -die "bad format of first paragraph\n" - unless $paras[0] =~ m!copyright ([^\.]*)\.!i; - -printf "#define SHORT_COPYRIGHT_DETAILS \"%s\"\n", &stringlit($1); +printf "#define SHORT_COPYRIGHT_DETAILS \"%s\"\n", &stringlit($shortdetails); sub stringlit { my ($lit) = @_; @@ -62,3 +68,48 @@ sub stringlit { $lit =~ s!"!\\"!g; return $lit; } + +close $out; + +# Write out doc/licence.but. + +$outfile = "doc/licence.but"; +open $out, ">", $outfile or die "$outfile: open: $!\n"; +select $out; + +print "\\# Generated by @{[basename __FILE__]} from $infile.\n"; +print "\\# You should edit those files rather than editing this one.\n\n"; + +print "\\A{licence} PuTTY \\ii{Licence}\n\n"; + +for my $i (0..$#paras) { + my $para = &halibutescape($paras[$i]); + if ($i == 0) { + $para =~ s!copyright!\\i{copyright}!; # index term in paragraph 1 + } + print "$para\n\n"; +} + +close $out; + +# And write out doc/copy.but, which defines a macro used in the manual +# preamble blurb. + +$outfile = "doc/copy.but"; +open $out, ">", $outfile or die "$outfile: open: $!\n"; +select $out; + +print "\\# Generated by @{[basename __FILE__]} from $infile.\n"; +print "\\# You should edit those files rather than editing this one.\n\n"; + +printf "\\define{shortcopyrightdetails} %s\n\n", + &halibutescape($shortdetails); + +close $out; + +sub halibutescape { + my ($text) = @_; + $text =~ s![\\{}]!\\$&!g; # Halibut escaping + $text =~ s!"([^"]*)"!\\q{$1}!g; # convert quoted strings to \q{} + return $text; +}