diff options
| author | Karl Heuer | 1998-09-04 20:14:16 +0000 |
|---|---|---|
| committer | Karl Heuer | 1998-09-04 20:14:16 +0000 |
| commit | a2997b0f43237c7928f9c7ff36c4245243b42c9c (patch) | |
| tree | 5a7e6dd260f6f4eeb2321bc1305c97372af4dd2c /lib-src | |
| parent | 2c79f5b83167eef163568818b6cb17a8ada67abf (diff) | |
| download | emacs-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.c | 36 |
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]; | |||
| 682 | char obuffer[BUFSIZ]; | 695 | char obuffer[BUFSIZ]; |
| 683 | char Errmsg[80]; | 696 | char Errmsg[80]; |
| 684 | 697 | ||
| 685 | popmail (user, outfile, preserve, password) | 698 | popmail (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) |