commit 21a17ff3e947dbf1b6b6e665e1810058bba35d6f from: rsc date: Tue Nov 25 02:54:24 2003 UTC Update NOTES, hack on 9term a little. 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