commit 1190a7aa7a1dba5964688c4bb8ee09fc8930c488 from: rsc date: Fri Mar 03 14:13:22 2006 UTC more updates commit - fe02cd59570492c457b3e953ae4f95f7c896cd96 commit + 1190a7aa7a1dba5964688c4bb8ee09fc8930c488 blob - 1b374966409ad0036bbda24ccbca2e20b3b7f597 blob + 01d685be00d76075952be069f219c13f8188d1c2 --- src/cmd/acme/mail/dat.h +++ src/cmd/acme/mail/dat.h @@ -61,6 +61,7 @@ struct Message uchar tagposted; uchar recursed; uchar level; + uint replywinid; /* header info */ char *from; blob - 55a65b4a308aba976c529e07e36e86bdc0e5200b blob + 0d894d93e7892dff66ef7cea50275c68a48e9dc6 --- src/cmd/acme/mail/mesg.c +++ src/cmd/acme/mail/mesg.c @@ -347,6 +347,11 @@ readfile(char *dir, char *name, int *np) free(d); data = emalloc(len+1); len = fsreadn(fid, data, len); + if(len <= 0){ + fsclose(fid); + free(data); + return nil; + } fsclose(fid); if(np != nil) *np = len; blob - c28e15f1d2a20bea0d2751464d99c2790233de35 blob + a44441c877da27a2e9491da8044e98efed467f97 --- src/cmd/acme/mail/reply.c +++ src/cmd/acme/mail/reply.c @@ -70,12 +70,25 @@ quote(Message *m, CFid *fid, char *dir, char *quotetex void mkreply(Message *m, char *label, char *to, Plumbattr *attr, char *quotetext) { + char buf[100]; + CFid *fd; Message *r; char *dir, *t; int quotereply; Plumbattr *a; quotereply = (label[0] == 'Q'); + + if(quotereply && m && m->replywinid > 0){ + snprint(buf, sizeof buf, "%d/body", m->replywinid); + if((fd = fsopen(acmefs, buf, OWRITE)) != nil){ + dir = estrstrdup(mbox.name, m->name); + quote(m, fd, dir, quotetext); + free(dir); + return; + } + } + r = emalloc(sizeof(Message)); r->isreply = 1; if(m != nil) @@ -90,6 +103,8 @@ mkreply(Message *m, char *label, char *to, Plumbattr * r->name = emalloc(strlen(mbox.name)+strlen(label)+10); sprint(r->name, "%s%s%d", mbox.name, label, ++replyid); r->w = newwindow(); + if(m) + m->replywinid = r->w->id; winname(r->w, r->name); ctlprint(r->w->ctl, "cleartag"); wintagwrite(r->w, "fmt Look Post Undo", 4+5+5+4);