# map script.  lifted from anduril by wd.
# this script is in the public domain

# $Id: map,v 1.1 2002/07/31 23:39:35 wd Exp $

# here's how it works.  we retrieve links from the server using a /links
# command.  we then sort them out into an array as below, and then iterate
# over the array to generate the map.  on servers with 005 support and the
# map token, we simply use their map command unless mapping from a specific
# server is requested.

alias map.encode {return $encode($tolower($*))}

alias map.retrieve_links {
    ^on ^364 * {
	@:client = [$1]
	@:hub = [$2]
	@:hops = [$3]
	@:gecos = [$4-]

	@map.links.all #= [$client ]
	@:henc = map.encode($hub)
	@:cenc = map.encode($client)
	@map.links[$cenc][hub] = hub
	@map.links[$cenc][hops] = hops
	@map.links[$cenc][info] = gecos
	if (hops == 0) {
	    return
	}

	@push(map.links[$cenc][servers] $hub)
	@push(map.links[$henc][servers] $client)
    }
    ^eval on ^365 "*" map.finish_links $*
    //^links
}

alias map.finish_links {
    ^on 364 -"*"
    ^on 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"
    for xx in ($map.links.all) {
	@:senc = map.encode($ 365 -"*"