Completely reworked the path convertion functions
[mmh] / uip / rmm.c
index 53103fd..e599f6f 100644 (file)
--- a/uip/rmm.c
+++ b/uip/rmm.c
@@ -1,10 +1,10 @@
 /*
- * rmm.c -- remove a message(s)
- *
- * This code is Copyright (c) 2002, by the authors of nmh.  See the
- * COPYRIGHT file in the root directory of the nmh distribution for
- * complete copyright information.
- */
+** rmm.c -- remove a message(s)
+**
+** This code is Copyright (c) 2002, by the authors of nmh.  See the
+** COPYRIGHT file in the root directory of the nmh distribution for
+** complete copyright information.
+*/
 
 #include <h/mh.h>
 #include <h/utils.h>
@@ -23,7 +23,7 @@ static struct swit switches[] = {
 
 
 int
-main (int argc, char **argv)
+main(int argc, char **argv)
 {
        int msgnum, unlink_msgs = 0;
        char *cp, *maildir, *folder = NULL;
@@ -35,32 +35,31 @@ main (int argc, char **argv)
 #ifdef LOCALE
        setlocale(LC_ALL, "");
 #endif
-       invo_name = r1bindex (argv[0], '/');
+       invo_name = mhbasename(argv[0]);
 
        /* read user profile/context */
        context_read();
 
-       arguments = getarguments (invo_name, argc, argv, 1);
+       arguments = getarguments(invo_name, argc, argv, 1);
        argp = arguments;
 
        /* parse arguments */
        while ((cp = *argp++)) {
                if (*cp == '-') {
-                       switch (smatch (++cp, switches)) {
+                       switch (smatch(++cp, switches)) {
                        case AMBIGSW:
-                               ambigsw (cp, switches);
-                               done (1);
+                               ambigsw(cp, switches);
+                               done(1);
                        case UNKWNSW:
-                               adios (NULL, "-%s unknown\n", cp);
+                               adios(NULL, "-%s unknown\n", cp);
 
                        case HELPSW:
-                               snprintf (buf, sizeof(buf), "%s [+folder] [msgs] [switches]",
-                                                 invo_name);
-                               print_help (buf, switches, 1);
-                               done (1);
+                               snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name);
+                               print_help(buf, switches, 1);
+                               done(1);
                        case VERSIONSW:
                                print_version(invo_name);
-                               done (1);
+                               done(1);
 
                        case UNLINKSW:
                                unlink_msgs++;
@@ -72,58 +71,56 @@ main (int argc, char **argv)
                }
                if (*cp == '+' || *cp == '@') {
                        if (folder)
-                               adios (NULL, "only one folder at a time!");
+                               adios(NULL, "only one folder at a time!");
                        else
-                               folder = pluspath (cp);
+                               folder = getcpy(expandfol(cp));
                } else
-                               app_msgarg(&msgs, cp);
+                       app_msgarg(&msgs, cp);
        }
 
-       if (!context_find ("path"))
-               free (path ("./", TFOLDER));
        if (!msgs.size)
                app_msgarg(&msgs, "cur");
        if (!folder)
-               folder = getfolder (1);
-       maildir = m_maildir (folder);
+               folder = getcurfol();
+       maildir = toabsdir(folder);
 
-       if (chdir (maildir) == NOTOK)
-               adios (maildir, "unable to change directory to");
+       if (chdir(maildir) == NOTOK)
+               adios(maildir, "unable to change directory to");
 
        /* read folder and create message structure */
-       if (!(mp = folder_read (folder)))
-               adios (NULL, "unable to read folder %s", folder);
+       if (!(mp = folder_read(folder)))
+               adios(NULL, "unable to read folder %s", folder);
 
        /* check for empty folder */
        if (mp->nummsg == 0)
-               adios (NULL, "no messages in %s", folder);
+               adios(NULL, "no messages in %s", folder);
 
        /* parse all the message ranges/sequences and set SELECTED */
        for (msgnum = 0; msgnum < msgs.size; msgnum++)
-               if (!m_convert (mp, msgs.msgs[msgnum]))
-                       done (1);
-       seq_setprev (mp);  /* set the previous-sequence */
+               if (!m_convert(mp, msgs.msgs[msgnum]))
+                       done(1);
+       seq_setprev(mp);  /* set the previous-sequence */
 
        /*
-        * This is hackish.  If we are using a external rmmproc,
-        * then we need to update the current folder in the
-        * context so the external rmmproc will remove files
-        * from the correct directory.  This should be moved to
-        * folder_delmsgs().
-        */
+       ** This is hackish.  If we are using a external rmmproc,
+       ** then we need to update the current folder in the
+       ** context so the external rmmproc will remove files
+       ** from the correct directory.  This should be moved to
+       ** folder_delmsgs().
+       */
        if (rmmproc) {
-               context_replace (pfolder, folder);
-               context_save ();
-               fflush (stdout);
+               context_replace(pfolder, folder);
+               context_save();
+               fflush(stdout);
        }
 
        /* "remove" the SELECTED messages */
-       folder_delmsgs (mp, unlink_msgs, 0);
+       folder_delmsgs(mp, unlink_msgs, 0);
 
-       seq_save (mp);  /* synchronize message sequences  */
-       context_replace (pfolder, folder);  /* update current folder   */
-       context_save ();  /* save the context file   */
-       folder_free (mp);  /* free folder structure   */
-       done (0);
+       seq_save(mp);  /* synchronize message sequences  */
+       context_replace(pfolder, folder);  /* update current folder   */
+       context_save();  /* save the context file   */
+       folder_free(mp);  /* free folder structure   */
+       done(0);
        return 1;
 }