summaryrefslogtreecommitdiff
path: root/sys/src/cmd/upas/Mail/reply.c
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2019-12-01 17:14:13 -0800
committerOri Bernstein <ori@eigenstate.org>2019-12-01 17:14:13 -0800
commit3889b249d4b18acc2ec85e0a88e0f1c306b4dd29 (patch)
tree77fd7e537061b18684ef6331b00411545e222622 /sys/src/cmd/upas/Mail/reply.c
parent84c4c81ceecfa8f51949787fc2dbe7b14164a353 (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.c20
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