📄 map
字号:
# 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($xx) @map.links[$senc][servers] = uniq($map.links[$senc][servers]) if (numwords($map.links[$map.encode($xx)][servers]) > 1) { @push(map.links.hubs $xx) } } # sort our hubs by distance in hops @:hops = 0 @:newlist = [] while (sort($newlist) != sort($map.links.hubs)) { @:new = [] for xx in ($map.links.hubs) { if (map.links[$map.encode($xx)][hops] == hops) { @push(:new $xx) } } if (new != []) { @push(:newlist $new) } @:hops++ } @map.links.hubs = newlist $* fe ($aliasctl(assign pmatch map.links*)) xx { ^assign -$xx }}alias map (server) { if (serverctl(GET $servernum() 005 MAP) != [] && server == []) { quote map return } map.retrieve_links map.exec $server}### this displays a single branch of a map. I changed this alias slightly (to### make it work properly) after observing the way Liandrin's script worked.alias map.map_branch (server, prefix) { @push(map.links.seen $server) @:senc = map.encode($server) echo [map] $prefix$server \($map.links[$senc][hops] $map.links[$senc][info]\) @:servers = remws($map.links.seen / $map.links[$senc][servers]) if (numwords($servers) == 0) { return } @:prefix = msar(/`-/ /-/ /$prefix) for xx in ($servers) { if (xx == rightw(1 $servers)) { map.map_branch $xx $prefix`- } else { map.map_branch $xx $prefix|- } }}alias map.exec (server) { if (server == []) { @:server = builtin_expando(S) } if (findw($server $map.links.all) == -1) { aerrecho server $server does not appear to be online return } map.map_branch $server} ### vi:set ts=8 sts=4 sw=4 tw=79 syntax=off ai smartindent:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -