aboutsummaryrefslogtreecommitdiffstats
path: root/lib-src
diff options
context:
space:
mode:
authorKarl Heuer1998-09-04 20:14:16 +0000
committerKarl Heuer1998-09-04 20:14:16 +0000
commita2997b0f43237c7928f9c7ff36c4245243b42c9c (patch)
tree5a7e6dd260f6f4eeb2321bc1305c97372af4dd2c /lib-src
parent2c79f5b83167eef163568818b6cb17a8ada67abf (diff)
downloademacs-a2997b0f43237c7928f9c7ff36c4245243b42c9c.tar.gz
emacs-a2997b0f43237c7928f9c7ff36c4245243b42c9c.zip
[MAIL_USE_POP]: Add the "-r" flag to reverse the
order of messages downloaded from a POP server (e.g., if the server stores messages in mailboxes in reverse order).
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/movemail.c36
1 files changed, 32 insertions, 4 deletions
diff --git a/lib-src/movemail.c b/lib-src/movemail.c
index 1ab59c0e5d2..45d6b5fe812 100644
--- a/lib-src/movemail.c
+++ b/lib-src/movemail.c
@@ -197,11 +197,23 @@ main (argc, argv)
197 char *spool_name; 197 char *spool_name;
198#endif 198#endif
199 199
200#ifdef MAIL_USE_POP
201 int pop_reverse_order = 0;
202# define ARGSTR "pr"
203#else /* ! MAIL_USE_POP */
204# define ARGSTR "p"
205#endif /* MAIL_USE_POP */
206
200 delete_lockname = 0; 207 delete_lockname = 0;
201 208
202 while ((c = getopt (argc, argv, "p")) != EOF) 209 while ((c = getopt (argc, argv, ARGSTR)) != EOF)
203 { 210 {
204 switch (c) { 211 switch (c) {
212#ifdef MAIL_USE_POP
213 case 'r':
214 pop_reverse_order = 1;
215 break;
216#endif
205 case 'p': 217 case 'p':
206 preserve_mail++; 218 preserve_mail++;
207 break; 219 break;
@@ -263,7 +275,8 @@ main (argc, argv)
263 int status; 275 int status;
264 276
265 status = popmail (inname + 3, outname, preserve_mail, 277 status = popmail (inname + 3, outname, preserve_mail,
266 (argc - optind == 3) ? argv[optind+2] : NULL); 278 (argc - optind == 3) ? argv[optind+2] : NULL,
279 pop_reverse_order);
267 exit (status); 280 exit (status);
268 } 281 }
269 282
@@ -682,11 +695,12 @@ char ibuffer[BUFSIZ];
682char obuffer[BUFSIZ]; 695char obuffer[BUFSIZ];
683char Errmsg[80]; 696char Errmsg[80];
684 697
685popmail (user, outfile, preserve, password) 698popmail (user, outfile, preserve, password, reverse_order)
686 char *user; 699 char *user;
687 char *outfile; 700 char *outfile;
688 int preserve; 701 int preserve;
689 char *password; 702 char *password;
703 int reverse_order;
690{ 704{
691 int nmsgs, nbytes; 705 int nmsgs, nbytes;
692 register int i; 706 register int i;
@@ -694,6 +708,7 @@ popmail (user, outfile, preserve, password)
694 FILE *mbf; 708 FILE *mbf;
695 char *getenv (); 709 char *getenv ();
696 popserver server; 710 popserver server;
711 int start, end, increment;
697 712
698 server = pop_open (0, user, password, POP_NO_GETPASS); 713 server = pop_open (0, user, password, POP_NO_GETPASS);
699 if (! server) 714 if (! server)
@@ -732,7 +747,20 @@ popmail (user, outfile, preserve, password)
732 return (1); 747 return (1);
733 } 748 }
734 749
735 for (i = 1; i <= nmsgs; i++) 750 if (reverse_order)
751 {
752 start = nmsgs;
753 end = 1;
754 increment = -1;
755 }
756 else
757 {
758 start = 1;
759 end = nmsgs;
760 increment = 1;
761 }
762
763 for (i = start; i * increment <= end * increment; i += increment)
736 { 764 {
737 mbx_delimit_begin (mbf); 765 mbx_delimit_begin (mbf);
738 if (pop_retr (server, i, mbf) != OK) 766 if (pop_retr (server, i, mbf) != OK)