diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-01-07 02:13:54 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-01-07 02:13:54 +0100 |
commit | 0c8543235974026577ab2978bdc9a379314b36d3 (patch) | |
tree | 355cf8d39194e6771e5166ddaabe03096d866aee /sys/src/cmd/hjfs | |
parent | a5b6143c4c73098bfabe8b58f7e922473387a17d (diff) |
hjfs: network announce/listen support
Diffstat (limited to 'sys/src/cmd/hjfs')
-rw-r--r-- | sys/src/cmd/hjfs/9p.c | 4 | ||||
-rw-r--r-- | sys/src/cmd/hjfs/fns.h | 2 | ||||
-rw-r--r-- | sys/src/cmd/hjfs/main.c | 15 |
3 files changed, 16 insertions, 5 deletions
diff --git a/sys/src/cmd/hjfs/9p.c b/sys/src/cmd/hjfs/9p.c index 037914904..a980b1f48 100644 --- a/sys/src/cmd/hjfs/9p.c +++ b/sys/src/cmd/hjfs/9p.c @@ -135,8 +135,10 @@ static Srv mysrv = { }; void -start9p(char *service, int stdio) +start9p(char *service, char **nets, int stdio) { + while(nets && *nets) + threadlistensrv(&mysrv, *nets++); if(stdio){ mysrv.infd = 1; mysrv.outfd = 1; diff --git a/sys/src/cmd/hjfs/fns.h b/sys/src/cmd/hjfs/fns.h index c75ff8e9f..24c48dffc 100644 --- a/sys/src/cmd/hjfs/fns.h +++ b/sys/src/cmd/hjfs/fns.h @@ -25,7 +25,7 @@ int chanwstat(Chan *, Dir *); int permcheck(Fs *, Dentry *, short, int); char * uid2name(Fs *, short, char *); int name2uid(Fs *, char *, short *); -void start9p(char *, int); +void start9p(char *, char **, int); int chanclunk(Chan *); int chanremove(Chan *); int getblk(Fs *, FLoc *, Buf *, uvlong, uvlong *, int); diff --git a/sys/src/cmd/hjfs/main.c b/sys/src/cmd/hjfs/main.c index 6a6c4697e..1bb595526 100644 --- a/sys/src/cmd/hjfs/main.c +++ b/sys/src/cmd/hjfs/main.c @@ -86,7 +86,7 @@ syncproc(void *) void usage(void) { - fprint(2, "usage: %s [-rsS] [-m mem] [-n service] -f dev\n", argv0); + fprint(2, "usage: %s [-rsS] [-m mem] [-n service] [-a announce-string]... -f dev\n", argv0); exits("usage"); } @@ -94,9 +94,11 @@ void threadmain(int argc, char **argv) { Dev *d; + static char *nets[8]; char *file, *service; - int doream, flags, stdio, nbuf; + int doream, flags, stdio, nbuf, netc; + netc = 0; doream = 0; stdio = 0; flags = FSNOAUTH; @@ -115,6 +117,13 @@ threadmain(int argc, char **argv) if(nbuf < 10) nbuf = 10; break; + case 'a': + if(netc >= nelem(nets)-1){ + fprint(2, "%s: too many networks to announce\n", argv0); + exits("too many nets"); + } + nets[netc++] = estrdup(EARGF(usage())); + break; default: usage(); } ARGEND; rfork(RFNOTEG); @@ -131,7 +140,7 @@ threadmain(int argc, char **argv) sysfatal("fsinit: %r"); initcons(service); proccreate(syncproc, nil, mainstacksize); - start9p(service, stdio); + start9p(service, nets, stdio); threadexits(nil); } |