tUpdate NOTES, hack on 9term a little. - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 21a17ff3e947dbf1b6b6e665e1810058bba35d6f
 (DIR) parent 3765283ccfb8499b588ea12459990ec85e4526a2
 (HTM) Author: rsc <devnull@localhost>
       Date:   Tue, 25 Nov 2003 02:54:24 +0000
       
       Update NOTES, hack on 9term a little.
       
       Diffstat:
         M NOTES                               |      12 +++---------
         M src/cmd/9term/9term.c               |       8 +++++++-
         M src/cmd/9term/9term.h               |       2 +-
         M src/cmd/9term/FreeBSD.c             |      18 +++++++++++++++++-
         M src/cmd/9term/Linux.c               |       7 ++++---
       
       5 files changed, 32 insertions(+), 15 deletions(-)
       ---
 (DIR) diff --git a/NOTES b/NOTES
       t@@ -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
        
 (DIR) diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
       t@@ -18,6 +18,7 @@ int                mainpid;
        int                plumbfd;
        int                label(Rune*, int);
        char                wdir[1024];
       +char                childwdir[1024];
        void                hangupnote(void*, char*);
        
        char *menu2str[] = {
       t@@ -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;
 (DIR) diff --git a/src/cmd/9term/9term.h b/src/cmd/9term/9term.h
       t@@ -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*);
 (DIR) diff --git a/src/cmd/9term/FreeBSD.c b/src/cmd/9term/FreeBSD.c
       t@@ -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;
       +}
 (DIR) diff --git a/src/cmd/9term/Linux.c b/src/cmd/9term/Linux.c
       t@@ -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;
       t@@ -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