LA_IDLE,
LA_NOSOFTBOUNCE,
LA_SOFTBOUNCE,
- LA_BADHEADER
+ LA_BADHEADER,
+ LA_RETRIEVEERROR
};
static const char *shortoptions =
{"norewrite", no_argument, (int *) 0, 'n' },
{"limit", required_argument, (int *) 0, 'l' },
{"warnings", required_argument, (int *) 0, 'w' },
+ {"retrieve-error", required_argument, (int *) 0, LA_RETRIEVEERROR },
{"folder", required_argument, (int *) 0, 'r' },
{"smtphost", required_argument, (int *) 0, 'S' },
int parsecmdline (int argc /** argument count */,
char **argv /** argument strings */,
struct runctl *rctl /** global run controls to modify */,
- struct query *ctl /** option record to initialize */)
+ struct query *ctl /** option record to initialize */,
+ flag *safewithbg /** set to whether options are
+ compatible with another copy
+ running in the background */)
{
/*
* return value: if positive, argv index of last parsed option + 1
int errflag = 0; /* TRUE when a syntax error is detected */
int helpflag = 0; /* TRUE when option help was explicitly requested */
int option_index;
+ int option_safe; /* to track if option currently parsed is safe
+ with a background copy */
char *buf, *cp;
rctl->poll_interval = -1;
+ *safewithbg = TRUE;
memset(ctl, '\0', sizeof(struct query)); /* start clean */
ctl->smtp_socket = -1;
(c = getopt_long(argc,argv,shortoptions,
longoptions, &option_index)) != -1)
{
+ option_safe = FALSE;
+
switch (c) {
#ifdef HAVE_LIBPWMD
case 'C':
#endif
case 'V':
versioninfo = TRUE;
+ option_safe = TRUE;
break;
case 'c':
check_only = TRUE;
break;
case 's':
outlevel = O_SILENT;
+ option_safe = 1;
break;
case 'v':
if (outlevel >= O_VERBOSE)
outlevel = O_DEBUG;
else
outlevel = O_VERBOSE;
+ option_safe = TRUE;
break;
case 'd':
rctl->poll_interval = xatoi(optarg, &errflag);
#endif /* SDPS_ENABLE */
else if (strcasecmp(optarg,"pop3") == 0)
ctl->server.protocol = P_POP3;
- else if (strcasecmp(optarg,"apop") == 0)
- ctl->server.protocol = P_APOP;
else if (strcasecmp(optarg,"kpop") == 0)
{
ctl->server.protocol = P_POP3;
- ctl->server.service = KPOP_PORT;
+ ctl->server.service = xstrdup(KPOP_PORT);
#ifdef KERBEROS_V5
ctl->server.authenticate = A_KERBEROS_V5;
#endif /* KERBEROS_V5 */
}
break;
case 'U':
- ctl->server.uidl = FLAG_TRUE;
+ /* EMPTY - removed in 7.0.0 */
break;
case LA_IDLE:
ctl->idle = FLAG_TRUE;
ctl->server.authenticate = A_ANY;
else if (strcmp(optarg, "msn") == 0)
ctl->server.authenticate = A_MSN;
+ else if (strcmp(optarg, "apop") == 0)
+ ctl->server.authenticate = A_APOP;
else {
fprintf(stderr,GT_("Invalid authentication `%s' specified.\n"), optarg);
errflag++;
case LA_CONFIGDUMP:
configdump = TRUE;
+ option_safe = TRUE;
break;
case LA_SYSLOG:
ctl->server.tracepolls = FLAG_TRUE;
break;
+ case LA_RETRIEVEERROR:
+ if (strcasecmp(optarg,"abort") == 0) {
+ ctl->server.retrieveerror = RE_ABORT;
+ } else if (strcasecmp(optarg,"continue") == 0) {
+ ctl->server.retrieveerror = RE_CONTINUE;
+ } else if (strcasecmp(optarg,"markseen") == 0) {
+ ctl->server.retrieveerror = RE_MARKSEEN;
+ } else {
+ fprintf(stderr,GT_("Invalid retrieve-error policy `%s' specified.\n"), optarg);
+ errflag++;
+ }
+ break;
+
case '?':
+ helpflag = 1;
default:
- helpflag++;
+ break;
}
+ *safewithbg &= option_safe;
}
if (errflag || ocount > 1 || helpflag) {
P(GT_(" --plugout specify external command to open smtp connection\n"));
P(GT_(" --bad-header {reject|accept}\n"
" specify policy for handling messages with bad headers\n"));
+ P(GT_(" --retrieve-error {abort|continue|markseen}\n"
+ " specify policy for processing messages with retrieve errors\n"));
P(GT_(" -p, --protocol specify retrieval protocol (see man page)\n"));
#ifdef HAVE_LIBPWMD
P(GT_(" -G, --pwmd-file filename to use on the pwmd server\n"));
P(GT_(" -O, --pinentry-timeout seconds until pinentry is canceled\n"));
#endif
-
- P(GT_(" -U, --uidl force the use of UIDLs (pop3 only)\n"));
+
P(GT_(" --port TCP port to connect to (obsolete, use --service)\n"));
P(GT_(" -P, --service TCP service to connect to (can be numeric TCP port)\n"));
P(GT_(" --auth authentication type (password/kerberos/ssh/otp)\n"));