summaryrefslogtreecommitdiff
path: root/rc/bin/C
diff options
context:
space:
mode:
Diffstat (limited to 'rc/bin/C')
-rwxr-xr-xrc/bin/C66
1 files changed, 66 insertions, 0 deletions
diff --git a/rc/bin/C b/rc/bin/C
new file mode 100755
index 000000000..b8e8da0c3
--- /dev/null
+++ b/rc/bin/C
@@ -0,0 +1,66 @@
+#!/bin/rc
+# C system - connect to system's console
+rfork en
+oflag=()
+opt=-r
+while(~ $1 -*)
+ switch($1){
+ case -r
+ shift
+ opt=''
+ case -O -o
+ oflag=-O
+ shift
+ case *
+ opt=-r
+ shift
+ }
+
+switch($1){
+case ella
+ exec C office0
+ exit
+case erika
+ exec C office1
+ exit
+case *
+ # look for server in /lib/ndb
+ server=`{ndb/query sys $1 console}
+ switch($server){
+ case ''
+ echo C: unknown console server for $1
+ exit 1
+ }
+}
+
+# can't cpu to old servers any more
+switch($server){
+case dinar bones
+ ssh $server C $1
+ exit 0
+}
+
+if(! test -e /mnt/consoles/$1){
+ switch($sysname){
+ case $server
+ mount /srv/consoles /mnt/consoles
+ case *
+ import $oflag $server /mnt/consoles
+ }
+}
+
+if(! test -e /mnt/consoles/$1 && test -e /srv/consoles)
+ mount /srv/consoles /mnt/consoles
+
+if(! test -e /mnt/consoles/$1){
+ echo console not found
+ exit 'console not found'
+}
+
+if (test -w /dev/label) {
+ olab=`{cat /dev/label}
+ label $1
+}
+con -l $opt /mnt/consoles/$1
+if (test -w /dev/label)
+ label $olab