diff options
author | Ori Bernstein <ori@eigenstate.org> | 2019-12-01 17:14:13 -0800 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2019-12-01 17:14:13 -0800 |
commit | 3889b249d4b18acc2ec85e0a88e0f1c306b4dd29 (patch) | |
tree | 77fd7e537061b18684ef6331b00411545e222622 /sys/src/cmd/upas/Mail/reply.c | |
parent | 84c4c81ceecfa8f51949787fc2dbe7b14164a353 (diff) |
show and update flags in acme mail
now, it's possible to tell whether you've read or replied
to a message.
Diffstat (limited to 'sys/src/cmd/upas/Mail/reply.c')
-rw-r--r-- | sys/src/cmd/upas/Mail/reply.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/sys/src/cmd/upas/Mail/reply.c b/sys/src/cmd/upas/Mail/reply.c index 167a64bd5..83ad0a500 100644 --- a/sys/src/cmd/upas/Mail/reply.c +++ b/sys/src/cmd/upas/Mail/reply.c @@ -77,8 +77,10 @@ mkreply(Message *m, char *label, char *to, Plumbattr *attr, char *quotetext) quotereply = (label[0] == 'Q'); r = emalloc(sizeof(Message)); r->isreply = 1; - if(m != nil) + if(m != nil){ r->replyname = estrdup(m->name); + r->replydigest = estrdup(m->digest); + } r->next = replies.head; r->prev = nil; if(replies.head != nil) @@ -184,7 +186,7 @@ buildargv(char **inargv, char *argv[NARGS+1], char args[NARGCHAR]) void execproc(void *v) { - struct Exec *e; + Exec *e; int p[2], q[2]; char *prog; char *argv[NARGS+1], args[NARGCHAR]; @@ -382,8 +384,9 @@ mesgsend(Message *m) { char *s, *body, *to; int i, j, h, n, natt, p[2]; - struct Exec *e; + Exec *e; Channel *sync; + Message *r; int first, nfld, delit, ofd; char *copy, *fld[100], *now; @@ -479,7 +482,7 @@ mesgsend(Message *m) fprint(ofd, "Content-Transfer-Encoding: 8bit\n"); } - e = emalloc(sizeof(struct Exec)); + e = emalloc(sizeof(Exec)); if(pipe(p) < 0) error("can't create pipe: %r"); e->p[0] = p[0]; @@ -553,8 +556,13 @@ mesgsend(Message *m) close(p[1]); free(body); - if(m->replyname != nil) - mesgmenumark(mbox.w, m->replyname, "\t[replied]"); + print("replyname: %s, replydigest=%s\n", m->replyname, m->replydigest); + if(m->replyname){ + if((r = mesglookup(&mbox, m->replyname, m->replydigest)) != nil){ + setflags(r, "a"); + mesgmenureflag(mbox.w, r); + } + } if(m->name[0] == '/') s = estrdup(m->name); else |