add con
This commit is contained in:
parent
d9742d7e94
commit
e29d0c84fe
1 changed files with 57 additions and 0 deletions
57
src/cmd/9p.c
57
src/cmd/9p.c
|
|
@ -33,11 +33,13 @@ void xwritefd(int, char**);
|
||||||
void xstat(int, char**);
|
void xstat(int, char**);
|
||||||
void xls(int, char**);
|
void xls(int, char**);
|
||||||
void xrdwr(int, char**);
|
void xrdwr(int, char**);
|
||||||
|
void xcon(int, char**);
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
char *s;
|
char *s;
|
||||||
void (*f)(int, char**);
|
void (*f)(int, char**);
|
||||||
} cmds[] = {
|
} cmds[] = {
|
||||||
|
"con", xcon,
|
||||||
"read", xread,
|
"read", xread,
|
||||||
"write", xwrite,
|
"write", xwrite,
|
||||||
"readfd", xreadfd,
|
"readfd", xreadfd,
|
||||||
|
|
@ -318,6 +320,61 @@ xrdwr(int argc, char **argv)
|
||||||
threadexitsall(0);
|
threadexitsall(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
rdcon(void *v)
|
||||||
|
{
|
||||||
|
char buf[4096];
|
||||||
|
CFid *fid;
|
||||||
|
|
||||||
|
fid = v;
|
||||||
|
for(;;){
|
||||||
|
n = read(0, buf, sizeof buf);
|
||||||
|
if(n <= 0)
|
||||||
|
threadexitsall(0);
|
||||||
|
if(fswrite(fid, buf, n) != n)
|
||||||
|
fprint(2, "write: %r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
xcon(int argc, char **argv)
|
||||||
|
{
|
||||||
|
char buf[4096], *r, *w, *e;
|
||||||
|
int n, nocr;
|
||||||
|
CFid *fid;
|
||||||
|
|
||||||
|
nocr = 1;
|
||||||
|
|
||||||
|
ARGBEGIN{
|
||||||
|
case 'r':
|
||||||
|
nocr = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
usage();
|
||||||
|
}ARGEND
|
||||||
|
|
||||||
|
if(argc != 1)
|
||||||
|
usage();
|
||||||
|
|
||||||
|
fid = xopen(argv[0], ORDWR);
|
||||||
|
proccreate(rdcon, fid, STACK);
|
||||||
|
for(;;){
|
||||||
|
n = fsread(fid, buf, n);
|
||||||
|
if(n <= 0)
|
||||||
|
threadexitsall(0);
|
||||||
|
if(nocr){
|
||||||
|
for(r=w=buf, e=buf+n; r<e; r++)
|
||||||
|
if(*r != '\r')
|
||||||
|
*w++ = *r;
|
||||||
|
n = w-buf;
|
||||||
|
}
|
||||||
|
if(write(1, buf, n) != n)
|
||||||
|
threadexitsall(0);
|
||||||
|
}
|
||||||
|
fsclose(fid);
|
||||||
|
threadexitsall(0);
|
||||||
|
}
|
||||||
|
|
||||||
static char *mon[] =
|
static char *mon[] =
|
||||||
{
|
{
|
||||||
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue