: # *-*-perl-*-* eval 'exec perl -S $0 "$@"' if $running_under_some_shell; # # Troff-generic.sum - generate a summary of a raw troff file # # Darren Hardy, hardy@cs.colorado.edu, March 1994 # # Troff-generic.sum,v 1.6 1995/09/05 20:17:38 hardy Exp # ####################################################################### # # Copyright (c) 1994, 1995. All rights reserved. # # The Harvest software was developed by the Internet Research Task # Force Research Group on Resource Discovery (IRTF-RD): # # Mic Bowman of Transarc Corporation. # Peter Danzig of the University of Southern California. # Darren R. Hardy of the University of Colorado at Boulder. # Udi Manber of the University of Arizona. # Michael F. Schwartz of the University of Colorado at Boulder. # Duane Wessels of the University of Colorado at Boulder. # # This copyright notice applies to software in the Harvest # ``src/'' directory only. Users should consult the individual # copyright notices in the ``components/'' subdirectories for # copyright information about other software bundled with the # Harvest source code distribution. # # TERMS OF USE # # The Harvest software may be used and re-distributed without # charge, provided that the software origin and research team are # cited in any use of the system. Most commonly this is # accomplished by including a link to the Harvest Home Page # (http://harvest.cs.colorado.edu/) from the query page of any # Broker you deploy, as well as in the query result pages. These # links are generated automatically by the standard Broker # software distribution. # # The Harvest software is provided ``as is'', without express or # implied warranty, and with no support nor obligation to assist # in its use, correction, modification or enhancement. We assume # no liability with respect to the infringement of copyrights, # trade secrets, or any patents, and are not responsible for # consequential damages. Proper use of the Harvest software is # entirely the responsibility of the user. # # DERIVATIVE WORKS # # Users may make derivative works from the Harvest software, subject # to the following constraints: # # - You must include the above copyright notice and these # accompanying paragraphs in all forms of derivative works, # and any documentation and other materials related to such # distribution and use acknowledge that the software was # developed at the above institutions. # # - You must notify IRTF-RD regarding your distribution of # the derivative work. # # - You must clearly notify users that your are distributing # a modified version and not the original Harvest software. # # - Any derivative product is also subject to these copyright # and use restrictions. # # Note that the Harvest software is NOT in the public domain. We # retain copyright, as specified above. # # HISTORY OF FREE SOFTWARE STATUS # # Originally we required sites to license the software in cases # where they were going to build commercial products/services # around Harvest. In June 1995 we changed this policy. We now # allow people to use the core Harvest software (the code found in # the Harvest ``src/'' directory) for free. We made this change # in the interest of encouraging the widest possible deployment of # the technology. The Harvest software is really a reference # implementation of a set of protocols and formats, some of which # we intend to standardize. We encourage commercial # re-implementations of code complying to this set of standards. # # &usage() if ($#ARGV != 0); $file = shift(@ARGV); &usage() if ($file eq ""); undef %values; # # Read in the values array # open(INPUT, "< $file") || die "Cannot read $file"; while () { next if (/^[\.']+\\\"/o); &grab_line("Partial-Text"), next if (/^\.ce/o); &grab_line("Partial-Text"), next if (/^\.(pp|lp)/io); } close(INPUT); # # Print the formmated values array # foreach $k (sort keys %values) { $values{$k} =~ s/\\[\*fs].//g; # remove in-line troff $values{$k} =~ s/\\.//g; # remove in-line troff print "$k" , "{" , length($values{$k}) , "}:\t"; print $values{$k}; print "\n"; } exit(0); sub usage { print STDERR "Usage: Troff-generic.sum filename\n"; exit(1); } # grab_line uses the next input line that isn't a troff directive sub grab_line { local($tag) = @_; while () { next if (/^\.\w+/o); s/"//g; $values{$tag} .= $_; last; } } # grab_para uses all of the input until a paragraph break sub grab_para { local($tag) = @_; $npara = 0; while () { next if (/^\.(iX|so)/o); # skip garbage next if (/^\.(PP|LP)/o && $npara++ == 0); last if (/^\.(np|bu|bp|pp|lp|ip)/io || $npara > 1); $values{$tag} .= $_; } } # grab_sect uses all of the input until the line starts with $end sub grab_sect { local($tag, $end) = @_; while () { last if (/^$end/); $values{$tag} .= $_; } } # grab associates $in with $tag sub grab { local($tag, $in) = @_; $values{$tag} .= $in . "\n"; }