tvarious fixes - 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 689be541258e9e701a600d6bd2fc3e5241726867
 (DIR) parent 77fd60a177e50b398f1f235bcc47cbfc92e0fa80
 (HTM) Author: rsc <devnull@localhost>
       Date:   Mon, 28 Nov 2005 00:39:42 +0000
       
       various fixes
       
       Diffstat:
         M src/cmd/acid/builtin.c              |      31 +++++++++++++++++++++++++------
         M src/cmd/acid/proc.c                 |      18 ++----------------
         M src/cmd/acid/util.c                 |       2 +-
       
       3 files changed, 28 insertions(+), 23 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/acid/builtin.c b/src/cmd/acid/builtin.c
       t@@ -28,7 +28,7 @@ void        match(Node*, Node*);
        void        status(Node*, Node*);
        void        xkill(Node*,Node*);
        void        waitstop(Node*, Node*);
       -void sysstop(Node*, Node*);
       +void waitsyscall(Node*, Node*);
        void        stop(Node*, Node*);
        void        start(Node*, Node*);
        void        filepc(Node*, Node*);
       t@@ -47,6 +47,7 @@ void stringn(Node*, Node*);
        void xregister(Node*, Node*);
        void refconst(Node*, Node*);
        void dolook(Node*, Node*);
       +void step1(Node*, Node*);
        
        typedef struct Btab Btab;
        struct Btab
       t@@ -87,13 +88,14 @@ struct Btab
                "start",        start,
                "startstop",        startstop,
                "status",        status,
       +        "step1",        step1,
                "stop",                stop,
                "strace",        strace,
                "stringn",        stringn,
       -        "sysstop",                sysstop,
                "textfile",        textfile,
                "var",        dolook,
                "waitstop",        waitstop,
       +        "waitsyscall",        waitsyscall,
                0
        };
        
       t@@ -221,6 +223,23 @@ newproc(Node *r, Node *args)
        }
        
        void
       +step1(Node *r, Node *args)
       +{
       +        Node res;
       +
       +        USED(r);
       +        if(args == 0)
       +                error("step1(pid): no pid");
       +        expr(args, &res);
       +        if(res.type != TINT)
       +                error("step1(pid): arg type");
       +
       +        msg(res.store.u.ival, "step");
       +        notes(res.store.u.ival);
       +        dostop(res.store.u.ival);
       +}
       +
       +void
        startstop(Node *r, Node *args)
        {
                Node res;
       t@@ -256,16 +275,16 @@ waitstop(Node *r, Node *args)
        }
        
        void
       -sysstop(Node *r, Node *args)
       +waitsyscall(Node *r, Node *args)
        {
                Node res;
        
                USED(r);
                if(args == 0)
       -                error("waitstop(pid): no pid");
       +                error("waitsyscall(pid): no pid");
                expr(args, &res);
                if(res.type != TINT)
       -                error("waitstop(pid): arg type");
       +                error("waitsycall(pid): arg type");
        
                Bflush(bout);
                msg(res.store.u.ival, "sysstop");
       t@@ -471,7 +490,7 @@ funcbound(Node *r, Node *args)
                        error("fnbound(addr): arg type");
        
                n = fnbound(res.store.u.ival, bounds);
       -        if (n != 0) {
       +        if (n >= 0) {
                        r->store.u.l = al(TINT);
                        l = r->store.u.l;
                        l->store.u.ival = bounds[0];
 (DIR) diff --git a/src/cmd/acid/proc.c b/src/cmd/acid/proc.c
       t@@ -88,6 +88,7 @@ nproc(char **argv)
                        fatal("new: exec %s: %r");
                default:
                        install(pid);
       +                msg(pid, "attached");
                        msg(pid, "waitstop");
                        notes(pid);
                        sproc(pid);
       t@@ -242,21 +243,6 @@ msg(int pid, char *msg)
        char *
        getstatus(int pid)
        {
       -        int fd;
       -        char *p;
       -
       -        static char buf[128];
       -
       -        sprint(buf, "/proc/%d/status", pid);
       -        fd = open(buf, OREAD);
       -        if(fd < 0)
       -                error("open %s: %r", buf);
       -        read(fd, buf, sizeof(buf));
       -        close(fd);
       -        p = buf+56+12;                        /* Do better! */
       -        while(*p == ' ')
       -                p--;
       -        p[1] = '\0';
       -        return buf+56;                        /* ditto */
       +        return "unknown";
        }
        
 (DIR) diff --git a/src/cmd/acid/util.c b/src/cmd/acid/util.c
       t@@ -73,7 +73,7 @@ addvarsym(Fhdr *fp)
                Lsym *l;
                String *file;
                ulong v;
       -        char buf[1024];
       +        char buf[65536];        /* Some of those C++ names are really big */
                List *list, **tail, *tl;
        
                if(fp == nil)