9front - general discussion about 9front
 help / color / mirror / Atom feed
* [9front] plumber: remove $plumbsrv, add optional srvname, usage check
@ 2021-09-07 17:46 qwx
  2021-09-07 22:06 ` umbraticus
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: qwx @ 2021-09-07 17:46 UTC (permalink / raw)
  To: 9front

Plumber both posts a service to /srv and sets a $plumbsrv environment
variable.  Our libplumb no longer uses $plumbsrv and nothing else
does.  It's a silly hack;  rc doesn't update /env immediately, and
scripts, which for instance set up subrios, cannot rely on it to
clean up the plumber at the end.

Instead, add the option to specify a srvname, actually check for some
common errors and print a usage string.

Thanks to Ori for input and a preliminary patch.  Thoughts?

Cheers,
qwx

diff 87a823332f9eaa4ff1e72f8524f6e59d1cc4f407 uncommitted
--- a//sys/man/4/plumber
+++ b//sys/man/4/plumber
@@ -6,6 +6,9 @@
 [
 .B -p
 .I plumbing
+] [
+.B -s
+.I srvname
 ]
 .SH DESCRIPTION
 The
@@ -31,11 +34,17 @@
 and a set of output
 .I ports
 for dispatching messages to applications.
+.PP
 The service is also published as a
 .IR srv (4)
-file, named in
-.BR $plumbsrv ,
+file,
+.IR srvname ,
 for mounting elsewhere.
+By default, its name is a dot-separated concatenation
+of the program's name and a process id.
+A different one can be specified via the
+.B -s
+option.
 .PP
 Programs use
 .B write
--- a//sys/src/cmd/plumb/fsys.c
+++ b//sys/src/cmd/plumb/fsys.c
@@ -218,9 +218,10 @@
 	clock = getclock();
 	if(cexecpipe(&mntfd, &srvfd) < 0)
 		error("can't create pipe: %r");
-	sprint(srvfile, "/srv/plumb.%s.%d", user, getpid());
-	if(putenv("plumbsrv", srvfile) < 0)
-		error("can't write $plumbsrv: %r");
+	if(srvname == nil)
+		snprint(srvfile, sizeof(srvfile), "/srv/plumb.%s.%d", user, getpid());
+	else
+		snprint(srvfile, sizeof(srvfile), "/srv/%s", srvname);
 	fd = create(srvfile, OWRITE|OCEXEC|ORCLOSE, 0600);
 	if(fd < 0)
 		error("can't create /srv file: %r");
--- a//sys/src/cmd/plumb/plumber.c
+++ b//sys/src/cmd/plumb/plumber.c
@@ -15,6 +15,7 @@
 int	printerrors=1;
 jmp_buf	parsejmp;
 char	*lasterror;
+char	*srvname;
 
 void
 makeports(Ruleset *rules[])
@@ -38,6 +39,13 @@
 }
 
 void
+usage(void)
+{
+	fprint(2, "usage: %s [-p plumbfile] [-s srvname]\n", argv0);
+	exits("usage");
+}
+
+void
 threadmain(int argc, char *argv[])
 {
 	char buf[512];
@@ -48,7 +56,13 @@
 
 	ARGBEGIN{
 	case 'p':
-		plumbfile = ARGF();
+		plumbfile = EARGF(usage());
+		break;
+	case 's':
+		srvname = EARGF(usage());
+		break;
+	default:
+		usage();
 		break;
 	}ARGEND
 
--- a//sys/src/cmd/plumb/plumber.h
+++ b//sys/src/cmd/plumb/plumber.h
@@ -92,3 +92,4 @@
 char		*lasterror;
 char		**ports;
 int		nports;
+char		*srvname;

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2021-09-10 21:21 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-07 17:46 [9front] plumber: remove $plumbsrv, add optional srvname, usage check qwx
2021-09-07 22:06 ` umbraticus
2021-09-08  8:51   ` sirjofri
2021-09-08 14:18 ` ori
2021-09-08 14:29 ` kvik
2021-09-08 17:35   ` qwx
2021-09-09 15:07     ` kvik
2021-09-09 15:21     ` kvik
2021-09-09 18:05       ` qwx
2021-09-09 18:16         ` qwx
2021-09-10 21:05         ` qwx

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).