new delmesg
This commit is contained in:
parent
06d255079a
commit
0d42cc9dcb
3 changed files with 18 additions and 13 deletions
|
|
@ -138,6 +138,7 @@ extern void mesgmenumarkdel(Window*, Message*, Message*, int);
|
||||||
extern Message* mesglookup(Message*, char*, char*);
|
extern Message* mesglookup(Message*, char*, char*);
|
||||||
extern Message* mesglookupfile(Message*, char*, char*);
|
extern Message* mesglookupfile(Message*, char*, char*);
|
||||||
extern void mesgfreeparts(Message*);
|
extern void mesgfreeparts(Message*);
|
||||||
|
extern int mesgcommand(Message*, char*);
|
||||||
|
|
||||||
extern char* readfile(char*, char*, int*);
|
extern char* readfile(char*, char*, int*);
|
||||||
extern char* readbody(char*, char*, int*);
|
extern char* readbody(char*, char*, int*);
|
||||||
|
|
|
||||||
|
|
@ -310,15 +310,22 @@ showmesg(char *name, char *digest)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
delmesg(char *name, char *digest, int dodel)
|
delmesg(char *name, char *digest, int dodel, char *save)
|
||||||
{
|
{
|
||||||
Message *m;
|
Message *m;
|
||||||
|
|
||||||
m = mesglookupfile(&mbox, name, digest);
|
m = mesglookupfile(&mbox, name, digest);
|
||||||
if(m != nil){
|
if(m != nil){
|
||||||
mesgmenumarkdel(wbox, &mbox, m, 0);
|
if(save)
|
||||||
|
mesgcommand(m, estrstrdup("Save ", save));
|
||||||
if(dodel)
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -339,7 +346,7 @@ plumbthread(void)
|
||||||
else if(strcmp(type, "new") == 0)
|
else if(strcmp(type, "new") == 0)
|
||||||
newmesg(m->data, digest);
|
newmesg(m->data, digest);
|
||||||
else if(strcmp(type, "delete") == 0)
|
else if(strcmp(type, "delete") == 0)
|
||||||
delmesg(m->data, digest, 0);
|
delmesg(m->data, digest, 0, nil);
|
||||||
else
|
else
|
||||||
fprint(2, "Mail: unknown plumb attribute %s\n", type);
|
fprint(2, "Mail: unknown plumb attribute %s\n", type);
|
||||||
plumbfree(m);
|
plumbfree(m);
|
||||||
|
|
@ -378,7 +385,7 @@ plumbsendthread(void *v)
|
||||||
int
|
int
|
||||||
mboxcommand(Window *w, char *s)
|
mboxcommand(Window *w, char *s)
|
||||||
{
|
{
|
||||||
char *args[10], **targs;
|
char *args[10], **targs, *save;
|
||||||
Message *m, *next;
|
Message *m, *next;
|
||||||
int ok, nargs, i, j;
|
int ok, nargs, i, j;
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
|
@ -430,12 +437,9 @@ mboxcommand(Window *w, char *s)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if(strcmp(s, "Delmesg") == 0){
|
if(strcmp(s, "Delmesg") == 0){
|
||||||
if(nargs > 1){
|
save = nil;
|
||||||
for(i=1; i<nargs; i++){
|
if(nargs > 1)
|
||||||
snprint(buf, sizeof buf, "%s%s", mbox.name, args[i]);
|
save = args[1];
|
||||||
delmesg(buf, nil, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s = winselection(w);
|
s = winselection(w);
|
||||||
if(s == nil)
|
if(s == nil)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -452,7 +456,7 @@ mboxcommand(Window *w, char *s)
|
||||||
if(j == 0)
|
if(j == 0)
|
||||||
continue;
|
continue;
|
||||||
snprint(buf, sizeof buf, "%s%d", mbox.name, j);
|
snprint(buf, sizeof buf, "%s%d", mbox.name, j);
|
||||||
delmesg(buf, nil, 1);
|
delmesg(buf, nil, 1, save);
|
||||||
}
|
}
|
||||||
free(s);
|
free(s);
|
||||||
free(targs);
|
free(targs);
|
||||||
|
|
|
||||||
|
|
@ -552,7 +552,7 @@ mesgmenudel(Window *w, Message *mbox, Message *m)
|
||||||
fsclose(w->addr);
|
fsclose(w->addr);
|
||||||
w->addr = nil;
|
w->addr = nil;
|
||||||
w->data = nil;
|
w->data = nil;
|
||||||
mbox->dirty = 1;
|
/* assume caller knows best mbox->dirty = 1; */
|
||||||
m->deleted = 1;
|
m->deleted = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue