From 21a17ff3e947dbf1b6b6e665e1810058bba35d6f Mon Sep 17 00:00:00 2001 From: rsc Date: Tue, 25 Nov 2003 02:54:24 +0000 Subject: Update NOTES, hack on 9term a little. --- src/cmd/9term/9term.c | 8 +++++++- src/cmd/9term/9term.h | 2 +- src/cmd/9term/FreeBSD.c | 18 +++++++++++++++++- src/cmd/9term/Linux.c | 7 ++++--- 4 files changed, 29 insertions(+), 6 deletions(-) (limited to 'src/cmd/9term') 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 -- cgit v1.2.3