diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 16:49:47 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 16:49:47 +0300 |
commit | b41b9034225ab3e49980d9de55c141011b6383b0 (patch) | |
tree | 891014b4c2e803e01ac7a1fd2b60819fbc5a6e73 /sys/man/1/rwd | |
parent | c558a99e0be506a9abdf677f0ca4490644e05fc1 (diff) |
Import sources from 2011-03-30 iso image - sys/man
Diffstat (limited to 'sys/man/1/rwd')
-rwxr-xr-x | sys/man/1/rwd | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/sys/man/1/rwd b/sys/man/1/rwd new file mode 100755 index 000000000..14e1a57ce --- /dev/null +++ b/sys/man/1/rwd @@ -0,0 +1,161 @@ +.TH RWD 1 +.SH NAME +rwd, conswdir \- maintain remote working directory +.SH SYNOPSIS +.B rwd +.I path +.PP +.B conswdir +[ +.I prog +] +.SH DESCRIPTION +.I Rwd +and +.I conswdir +conspire to keep +.IR rio (4) +and +.IR acme (4) +informed about the current directory on +remote systems during login sessions. +.I Rio +and +.I acme +include this information in plumb messages sent to +.IR plumber (4). +If the remote system's name space is mounted in the +plumber's name space, +the end result is that file paths printed during the session +are plumbable. +.PP +.I Rwd +informs +.IR rio +and +.IR acme +of directory changes. +The name of the remote machine is taken from +the environment variable +.BR $remotesys . +.I Rwd +writes the full path to +.BR /dev/wdir ; +writes the last element of the path, +suffixed by +.BI @ remotesys \fR, +to +.BR /dev/label ; +and when run inside a +.I win +(see +.IR acme (1)) +window, changes the window title to +.IB path /- remotesys +using +.BR /dev/acme/ctl . +.PP +.I Conswdir +copies standard input to standard output, looking for in-band messages +about directory changes. +The messages are of the form: +.IP +.EX +\e033];\fIpath\fP\e007 +.EE +.LP +where +.B \e033 +and +.B \e007 +are ASCII escape and bell characters. +Such messages are removed from the stream and not printed to standard output; +for each such message +.I conswdir +runs +.I prog +(default +.BR /bin/rwd ) +with +.I path +as its only argument. +.SH EXAMPLES +Add this plumbing rule (see +.IR plumb (6)) +in order to run commands in the plumber's name space: +.IP +.EX +# have plumber run command +kind is text +data matches 'Local (.*)' +plumb to none +plumb start rc -c $1 +.EE +.PP +Mount a Unix system in your name space and the plumber's: +.IP +.EX +% 9fs unix +% plumb 'Local 9fs unix' +.EE +.LP +(If you're using acme, execute +.B "Local 9fs unix +with the middle button to mount the Unix system in acme's name space.) +.PP +Connect to the Unix system, processing in-band directory change messages: +.IP +.EX +% ssh unix | aux/conswdir +.EE +.PP +Add this shell function to your +.B .profile +on the Unix system +to generate directory change messages every time a +.B cd +command is executed: +.IP +.EX +H=`hostname | sed 's/\e..*//'` +_cd () { + \ecd $* && + case $- in + *i*) + _dir=`pwd` + echo /n/$H$_dir | awk '{printf("\e033];%s\e007", $1);}' + esac +} +alias cd=_cd +.EE +.PP +The examples described so far only help for relative +path names. Add this plumbing rule to handle rooted names +like +.BR /usr/include/stdio.h : +.IP +.EX +# remote rooted path names +type is text +wdir matches '/n/unix(/.*)?' +data matches '/([.a-zA-Z¡-0-9_/\e-]*[a-zA-Z¡-0-9_/\e-])('$addr')?' +arg isfile /n/unix/$1 +data set $file +attr add addr=$3 +plumb to edit +plumb client window $editor +.EE +.SH SOURCE +.B /rc/bin/rwd +.br +.B /sys/src/cmd/aux/conswdir.c +.SH SEE ALSO +.IR plumber (4), +.IR plumb (6), +.IR srv (4) +.SH BUGS +This mechanism is clunky, but Unix and SSH +make it hard to build a better one. +.PP +The escape sequence was chosen because +it changes the title on xterm windows. |