incorporating net.news.map into path databases
Oscar M. Nierstrasz
oscar at utcsrgv.UUCP
Fri Dec 23 07:23:14 AEST 1983
# I included an ed script called 'edmap' with the
# path program a few articles ago. The following
# awk script should work much better. It will
# extract mail and news connections in net.news.map
# and produce a graphfile for use by the path program.
echo MAPINFO
sed 's/^ //' > MAPINFO << 'Rosebud'
The file mkgf replaces edmap. It can be used to convert USENET maps in
net.news.map to adjaceny lists or edge lists. Use the shell script
maps to find out which articles contain USENET maps. Then run mkgf in
a /tmp directory containing map.awk, ae.awk and ea.awk. It produces
.gf and .ef files containing adjacency lists and edge lists,
respectively. These may be merged with your existing graphfile in the
usual way (place ef in net/map/more and run "make pathfile").
Rosebud
echo maps
sed 's/^ //' > maps << 'Rosebud'
: maps
# Lists subject headings of net.news.map articles.
# Used to identify latest USENET maps.
cd /usr/spool/news/net/news/map
for i in *
do
head $i | sed "s/^/$i: /" | fgrep Subject
done
Rosebud
echo mkgf
sed 's/^ //' > mkgf << 'Rosebud'
: mkgf article ...
# Converts USENET maps to adjacency lists.
# The arguments are net.news.map articles containing
# USENET maps. Use 'maps' to find these.
# Warning: there may be junk left undetected by map.awk.
# Check the *.gf files for leftover garbage.
# The *.gf files are graph files of adjacency lists
# and the *.ef files are edge files.
# The awk files map.awk, ae.awk and ea.awk must be present.
map=/usr/spool/news/net/news/map
for i
do
awk -f map.awk $map/$i > $i.gf
echo $i.gf
awk -f ae.awk $i.gf | sort -u > $i.ef
echo $i.ef
done
sort -mu *.ef > ef
echo ef
awk -ea.awk ef > gf
echo gf
Rosebud
echo map.awk
sed 's/^ //' > map.awk << 'Rosebud'
/^Name:/ { printf "%s ", $2 }
/^News:/,/^$|^Comments:|^!Funky!Stuff!/ {
if (NF > 0) {
if ($1 ~ /^Comments:|^!Funky!Stuff!/)
print "}"
else {
if ($1 ~ /^News:/) {
$1 = "{"
print $0
}
else if ($1 ~ /^Mail:/) {
$1 = ""
if (NF > 1)
print $0
}
else print $0
}
}
else print "}"
}
Rosebud
--
# UUCP: { allegra cornell decvax decwrl floyd ihnp4 linus
# sask ubc-vision utzoo uw-beaver watmath } !utcsrgv!oscar
More information about the Comp.sources.unix
mailing list