]> Pileus Git - ~andy/fetchmail/blobdiff - options.c
Sunil Shetye's minor fixes.
[~andy/fetchmail] / options.c
index c1f77554c4eac36ecdaca26d5d3c550d252e53c6..bd4ebe7040a036fb8b5358a50599ef06467bd95f 100644 (file)
--- a/options.c
+++ b/options.c
@@ -41,7 +41,7 @@
 #define LA_PROTOCOL    17
 #define LA_UIDL                18
 #define LA_PORT                19
-#define LA_AUTH        20
+#define LA_AUTH                20
 #define LA_TIMEOUT     21
 #define LA_ENVELOPE    22
 #define LA_QVIRTUAL     23
 #define LA_WARNINGS    31
 #define LA_FOLDER      32
 #define LA_SMTPHOST    33
-#define LA_SMTPADDR     34
-#define LA_ANTISPAM    35
-#define LA_BATCHLIMIT  36
-#define LA_FETCHLIMIT  37
-#define LA_EXPUNGE     38
-#define LA_MDA         39
-#define LA_BSMTP       40
-#define LA_LMTP                41
-#define LA_PLUGIN      42
-#define LA_PLUGOUT     43
-#define LA_NETSEC      44
-#define LA_INTERFACE    45
-#define LA_MONITOR      46
-#define LA_CONFIGDUMP  47
-#define LA_YYDEBUG     48
-#define LA_SMTPNAME     49
+#define LA_FETCHDOMAINS        34
+#define LA_SMTPADDR     35
+#define LA_ANTISPAM    36
+#define LA_BATCHLIMIT  37
+#define LA_FETCHLIMIT  38
+#define LA_EXPUNGE     39
+#define LA_MDA         40
+#define LA_BSMTP       41
+#define LA_LMTP                42
+#define LA_PLUGIN      43
+#define LA_PLUGOUT     44
+#define LA_NETSEC      45
+#define LA_INTERFACE    46
+#define LA_MONITOR      47
+#define LA_CONFIGDUMP  48
+#define LA_YYDEBUG     49
+#define LA_SMTPNAME     50
+#define LA_SHOWDOTS    51
+#define LA_PRINCIPAL   52
+#define LA_TRACEPOLLS  53
 
 #ifdef SSL_ENABLE
-#define LA_SSL         50
-#define LA_SSLKEY      51
-#define LA_SSLCERT     52
-#define LA_SSLPROTO 53
-#define LA_SSLCERTCK   54
-#define LA_SSLCERTPATH 55
-#define LA_SSLFINGERPRINT      56
+#define LA_SSL         54
+#define LA_SSLKEY      55
+#define LA_SSLCERT     56
+#define LA_SSLPROTO    57
+#define LA_SSLCERTCK   58
+#define LA_SSLCERTPATH 59
+#define LA_SSLFINGERPRINT      60
 #endif
 
-#define LA_SHOWDOTS    57
-#define LA_PRINCIPAL   58
-
-#define LA_TRACEPOLLS  59
 
 /* options still left: CDgGhHjJoORwWxXYz */
 static const char *shortoptions = 
-       "?Vcsvd:NqL:f:i:p:UP:A:t:E:Q:u:akKFnl:r:S:Z:b:B:e:m:T:I:M:yw:";
+       "?Vcsvd:NqL:f:i:p:UP:A:t:E:Q:u:akKFnl:r:S:Z:b:B:e:m:T:I:M:yw:D:";
 
 static const struct option longoptions[] = {
 /* this can be const because all flag fields are 0 and will never get set */
@@ -133,6 +133,7 @@ static const struct option longoptions[] = {
 
   {"folder",   required_argument, (int *) 0, LA_FOLDER      },
   {"smtphost", required_argument, (int *) 0, LA_SMTPHOST    },
+  {"fetchdomains",     required_argument, (int *) 0, LA_FETCHDOMAINS    },
   {"smtpaddress", required_argument, (int *) 0, LA_SMTPADDR  },
   {"smtpname",  required_argument, (int *) 0, LA_SMTPNAME    },
   {"antispam", required_argument, (int *) 0, LA_ANTISPAM    },
@@ -193,7 +194,7 @@ static int xatoi(char *s, int *errflagptr)
 
     /* any invalid chars in string? */
     if ( (endptr == s) || (*endptr != '\0') ) {
-       (void) fprintf(stderr, _("String '%s' is not a valid number string.\n"), s);
+       (void) fprintf(stderr, GT_("String '%s' is not a valid number string.\n"), s);
        (*errflagptr)++;
        return 0;
     }
@@ -202,8 +203,8 @@ static int xatoi(char *s, int *errflagptr)
     if ( (((value == LONG_MAX) || (value == LONG_MIN)) && (errno == ERANGE)) ||
                                (value > INT_MAX) || (value < INT_MIN)) {
 
-       (void) fprintf(stderr, _("Value of string '%s' is %s than %d.\n"), s,
-                                       (value < 0) ? _("smaller"): _("larger"),
+       (void) fprintf(stderr, GT_("Value of string '%s' is %s than %d.\n"), s,
+                                       (value < 0) ? GT_("smaller"): GT_("larger"),
                                        (value < 0) ? INT_MIN : INT_MAX);
        (*errflagptr)++;
        return 0;
@@ -237,7 +238,7 @@ static int xatoi(char *s, int *errflagptr)
 
     /* check for trailing garbage */
     if (i != len) {
-       (void) fprintf(stderr, _("String '%s' is not a valid number string.\n"), s);
+       (void) fprintf(stderr, GT_("String '%s' is not a valid number string.\n"), s);
        (*errflagptr)++;
        return 0;
     }
@@ -276,8 +277,8 @@ struct query *ctl;  /* option record to be initialized */
 
     while (!errflag && 
           (c = getopt_long(argc,argv,shortoptions,
-                           longoptions,&option_index)) != -1) {
-
+                           longoptions, &option_index)) != -1)
+    {
        switch (c) {
        case 'V':
        case LA_VERSION:
@@ -312,7 +313,7 @@ struct query *ctl;  /* option record to be initialized */
            break;
        case 'L':
        case LA_LOGFILE:
-           rctl->logfile = optarg;
+           rctl->logfile = prependdir (optarg, currentwd);
            break;
        case LA_INVISIBLE:
            rctl->invisible = TRUE;
@@ -322,11 +323,11 @@ struct query *ctl;        /* option record to be initialized */
            break;
        case 'f':
        case LA_RCFILE:
-           rcfile = (char *) xstrdup(optarg);
+           rcfile = prependdir (optarg, currentwd);
            break;
        case 'i':
        case LA_IDFILE:
-           rctl->idfile = (char *) xstrdup(optarg);
+           rctl->idfile = prependdir (optarg, currentwd);
            break;
        case LA_POSTMASTER:
            rctl->postmaster = (char *) xstrdup(optarg);
@@ -375,7 +376,7 @@ struct query *ctl;  /* option record to be initialized */
            else if (strcasecmp(optarg,"odmr") == 0)
                ctl->server.protocol = P_ODMR;
            else {
-               fprintf(stderr,_("Invalid protocol `%s' specified.\n"), optarg);
+               fprintf(stderr,GT_("Invalid protocol `%s' specified.\n"), optarg);
                errflag++;
            }
            break;
@@ -408,6 +409,8 @@ struct query *ctl;  /* option record to be initialized */
                ctl->server.authenticate = A_SSH;
            else if (strcmp(optarg, "otp") == 0)
                ctl->server.authenticate = A_OTP;
+           else if (strcmp(optarg, "opie") == 0)
+               ctl->server.authenticate = A_OTP;
            else if (strcmp(optarg, "ntlm") == 0)
                ctl->server.authenticate = A_NTLM;
            else if (strcmp(optarg, "cram") == 0)
@@ -419,7 +422,7 @@ struct query *ctl;  /* option record to be initialized */
            else if (strcmp(optarg, "any") == 0)
                ctl->server.authenticate = A_ANY;
            else {
-               fprintf(stderr,_("Invalid authentication `%s' specified.\n"), optarg);
+               fprintf(stderr,GT_("Invalid authentication `%s' specified.\n"), optarg);
                errflag++;
            }
            break;
@@ -488,6 +491,15 @@ struct query *ctl; /* option record to be initialized */
                ((cp = strtok((char *)NULL, ",")));
            ocount++;
            break;
+       case LA_FETCHDOMAINS:
+           xalloca(buf, char *, strlen(optarg) + 1);
+           strcpy(buf, optarg);
+           cp = strtok(buf, ",");
+           do {
+               save_str(&ctl->domainlist, cp, TRUE);
+           } while
+               ((cp = strtok((char *)NULL, ",")));
+           break;
        case 'D':
        case LA_SMTPADDR:
            ctl->smtpaddress = xstrdup(optarg);
@@ -528,7 +540,7 @@ struct query *ctl;  /* option record to be initialized */
            ocount++;
            break;
        case LA_BSMTP:
-           ctl->bsmtp = xstrdup(optarg);
+           ctl->bsmtp = prependdir (optarg, currentwd);
            ocount++;
            break;
        case LA_LMTP:
@@ -540,7 +552,7 @@ struct query *ctl;  /* option record to be initialized */
 #if NET_SECURITY
            ctl->server.netsec = (void *)optarg;
 #else
-           fprintf(stderr, _("fetchmail: network security support is disabled\n"));
+           fprintf(stderr, GT_("fetchmail: network security support is disabled\n"));
            errflag++;
 #endif /* NET_SECURITY */
            break;
@@ -568,11 +580,11 @@ struct query *ctl;        /* option record to be initialized */
            break;
 
        case LA_SSLKEY:
-           ctl->sslkey = xstrdup(optarg);
+           ctl->sslkey = prependdir (optarg, currentwd);
            break;
 
        case LA_SSLCERT:
-           ctl->sslcert = xstrdup(optarg);
+           ctl->sslcert = prependdir (optarg, currentwd);
            break;
 
        case LA_SSLPROTO:
@@ -584,7 +596,7 @@ struct query *ctl;  /* option record to be initialized */
            break;
 
        case LA_SSLCERTPATH:
-           ctl->sslcertpath = xstrdup(optarg);
+           ctl->sslcertpath = prependdir(optarg, currentwd);
            break;
 
        case LA_SSLFINGERPRINT:
@@ -633,71 +645,72 @@ struct query *ctl;        /* option record to be initialized */
     if (errflag || ocount > 1 || helpflag) {
        /* squawk if syntax errors were detected */
 #define P(s)   fputs(s, helpflag ? stdout : stderr)
-       P(_("usage:  fetchmail [options] [server ...]\n"));
-       P(_("  Options are as follows:\n"));
-       P(_("  -?, --help        display this option help\n"));
-       P(_("  -V, --version     display version info\n"));
-
-       P(_("  -c, --check       check for messages without fetching\n"));
-       P(_("  -s, --silent      work silently\n"));
-       P(_("  -v, --verbose     work noisily (diagnostic output)\n"));
-       P(_("  -d, --daemon      run as a daemon once per n seconds\n"));
-       P(_("  -N, --nodetach    don't detach daemon process\n"));
-       P(_("  -q, --quit        kill daemon process\n"));
-       P(_("  -L, --logfile     specify logfile name\n"));
-       P(_("      --syslog      use syslog(3) for most messages when running as a daemon\n"));
-       P(_("      --invisible   don't write Received & enable host spoofing\n"));
-       P(_("  -f, --fetchmailrc specify alternate run control file\n"));
-       P(_("  -i, --idfile      specify alternate UIDs file\n"));
-       P(_("      --postmaster  specify recipient of last resort\n"));
-       P(_("      --nobounce    redirect bounces from user to postmaster.\n"));
+       P(GT_("usage:  fetchmail [options] [server ...]\n"));
+       P(GT_("  Options are as follows:\n"));
+       P(GT_("  -?, --help        display this option help\n"));
+       P(GT_("  -V, --version     display version info\n"));
+
+       P(GT_("  -c, --check       check for messages without fetching\n"));
+       P(GT_("  -s, --silent      work silently\n"));
+       P(GT_("  -v, --verbose     work noisily (diagnostic output)\n"));
+       P(GT_("  -d, --daemon      run as a daemon once per n seconds\n"));
+       P(GT_("  -N, --nodetach    don't detach daemon process\n"));
+       P(GT_("  -q, --quit        kill daemon process\n"));
+       P(GT_("  -L, --logfile     specify logfile name\n"));
+       P(GT_("      --syslog      use syslog(3) for most messages when running as a daemon\n"));
+       P(GT_("      --invisible   don't write Received & enable host spoofing\n"));
+       P(GT_("  -f, --fetchmailrc specify alternate run control file\n"));
+       P(GT_("  -i, --idfile      specify alternate UIDs file\n"));
+       P(GT_("      --postmaster  specify recipient of last resort\n"));
+       P(GT_("      --nobounce    redirect bounces from user to postmaster.\n"));
 #if (defined(linux) && !INET6_ENABLE) || defined(__FreeBSD__)
-       P(_("  -I, --interface   interface required specification\n"));
-       P(_("  -M, --monitor     monitor interface for activity\n"));
+       P(GT_("  -I, --interface   interface required specification\n"));
+       P(GT_("  -M, --monitor     monitor interface for activity\n"));
 #endif
 #if defined( SSL_ENABLE )
-       P(_("      --ssl         enable ssl encrypted session\n"));
-       P(_("      --sslkey      ssl private key file\n"));
-       P(_("      --sslcert     ssl client certificate\n"));
-       P(_("      --sslproto    force ssl protocol (ssl2/ssl3/tls1)\n"));
+       P(GT_("      --ssl         enable ssl encrypted session\n"));
+       P(GT_("      --sslkey      ssl private key file\n"));
+       P(GT_("      --sslcert     ssl client certificate\n"));
+       P(GT_("      --sslproto    force ssl protocol (ssl2/ssl3/tls1)\n"));
 #endif
-       P(_("      --plugin      specify external command to open connection\n"));
-       P(_("      --plugout     specify external command to open smtp connection\n"));
-
-       P(_("  -p, --protocol    specify retrieval protocol (see man page)\n"));
-       P(_("  -U, --uidl        force the use of UIDLs (pop3 only)\n"));
-       P(_("  -P, --port        TCP/IP service port to connect to\n"));
-       P(_("      --auth        authentication type (password/kerberos/ssh)\n"));
-       P(_("  -t, --timeout     server nonresponse timeout\n"));
-       P(_("  -E, --envelope    envelope address header\n"));
-       P(_("  -Q, --qvirtual    prefix to remove from local user id\n"));
-       P(_("      --principal   mail service principal\n"));
-        P(_("      --addaccthdr  add an X-Fetchmail-Account header (\"label <user@host>\")\n"));
-
-       P(_("  -u, --username    specify users's login on server\n"));
-       P(_("  -a, --all         retrieve old and new messages\n"));
-       P(_("  -K, --nokeep      delete new messages after retrieval\n"));
-       P(_("  -k, --keep        save new messages after retrieval\n"));
-       P(_("  -F, --flush       delete old messages from server\n"));
-       P(_("  -n, --norewrite   don't rewrite header addresses\n"));
-       P(_("  -l, --limit       don't fetch messages over given size\n"));
-       P(_("  -w, --warnings    interval between warning mail notification\n"));
+       P(GT_("      --plugin      specify external command to open connection\n"));
+       P(GT_("      --plugout     specify external command to open smtp connection\n"));
+
+       P(GT_("  -p, --protocol    specify retrieval protocol (see man page)\n"));
+       P(GT_("  -U, --uidl        force the use of UIDLs (pop3 only)\n"));
+       P(GT_("  -P, --port        TCP/IP service port to connect to\n"));
+       P(GT_("      --auth        authentication type (password/kerberos/ssh/otp)\n"));
+       P(GT_("  -t, --timeout     server nonresponse timeout\n"));
+       P(GT_("  -E, --envelope    envelope address header\n"));
+       P(GT_("  -Q, --qvirtual    prefix to remove from local user id\n"));
+       P(GT_("      --principal   mail service principal\n"));
+        P(GT_("      --tracepolls  add poll-tracing information to Received header\n"));
+
+       P(GT_("  -u, --username    specify users's login on server\n"));
+       P(GT_("  -a, --all         retrieve old and new messages\n"));
+       P(GT_("  -K, --nokeep      delete new messages after retrieval\n"));
+       P(GT_("  -k, --keep        save new messages after retrieval\n"));
+       P(GT_("  -F, --flush       delete old messages from server\n"));
+       P(GT_("  -n, --norewrite   don't rewrite header addresses\n"));
+       P(GT_("  -l, --limit       don't fetch messages over given size\n"));
+       P(GT_("  -w, --warnings    interval between warning mail notification\n"));
 
 #if NET_SECURITY
-       P(_("  -T, --netsec      set IP security request\n"));
+       P(GT_("  -T, --netsec      set IP security request\n"));
 #endif /* NET_SECURITY */
-       P(_("  -S, --smtphost    set SMTP forwarding host\n"));
-       P(_("  -D, --smtpaddress set SMTP delivery domain to use\n"));
-       P(_("      --smtpname    set SMTP full name username@domain\n"));
-       P(_("  -Z, --antispam,   set antispam response values\n"));
-       P(_("  -b, --batchlimit  set batch limit for SMTP connections\n"));
-       P(_("  -B, --fetchlimit  set fetch limit for server connections\n"));
-       P(_("  -e, --expunge     set max deletions between expunges\n"));
-        P(_("  -m, --mda         set MDA to use for forwarding\n"));
-        P(_("      --bsmtp       set output BSMTP file\n"));
-        P(_("      --lmtp        use LMTP (RFC2033) for delivery\n"));
-       P(_("  -r, --folder      specify remote folder name\n"));
-       P(_("      --showdots    show progress dots even in logfiles\n"));
+       P(GT_("  -S, --smtphost    set SMTP forwarding host\n"));
+       P(GT_("      --fetchdomains fetch mail for specified domains\n"));
+       P(GT_("  -D, --smtpaddress set SMTP delivery domain to use\n"));
+       P(GT_("      --smtpname    set SMTP full name username@domain\n"));
+       P(GT_("  -Z, --antispam,   set antispam response values\n"));
+       P(GT_("  -b, --batchlimit  set batch limit for SMTP connections\n"));
+       P(GT_("  -B, --fetchlimit  set fetch limit for server connections\n"));
+       P(GT_("  -e, --expunge     set max deletions between expunges\n"));
+        P(GT_("  -m, --mda         set MDA to use for forwarding\n"));
+        P(GT_("      --bsmtp       set output BSMTP file\n"));
+        P(GT_("      --lmtp        use LMTP (RFC2033) for delivery\n"));
+       P(GT_("  -r, --folder      specify remote folder name\n"));
+       P(GT_("      --showdots    show progress dots even in logfiles\n"));
 #undef P
 
        if (helpflag)