Index: head/tools/tools/README =================================================================== --- head/tools/tools/README (revision 36251) +++ head/tools/tools/README (revision 36252) @@ -1,19 +1,20 @@ -# $Id: README,v 1.9 1997/04/25 14:14:31 wosch Exp $ +# $Id: README,v 1.10 1997/11/09 11:23:43 wosch Exp $ This directory is for tools. A tool is something which is sometimes useful, and doesn't fit any of the other categories. Please make a subdir per program, and add a brief description to this file. ifinfo Uses the interface MIB to print out all the information an interface exports in an ugly form. kernxref Shellscript to cross reference symbols in the LINT kernel. epfe extract printing filter examples from printing.sgml tcl_bmake generates a bmake Makefile for src/lib/libtcl kdrv KernelDriver; add/list/remove third-party kernel driver source to/in/from a kernel source tree. scsi-defects Get at the primary or grown defect list of a SCSI disk. portsinfo Generate list of new ports for last two weeks. html-mv Rename HTML generated filenames to human readable filenames. +mid Create a Message-ID database for mailing lists. Index: head/tools/tools/mid/mid-build =================================================================== --- head/tools/tools/mid/mid-build (nonexistent) +++ head/tools/tools/mid/mid-build (revision 36252) @@ -0,0 +1,45 @@ +#!/bin/sh +# +# Copyright (c) March 1998 Wolfram Schneider +# +# create an Message-ID, In-Reply-To look(1) index database +# + + +TMPDIR=/var/tmp; export TMPDIR +home=/g/www/mid + +dbout=$home/index +archive=$home/archive + +PATH=$home/bin:/bin:/usr/bin:/usr/local/bin; export PATH + + +all () +{ + ( cd $archive || exit 1 + find text/* -type f | mid-master-index 4 mid-index $dbout/mid + ) +} + +current () +{ + ( cd $archive || exit 1 + find current/freebsd-* current/cvs-* -type f | + mid-master-index 1 mid-index $dbout/mid-current + ) +} + +if [ $# -le 0 ]; then + echo "usage mid-build {current|all}" + exit 1 +fi + +for db +do + case $db in + current) current;; + all) all;; + *) echo "Huh? $db";; + esac +done Property changes on: head/tools/tools/mid/mid-build ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Index: head/tools/tools/mid/mid-index =================================================================== --- head/tools/tools/mid/mid-index (nonexistent) +++ head/tools/tools/mid/mid-index (revision 36252) @@ -0,0 +1,83 @@ +#!/usr/local/bin/perl +# +# create message-id / in-reply-to database +# +# $Id: mid-index,v 1.5 1998/04/13 13:08:47 wosch Exp $ + +sub usage { die "usage: mid-index name < filelist"; } + +sub id { + local($name, @files) = @_; + local($bytes, $bytes2, $headlen, $file); + local($counter); + local($from,$from2); + + $counter = 0; + open(MID, "| sort -u -o $name.mid") || die "open sort > $name.mid: $!\n"; + open(IRT, "| sort -u -o $name.irt") || die "open sort > $name.irt: $!\n"; + + while(<>) { + local($/) = "\n\n"; + chop; + $file = $_; + + open(R, $file) || do { + warn "open $file:$!\n"; + next; + }; + $bytes = 0; + + while() { + $headlen = length($_); + $from2 = substr($_, 0, 6); + $from = substr($from2, 0, 5); + + # warn "xxx" . $from . "yyy\n"; + if ($from eq "From " || $from2 eq "\nFrom ") { + + if ($from eq "From ") { + $bytes2 = $bytes; + } else { + # One bytes more for "\nFrom " + $bytes2 = $bytes + 1; + } + + $counter++; + s/\n[ \t]+/ /g; + if ($debug && $counter % $speedstep == 0) { + print STDERR sprintf("\r%7d", $counter); + } + + foreach (split("\n")) { + if (/^Message-id:\s+\<([^$idsep]+)/oi) { + print MID "$1 $file $bytes2\n"; + } elsif (/^Resent-Message-id:\s+\<([^$idsep]+)/oi) { + print MID "$1 $file $bytes2\n"; + } elsif (/^References:\s+\<([^$idsep]+)/oi) { + print IRT "$1 $file $bytes2\n"; + } elsif (/^In-Reply-to:\s+[^<]*\<([^$idsep]+)/oi) { + print IRT "$1 $file $bytes2\n"; + } + } + } + $bytes += $headlen; + } + close R; + } + close MID || warn "close: MID\n"; + close IRT || warn "close: IRT\n"; + print STDERR sprintf("\r%7d", $counter) + if $debug && $counter % $speedstep != 0; + print STDERR "\n" if $debug; +} + +$idsep = '>'; +$idsep = '>@\s'; +$debug = 0; +$speedstep = 100; + +&usage if $#ARGV != 0; +$name = $ARGV[0]; shift @ARGV; +&id($name); + + Property changes on: head/tools/tools/mid/mid-index ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Index: head/tools/tools/mid/mid-master =================================================================== --- head/tools/tools/mid/mid-master (nonexistent) +++ head/tools/tools/mid/mid-master (revision 36252) @@ -0,0 +1,33 @@ +#!/usr/local/bin/perl + +if ($#ARGV < 1) { + die "usage master counter command comandargs ... \n"; +} + +$count = $ARGV[0]; shift @ARGV; +@command = @ARGV; +$file = pop(@command); +undef @ARGV; +$debug = 0; + +for($i = 0; $i < $count; $i ++) { + @c = (@command, "$file.$i"); + warn "Start process: $i @c\n" if $debug; + open("OUT$i", "| @c") || die "open @c\n"; + select("OUT$i"); $| = 1; +} +select(STDOUT); + +$n = 0; +while(<>) { + $o = 'OUT' . ($n % $count); + print $o $_; + warn "$o $_" if $debug; + $n++ +} + +for($i = 0; $i < $count; $i ++) { + warn "Close process $i\n" if $debug; + close("OUT$i") || warn "close OUT$i: $!\n"; +} + Property changes on: head/tools/tools/mid/mid-master ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Index: head/tools/tools/mid/mid-master-index =================================================================== --- head/tools/tools/mid/mid-master-index (nonexistent) +++ head/tools/tools/mid/mid-master-index (revision 36252) @@ -0,0 +1,21 @@ +#!/bin/sh + +if [ $# -le 2 ]; then + echo "usage $0 parallel_processes command [comand_options]" + exit 1 +fi + +count=$1; shift +command=$1; shift +file=$1; shift +filelistmid=`perl -e "for(0 .. $count -1) {print qq{$file.temp.\\$_.mid }}"` +filelistirt=`perl -e "for(0 .. $count -1) {print qq{$file.temp.\\$_.irt }}"` + +if mid-master $count $command $file.temp; then + sort -u -m -o $file.temp.mid $filelistmid && + rm -f $filelistmid && mv $file.temp.mid $file.mid || exit 1 + sort -u -m -o $file.temp.irt $filelistirt && + rm -f $filelistirt && mv $file.temp.irt $file.irt || exit 1 +else + exit 1 +fi Property changes on: head/tools/tools/mid/mid-master-index ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property