aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/9term
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2003-11-25 02:54:24 +0000
committerrsc <devnull@localhost>2003-11-25 02:54:24 +0000
commit21a17ff3e947dbf1b6b6e665e1810058bba35d6f (patch)
treeed83208964ce827c7e2a1d64a9bba550fa8ec9e4 /src/cmd/9term
parent3765283ccfb8499b588ea12459990ec85e4526a2 (diff)
downloadplan9port-21a17ff3e947dbf1b6b6e665e1810058bba35d6f.tar.gz
plan9port-21a17ff3e947dbf1b6b6e665e1810058bba35d6f.tar.bz2
plan9port-21a17ff3e947dbf1b6b6e665e1810058bba35d6f.zip
Update NOTES, hack on 9term a little.
Diffstat (limited to 'src/cmd/9term')
-rw-r--r--src/cmd/9term/9term.c8
-rw-r--r--src/cmd/9term/9term.h2
-rw-r--r--src/cmd/9term/FreeBSD.c18
-rw-r--r--src/cmd/9term/Linux.c7
4 files changed, 29 insertions, 6 deletions
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