This commit is contained in:
rsc 2005-03-21 17:27:25 +00:00
parent 5c84c448b8
commit 011090f03b
2 changed files with 46 additions and 14 deletions

View file

@ -4,24 +4,21 @@
.SH SYNOPSIS
.B 9p
[
.B -a
.I addr
.I options
]
.B read
.I path
.br
.B 9p
[
.B -a
.I addr
.I options
]
.B readfd
.I path
.PP
.B 9p
[
.B -a
.I addr
.I options
]
.B write
[
@ -31,28 +28,49 @@
.br
.B 9p
[
.B -a
.I addr
.I options
]
.B writefd
.I path
.PP
.B 9p
[
.B -a
.I addr
.I options
]
.B stat
.I path
.PP
.B 9p
[
.I options
]
.B rdwr
.I path
.PP
.B 9p
[
.I options
]
.B ls
[
.B -dl
]
.I path...
.SH DESCRIPTION
.I 9p
is a trivial 9P client that can access a single file on a 9P server.
It can be useful for manual interaction with a 9P server or for
accessing simple 9P services from within shell scripts.
The common options are:
.TP
.B -a\fI addr
dial
the server at
.I addr
.TP
.B -A\fI aname
attach to the file system named
.I aname
.PP
The first argument is a command, one of:
.TP
@ -101,6 +119,16 @@ Print errors, but don't give up.
.B Rdwr
is useful for interacting with servers like
.IR factotum (4).
.TP
.B ls
Print a directory listing in the format of
.IR ls (1).
The
.B -d
and
.B -l
flags have the same meaning as in
.IR ls .
.PD
.PP
.I 9p

View file

@ -12,7 +12,7 @@ char *addr;
void
usage(void)
{
fprint(2, "usage: 9p [-a address] cmd args...\n");
fprint(2, "usage: 9p [-a address] [-A aname] cmd args...\n");
fprint(2, "possible cmds:\n");
fprint(2, " read name\n");
fprint(2, " readfd name\n");
@ -25,6 +25,7 @@ usage(void)
threadexitsall("usage");
}
char *aname;
void xread(int, char**);
void xwrite(int, char**);
void xreadfd(int, char**);
@ -53,6 +54,9 @@ threadmain(int argc, char **argv)
int i;
ARGBEGIN{
case 'A':
aname = EARGF(usage());
break;
case 'a':
addr = EARGF(usage());
if(strchr(addr, '!') == nil)
@ -94,15 +98,15 @@ xparse(char *name, char **path)
else
*p++ = 0;
*path = p;
fs = nsamount(name, "");
fs = nsamount(name, aname);
if(fs == nil)
sysfatal("mount: %r");
}else{
*path = name;
if((fd = dial(addr, nil, nil, nil)) < 0)
sysfatal("dial: %r");
if((fs = fsamount(fd, "")) == nil)
sysfatal("fsmount: %r");
if((fs = fsamount(fd, aname)) == nil)
sysfatal("fsamount: %r");
}
return fs;
}