add -A
diff --git a/man/man1/9p.1 b/man/man1/9p.1
index c7000fb..cac024a 100644
--- a/man/man1/9p.1
+++ b/man/man1/9p.1
@@ -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 @@
 .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
diff --git a/src/cmd/9p.c b/src/cmd/9p.c
index 22446b2..909bfeb 100644
--- a/src/cmd/9p.c
+++ b/src/cmd/9p.c
@@ -12,7 +12,7 @@
 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 @@
 	threadexitsall("usage");
 }
 
+char *aname;
 void xread(int, char**);
 void xwrite(int, char**);
 void xreadfd(int, char**);
@@ -53,6 +54,9 @@
 	int i;
 
 	ARGBEGIN{
+	case 'A':
+		aname = EARGF(usage());
+		break;
 	case 'a':
 		addr = EARGF(usage());
 		if(strchr(addr, '!') == nil)
@@ -94,15 +98,15 @@
 		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;
 }