commit - 3765283ccfb8499b588ea12459990ec85e4526a2
commit + 21a17ff3e947dbf1b6b6e665e1810058bba35d6f
blob - 0b4c241aa0f91ebdd0ec8b261c506396f4bf1a86
blob + cb56921fc471e9754e23f654e789313d063733de
--- NOTES
+++ NOTES
* 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
int plumbfd;
int label(Rune*, int);
char wdir[1024];
+char childwdir[1024];
void hangupnote(void*, char*);
char *menu2str[] = {
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
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
-#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
#include "9term.h"
-void
-pdx(int pid, char *wdir, int bufn)
+int
+getchildwd(int pid, char *wdir, int bufn)
{
char path[256];
int n;
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