tAdd the #goo to allow use in C++. Silence a few more warnings. Strip down the mkfiles more. Fix bug in X11 mouse handling, note groups. - 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 f7012583e9a7594cbb5ebe8e974bb69061189262
 (DIR) parent dc13c29ed174fd15e0b025ca4fea8af71015067d
 (HTM) Author: rsc <devnull@localhost>
       Date:   Tue, 25 Nov 2003 01:40:27 +0000
       
       Add the #goo to allow use in C++.
       Silence a few more warnings.
       Strip down the mkfiles more.
       Fix bug in X11 mouse handling, note groups.
       
       Diffstat:
         M include/bin.h                       |      11 +++++++++++
         M include/bio.h                       |      10 ++++++++--
         M include/cursor.h                    |      11 +++++++++++
         M include/draw.h                      |      11 +++++++++++
         M include/event.h                     |      11 +++++++++++
         M include/fcall.h                     |       9 +++++++++
         M include/flate.h                     |       9 +++++++++
         M include/fmt.h                       |      14 ++++++++------
         M include/frame.h                     |      10 ++++++++++
         M include/httpd.h                     |      10 ++++++++++
         M include/ip.h                        |       9 +++++++++
         M include/keyboard.h                  |      10 ++++++++++
         M include/lib9.h                      |       8 +++-----
         M include/libsec.h                    |      10 ++++++++++
         M include/memdraw.h                   |      10 ++++++++++
         M include/memlayer.h                  |      12 ++++++++++++
         M include/mouse.h                     |      11 +++++++++++
         M include/plumb.h                     |      10 ++++++++++
         M include/regexp9.h                   |      10 ++++++++--
         M include/thread.h                    |      10 ++++++++--
         M include/utf.h                       |      10 ++++++++--
         M include/venti.h                     |       9 +++++++++
         M src/cmd/idiff.c                     |       5 ++++-
         M src/cmd/mkfile                      |       2 +-
         M src/cmd/sam/sam.c                   |       6 +++++-
         M src/cmd/sam/sam.h                   |       1 -
         M src/cmd/sam/unix.c                  |       4 ----
         M src/cmd/unutf.c                     |       4 ++++
         M src/lib9/dirfwstat.c                |      23 ++++++++++++++---------
         M src/lib9/dirread.c                  |      17 ++++-------------
         D src/libdraw/BOT                     |       0 
         M src/libdraw/x11-init.c              |       9 +++++++++
         M src/libdraw/x11-itrans.c            |      11 +++++++++--
         M src/libhttpd/parsereq.c             |       1 -
         M src/libthread/sched.c               |       2 ++
         M src/mkcommon                        |      20 ++++++++++++--------
         M src/mkhdr                           |      23 +++++++++++------------
         M src/mkmany                          |      57 +++----------------------------
         M src/mkmk.sh                         |      10 +++++-----
         M src/mkone                           |      35 ++++---------------------------
         M src/mksyslib                        |       2 ++
       
       41 files changed, 297 insertions(+), 160 deletions(-)
       ---
 (DIR) diff --git a/include/bin.h b/include/bin.h
       t@@ -1,3 +1,9 @@
       +#ifndef _BIN_H_
       +#define _BIN_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
       +
        /*
        #pragma        lib        "libbin.a"
        #pragma        src        "/sys/src/libbin"
       t@@ -11,3 +17,8 @@ typedef struct Bin                Bin;
        void        *binalloc(Bin **, ulong size, int zero);
        void        *bingrow(Bin **, void *op, ulong osize, ulong size, int zero);
        void        binfree(Bin **);
       +
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/bio.h b/include/bio.h
       t@@ -1,5 +1,8 @@
       -#ifndef _BIOH_
       -#define _BIOH_ 1
       +#ifndef _BIO_H_
       +#define _BIO_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        
        #include <sys/types.h>        /* for off_t */
        #include <fcntl.h>        /* for O_RDONLY, O_WRONLY */
       t@@ -78,4 +81,7 @@ char*        Brdstr(Biobuf*, int, int);
        long        Bgetrune(Biobuf*);
        int        Bputrune(Biobuf*, long);
        
       +#if defined(__cplusplus)
       +}
       +#endif
        #endif
 (DIR) diff --git a/include/cursor.h b/include/cursor.h
       t@@ -1,3 +1,9 @@
       +#ifndef _CURSOR_H_
       +#define _CURSOR_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
       +
        typedef struct Cursor Cursor;
        struct        Cursor
        {
       t@@ -5,3 +11,8 @@ struct        Cursor
                uchar        clr[2*16];
                uchar        set[2*16];
        };
       +
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/draw.h b/include/draw.h
       t@@ -1,3 +1,9 @@
       +#ifndef _DRAW_H_
       +#define _DRAW_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
       +
        typedef struct        Cachefont Cachefont;
        typedef struct        Cacheinfo Cacheinfo;
        typedef struct        Cachesubf Cachesubf;
       t@@ -531,3 +537,8 @@ void drawtopwindow(void);
        int        _drawmsgread(Display*, void*, int);
        int        _drawmsgwrite(Display*, void*, int);
        int        _latin1(Rune*, int);
       +
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/event.h b/include/event.h
       t@@ -1,3 +1,9 @@
       +#ifndef _EVENT_H_
       +#define _EVENT_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
       +
        typedef struct        Event Event;
        typedef struct        Menu Menu;
        
       t@@ -61,3 +67,8 @@ extern Rectangle        egetrect(int, Mouse*);
        extern void                edrawgetrect(Rectangle, int);
        extern int                ereadmouse(Mouse*);
        extern int                eatomouse(Mouse*, char*, int);
       +
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/fcall.h b/include/fcall.h
       t@@ -1,3 +1,8 @@
       +#ifndef _FCALL_H_
       +#define _FCALL_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        /*
        #pragma        src        "/sys/src/libc/9sys"
        #pragma        lib        "libc.a"
       t@@ -118,3 +123,7 @@ int        read9pmsg(int, void*, uint);
        #pragma        varargck        type        "M"        ulong
        #pragma        varargck        type        "D"        Dir*
        */
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/flate.h b/include/flate.h
       t@@ -1,3 +1,8 @@
       +#ifndef _FLATE_H_
       +#define _FLATE_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        /*
        #pragma        lib        "libflate.a"
        #pragma        src        "/sys/src/libflate"
       t@@ -39,3 +44,7 @@ ulong        *mkcrctab(ulong);
        ulong        blockcrc(ulong *tab, ulong crc, void *buf, int n);
        
        ulong        adler32(ulong adler, void *buf, int n);
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/fmt.h b/include/fmt.h
       t@@ -1,3 +1,8 @@
       +#ifndef _FMT_H_
       +#define _FMT_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        
        /*
         * The authors of this software are Rob Pike and Ken Thompson.
       t@@ -13,14 +18,8 @@
         * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
         */
        
       -#ifndef _FMTH_
       -#define _FMTH_ 1
       -
        #include <stdarg.h>
       -
       -#ifndef _UTFH_
        #include <utf.h>
       -#endif
        
        typedef struct Fmt        Fmt;
        struct Fmt{
       t@@ -97,4 +96,7 @@ extern        int        fmtstrcpy(Fmt*, char*);
        extern        double        fmtstrtod(const char *, char **);
        extern        double        fmtcharstod(int(*)(void*), void*);
        
       +#if defined(__cplusplus)
       +}
       +#endif
        #endif
 (DIR) diff --git a/include/frame.h b/include/frame.h
       t@@ -1,3 +1,9 @@
       +#ifndef _FRAME_H_
       +#define _FRAME_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
       +
        typedef struct Frbox Frbox;
        typedef struct Frame Frame;
        
       t@@ -83,3 +89,7 @@ void        frinittick(Frame*);
        
        #define        NRUNE(b)        ((b)->nrune<0? 1 : (b)->nrune)
        #define        NBYTE(b)        strlen((char*)(b)->ptr)
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/httpd.h b/include/httpd.h
       t@@ -1,3 +1,8 @@
       +#ifndef _HTTPD_H_
       +#define _HTTPD_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        /*
        #pragma        lib        "libhttpd.a"
        #pragma        src        "/sys/src/libhttpd"
       t@@ -278,3 +283,8 @@ int                        hxferenc(Hio*, int);
        #pragma        varargck        type        "U"        char*
        #pragma        varargck        type        "H"        char*
        */
       +
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/ip.h b/include/ip.h
       t@@ -1,3 +1,8 @@
       +#ifndef _IP_H_
       +#define _IP_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        /*
        #pragma        src        "/sys/src/libip"
        #pragma        lib        "libip.a"
       t@@ -121,3 +126,7 @@ extern uchar IPallbits[IPaddrlen];
        
        #define CLASS(p) ((*(uchar*)(p))>>6)
        
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/keyboard.h b/include/keyboard.h
       t@@ -1,3 +1,8 @@
       +#ifndef _KEYBOARD_H_
       +#define _KEYBOARD_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        typedef struct         Keyboardctl Keyboardctl;
        
        struct        Keyboardctl
       t@@ -34,3 +39,8 @@ enum {
                Kshift=        KF|0x16,
                Kctl=                KF|0x17,
        };
       +
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/lib9.h b/include/lib9.h
       t@@ -3,9 +3,8 @@
         * fit into libutf or into libfmt, but is still missing from traditional
         * Unix C libraries.
         */
       -#ifndef _LIB9H_
       -#define _LIB9H_ 1
       -
       +#ifndef _LIB9_H_
       +#define _LIB9_H_ 1
        #if defined(__cplusplus)
        extern "C" {
        #endif                                                                          
       t@@ -861,5 +860,4 @@ extern void __fixargv0(void);
        #if defined(__cplusplus)
        }
        #endif
       -
       -#endif        /* _LIB9H_ */
       +#endif        /* _LIB9_H_ */
 (DIR) diff --git a/include/libsec.h b/include/libsec.h
       t@@ -1,3 +1,8 @@
       +#ifndef _LIBSEC_H_
       +#define _LIBSEC_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        /*
        #pragma        lib        "libsec.a"
        #pragma        src        "/sys/src/libsec"
       t@@ -338,3 +343,8 @@ extern int okThumbprint(uchar *sha1, Thumbprint *ok);
        
        // readcert.c
        extern uchar *readcert(char *filename, int *pcertlen);
       +
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/memdraw.h b/include/memdraw.h
       t@@ -1,3 +1,8 @@
       +#ifndef _MEMDRAW_H_
       +#define _MEMDRAW_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        typedef struct        Memimage Memimage;
        typedef struct        Memdata Memdata;
        typedef struct        Memsubfont Memsubfont;
       t@@ -208,3 +213,8 @@ extern Memdrawparam*        _memimagedrawsetup(Memimage*,
                                        Point, int);
        extern void                _memimagedraw(Memdrawparam*);
        extern void                _drawreplacescreenimage(Memimage*);
       +
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/memlayer.h b/include/memlayer.h
       t@@ -1,3 +1,9 @@
       +#ifndef _MEMLAYER_H_
       +#define _MEMLAYER_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
       +
        typedef struct Memscreen Memscreen;
        typedef void (*Refreshfn)(Memimage*, Rectangle, void*);
        
       t@@ -46,3 +52,9 @@ void                        memlexpose(Memimage*, Rectangle);
        void                        _memlsetclear(Memscreen*);
        int                        memlorigin(Memimage*, Point, Point);
        void                        memlnorefresh(Memimage*, Rectangle, void*);
       +
       +
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/mouse.h b/include/mouse.h
       t@@ -1,3 +1,8 @@
       +#ifndef _MOUSE_H_
       +#define _MOUSE_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        typedef struct        Menu Menu;
        typedef struct         Mousectl Mousectl;
        
       t@@ -42,3 +47,9 @@ extern void                setcursor(Mousectl*, struct Cursor*);
        extern void                drawgetrect(Rectangle, int);
        extern Rectangle        getrect(int, Mousectl*);
        extern int                         menuhit(int, Mousectl*, Menu*, Screen*);
       +
       +
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/plumb.h b/include/plumb.h
       t@@ -1,3 +1,8 @@
       +#ifndef _LIBPLUMB_H_
       +#define _LIBPLUMB_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        /*
        #pragma        lib        "libplumb.a"
        #pragma        src        "/sys/src/libplumb"
       t@@ -48,3 +53,8 @@ void                        plumbfree(Plumbmsg*);
        char*                plumblookup(Plumbattr*, char*);
        int                        plumbopen(char*, int);
        int                        eplumb(int, char*);
       +
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/include/regexp9.h b/include/regexp9.h
       t@@ -1,6 +1,9 @@
       -#ifndef _REGEXP9H_
       +#ifndef _REGEXP9_H_
       +#define _REGEXP9_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        
       -#define _REGEXP9H_ 1
        #include <utf.h>
        
        typedef struct Resub                Resub;
       t@@ -83,4 +86,7 @@ extern void        rregsub9(Rune*, Rune*, Resub*, int);
        #define rregsub rregsub9
        #endif
        
       +#if defined(__cplusplus)
       +}
       +#endif
        #endif
 (DIR) diff --git a/include/thread.h b/include/thread.h
       t@@ -1,5 +1,8 @@
       -#ifndef _THREADH_
       -#define _THREADH_ 1
       +#ifndef _THREAD_H_
       +#define _THREAD_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        
        /* avoid conflicts with socket library */
        #undef send
       t@@ -129,4 +132,7 @@ int                iosleep(Ioproc*, long);
        long                iocall(Ioproc*, long (*)(va_list*), ...);
        void                ioret(Ioproc*, int);
        
       +#if defined(__cplusplus)
       +}
       +#endif
        #endif        /* _THREADH_ */
 (DIR) diff --git a/include/utf.h b/include/utf.h
       t@@ -1,5 +1,8 @@
       -#ifndef _UTFH_
       -#define _UTFH_ 1
       +#ifndef _UTF_H_
       +#define _UTF_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        
        typedef unsigned short Rune;        /* 16 bits */
        
       t@@ -48,4 +51,7 @@ extern        int        isspacerune(Rune);
        extern        int        istitlerune(Rune);
        extern        int        isupperrune(Rune);
        
       +#if defined(__cplusplus)
       +}
       +#endif
        #endif
 (DIR) diff --git a/include/venti.h b/include/venti.h
       t@@ -1,3 +1,8 @@
       +#ifndef _VENTI_H_
       +#define _VENTI_H_ 1
       +#if defined(__cplusplus)
       +extern "C" { 
       +#endif
        /* XXX should be own library? */
        /*
         * Packets
       t@@ -413,3 +418,7 @@ int vtfilelock(VtFile*, int);
        int vtfilelock2(VtFile*, VtFile*, int);
        int vtfileflushbefore(VtFile*, u64int);
        
       +#if defined(__cplusplus)
       +}
       +#endif
       +#endif
 (DIR) diff --git a/src/cmd/idiff.c b/src/cmd/idiff.c
       t@@ -82,11 +82,14 @@ int
        opentemp(char *template, int mode, long perm)
        {
                int fd;
       +        Dir d;
        
                fd = mkstemp(template);
                if(fd < 0)
                        sysfatal("could not create temporary file");
       -        fchmod(fd, perm);
       +        nulldir(&d);
       +        d.mode = perm;
       +        dirfwstat(fd, &d);
        
                return fd;
        }
 (DIR) diff --git a/src/cmd/mkfile b/src/cmd/mkfile
       t@@ -6,7 +6,7 @@ LDFLAGS=$LDFLAGS -lsec -lregexp9 -l9 -lbio -lfmt -lutf
        
        <$PLAN9/src/mkmany
        
       -BUGGERED='CVS|oplumb|plumb|plumb2|mk|vac|9term'
       +BUGGERED='CVS|oplumb|plumb|plumb2|mk|vac|9term|venti'
        DIRS=`ls -l |sed -n 's/^d.* //p' |egrep -v "$BUGGERED"`
        
        <$PLAN9/src/mkdirs
 (DIR) diff --git a/src/cmd/sam/sam.c b/src/cmd/sam/sam.c
       t@@ -141,6 +141,7 @@ rescue(void)
                File *f;
                char *c;
                char buf[256];
       +        char *root;
        
                if(rescuing++)
                        return;
       t@@ -162,7 +163,10 @@ rescue(void)
                                free(c);
                        }else
                                sprint(buf, "nameless.%d", nblank++);
       -                fprint(io, "#!%s '%s' $* <<'---%s'\n", SAMSAVECMD, buf, buf);
       +                root = getenv("PLAN9");
       +                if(root == nil)
       +                        root = "/usr/local/plan9";
       +                fprint(io, "#!/bin/sh\n%s/bin/samsave '%s' $* <<'---%s'\n", root, buf, buf);
                        addr.r.p1 = 0, addr.r.p2 = f->b.nc;
                        writeio(f);
                        fprint(io, "\n---%s\n", (char *)buf);
 (DIR) diff --git a/src/cmd/sam/sam.h b/src/cmd/sam/sam.h
       t@@ -345,7 +345,6 @@ extern char        SH[];
        extern char        SHPATH[];
        extern char        RX[];
        extern char        RXPATH[];
       -extern char        SAMSAVECMD[];
        
        /*
         * acme globals
 (DIR) diff --git a/src/cmd/sam/unix.c b/src/cmd/sam/unix.c
       t@@ -38,9 +38,6 @@ Rune *right[]= { r1, r2, r3, 0};
        #ifndef RXPATHNAME
        #define RXPATHNAME "ssh"
        #endif
       -#ifndef SAMSAVECMDNAME
       -#define SAMSAVECMDNAME "/bin/sh\n/usr/local/plan9/bin/samsave"
       -#endif
        
        char        RSAM[] = "sam";
        char        SAMTERM[] = SAMTERMNAME;
       t@@ -50,7 +47,6 @@ char        SH[] = SHNAME;
        char        SHPATH[] = SHPATHNAME;
        char        RX[] = RXNAME;
        char        RXPATH[] = RXPATHNAME;
       -char        SAMSAVECMD[] = SAMSAVECMDNAME;
        
        
        void
 (DIR) diff --git a/src/cmd/unutf.c b/src/cmd/unutf.c
       t@@ -1,3 +1,7 @@
       +/*
       + * stupid little program to pipe unicode chars through 
       + * when converting to non-utf compilers.
       + */
        #include <u.h>
        #include <libc.h>
        #include <bio.h>
 (DIR) diff --git a/src/lib9/dirfwstat.c b/src/lib9/dirfwstat.c
       t@@ -22,16 +22,21 @@ futimes(int fd, struct timeval *tv)
        int
        dirfwstat(int fd, Dir *dir)
        {
       +        int ret;
                struct timeval tv[2];
        
       -        /* BUG handle more */
       -        if(dir->mtime == ~0ULL)
       -                return 0;
       -
       -        tv[0].tv_sec = dir->mtime;
       -        tv[0].tv_usec = 0;
       -        tv[1].tv_sec = dir->mtime;
       -        tv[1].tv_usec = 0;
       -        return futimes(fd, tv);
       +        if(~dir->mode != 0){
       +                if(fchmod(fd, dir->mode) < 0)
       +                        ret = -1;
       +        }
       +        if(~dir->mtime != 0){
       +                tv[0].tv_sec = dir->mtime;
       +                tv[0].tv_usec = 0;
       +                tv[1].tv_sec = dir->mtime;
       +                tv[1].tv_usec = 0;
       +                if(futimes(fd, tv) < 0)
       +                        ret = -1;
       +        }
       +        return ret;
        }
        
 (DIR) diff --git a/src/lib9/dirread.c b/src/lib9/dirread.c
       t@@ -1,31 +1,22 @@
        #include <u.h>
       +#define NOPLAN9DEFINES
        #include <libc.h>
       -
       -#undef asctime
       -#undef ctime
       -#undef gmtime
       -#undef localtime
       -
        #include <sys/stat.h>
        #include <dirent.h>
        
        extern int _p9dir(struct stat*, char*, Dir*, char**, char*);
        
       -/* everyone has getdirentries, just use that */
       +/* almost everyone has getdirentries, just use that */
        static int
        mygetdents(int fd, char *buf, int n)
        {
                ssize_t nn;
       -#if _GETDIRENTRIES_TAKES_LONG
                long off;
       -#else
       -        off_t off;
       -#endif
        
       -        off = seek(fd, 0, 1);
       +        off = p9seek(fd, 0, 1);
                nn = getdirentries(fd, buf, n, &off);
                if(nn > 0)
       -                seek(fd, off, 0);
       +                p9seek(fd, off, 0);
                return nn;
        }
        
 (DIR) diff --git a/src/libdraw/BOT b/src/libdraw/BOT
 (DIR) diff --git a/src/libdraw/x11-init.c b/src/libdraw/x11-init.c
       t@@ -26,6 +26,15 @@ _initdisplay(void (*error)(Display*, char*), char *label)
                Display *d;
                Memimage *m;
        
       +        /*
       +         * This rfork(RFNOTEG) isn't exactly right,
       +         * but we need some way to signal window 
       +         * closes.  Right now we post a hangup
       +         * note to the note group, which kills a whole
       +         * lot more than just the current program
       +         * if we don't do this.
       +         */
       +        rfork(RFNOTEG);
                memimageinit();
        
                d = mallocz(sizeof(Display), 1);
 (DIR) diff --git a/src/libdraw/x11-itrans.c b/src/libdraw/x11-itrans.c
       t@@ -190,8 +190,15 @@ xtoplan9mouse(XDisplay *xd, XEvent *e, Mouse *m)
                switch(e->type){
                case ButtonPress:
                        be = (XButtonEvent*)e;
       -                /* Fake message, just sent to make us announce snarf. */
       -                if(be->send_event && be->state==~0 && be->button==~0)
       +                /* 
       +                 * Fake message, just sent to make us announce snarf.
       +                 * Apparently state and button are 16 and 8 bits on
       +                 * the wire, since they are truncated by the time they
       +                 * get to us.
       +                 */
       +                if(be->send_event
       +                && (~be->state&0xFFFF)==0
       +                && (~be->button&0xFF)==0)
                                return -1;
                        /* BUG? on mac need to inherit these from elsewhere? */
                        m->xy.x = be->x;
 (DIR) diff --git a/src/libhttpd/parsereq.c b/src/libhttpd/parsereq.c
       t@@ -15,7 +15,6 @@ static        char*                abspath(HConnect *cc, char *origpath, char *curdir);
        static        int                getc(HConnect*);
        static        char*                getword(HConnect*);
        static        Strings                parseuri(HConnect *c, char*);
       -static        Strings                stripmagic(char*);
        static        Strings                stripsearch(char*);
        
        /*
 (DIR) diff --git a/src/libthread/sched.c b/src/libthread/sched.c
       t@@ -3,12 +3,14 @@
        
        //static Thread        *runthread(Proc*);
        
       +#if 0
        static char *_psstate[] = {
                "Dead",
                "Running",
                "Ready",
                "Rendezvous",
        };
       +#endif
        
        static char*
        psstate(int s)
 (DIR) diff --git a/src/mkcommon b/src/mkcommon
       t@@ -6,16 +6,20 @@
        %.$O:        %.s
                $AS $AFLAGS $stem.s
        
       -clean:V:
       +y.tab.h y.tab.c:        $YFILES
       +        $YACC $YFLAGS $prereq
       +
       +nuke:V: nuke-common
       +clean:V: clean-common
       +%.clean:V: %.clean-common
       +
       +nuke-common:V:
       +        rm -f *.[$OS] [$OS].out $CLEANFILES $NUKEFILES
       +
       +clean-common:
                rm -f *.[$OS] [$OS].out $CLEANFILES
        
       -%.clean:V:
       +%.clean-common:V:
                rm -f $stem.[$OS] [$OS].$stem $stem.acid $stem
        
       -nuke:V:
       -        rm -f *.[$OS] [$OS].out $CLEANFILES
        
       -Makefile:D: mkfile
       -        rm -f Makefile
       -        sh $PLAN9/src/mk2make mkfile >Makefile
       -        chmod 444 Makefile
 (DIR) diff --git a/src/mkhdr b/src/mkhdr
       t@@ -1,26 +1,25 @@
        SYSNAME=`uname`
        OBJTYPE=`uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g'`
        
       +BIN=$PLAN9/bin
       +LIBDIR=$PLAN9/lib
       +
       +# BUG - figure this out automatically
        X11=/usr/X11R6
       +
       +O=o
       +OS=$O
       +
        CC=9c
        LD=9l
        AS=9a
        AR=9ar
       +INSTALL=install -c
        CFLAGS=
        LDFLAGS=
        AFLAGS=
       -O=o
       -
       -BIN=$PLAN9/bin
       -LIBDIR=$PLAN9/lib
       +CLEANFILES=
       +NUKEFILES=
        
        <|cat $PLAN9/src/mk.$SYSNAME-$OBJTYPE 2>/dev/null || true
        
       -OS=$O
       -LD=9l
       -LDFLAGS=$LDFLAGS -L$LIBDIR
       -
       -CLEANFILES=*.$O
       -NUKEFILES=
       -
       -INSTALL=install -c
 (DIR) diff --git a/src/mkmany b/src/mkmany
       t@@ -1,73 +1,26 @@
       -PROGS=${TARG:%=$O.%}
       -
        none:VQ:
                echo usage: mk all, install, installall, '$O'.cmd, cmd.install, or cmd.installall
        
       +PROGS=${TARG:%=$O.%}
       +
        all:V:        $PROGS
        
        $O.%:        %.$O $OFILES $LIB
                $LD -o $target $prereq $LDFLAGS
        
       -%.$O:        $HFILES                # don't combine with following %.$O rules
       -
       -%.$O:        %.c
       -        $CC $CFLAGS $stem.c
       -
       -%.$O:        %.s
       -        $AS $AFLAGS $stem.s
       -
       -y.tab.h y.tab.c:        $YFILES
       -        $YACC $YFLAGS $prereq
       -
        %.install:V:        $BIN/%
        
        $BIN/%:        $O.%
                $INSTALL $O.$stem $BIN/$stem
        
       -%.installall:V:
       -        for (objtype in $CPUS)
       -                mk $stem.install
       -
        install:V:
       -        # for (i in $TARG)
       -        #         mk $MKFLAGS $i.install
                for i in $TARG
                do
                        mk $MKFLAGS $i.install
                done
        
       -installall:V:
       -        for(objtype in $CPUS)
       -                mk $MKFLAGS install
       -
       -%.safeinstall:V:
       -        mk $O.$stem
       -        test -e $BIN/$stem && mv $BIN/$stem $BIN/_$stem
       -        mk $stem.install
       -
       -%.safeinstallall:V:
       -        for(objtype in $CPUS)
       -                mk $MKFLAGS $stem.safeinstall
       -
       -safeinstall:V:
       -        for(i in $TARG)
       -                mk $MKFLAGS $i.safeinstall
       -
       -safeinstallall:V:
       -        for (objtype in $CPUS)
       -                mk safeinstall
       -
       -update:V:
       -        update $UPDATEFLAGS $UPDATE
       -
       -nuke:V:
       -        rm -f *.[$OS] y.tab.? y.debug y.output [$OS].* *.acid $TARG $NUKEFILES
       -
       -clean:V:
       -        rm -f *.[$OS] y.tab.? y.debug y.output [$OS].* $TARG $CLEANFILES
       +CLEANFILES=$CLEANFILES $PROGS
       +NUKEFILES=$NUKEFILES ${TARG:%=$BIN/%}
        
       -%.clean:V:
       -        rm -f $stem.[$OS] [$OS].$stem $stem.acid $stem
       +<$PLAN9/src/mkcommon
        
       -%.acid: %.$O $HFILES
       -        $CC $CFLAGS -a $stem.c >$target
 (DIR) diff --git a/src/mkmk.sh b/src/mkmk.sh
       t@@ -19,7 +19,7 @@ cd libutf
        9c  utfrrune.c
        9c  utfrune.c
        9c  utfutf.c
       -ar rvc ../../lib/libutf.a rune.o runestrcat.o runestrchr.o runestrcmp.o runestrcpy.o runestrdup.o runestrlen.o runestrecpy.o runestrncat.o runestrncmp.o runestrncpy.o runestrrchr.o runestrstr.o runetype.o utfecpy.o utflen.o utfnlen.o utfrrune.o utfrune.o utfutf.o
       +9ar rvc ../../lib/libutf.a rune.o runestrcat.o runestrchr.o runestrcmp.o runestrcpy.o runestrdup.o runestrlen.o runestrecpy.o runestrncat.o runestrncmp.o runestrncpy.o runestrrchr.o runestrstr.o runetype.o utfecpy.o utflen.o utfnlen.o utfrrune.o utfrune.o utfutf.o
        cd ..
        cd libfmt
        9c  dofmt.c
       t@@ -56,7 +56,7 @@ cd libfmt
        9c  vsnprint.c
        9c  charstod.c
        9c  pow10.c
       -ar rvc ../../lib/libfmt.a dofmt.o errfmt.o fltfmt.o fmt.o fmtfd.o fmtfdflush.o fmtlock.o fmtprint.o fmtquote.o fmtrune.o fmtstr.o fmtvprint.o fprint.o nan64.o print.o runefmtstr.o runeseprint.o runesmprint.o runesnprint.o runesprint.o runevseprint.o runevsmprint.o runevsnprint.o seprint.o smprint.o snprint.o sprint.o strtod.o vfprint.o vseprint.o vsmprint.o vsnprint.o charstod.o pow10.o
       +9ar rvc ../../lib/libfmt.a dofmt.o errfmt.o fltfmt.o fmt.o fmtfd.o fmtfdflush.o fmtlock.o fmtprint.o fmtquote.o fmtrune.o fmtstr.o fmtvprint.o fprint.o nan64.o print.o runefmtstr.o runeseprint.o runesmprint.o runesnprint.o runesprint.o runevseprint.o runevsmprint.o runevsnprint.o seprint.o smprint.o snprint.o sprint.o strtod.o vfprint.o vseprint.o vsmprint.o vsnprint.o charstod.o pow10.o
        cd ..
        cd libbio
        9c  bbuffered.c
       t@@ -75,7 +75,7 @@ cd libbio
        9c  bwrite.c
        9c  bgetrune.c
        9c  bputrune.c
       -ar rvc ../../lib/libbio.a bbuffered.o bfildes.o bflush.o bgetc.o bgetd.o binit.o boffset.o bprint.o bputc.o brdline.o brdstr.o bread.o bseek.o bwrite.o bgetrune.o bputrune.o
       +9ar rvc ../../lib/libbio.a bbuffered.o bfildes.o bflush.o bgetc.o bgetd.o binit.o boffset.o bprint.o bputc.o brdline.o brdstr.o bread.o bseek.o bwrite.o bgetrune.o bputrune.o
        cd ..
        cd libregexp
        9c  regcomp.c
       t@@ -86,7 +86,7 @@ cd libregexp
        9c  rregaux.c
        9c  rregexec.c
        9c  rregsub.c
       -ar rvc ../../lib/libregexp9.a regcomp.o regerror.o regexec.o regsub.o regaux.o rregaux.o rregexec.o rregsub.o
       +9ar rvc ../../lib/libregexp9.a regcomp.o regerror.o regexec.o regsub.o regaux.o rregaux.o rregexec.o rregsub.o
        cd ..
        cd cmd/mk
        9c  arc.c
       t@@ -111,6 +111,6 @@ cd cmd/mk
        9c  varsub.c
        9c  word.c
        9c  unix.c
       -9l -o o.mk arc.o archive.o bufblock.o env.o file.o graph.o job.o lex.o main.o match.o mk.o parse.o recipe.o rule.o run.o sh.o shprint.o symtab.o var.o varsub.o word.o unix.o -L../../../lib -lregexp9 -lbio -lfmt -lutf
       +9l -o o.mk arc.o archive.o bufblock.o env.o file.o graph.o job.o lex.o main.o match.o mk.o parse.o recipe.o rule.o run.o sh.o shprint.o symtab.o var.o varsub.o word.o unix.o -lregexp9 -lbio -lfmt -lutf
        install -c o.mk ../../../bin/mk
        cd ..
 (DIR) diff --git a/src/mkone b/src/mkone
       t@@ -2,43 +2,16 @@ PROG=$O.$TARG
        
        all:V:        $PROG
        
       -$O.$TARG:        $OFILES $LIB
       +$PROG:        $OFILES $LIB
                $LD -o $target $prereq $LDFLAGS
        
       -%.$O:        $HFILES                # don't combine with following %.$O rules
       -
       -%.$O:        %.c
       -        $CC $CFLAGS $stem.c
       -
       -%.$O:        %.s
       -        $AS $AFLAGS $stem.s
       -
       -y.tab.h y.tab.c:        $YFILES
       -        $YACC $YFLAGS $prereq
       -
       +install:V: $TARG.install
        %.install:V:        $BIN/%
        
        $BIN/%:        $O.%
                $INSTALL $O.$stem $BIN/$stem
        
       -%.installall:V:
       -        for (objtype in $CPUS)
       -                mk $stem.install
       -
       -install:V: $TARG.install
       -
       -installall:V:
       -        for(objtype in $CPUS)
       -                mk $MKFLAGS install
       -
       -nuke:V:
       -        rm -f *.[$OS] y.tab.? y.debug y.output [$OS].* *.acid $TARG $NUKEFILES
       -
       -clean:V:
       -        rm -f *.[$OS] y.tab.? y.debug y.output [$OS].* $TARG $CLEANFILES
       +NUKEFILES=$NUKEFILES $BIN/$TARG
        
       -%.clean:V:
       -        rm -f $stem.[$OS] [$OS].$stem $stem.acid $stem
       +<$PLAN9/src/mkcommon
        
       -%.acid: %.$O $HFILES
       -        $CC $CFLAGS -a $stem.c >$target
 (DIR) diff --git a/src/mksyslib b/src/mksyslib
       t@@ -8,4 +8,6 @@ $PLAN9/lib/$LIB:V:        $OFILES                        # force archive even when not needed
        
        all install:V: $PLAN9/lib/$LIB
        
       +NUKEFILES=$NUKEFILES $PLAN9/lib/$LIB
       +
        <$PLAN9/src/mkcommon