Introduction
Introduction Statistics Contact Development Disclaimer Help
tnew delmesg - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit 0d42cc9dcba5ca319a2cdb885811084856319dd3
parent 06d255079ae3c99ea1e980f85a4386f150d22e44
Author: rsc <devnull@localhost>
Date: Tue, 28 Feb 2006 00:49:05 +0000
new delmesg
Diffstat:
M src/cmd/acme/mail/dat.h | 1 +
M src/cmd/acme/mail/mail.c | 28 ++++++++++++++++------------
M src/cmd/acme/mail/mesg.c | 2 +-
3 files changed, 18 insertions(+), 13 deletions(-)
---
diff --git a/src/cmd/acme/mail/dat.h b/src/cmd/acme/mail/dat.h
t@@ -138,6 +138,7 @@ extern void mesgmenumarkdel(Window*,…
extern Message* mesglookup(Message*, char*, char*);
extern Message* mesglookupfile(Message*, char*, char*);
extern void mesgfreeparts(Message*);
+extern int mesgcommand(Message*, char*);
extern char* readfile(char*, char*, int*);
extern char* readbody(char*, char*, int*);
diff --git a/src/cmd/acme/mail/mail.c b/src/cmd/acme/mail/mail.c
t@@ -310,15 +310,22 @@ showmesg(char *name, char *digest)
}
void
-delmesg(char *name, char *digest, int dodel)
+delmesg(char *name, char *digest, int dodel, char *save)
{
Message *m;
m = mesglookupfile(&mbox, name, digest);
if(m != nil){
- mesgmenumarkdel(wbox, &mbox, m, 0);
+ if(save)
+ mesgcommand(m, estrstrdup("Save ", save));
if(dodel)
- m->writebackdel = 1;
+ mesgmenumarkdel(wbox, &mbox, m, 1);
+ else{
+ /* notification came from plumber - message is gone */
+ mesgmenudel(wbox, &mbox, m);
+ if(!m->opened)
+ mesgdel(&mbox, m);
+ }
}
}
t@@ -339,7 +346,7 @@ plumbthread(void)
else if(strcmp(type, "new") == 0)
newmesg(m->data, digest);
else if(strcmp(type, "delete") == 0)
- delmesg(m->data, digest, 0);
+ delmesg(m->data, digest, 0, nil);
else
fprint(2, "Mail: unknown plumb attribute %s\n", type);
plumbfree(m);
t@@ -378,7 +385,7 @@ plumbsendthread(void *v)
int
mboxcommand(Window *w, char *s)
{
- char *args[10], **targs;
+ char *args[10], **targs, *save;
Message *m, *next;
int ok, nargs, i, j;
char buf[128];
t@@ -430,12 +437,9 @@ mboxcommand(Window *w, char *s)
return 1;
}
if(strcmp(s, "Delmesg") == 0){
- if(nargs > 1){
- for(i=1; i<nargs; i++){
- snprint(buf, sizeof buf, "%s%s", mbox.name, ar…
- delmesg(buf, nil, 1);
- }
- }
+ save = nil;
+ if(nargs > 1)
+ save = args[1];
s = winselection(w);
if(s == nil)
return 1;
t@@ -452,7 +456,7 @@ mboxcommand(Window *w, char *s)
if(j == 0)
continue;
snprint(buf, sizeof buf, "%s%d", mbox.name, j);
- delmesg(buf, nil, 1);
+ delmesg(buf, nil, 1, save);
}
free(s);
free(targs);
diff --git a/src/cmd/acme/mail/mesg.c b/src/cmd/acme/mail/mesg.c
t@@ -552,7 +552,7 @@ mesgmenudel(Window *w, Message *mbox, Message *m)
fsclose(w->addr);
w->addr = nil;
w->data = nil;
- mbox->dirty = 1;
+/* assume caller knows best mbox->dirty = 1; */
m->deleted = 1;
}
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.