ref: 9f65f57c73f7c9d80a89ad43195ae4c2fcf9ffbe
parent: 600869ad4163b0bafed7ff9ebedefeee8fcc7116
author: glenda <[email protected]>
date: Sun Jan 30 20:19:08 EST 2022
patch for -R and -C to not bind /mnt/term/root and /mnt/term/cmd
--- a/cpu.c
+++ b/cpu.c
@@ -243,7 +243,7 @@
void
usage(void)
{
- fprint(2, "usage: %s [-GBO] "
+ fprint(2, "usage: %s [-GBORC] "
"[-h host] [-u user] [-a authserver] [-s secstore] "
"[-e 'crypt hash'] [-k keypattern] "
"[-p] [-t timeout] "
@@ -260,8 +260,13 @@
void
cpumain(int argc, char **argv)
{
- char *s;
+ char *s, *root;
+ int bindcmd, bindroot;
+ bindroot = 1;
+ root = nil;
+ bindcmd = 1;
+
user = getenv("USER");
if((pass = getenv("PASS")) != nil)
remove("/env/PASS");
@@ -305,11 +310,8 @@
user = EARGF(usage());
break;
case 'r':
- s = smprint("/root/%s", EARGF(usage()));
- cleanname(s);
- if(bind(s, "/root", MREPL) < 0)
- panic("bind /root: %r");
- free(s);
+ root = smprint("/root/%s", EARGF(usage()));
+ cleanname(root);
break;
case 'c':
cmd = estrdup(EARGF(usage()));
@@ -325,9 +327,28 @@
*/
geometry = EARGF(usage());
break;
+ case 'R':
+ bindroot = 0;
+ break;
+ case 'C':
+ bindcmd = 0;
+ break;
default:
usage();
}ARGEND;
+
+ if (bindcmd)
+ bind("#C", "/", MAFTER);
+
+ if (bindroot || (root != nil))
+ if(bind("#U", "/root", MREPL) < 0)
+ panic("bind #U: %r");
+
+ if (root != nil) {
+ if(bind(root, "/root", MREPL) < 0)
+ panic("bind /root: %r");
+ free(root);
+ }
if(argc != 0)
usage();
--- a/drawterm.1
+++ b/drawterm.1
@@ -6,7 +6,7 @@
.SH SYNOPSIS
.B drawterm
[
-.B -GBO
+.B -GBORC
] [
.B -h
.I host
@@ -64,6 +64,22 @@
.IR cpu (1)
to connect to the cpu server rather than
.IR rcpu (1)\fR.
+
+.TP
+.B -R
+Do not bind terminal root at
+.I /mnt/term/root
+unless
+.B -r \fIroot
+is also specified.
+
+.TP
+.B -C
+Do not bind
+.I /mnt/term/cmd
+for
+.IR os (1)
+command.
.TP
.B -h \fIhost
--- a/main.c
+++ b/main.c
@@ -51,11 +51,8 @@
panic("bind #e: %r");
if(bind("#I", "/net", MBEFORE) < 0)
panic("bind #I: %r");
- if(bind("#U", "/root", MREPL) < 0)
- panic("bind #U: %r");
bind("#A", "/dev", MAFTER);
bind("#N", "/dev", MAFTER);
- bind("#C", "/", MAFTER);
if(open("/dev/cons", OREAD) != 0)
panic("open0: %r");