:
# draw directory tree
tw -P -e "
begin: printf('.GR 7.5 10.0 fill\n');
end: printf('.GE\n');
action: if (type == LNK)
{
status = FOLLOW;
local = 1;
}
else
{
printf('draw n%d_%ld_%d as ', dev, ino, visit);
if (local) printf('Diamond');
else if (type == NS) printf('Plaintext');
else if (type == DIR) printf('Ellipse');
else printf('Box');
printf(' label \"%s\";\n', name);
if (level > 0) printf('edge from n%d_%ld_0 to n%d_%ld_%d;\n',
parent.dev, parent.ino, dev, ino, visit);
if (visit > level)
{
if (visit == level + 1)
printf('same rank n%d_%ld_%d n%d_%ld_0;\n',
dev, ino, dev, ino, visit);
printf('%sedge from n%d_%ld_%d to n%d_%ld_0 dotted;\n',
(visit > level + 1) ? '' : 'back',
dev, ino, dev, ino, visit);
}
}
" "$@"