]>
diplodocus.org Git - nmh/blob - docs/historical/SRI-NOSC/delete.c
4 int vecp
, *vec
[MAXARGS
], fout
;
6 struct swit switches
[] {
15 char *folder
, *nfolder
, *maildir
, *msgs
[100], buf
[32];
17 register char *cp
, *sp
;
20 char *arguments
[50], **argp
;
33 if((cp
= m_find(ap
)) != -1) {
34 ap
= brkstring(cp
= getcpy(cp
), " ", "\n");
35 ap
= copyip(ap
, arguments
);
42 switch(smatch(++cp
, switches
)) {
43 case -2:ambigsw(cp
, switches
); /* ambiguous */
46 case -1:printf("-%s unknown\n", cp
);
49 case 0: printf("\"-all\" changed to \"all\"\n");
52 case 1: help(concat( inp
, " [+folder] [msgs] [switches]", 0),
58 printf("Only one folder at a time.\n");
68 folder
= m_getfolder();
69 maildir
= m_maildir(folder
);
70 if(chdir(maildir
) < 0) {
71 printf("Can't chdir to: "); flush();
75 if(!(mp
= m_gmsg(folder
))) {
76 printf("Can't read folder!?\n");
80 printf("No messages in \"%s\".\n", folder
);
83 for(msgnum
= 0; msgnum
< msgp
; msgnum
++)
84 if(!m_convert(msgs
[msgnum
], UNDELETED
, UNDELETED
))
89 m_replace("folder", folder
);
90 if((cp
= m_find("delete-prog")) == -1) {
91 for(msgnum
= mp
->lowsel
; msgnum
<= mp
->hghsel
; msgnum
++)
92 if(mp
->msgstats
[msgnum
] & SELECTED
) {
93 sp
= getcpy(m_name(msgnum
));
98 while(--cp
>= buf
&& *cp
!= '/');
99 *++cp
= ','; /* backup convention */
101 if(link(sp
, buf
) == -1 || unlink(sp
) == -1)
102 printf("Can't rename %s to %s.\n", sp
, buf
);
105 if(mp
->numsel
> MAXARGS
-2) {
106 printf("More than %d messages for deletion-prog\n",MAXARGS
-2);
109 for(msgnum
= mp
->lowsel
; msgnum
<= mp
->hghsel
; msgnum
++)
110 if(mp
->msgstats
[msgnum
]&SELECTED
)
111 vec
[vecp
++] = getcpy(m_name(msgnum
));
117 printf("Can't exec deletion prog--"); flush();