+
+sub read_root_pgn {
+ my @pgnnames;
+ open my $pgnnamesfh, "<", "../pgnnames.txt"
+ or die "../pgnnames.txt: $!";
+ while (<$pgnnamesfh>) {
+ chomp;
+ push @pgnnames, $_;
+ warn "PGN name: $_";
+ }
+ close $pgnnamesfh;
+
+ if ($pgn_file_number > $#pgnnames) {
+ die "Unknown PGN file number $pgn_file_number";
+ }
+
+ my $root_pgn;
+ open my $pgnfh, "<", "../" . $pgnnames[$pgn_file_number]
+ or die $pgnnames[$pgn_file_number] . ": $!";
+ sysseek($pgnfh, $pgn_start_position, 0)
+ or die "Could not seek to $pgn_start_position: $!";
+ sysread($pgnfh, $root_pgn, 32768)
+ or die "Could not read PGN from $pgn_start_position at $pgnnames[$pgn_file_number]: $!";
+ close $pgnfh;
+ $root_pgn =~ s/^.*?(\[Event )/$1/s;
+ $root_pgn =~ s/^(.+?)\[Event .*/$1/s;
+
+ return $root_pgn;
+}