tmailfs: small fixes and plan 9 support - 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 2fc68b6d8ebc0479318fa9764bfaa7ff58165fc3
 (DIR) parent bd51695c9278f9321d420a43a16f575471f32476
 (HTM) Author: David du Colombier <0intro@gmail.com>
       Date:   Tue, 22 Nov 2011 14:09:52 -0500
       
       mailfs: small fixes and plan 9 support
       
       R=rsc
       CC=plan9port.codebot
       http://codereview.appspot.com/5429044
       
       Diffstat:
         M src/cmd/upas/nfs/a.h                |       3 +++
         M src/cmd/upas/nfs/box.c              |       4 ++++
         M src/cmd/upas/nfs/fs.c               |      10 +++++++---
         M src/cmd/upas/nfs/imap.c             |      21 +++++++++++++++++++--
         M src/cmd/upas/nfs/imap.h             |       1 +
         M src/cmd/upas/nfs/thread.c           |       1 +
       
       6 files changed, 35 insertions(+), 5 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/upas/nfs/a.h b/src/cmd/upas/nfs/a.h
       t@@ -6,6 +6,7 @@
        #include <fcall.h>
        #include <plumb.h>
        #include <9p.h>
       +#include <ctype.h>
        
        enum
        {
       t@@ -44,3 +45,5 @@ extern Imap *imap;
        #define erealloc realloc
        #define estrdup strdup
        
       +#pragma varargck type "$" Sx*
       +#pragma varargck type "Z" char*
 (DIR) diff --git a/src/cmd/upas/nfs/box.c b/src/cmd/upas/nfs/box.c
       t@@ -208,7 +208,11 @@ msgplumb(Msg *m, int delete)
                a[ai].next = nil;
                
                p.attr = a;
       +#ifdef PLAN9PORT
                snprint(buf, sizeof buf, "Mail/%s/%ud", m->box->name, m->id);
       +#else
       +        snprint(buf, sizeof buf, "/mail/fs/%s/%ud", m->box->name, m->id);
       +#endif
                p.ndata = strlen(buf);
                p.data = buf;
                
 (DIR) diff --git a/src/cmd/upas/nfs/fs.c b/src/cmd/upas/nfs/fs.c
       t@@ -93,6 +93,7 @@ Srv fs;
        Qid rootqid;
        ulong t0;
        
       +#ifdef PLAN9PORT
        void
        responderror(Req *r)
        {
       t@@ -101,6 +102,7 @@ responderror(Req *r)
                rerrstr(e, sizeof e);
                respond(r, e);
        }
       +#endif
        
        int
        qtype(Qid q)
       t@@ -378,7 +380,8 @@ mkbody(Part *p, Qid q)
        {
                char *t;
                int len;
       -        
       +
       +        USED(q);
                if(p->msg->part[0] == p)
                        t = p->rawbody;
                else
       t@@ -571,7 +574,7 @@ filedata(int type, Box *box, Msg *msg, Part *part, char **pp, int *len, int *fre
                        fmtstrinit(&fmt);
                        if(part == msg->part[0]){
                                if(msg->date)
       -                                fmtprint(&fmt, "unixdate %lud %s", msg->date, ctime(msg->date));
       +                                fmtprint(&fmt, "unixdate %ud %s", msg->date, ctime(msg->date));
                                if(msg->flags){
                                        filedata(Qflags, box, msg, part, pp, nil, freeme, 0, ZQ);
                                        fmtprint(&fmt, "flags %s\n", buf);
       t@@ -1202,7 +1205,8 @@ static void
        fsrecv(void *v)
        {
                Req *r;
       -        
       +
       +        USED(v);
                while((r = recvp(fsreqchan)) != nil){
                        switch(r->ifcall.type){
                        case Tattach:
 (DIR) diff --git a/src/cmd/upas/nfs/imap.c b/src/cmd/upas/nfs/imap.c
       t@@ -754,12 +754,16 @@ imapdial(char *server, int mode)
                        fd[0] = dup(p[0], -1);
                        fd[1] = dup(p[0], -1);
                        fd[2] = dup(2, -1);
       +#ifdef PLAN9PORT
                        tmp = esmprint("%s:993", server);
       -                if(threadspawnl(fd, "tlsclient", "tlsclient", tmp, nil) < 0
       -                    && threadspawnl(fd, "/usr/sbin/stunnel3", "stunnel3", "-c", "-r", tmp, nil) < 0
       +                if(threadspawnl(fd, "/usr/sbin/stunnel3", "stunnel3", "-c", "-r", tmp, nil) < 0
                            && threadspawnl(fd, "/usr/bin/stunnel3", "stunnel3", "-c", "-r", tmp, nil) < 0
                            && threadspawnl(fd, "/usr/sbin/stunnel", "stunnel", "-c", "-r", tmp, nil) < 0
                            && threadspawnl(fd, "/usr/bin/stunnel", "stunnel", "-c", "-r", tmp, nil) < 0){
       +#else
       +                tmp = esmprint("tcp!%s!993", server);
       +                if(threadspawnl(fd, "/bin/tlsclient", "tlsclient", tmp, nil) < 0){
       +#endif
                                free(tmp);
                                close(p[0]);
                                close(p[1]);
       t@@ -1300,6 +1304,8 @@ xexists(Imap *z, Sx *sx)
        static void
        xflags(Imap *z, Sx *sx)
        {
       +        USED(z);
       +        USED(sx);
                /*
                 * This response contains in sx->sx[2] the list of flags
                 * that can be validly attached to messages in z->box.
       t@@ -1311,6 +1317,7 @@ xflags(Imap *z, Sx *sx)
        static void
        xbye(Imap *z, Sx *sx)
        {
       +        USED(sx);
                close(z->fd);
                z->fd = -1;
                z->connected = 0;
       t@@ -1496,6 +1503,7 @@ copyaddrs(Sx *v)
        static void
        xmsgenvelope(Msg *msg, Sx *k, Sx *v)
        {
       +        USED(k);
                hdrfree(msg->part[0]->hdr);
                msg->part[0]->hdr = parseenvelope(v);
                msgplumb(msg, 0);
       t@@ -1601,6 +1609,7 @@ parsestructure(Part *part, Sx *v)
        static void
        xmsgbody(Msg *msg, Sx *k, Sx *v)
        {
       +        USED(k);
                if(v->type != SxList){
                        warn("bad body: %$", v);
                        return;
       t@@ -1742,24 +1751,32 @@ xokuidvalidity(Imap *z, Sx *sx)
        static void
        xokpermflags(Imap *z, Sx *sx)
        {
       +        USED(z);
       +        USED(sx);
        /*        z->permflags = parseflags(sx); */
        }
        
        static void
        xokunseen(Imap *z, Sx *sx)
        {
       +        USED(z);
       +        USED(sx);
        /*        z->unseen = sx->number; */
        }
        
        static void
        xokreadwrite(Imap *z, Sx *sx)
        {
       +        USED(z);
       +        USED(sx);
        /*        z->boxmode = ORDWR; */
        }
        
        static void
        xokreadonly(Imap *z, Sx *sx)
        {
       +        USED(z);
       +        USED(sx);
        /*        z->boxmode = OREAD; */
        }
        
 (DIR) diff --git a/src/cmd/upas/nfs/imap.h b/src/cmd/upas/nfs/imap.h
       t@@ -1,4 +1,5 @@
        typedef struct Imap Imap;
       +#pragma incomplete Imap
        
        void                imapcheckbox(Imap *z, Box *b);
        Imap*                imapconnect(char *server, int mode, char *root);
 (DIR) diff --git a/src/cmd/upas/nfs/thread.c b/src/cmd/upas/nfs/thread.c
       t@@ -24,6 +24,7 @@ mailproc(void *v)
        {
                New n;
                
       +        USED(v);
                while(recv(mailthreadchan, &n) == 1)
                        threadcreate(n.fn, n.arg, STACK);
        }