diff options
-rw-r--r-- | NOTES | 12 | ||||
-rw-r--r-- | src/cmd/9term/9term.c | 8 | ||||
-rw-r--r-- | src/cmd/9term/9term.h | 2 | ||||
-rw-r--r-- | src/cmd/9term/FreeBSD.c | 18 | ||||
-rw-r--r-- | src/cmd/9term/Linux.c | 7 |
5 files changed, 32 insertions, 15 deletions
@@ -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 diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c index ec59756f..2db0f904 100644 --- a/src/cmd/9term/9term.c +++ b/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; diff --git a/src/cmd/9term/9term.h b/src/cmd/9term/9term.h index be2fa4c9..bf3e2ba0 100644 --- a/src/cmd/9term/9term.h +++ b/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*); diff --git a/src/cmd/9term/FreeBSD.c b/src/cmd/9term/FreeBSD.c index 37dabe9c..f67976b1 100644 --- a/src/cmd/9term/FreeBSD.c +++ b/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; +} diff --git a/src/cmd/9term/Linux.c b/src/cmd/9term/Linux.c index 7cdb513e..23f9fbd5 100644 --- a/src/cmd/9term/Linux.c +++ b/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 |