1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-08 08:58:00 +00:00

Autogenerate licence text in doc subdir from LICENCE.

Now we have licence.pl, it seems to me to make very good sense to have
it generate the Halibut form(s) of the licence and copyright year as
well as the source-code forms.

As a result, I believe _no_ copies of the licence text or copyright
date exist any more except for the master one in LICENCE - so I can
completely remove the checklist section about all the places to update
it, because there's only one. Hooray!
This commit is contained in:
Simon Tatham 2015-12-22 11:18:48 +00:00
parent 9ddd071ec2
commit 774d37a0dc
6 changed files with 72 additions and 64 deletions

1
.gitignore vendored
View File

@ -81,6 +81,7 @@
/doc/*.hhp
/doc/*.hhc
/doc/*.hhk
/doc/licence.but
/icons/*.png
/icons/*.ico
/icons/*.icns

View File

@ -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
---------------------------

View File

@ -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))

View File

@ -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.

View File

@ -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.

View File

@ -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;
}