: # *-*-perl-*-* eval 'exec perl -S $0 "$@"' if $running_under_some_shell; # # RFC.sum - Summarizes an ASCII Request for Comments # # RFC.sum,v 1.5 1995/09/05 20:17:29 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); open(IN, "< $ARGV[0]") || die "Cannot open $ARGV[0]: $!"; while () { process_header($_), last if (/^Network Working Group/o); } while () { $_ = add_section("Abstract") if (/^abstract/io); $_ = add_section("Table-of-Contents") if (/^table\s+of\s+content/io); } close(IN); foreach $k (sort keys %values) { print $k , "{" , length($values{$k}) , "}:\t"; print "$values{$k}\n"; } exit(0); # END OF PROGRAM sub add_section { local($attribute) = @_; while () { last if (/^\S+/o); $values{$attribute} .= $_; } return $_; } sub add_line { local($attribute, $line) = @_; $values{$attribute} .= $line . "\n"; } sub usage { print STDERR "Usage: RFC.sum file\n"; exit(1); } sub process_header { local($top_line) = @_; $top_line =~ s/^.*Network Working Group\s+//; $rightcol = $top_line . "\n"; # Read in the header information while () { last if (/^\s+$/o); # clear line if (/^Request for Comments:\s+(\d+)\s+(.*)$/o) { $values{"RFC-Number"} = $1; $rightcol .= $2 . "\n"; } elsif (/^Category:/o) { s/^Category:\s+//; if (/^(\w+)\s(\w+)\s+(.*)$/o) { $values{"RFC-Category"} = $1 . " " . $2; $rightcol .= $3 . "\n"; } elsif (/^(\w+)\s+(.*)$/o) { $values{"RFC-Category"} = $1; $rightcol .= $2 . "\n"; } } elsif (/^Obsoletes:\s+(\d+)\s+(.*)$/o) { $values{"RFC-Obsoletes"} = $1; $rightcol .= $2 . "\n"; } elsif (/^\s+(.*)$/o) { $rightcol .= $1 . "\n"; } elsif (/^\S+/o) { ($l, $r) = split(/\s{2,}/); $rightcol .= "\n". $r; } } $rightcol =~ s/\s+$//; # strip tailing whitespace die "Unknown RFC format: $ARGV[0]" if (!$rightcol); @rcol = split(/\n/, $rightcol); $values{"RFC-Date"} = $rcol[$#rcol]; $rcol[$#rcol] = ""; $values{"Author"} = join("\n", @rcol); # Clear until title while () { last if (/\S+/o); # data on the line } $values{"Title"} = $_; # Read in title while () { last if (/^\s+$/o); # clear line $values{"Title"} .= $_; } }