[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).
This commit is contained in:
parent
2c79f5b831
commit
a2997b0f43
1 changed files with 32 additions and 4 deletions
|
@ -197,11 +197,23 @@ main (argc, argv)
|
||||||
char *spool_name;
|
char *spool_name;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef MAIL_USE_POP
|
||||||
|
int pop_reverse_order = 0;
|
||||||
|
# define ARGSTR "pr"
|
||||||
|
#else /* ! MAIL_USE_POP */
|
||||||
|
# define ARGSTR "p"
|
||||||
|
#endif /* MAIL_USE_POP */
|
||||||
|
|
||||||
delete_lockname = 0;
|
delete_lockname = 0;
|
||||||
|
|
||||||
while ((c = getopt (argc, argv, "p")) != EOF)
|
while ((c = getopt (argc, argv, ARGSTR)) != EOF)
|
||||||
{
|
{
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
#ifdef MAIL_USE_POP
|
||||||
|
case 'r':
|
||||||
|
pop_reverse_order = 1;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case 'p':
|
case 'p':
|
||||||
preserve_mail++;
|
preserve_mail++;
|
||||||
break;
|
break;
|
||||||
|
@ -263,7 +275,8 @@ main (argc, argv)
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
status = popmail (inname + 3, outname, preserve_mail,
|
status = popmail (inname + 3, outname, preserve_mail,
|
||||||
(argc - optind == 3) ? argv[optind+2] : NULL);
|
(argc - optind == 3) ? argv[optind+2] : NULL,
|
||||||
|
pop_reverse_order);
|
||||||
exit (status);
|
exit (status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -682,11 +695,12 @@ char ibuffer[BUFSIZ];
|
||||||
char obuffer[BUFSIZ];
|
char obuffer[BUFSIZ];
|
||||||
char Errmsg[80];
|
char Errmsg[80];
|
||||||
|
|
||||||
popmail (user, outfile, preserve, password)
|
popmail (user, outfile, preserve, password, reverse_order)
|
||||||
char *user;
|
char *user;
|
||||||
char *outfile;
|
char *outfile;
|
||||||
int preserve;
|
int preserve;
|
||||||
char *password;
|
char *password;
|
||||||
|
int reverse_order;
|
||||||
{
|
{
|
||||||
int nmsgs, nbytes;
|
int nmsgs, nbytes;
|
||||||
register int i;
|
register int i;
|
||||||
|
@ -694,6 +708,7 @@ popmail (user, outfile, preserve, password)
|
||||||
FILE *mbf;
|
FILE *mbf;
|
||||||
char *getenv ();
|
char *getenv ();
|
||||||
popserver server;
|
popserver server;
|
||||||
|
int start, end, increment;
|
||||||
|
|
||||||
server = pop_open (0, user, password, POP_NO_GETPASS);
|
server = pop_open (0, user, password, POP_NO_GETPASS);
|
||||||
if (! server)
|
if (! server)
|
||||||
|
@ -732,7 +747,20 @@ popmail (user, outfile, preserve, password)
|
||||||
return (1);
|
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);
|
mbx_delimit_begin (mbf);
|
||||||
if (pop_retr (server, i, mbf) != OK)
|
if (pop_retr (server, i, mbf) != OK)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue