Current Path : /compat/linux/proc/68247/root/usr/local/bin/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //compat/linux/proc/68247/root/usr/local/bin/vfnmz |
#! /usr/local/bin/perl -w # -*- Perl -*- # # vfnmz - program to preview search result with NMZ.field.* and NMZ.result.* # # Copyright (C) 1999 Satoru Takabayashi All rights reserved. # Copyright (C) 2001-2004 Namazu Project All rights reserved. # This is free software with ABSOLUTELY NO WARRANTY. # use strict; my $INDEX = undef; my $RESULT = "NMZ.result.normal"; my %FIELD_ALIASES = ('title' => 'subject', 'author' => 'from'); sub compose($$); if (@ARGV == 0) { print <<EOFusage; usage: vfnmz <index> [NMZ.result.foobar] EOFusage exit(1); } if (defined($ARGV[0])) { $INDEX = $ARGV[0]; } if (defined($ARGV[1])) { $RESULT = $ARGV[1]; } $RESULT = "$INDEX/$RESULT" unless $RESULT =~ m!/!; open(RESULT, "$RESULT") || die "$! : $RESULT\n"; chdir $INDEX; print <<EOM; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <HTML> <HEAD> <TITLE>$INDEX</TITLE> </HEAD> <BODY LANG="ja"> <H1>$INDEX</H1> <HR> <DL> EOM my $template = join '', <RESULT>; my $num = (-s "NMZ.t") / 4; for (my $i = 0; $i < $num; $i++) { my $composed = compose($template, $i); print $composed; } sub compose($$) { my ($template, $idx) = @_; $template =~ s/\$\{([\w:]+)\}/getfield($1, $idx)/ge; return $template; } sub getfield($$) { my ($field, $idx) = @_; my $buf = undef; if ($field =~ /namazu::counter/) { return $idx; } elsif ($field =~ /:/) { return "???"; } my $aliases_regex = join('|', sort {length($b) <=> length($a)} keys %FIELD_ALIASES); if ($field =~ /^($aliases_regex)$/o) { $field = $FIELD_ALIASES{$field}; } open(FIELD, "NMZ.field.$field") || die "$! : NMZ.field.$field\n"; open(FIDX, "NMZ.field.$field.i") || die "$! : NMZ.field.$field.i\n"; seek(FIDX, $idx * 4, 0); read(FIDX, $buf, 4); my $ptr = unpack "N", $buf; seek(FIELD, $ptr, 0); my $line = <FIELD>; chomp $line; $line =~ s/&/&/g; # & should be processed first $line =~ s/</</g; $line =~ s/>/>/g; close(FIELD); close(FIDX); return $line; } print <<EOM; </DL> <HR> <P> (bottom) </P> </BODY> </HTML> EOM close(RESULT);