X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=licence.pl;h=e1d3a51f95bde03964431f75d65c14238a02dfbc;hb=d33d8d72ad936ae05ca1b5ecb55b129bf3d4b9f1;hp=12d38a559fc684a9ea30eb0a5d666df661c4bfe6;hpb=9ddd071ec28050b3be572f25f3ae7d44e46e4039;p=PuTTY.git 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; +}