summaryrefslogtreecommitdiff
path: root/sys/src/cmd/hjfs
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-01-07 02:13:54 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2013-01-07 02:13:54 +0100
commit0c8543235974026577ab2978bdc9a379314b36d3 (patch)
tree355cf8d39194e6771e5166ddaabe03096d866aee /sys/src/cmd/hjfs
parenta5b6143c4c73098bfabe8b58f7e922473387a17d (diff)
hjfs: network announce/listen support
Diffstat (limited to 'sys/src/cmd/hjfs')
-rw-r--r--sys/src/cmd/hjfs/9p.c4
-rw-r--r--sys/src/cmd/hjfs/fns.h2
-rw-r--r--sys/src/cmd/hjfs/main.c15
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);
}