Created pluspath function to check for '+' prefix and change flag for
[mmh] / uip / inc.c
index 864574b..a2ecb44 100644 (file)
--- a/uip/inc.c
+++ b/uip/inc.c
@@ -29,6 +29,7 @@
 #endif
 
 #include <h/mh.h>
+#include <h/utils.h>
 #include <fcntl.h>
 
 #ifdef POP
@@ -131,6 +132,8 @@ static struct swit switches[] = {
     { "sasl", SASLminc(-4) },
 #define SASLMECHSW                25
     { "saslmech", SASLminc(-8) },
+#define PROXYSW                   26
+    { "proxy command", POPminc(-5) },
     { NULL, 0 }
 };
 
@@ -237,7 +240,7 @@ main (int argc, char **argv)
     int kpop = 0, sasl = 0;
     char *cp, *maildir, *folder = NULL;
     char *format = NULL, *form = NULL;
-    char *host = NULL, *user = NULL;
+    char *host = NULL, *user = NULL, *proxy = NULL;
     char *audfile = NULL, *from = NULL, *saslmech = NULL;
     char buf[BUFSIZ], **argp, *nfs, **arguments;
     struct msgs *mp;
@@ -444,13 +447,17 @@ main (int argc, char **argv)
                if (!(saslmech = *argp++) || *saslmech == '-')
                    adios (NULL, "missing argument to %s", argp[-2]);
                continue;
+           case PROXYSW:
+               if (!(proxy = *argp++) || *proxy == '-')
+                   adios (NULL, "missing argument to %s", argp[-2]);
+               continue;
            }
        }
        if (*cp == '+' || *cp == '@') {
            if (folder)
                adios (NULL, "only one folder at a time!");
            else
-               folder = path (cp + 1, *cp == '+' ? TFOLDER : TSUBCWF);
+               folder = pluspath (cp);
        } else {
            adios (NULL, "usage: %s [+folder] [switches]", invo_name);
        }
@@ -500,7 +507,7 @@ main (int argc, char **argv)
        /*
         * initialize POP connection
         */
-       if (pop_init (host, user, pass, snoop, kpop ? 1 : rpop, kpop,
+       if (pop_init (host, user, pass, proxy, snoop, kpop ? 1 : rpop, kpop,
                      sasl, saslmech) == NOTOK)
            adios (NULL, "%s", response);
 
@@ -556,16 +563,10 @@ main (int argc, char **argv)
     if ((maildir_copy = strdup(maildir)) == (char *)0)
         adios (maildir, "error allocating memory to copy maildir");
 
-    if (stat (maildir, &st) == NOTOK) {
-       if (errno != ENOENT)
-           adios (maildir, "error on folder");
-       cp = concat ("Create folder \"", maildir, "\"? ", NULL);
-       if (noisy && !getanswer (cp))
-           done (1);
-       free (cp);
-       if (!makedir (maildir))
-           adios (NULL, "unable to create folder %s", maildir);
-    }
+    if (noisy)
+        create_folder(maildir, 0, done);
+    else
+        done (1);
 
     if (chdir (maildir) == NOTOK)
        adios (maildir, "unable to change directory to");