Move #include from h/mh.h to source files
[mmh] / uip / rmf.c
index f214f59..615369c 100644 (file)
--- a/uip/rmf.c
+++ b/uip/rmf.c
@@ -7,14 +7,17 @@
 */
 
 #include <h/mh.h>
+#include <unistd.h>
+#include <dirent.h>
+#include <locale.h>
 
 static struct swit switches[] = {
 #define INTRSW  0
        { "interactive", 0 },
 #define NINTRSW  1
-       { "nointeractive", 0 },
+       { "nointeractive", 2 },
 #define VERSIONSW  2
-       { "version", 0 },
+       { "Version", 0 },
 #define HELPSW  3
        { "help", 0 },
        { NULL, 0 }
@@ -34,9 +37,7 @@ main(int argc, char **argv)
        char *cp, *folder = NULL, newfolder[BUFSIZ];
        char buf[BUFSIZ], **argp, **arguments;
 
-#ifdef LOCALE
        setlocale(LC_ALL, "");
-#endif
        invo_name = mhbasename(argv[0]);
 
        /* read user profile/context */
@@ -50,17 +51,17 @@ main(int argc, char **argv)
                        switch (smatch(++cp, switches)) {
                        case AMBIGSW:
                                ambigsw(cp, switches);
-                               done(1);
+                               exit(1);
                        case UNKWNSW:
                                adios(NULL, "-%s unknown", cp);
 
                        case HELPSW:
                                snprintf(buf, sizeof(buf), "%s [+folder] [switches]", invo_name);
                                print_help(buf, switches, 1);
-                               done(1);
+                               exit(0);
                        case VERSIONSW:
                                print_version(invo_name);
-                               done(1);
+                               exit(0);
 
                        case INTRSW:
                                interactive = 1;
@@ -107,27 +108,26 @@ main(int argc, char **argv)
        if (interactive) {
                cp = concat("Remove folder \"", folder, "\"? ", NULL);
                if (!getanswer(cp))
-                       done(0);
+                       exit(0);
                free(cp);
        }
 
        if (rmf(folder) == OK) {
                char *cfolder = context_find(curfolder);
-               if (cfolder && strcmp(cfolder, newfolder)) {
+               if (cfolder && strcmp(cfolder, newfolder)!=0) {
                        printf("[+%s now current]\n", newfolder);
                        /* update current folder */
                        context_replace(curfolder, newfolder);
                }
        }
        context_save();  /* save the context file */
-       done(0);
-       return 1;
+       return 0;
 }
 
 static int
 rmf(char *folder)
 {
-       int i, j, others;
+       int i, others;
        register char *maildir;
        char cur[BUFSIZ];
        register struct dirent *dp;
@@ -139,8 +139,8 @@ rmf(char *folder)
                        break;  /* fall otherwise */
 
        case NOTOK:
-               snprintf(cur, sizeof(cur), "atr-%s-%s",
-                                       current, toabsdir(folder));
+               snprintf(cur, sizeof(cur), "atr-%s-%s", seq_cur,
+                               toabsdir(folder));
                if (!context_del(cur)) {
                        printf("[+%s de-referenced]\n", folder);
                        return OK;
@@ -161,7 +161,6 @@ rmf(char *folder)
 
        ext_hook("del-hook", maildir, NULL);
 
-       j = strlen(backup_prefix);
        while ((dp = readdir(dd))) {
                switch (dp->d_name[0]) {
                case '.':
@@ -170,22 +169,11 @@ rmf(char *folder)
                                continue;  /* else fall */
 
                case ',':
-#ifdef MHE
-               case '+':
-#endif /* MHE */
-#ifdef UCI
-               case '_':
-               case '#':
-#endif /* UCI */
                        break;
 
                default:
                        if (m_atoi(dp->d_name))
                                break;
-                       if (strcmp(dp->d_name, altmsglink) == 0 ||
-                                       strncmp(dp->d_name,
-                                       backup_prefix, j) == 0)
-                               break;
 
                        admonish(NULL, "file \"%s/%s\" not deleted",
                                        folder, dp->d_name);
@@ -241,7 +229,7 @@ rma(char *folder)
        ** "atr-something-folderpath", and remove them.
        */
        for (np = m_defs, pp = NULL; np; np = np->n_next) {
-               if (isprefix("atr-", np->n_name) &&
+               if (strncmp(np->n_name, "atr-", alen)==0 &&
                                (j = strlen(np->n_name) - plen) > alen &&
                                *(np->n_name + j) == '-' &&
                                strcmp(cp, np->n_name + j + 1) == 0) {