Commit Diff


commit - 3765283ccfb8499b588ea12459990ec85e4526a2
commit + 21a17ff3e947dbf1b6b6e665e1810058bba35d6f
blob - 0b4c241aa0f91ebdd0ec8b261c506396f4bf1a86
blob + cb56921fc471e9754e23f654e789313d063733de
--- NOTES
+++ NOTES
@@ -19,19 +19,13 @@ See below.
 
 * Building
 
-To build, cd into src and run make install.  This will place binaries
-in "bin".  At time of writing, the commands are sam, samterm, and mk.
+To build, cd into src and run make; mk install.  This will place binaries
+in "bin".  At time of writing, the commands are sam, samterm, rc, and mk.
 There are a few shell scripts already included in bin -- B, Bwait,
 and samsave.
 
-* Make vs. Mk
+The "make" builds mk.  Mk builds the rest.
 
-I'm trying to use make for everything so that it's easier to get
-off the ground, but this might not work out.  Working in the
-intersection of BSD make and GNU make is quite restrictive.
-If I'm going to start requiring a particular build utility,
-it might as well be mk.
-
 * Helping out
 
 If you'd like to help out, great!
blob - ec59756f106e26ac496deb85d3a8aac941709ddf
blob + 2db0f9044466d867fe4627fce446c001b7e03772
--- src/cmd/9term/9term.c
+++ src/cmd/9term/9term.c
@@ -18,6 +18,7 @@ int		mainpid;
 int		plumbfd;
 int		label(Rune*, int);
 char		wdir[1024];
+char		childwdir[1024];
 void		hangupnote(void*, char*);
 
 char *menu2str[] = {
@@ -1312,11 +1313,16 @@ plumb(uint q0, uint q1)
 	char *p;
 	int i, p0, n;
 	char cbuf[100];
+	char *w;
 
+	if(getchildwdir(pid, childwdir, sizeof childwdir) == 0)
+		w = childwdir;
+	else
+		w = wdir;
 	pm = malloc(sizeof(Plumbmsg));
 	pm->src = strdup("9term");
 	pm->dst = 0;
-	pm->wdir = strdup(wdir);
+	pm->wdir = strdup(w);
 	pm->type = strdup("text");
 	if(q1 > q0)
 		pm->attr = nil;
blob - be2fa4c9097ef37ea036c47bd95ee4cadc8bf61b
blob + bf3e2ba0bf92b2f5b69e6642644e4d9addeb4552
--- src/cmd/9term/9term.h
+++ src/cmd/9term/9term.h
@@ -109,7 +109,7 @@ void	scrdraw(void);
 void	scroll(int);
 void	hostproc(void *arg);
 void	hoststart(void);
-void	pdx(int, char*, int);
+void	getchildwd(int, char*, int);
 void	plumbstart(void);
 void	plumb(uint, uint);
 void	plumbclick(uint*, uint*);
blob - 37dabe9c909f047f45cd39c8daf9ec699061528c
blob + f67976b11c941bdc3aa7a7767e15eb83ecd0fef2
--- src/cmd/9term/FreeBSD.c
+++ src/cmd/9term/FreeBSD.c
@@ -1 +1,17 @@
-#include "Linux.c"
+#include "9term.h"
+
+int
+getchildwd(int pid, char *wdir, int bufn)
+{
+	USED(pid);
+	USED(wdir);
+	USED(bufn);
+	return -1;
+}
+
+int
+getpts(int fd[], char *slave)
+{
+	openpty(&fd[1], &fd[0], slave, 0, 0);
+	return 0;
+}
blob - 7cdb513e5fa0a45cf168f1536663d770f07dcafe
blob + 23f9fbd5bd5d3d5982343185feffd010f1fd9910
--- src/cmd/9term/Linux.c
+++ src/cmd/9term/Linux.c
@@ -1,7 +1,7 @@
 #include "9term.h"
 
-void
-pdx(int pid, char *wdir, int bufn)
+int
+getchildwd(int pid, char *wdir, int bufn)
 {
 	char path[256];
 	int n;
@@ -9,8 +9,9 @@ pdx(int pid, char *wdir, int bufn)
 	snprint(path, sizeof path, "/proc/%d/cwd", pid);
 	n = readlink(path, wdir, bufn);
 	if(n < 0)
-		n = 0;
+		return -1;
 	wdir[n] = '\0';
+	return 0;
 }
 
 int