]> Pileus Git - ~andy/fetchmail/commitdiff
Add full support for --service option.
authorMatthias Andree <matthias.andree@gmx.de>
Wed, 21 Sep 2005 10:52:51 +0000 (10:52 -0000)
committerMatthias Andree <matthias.andree@gmx.de>
Wed, 21 Sep 2005 10:52:51 +0000 (10:52 -0000)
svn path=/trunk/; revision=4307

NEWS
fetchmail-FAQ.html
fetchmail.man
options.c
rcfile_y.y

diff --git a/NEWS b/NEWS
index cd76a51a5e93af176386be3f8a34ee6d91cba6a2..4e4a1a6ce830e083fa84e1252409133882ce97ac 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -202,6 +202,7 @@ fetchmail 6.3.0 (not yet released officially):
 * Expunge between IMAP folders when polling multiple folders.
   Sunil Shetye. (MA)
 * Fix IMAP expunged message counting. Sunil Shetye. (MA)
+* Add full support for --service option. Matthias Andree
 
 # INTERNAL CHANGES
 * Switched to automake. Matthias Andree.
index 7c96a4508da4226ceef43b09885859a33e4946bf..691d1bdc9755d939d08f641232964cf3010ba7f5 100644 (file)
@@ -2518,9 +2518,8 @@ declaration <tt>auth password</tt> in your .fetchmailrc.</p>
     literal, for instance, 192.168.0.1</li>
     <li>Make sure your <code>/etc/services</code> file (or other
     services database) contains the necessary service entries. If you
-    cannot fix the services database, use the --port option and give the
-    numeric port address. Common port addresses
-    are:<table>
+    cannot fix the services database, use the --service option and give the
+    numeric port address. Common port addresses are:<table>
        <tr><th>service</th><th>port</th></tr>
        <tr><td>IMAP</td><td>143</td></tr>
        <tr><td>IMAP+SSL</td><td>993</td></tr>
index 19dd9e4c7415fdf85f51d118c956714fc2206e23..dbf2f5cd62cd57b7a77992a7a2c1d319769aa664 100644 (file)
@@ -269,16 +269,19 @@ daemon mode.  Note that fetchmail may automatically enable this option
 depending on upstream server capabilities.  Note also that this option
 may be removed and forced enabled in a future fetchmail version.
 
+.TP
+.B \-\-service <servicename>
+(Keyword: service)
+The service option permits you to specify a service name to connect to.
+You can specify a decimal port number here, if your services database
+lacks the required service-port assignments. See the FAQ item R12 for
+details. This replaces the older \-\-port option.
 .TP
 .B \-P <portnumber> | \-\-port <portnumber>
 (Keyword: port)
-The port option permits you to specify a TCP/IP port to connect on.
-This option will seldom be necessary as all the supported protocols have
-well-established default port numbers. On some older machines, however,
-the protocol <\-\-> port mappings are missing from the services database
-(often /etc/services), and this port can make fetchmail work for you
-even if you don't have system administrator privileges. See the FAQ item
-R12 for details.
+Obsolete version of \-\-service that does not take service names.
+.B Note:
+this option may be removed from a future version.
 .TP
 .B \-\-principal <principal>
 (Keyword: principal)
index c55276e57cb6a5bdc54fd5552e5b4ae5a68a70ae..0243774f8020848a04c00945e0702e76c02eb77c 100644 (file)
--- a/options.c
+++ b/options.c
 
 #define LA_FETCHSIZELIMIT      61
 #define LA_FASTUIDL    62
-
 /* don't use 63-122: they could clash with short options */
-
 #define LA_LIMITFLUSH  128
+#define LA_SERVICE     129
 
 /* options still left: CDgGhHjJoORwWxXYz */
 static const char *shortoptions = 
@@ -120,6 +119,7 @@ static const struct option longoptions[] = {
   {"proto",    required_argument, (int *) 0, LA_PROTOCOL    },
   {"uidl",     no_argument,       (int *) 0, LA_UIDL        },
   {"port",     required_argument, (int *) 0, LA_PORT        },
+  {"service",  required_argument, (int *) 0, LA_SERVICE     },
   {"auth",     required_argument, (int *) 0, LA_AUTH},
   {"timeout",  required_argument, (int *) 0, LA_TIMEOUT     },
   {"envelope", required_argument, (int *) 0, LA_ENVELOPE    },
@@ -387,6 +387,7 @@ struct query *ctl;  /* option record to be initialized */
            break;
        case 'P':
        case LA_PORT:
+       case LA_SERVICE:
            ctl->server.service = optarg;
            break;
        case LA_AUTH:
@@ -680,7 +681,8 @@ struct query *ctl;  /* option record to be initialized */
 
        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_("  -P, --port        TCP port to connect to (obsolete, use --service)\n"));
+       P(GT_("      --service     TCP service to connect to (can be numeric TCP port)\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"));
index daff1a344cc190b1a3fdec0ea027e4955e5c58fa..0aa9265e400089879a79ca391fbe79c4e551a074 100644 (file)
@@ -173,6 +173,12 @@ serv_option        : AKA alias_list
                | SERVICE STRING        {
                                        current.server.service = $2;
                                        }
+               | SERVICE NUMBER        {
+                                       int port = $2;
+                                       char buf[10];
+                                       snprintf(buf, sizeof buf, "%d", port);
+                                       current.server.service = xstrdup(buf);
+               }
                | PORT NUMBER           {
                                        int port = $2;
                                        char buf[10];