# HG changeset patch # User Glenn Morris # Date 1189052622 0 # Node ID d49f27fa41ce40a0bb1ea73eec189749f366617f # Parent e7746a71b8669b1dec1af3a824ceccb90de6a570 Move here from ../../lispref diff -r e7746a71b866 -r d49f27fa41ce doc/lispref/tindex.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/lispref/tindex.pl Thu Sep 06 04:23:42 2007 +0000 @@ -0,0 +1,127 @@ +#! /usr/bin/perl + +# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, +# 2006, 2007 Free Software Foundation, Inc. +# +# This file is part of GNU Emacs. +# +# GNU Emacs is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Emacs is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Emacs; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +require 5; +use Getopt::Long; + +my $USAGE = < \$help, 'version' => \$version, + 'old=s' => \$old); +if ($version) { + print "0.1\n"; + exit 0; +} elsif (!$rc || !$old || @ARGV) { + print $USAGE; + exit 1; +} elsif ($help) { + print $USAGE; + exit 0; +} + +# Fill the hash %tindex with associations VAR -> COUNT where +# the keys VAR are identifiers mentioned in @tindex lines in the older +# files to process and COUNT is the number of times they are seen in +# the files. + +my %tindex; +my %removed; +my @old_files = glob "$old/*.texi"; +my @new_files = glob "*.texi"; +fatal ("No Texinfo files found in `$old'") unless @old_files; +fatal ("No Texinfo files found in current directory") unless @new_files; + +print "Scanning old files for \@tindex lines\n"; +foreach $file (@old_files) { + open (IN, "<$file") or fatal "Cannot open $file: $!"; + while () { + ++$tindex{$1} if /^\s*\@tindex\s+(\S+)/; + } + close IN; +} + +# Process current files and remove those @tindex lines which we +# know were already present in the files scanned above. + +print "Removing old \@tindex lines\n"; +foreach $file (@new_files) { + my $modified = 0; + my $contents = ""; + + open (IN, "< $file") or fatal "Cannot open $file.orig for reading: $!"; + while () { + if (/^\s*\@tindex\s+(\S+)/ && $tindex{$1}) { + ++$removed{$1}; + $modified = 1; + } else { + $contents = $contents . $_; + } + } + + close IN; + + if ($modified) { + print " $file\n"; + system ("cp $file $file.orig") == 0 or fatal "Cannot backup $file: $!"; + open (OUT, ">$file") or fatal "Cannot open $file for writing: $!"; + print OUT $contents; + close OUT; + } +} + +# Print a list of identifiers removed. + +print "Removed \@tindex commands for:\n"; +my $key; +foreach $key (keys %removed) { + print " $key\n"; +} + +# arch-tag: f8460df6-6bef-4c98-8555-e2c63a88b0fa