]> code.delx.au - gnu-emacs/blobdiff - lib-src/movemail.c
[MAIL_USE_POP]: Add the "-r" flag to reverse the
[gnu-emacs] / lib-src / movemail.c
index cb374982303d812484879b6840b0928848d7027a..45d6b5fe812d1b7fef28fb7d9af59c9c22f4861a 100644 (file)
@@ -83,7 +83,7 @@ Boston, MA 02111-1307, USA.  */
 #undef access
 #undef unlink
 #define fork() 0
-#define sys_wait(var) (*(var) = 0)
+#define wait(var) (*(var) = 0)
 /* Unfortunately, Samba doesn't seem to properly lock Unix files even
    though the locking call succeeds (and indeed blocks local access from
    other NT programs).  If you have direct file access using an NFS
@@ -198,42 +198,27 @@ main (argc, argv)
 #endif
 
 #ifdef MAIL_USE_POP
-  int pop_flags = POP_NO_GETPASS | POP_NO_GSSAPI;
-# define ARGSTR "gkp"
+  int pop_reverse_order = 0;
+# define ARGSTR "pr"
 #else /* ! MAIL_USE_POP */
 # define ARGSTR "p"
 #endif /* MAIL_USE_POP */
 
   delete_lockname = 0;
 
-  /*
-    'g' enables Kerberos and disables GSS-API.
-    'k' enables GSS-API and disables Kerberos.
-
-    By default, Kerberos is enabled (if it is compiled in) and
-    GSS-API is disabled, i.e., "-k" is the default.  However, I'm
-    putting the flag in anyway, in case we decide to add new
-    authentication methods or change the default later.
-  */
-
   while ((c = getopt (argc, argv, ARGSTR)) != EOF)
     {
       switch (c) {
 #ifdef MAIL_USE_POP
-      case 'g':
-       pop_flags |= POP_NO_KERBEROS;
-       pop_flags &= ~POP_NO_GSSAPI;
-       break;
-      case 'k':
-       pop_flags |= POP_NO_GSSAPI;
-       pop_flags &= ~POP_NO_KERBEROS;
+      case 'r':
+       pop_reverse_order = 1;
        break;
 #endif
       case 'p':
        preserve_mail++;
        break;
       default:
-       goto usage;
+       exit(1);
       }
     }
 
@@ -245,12 +230,11 @@ main (argc, argv)
 #endif
       )
     {
-    usage:
-      fprintf (stderr, "Usage: movemail %s[-p] inbox destfile%s\n",
+      fprintf (stderr, "Usage: movemail [-p] inbox destfile%s\n",
 #ifdef MAIL_USE_POP
-              "[-g|-k] ", " [POP-password]"
+              " [POP-password]"
 #else
-              "", ""
+              ""
 #endif
               );
       exit (1);
@@ -291,7 +275,8 @@ main (argc, argv)
       int status;
 
       status = popmail (inname + 3, outname, preserve_mail,
-                       (argc - optind == 3) ? argv[optind+2] : NULL, pop_flags);
+                       (argc - optind == 3) ? argv[optind+2] : NULL,
+                       pop_reverse_order);
       exit (status);
     }
 
@@ -710,12 +695,12 @@ char ibuffer[BUFSIZ];
 char obuffer[BUFSIZ];
 char Errmsg[80];
 
-popmail (user, outfile, preserve, password, flags)
+popmail (user, outfile, preserve, password, reverse_order)
      char *user;
      char *outfile;
      int preserve;
      char *password;
-     int flags;
+     int reverse_order;
 {
   int nmsgs, nbytes;
   register int i;
@@ -723,8 +708,9 @@ popmail (user, outfile, preserve, password, flags)
   FILE *mbf;
   char *getenv ();
   popserver server;
+  int start, end, increment;
 
-  server = pop_open (0, user, password, flags);
+  server = pop_open (0, user, password, POP_NO_GETPASS);
   if (! server)
     {
       error (pop_error);
@@ -761,7 +747,20 @@ popmail (user, outfile, preserve, password, flags)
       return (1);
     }
 
-  for (i = 1; i <= nmsgs; i++)
+  if (reverse_order)
+    {
+      start = nmsgs;
+      end = 1;
+      increment = -1;
+    }
+  else
+    {
+      start = 1;
+      end = nmsgs;
+      increment = 1;
+    }
+
+  for (i = start; i * increment <= end * increment; i += increment)
     {
       mbx_delimit_begin (mbf);
       if (pop_retr (server, i, mbf) != OK)