tUpdate NOTES, hack on 9term a little. - plan9port - [fork] Plan 9 from user space (HTM) git clone git://src.adamsgaard.dk/plan9port (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 21a17ff3e947dbf1b6b6e665e1810058bba35d6f (DIR) parent 3765283ccfb8499b588ea12459990ec85e4526a2 (HTM) Author: rsc <devnull@localhost> Date: Tue, 25 Nov 2003 02:54:24 +0000 Update NOTES, hack on 9term a little. Diffstat: M NOTES | 12 +++--------- M src/cmd/9term/9term.c | 8 +++++++- M src/cmd/9term/9term.h | 2 +- M src/cmd/9term/FreeBSD.c | 18 +++++++++++++++++- M src/cmd/9term/Linux.c | 7 ++++--- 5 files changed, 32 insertions(+), 15 deletions(-) --- (DIR) diff --git a/NOTES b/NOTES t@@ -19,18 +19,12 @@ 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 - -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. +The "make" builds mk. Mk builds the rest. * Helping out (DIR) diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c t@@ -18,6 +18,7 @@ int mainpid; int plumbfd; int label(Rune*, int); char wdir[1024]; +char childwdir[1024]; void hangupnote(void*, char*); char *menu2str[] = { t@@ -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; (DIR) diff --git a/src/cmd/9term/9term.h b/src/cmd/9term/9term.h t@@ -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*); (DIR) diff --git a/src/cmd/9term/FreeBSD.c b/src/cmd/9term/FreeBSD.c t@@ -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; +} (DIR) diff --git a/src/cmd/9term/Linux.c b/src/cmd/9term/Linux.c t@@ -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; t@@ -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