ref: f402381351f0648e4c2142906db1bea2dda23d75
parent: efc2d967bb2d6ca8ef68bcc43f89bcd0e0f0be3a
author: Ori Bernstein <ori@eigenstate.org>
date: Thu Nov 5 00:40:34 EST 2020
improve attachment handling, show when message is sent
--- a/comp.c
+++ b/comp.c
@@ -61,6 +61,8 @@
if(n == -1)
return;
+ if(fprint(c->ctl, "name %s:Sent\n", c->path) == -1)
+ sysfatal("write ctl: %r");
if(c->replyto != nil){
if((m = mesglookup(c->rname, c->rdigest)) == nil)
return;
@@ -150,11 +152,10 @@
c = emalloc(sizeof(Comp));
if(r != nil)
- path = esmprint("%s%s%s.%d", mbox.path, r->name, "Reply", ncompose++);
+ c->path = esmprint("%s%s%s.%d", mbox.path, r->name, "Reply", ncompose++);
else
- path = esmprint("%sCompose.%d", mbox.path, ncompose++);
- wininit(c, path);
- free(path);
+ c->path = esmprint("%sCompose.%d", mbox.path, ncompose++);
+ wininit(c, c->path);
wintagwrite(c, "Delmesg Save Post ");
wfd = bwinopen(c, "body", OWRITE);
--- a/mail.h
+++ b/mail.h
@@ -61,6 +61,7 @@
char *replyto;
char *rname;
char *rdigest;
+ char *path;
int quitting;
Comp *qnext;
--- a/mbox.c
+++ b/mbox.c
@@ -698,7 +698,7 @@
Fn mboxfn[] = {
{"Put", mbflush},
{"Delmesg", delmesg},
- {"Delmesg", undelmesg},
+ {"Undelmesg", undelmesg},
{"Mark", mbmarkmesg},
{"Del", quitall},
#ifdef NOTYET
--- a/mesg.c
+++ b/mesg.c
@@ -254,7 +254,7 @@
home = getenv("home");
if(m->nattachments != 0)
- fprint(wfd, "\n\n");
+ fprint(wfd, "\n");
for(i = 0; i < m->nattachments; i++){
a = m->attachments[i];
if(a == b)
@@ -262,20 +262,23 @@
name = a->name;
if(strncmp(a->name, m->name, strlen(m->name)) == 0)
name += strlen(m->name);
- fprint(wfd, "===> %s (%s)\n", name, a->type);
- if(a->disposition != nil && strcmp(a->disposition, "inline") == 0){
- path = estrjoin(mbox.path, b->name, "body", nil);
+ fprint(wfd, "\n===> %s (%s)\n", name, a->type);
+ if(a->disposition != nil
+ && strcmp(a->disposition, "inline") == 0
+ && strcmp(a->type, "text/plain") == 0){
+ path = estrjoin(mbox.path, a->name, "body", nil);
if((rfd = open(path, OREAD)) != -1){
copy(wfd, rfd);
close(rfd);
}
- }else{
- name = a->filename;
- if(name == nil)
- name = "body";
- fprint(wfd, "\tcp %s%sbody %s/%s\n", mbox.path, a->name, home, name);
+ free(path);
continue;
}
+ name = a->filename;
+ if(name == nil)
+ name = "body";
+ fprint(wfd, "\tcp %s%sbody %s/%s\n", mbox.path, a->name, home, name);
+ continue;
}
close(wfd);
free(home);
--- a/win.c
+++ b/win.c
@@ -275,7 +275,7 @@
char *s;
int q0, q1, ns;
- if(e->q0 != e->q1)
+ if(e->action != 'L' || e->q0 != e->q1)
return nil;
q0 = wineval(w, "#%d-%s", e->q0, delim);
@@ -316,7 +316,7 @@
if(strncmp(text, mbox.path, strlen(mbox.path)) == 0)
return 1;
- if(regexec(mesgpat, text, nil, 0)){
+ else if(regexec(mesgpat, text, nil, 0)){
if((p = strchr(text, '/')) != nil)
p[1] = 0;
return 1;