#!/bin/rc
# Default program to assign role to machines (screens actually).
# This is expected to be customized by each user.
# 1. cpu servers are always "server"
# 2. machines with role "main" retain it while colocated with user, and
# become "remote" otherwise.
# 3. The terminal with biggest screen colocated with user is "primary"
# 4. Other terminals colocated with the user are "other"
# 5. Remote terminals are "remote"
if (~ $#1 0)
m=$sysname
if not
m=$1
rfork ne
if (test -e /what/$m/role && grep server /what/$m/role >/dev/null){
echo server
exit ''
}
if (test -r /who/$user/where)
loc=`{cat /who/$user/where}
if not
loc=$location
# lterms are terminals collocated with user sorted by vgasize.maxx
terms=`{env/terms}
lterms=`{
@{ for (term in $terms){
if (test -e /what/$term/vgasize && test -e /what/$term/where)
if (~ `{cat /what/$term/where} $loc)
echo `{cat /what/$term/vgasize} $term
} } | sort +2nr | sed 's/.* //'
}
if (~ $#lterms 0 || { echo $lterms | grep -v $m >/dev/null})
echo remote
if not {
if (~ $lterms(1) $m)
echo primary
if not {
if (grep main /what/$m/role >/dev/null)
echo main
if not
echo other
}
}
exit ''
echo $role
exit ''
|