bigger buffers; add rdwr
This commit is contained in:
parent
efd7212c00
commit
05abefb2a0
1 changed files with 43 additions and 5 deletions
48
src/cmd/9p.c
48
src/cmd/9p.c
|
|
@ -19,6 +19,7 @@ usage(void)
|
||||||
fprint(2, " write [-l] name\n");
|
fprint(2, " write [-l] name\n");
|
||||||
fprint(2, " writefd name\n");
|
fprint(2, " writefd name\n");
|
||||||
fprint(2, " stat name\n");
|
fprint(2, " stat name\n");
|
||||||
|
fprint(2, " rdwr name\n");
|
||||||
// fprint(2, " ls name\n");
|
// fprint(2, " ls name\n");
|
||||||
fprint(2, "without -a, name elem/path means /path on server unix!$ns/elem\n");
|
fprint(2, "without -a, name elem/path means /path on server unix!$ns/elem\n");
|
||||||
threadexitsall("usage");
|
threadexitsall("usage");
|
||||||
|
|
@ -30,6 +31,7 @@ void xreadfd(int, char**);
|
||||||
void xwritefd(int, char**);
|
void xwritefd(int, char**);
|
||||||
void xstat(int, char**);
|
void xstat(int, char**);
|
||||||
void xls(int, char**);
|
void xls(int, char**);
|
||||||
|
void xrdwr(int, char**);
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
char *s;
|
char *s;
|
||||||
|
|
@ -40,6 +42,7 @@ struct {
|
||||||
"readfd", xreadfd,
|
"readfd", xreadfd,
|
||||||
"writefd", xwritefd,
|
"writefd", xwritefd,
|
||||||
"stat", xstat,
|
"stat", xstat,
|
||||||
|
"rdwr", xrdwr,
|
||||||
// "ls", xls,
|
// "ls", xls,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -127,7 +130,7 @@ xopenfd(char *name, int mode)
|
||||||
void
|
void
|
||||||
xread(int argc, char **argv)
|
xread(int argc, char **argv)
|
||||||
{
|
{
|
||||||
char buf[1024];
|
char buf[4096];
|
||||||
int n;
|
int n;
|
||||||
CFid *fid;
|
CFid *fid;
|
||||||
|
|
||||||
|
|
@ -150,7 +153,7 @@ xread(int argc, char **argv)
|
||||||
void
|
void
|
||||||
xreadfd(int argc, char **argv)
|
xreadfd(int argc, char **argv)
|
||||||
{
|
{
|
||||||
char buf[1024];
|
char buf[4096];
|
||||||
int n;
|
int n;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
|
|
@ -173,7 +176,7 @@ xreadfd(int argc, char **argv)
|
||||||
void
|
void
|
||||||
xwrite(int argc, char **argv)
|
xwrite(int argc, char **argv)
|
||||||
{
|
{
|
||||||
char buf[1024];
|
char buf[4096];
|
||||||
int n, did;
|
int n, did;
|
||||||
CFid *fid;
|
CFid *fid;
|
||||||
Biobuf *b;
|
Biobuf *b;
|
||||||
|
|
@ -184,6 +187,7 @@ xwrite(int argc, char **argv)
|
||||||
ARGBEGIN{
|
ARGBEGIN{
|
||||||
case 'l':
|
case 'l':
|
||||||
byline = 1;
|
byline = 1;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
}ARGEND
|
}ARGEND
|
||||||
|
|
@ -203,7 +207,7 @@ xwrite(int argc, char **argv)
|
||||||
n = strlen(p);
|
n = strlen(p);
|
||||||
did = 1;
|
did = 1;
|
||||||
if(fswrite(fid, p, n) != n)
|
if(fswrite(fid, p, n) != n)
|
||||||
sysfatal("write error: %r");
|
fprint(2, "write: %r\n");
|
||||||
}
|
}
|
||||||
free(b);
|
free(b);
|
||||||
}else{
|
}else{
|
||||||
|
|
@ -225,7 +229,7 @@ xwrite(int argc, char **argv)
|
||||||
void
|
void
|
||||||
xwritefd(int argc, char **argv)
|
xwritefd(int argc, char **argv)
|
||||||
{
|
{
|
||||||
char buf[1024];
|
char buf[4096];
|
||||||
int n;
|
int n;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
|
|
@ -270,3 +274,37 @@ xstat(int argc, char **argv)
|
||||||
print("%D\n", d);
|
print("%D\n", d);
|
||||||
threadexitsall(0);
|
threadexitsall(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
xrdwr(int argc, char **argv)
|
||||||
|
{
|
||||||
|
char buf[4096];
|
||||||
|
int n;
|
||||||
|
CFid *fid;
|
||||||
|
|
||||||
|
ARGBEGIN{
|
||||||
|
default:
|
||||||
|
usage();
|
||||||
|
}ARGEND
|
||||||
|
|
||||||
|
if(argc != 1)
|
||||||
|
usage();
|
||||||
|
|
||||||
|
fid = xopen(argv[0], ORDWR);
|
||||||
|
for(;;){
|
||||||
|
if((n = fsread(fid, buf, sizeof buf)) < 0)
|
||||||
|
fprint(2, "read: %r\n");
|
||||||
|
else{
|
||||||
|
write(1, buf, n);
|
||||||
|
write(1, "\n", 1);
|
||||||
|
}
|
||||||
|
n = read(0, buf, sizeof buf);
|
||||||
|
if(n <= 0)
|
||||||
|
break;
|
||||||
|
if(buf[n-1] == '\n')
|
||||||
|
n--;
|
||||||
|
if(fswrite(fid, buf, n) != n)
|
||||||
|
fprint(2, "write: %r\n");
|
||||||
|
}
|
||||||
|
threadexitsall(0);
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue