]>
diplodocus.org Git - nmh/blob - docs/historical/mh-nov-1983/cmds/rmf.c
2 static char sccsid
[] = "@(#)rmf.c 1.4 7/7/83";
11 char *anoyes
[]; /* Std no/yes gans array */
17 struct swit switches
[] = {
25 register char *cp
, **ap
;
26 char *folder
, buf
[128];
28 char *arguments
[50], **argp
;
34 cp
= r1bindex(argv
[0], '/');
35 if((cp
= m_find(cp
)) != NULL
) {
36 ap
= brkstring(cp
= getcpy(cp
), " ", "\n");
37 ap
= copyip(ap
, arguments
);
44 switch(smatch(++cp
, switches
)) {
45 case -2:ambigsw(cp
, switches
); /* ambiguous */
48 case -1:fprintf(stderr
, "rmf: -%s unknown\n", cp
);
51 case 0: help("rmf [+folder] [switches]", switches
);
56 fprintf(stderr
, "Only one folder at a time.\n");
61 fprintf(stderr
, "Usage: rmf [+folder]\n");
66 folder
= m_getfolder();
69 subf
= !((!index(folder
, '/')) | (*folder
== '/') | (*folder
== '.'));
70 if(def_fold
&& !subf
) {
71 cp
= concat("Remove folder \"", folder
, "\" ?? ", 0);
78 if(subf
) { /* make parent "current" */
79 cp
= copy(folder
, buf
);
80 while(cp
> buf
&& *cp
!= '/') --cp
;
83 if(strcmp(m_find(pfolder
), buf
) != 0) {
84 printf("[+%s now current]\n", buf
);
85 m_replace(pfolder
, buf
);
97 register char *maildir
;
100 register char *cp
, *sp
;
105 if(!subf
&& strcmp(m_find(pfolder
), fold
) == 0) /* make default "current"*/
106 if(strcmp(m_find(pfolder
), defalt
) != 0) {
107 printf("[+%s now current]\n", defalt
);
108 fflush(stdout
); /*??*/
109 m_replace(pfolder
, defalt
);
111 maildir
= m_maildir(fold
);
112 if((cd
= chdir(maildir
)) < 0)
114 if(access(".", 2) == -1) {
115 funnyfold
: if(!m_delete(concat("cur-", fold
, 0)))
116 printf("[Folder %s de-referenced]\n", fold
);
118 fprintf(stderr
, "You have no profile entry for the %s folder %s\n",
119 cd
< 0 ? "unreadable" : "read-only", fold
);
123 ent
= readdir(dirp
); /* move pointer past "." */
124 ent
= readdir(dirp
); /* move pointer past ".." */
125 while(ent
= readdir(dirp
)) {
126 if (ent
->d_ino
==0) continue;
127 switch (ent
->d_name
[0]) {
140 if(unlink(ent
->d_name
) == -1) {
141 fprintf(stderr
, "Can't unlink %s:%s\n", fold
,ent
->d_name
);
146 if (strcmp(ent
->d_name
, "cur") == 0 ||
147 strcmp(ent
->d_name
, "@") == 0) {
148 if(unlink(ent
->d_name
) == -1) {
149 fprintf(stderr
, "Can't unlink %s:%s\n", fold
,ent
->d_name
);
153 fprintf(stderr
, "File \"%s/%s\" not deleted!\n", fold
, ent
->d_name
);
159 chdir(".."); /* Move out of dir to be deleted */
161 fprintf(stderr
, "Folder %s not removed!\n", fold
);
165 fprintf(stderr
, "rmdir failed!\n");