]> Pileus Git - ~andy/fetchmail/blobdiff - conf.c
Note Earl's regression fix for SSL_CTX_clear_options() on older OpenSSL.
[~andy/fetchmail] / conf.c
diff --git a/conf.c b/conf.c
index 889a511638f0125c9d9c21f27bf4e02379e7f93f..e51c7ccb3ef609bd9b8ea673a7ce1875af9d6aaf 100644 (file)
--- a/conf.c
+++ b/conf.c
@@ -123,6 +123,7 @@ void dump_config(struct runctl *runp, struct query *querylist)
 {
     struct query *ctl;
     struct idlist *idp;
+    const char *features;
 
     indent_level = 0;
 
@@ -149,47 +150,45 @@ void dump_config(struct runctl *runp, struct query *querylist)
      * This should be approximately in sync with the -V option dumping 
      * in fetchmail.c.
      */
-    printf("feature_options = (");
+    features = "feature_options = ("
 #ifdef POP2_ENABLE
-    printf("'pop2',");
+    "'pop2',"
 #endif /* POP2_ENABLE */
 #ifdef POP3_ENABLE
-    printf("'pop3',");
+    "'pop3',"
 #endif /* POP3_ENABLE */
 #ifdef IMAP_ENABLE
-    printf("'imap',");
+    "'imap',"
 #endif /* IMAP_ENABLE */
 #ifdef GSSAPI
-    printf("'gssapi',");
+    "'gssapi',"
 #endif /* GSSAPI */
 #if defined(KERBEROS_V4)
-    printf("'kerberos',");
+    "'kerberos',"
 #endif /* defined(IMAP4) */
 #ifdef RPA_ENABLE
-    printf("'rpa',");
+    "'rpa',"
 #endif /* RPA_ENABLE */
 #ifdef SDPS_ENABLE
-    printf("'sdps',");
+    "'sdps',"
 #endif /* SDPS_ENABLE */
 #ifdef ETRN_ENABLE
-    printf("'etrn',");
+    "'etrn',"
 #endif /* ETRN_ENABLE */
 #ifdef ODMR_ENABLE
-    printf("'odmr',");
+    "'odmr',"
 #endif /* ODMR_ENABLE */
 #ifdef SSL_ENABLE
-    printf("'ssl',");
+    "'ssl',"
 #endif /* SSL_ENABLE */
-#if OPIE_ENABLE
-    printf("'opie',");
+#ifdef OPIE_ENABLE
+    "'opie',"
 #endif /* OPIE_ENABLE */
-#if INET6_ENABLE
-    printf("'inet6',");
-#endif /* INET6_ENABLE */
-#if NET_SECURITY
-    printf("'netsec',");
-#endif /* NET_SECURITY */
-    printf(")\n");
+#ifdef HAVE_SOCKS
+    "'socks',"
+#endif /* HAVE_SOCKS */
+    ")\n";
+    fputs(features, stdout);
 
     fputs("# Start of configuration initializer\n", stdout);
     fputs("fetchmailrc = ", stdout);
@@ -201,6 +200,7 @@ void dump_config(struct runctl *runp, struct query *querylist)
     stringdump("postmaster", runp->postmaster);
     booldump("bouncemail", runp->bouncemail);
     booldump("spambounce", runp->spambounce);
+    booldump("softbounce", runp->softbounce);
     stringdump("properties", runp->properties);
     booldump("invisible", runp->invisible);
     booldump("showdots", runp->showdots);
@@ -247,11 +247,7 @@ void dump_config(struct runctl *runp, struct query *querylist)
 
            using_kpop =
                (ctl->server.protocol == P_POP3 &&
-#if !INET6_ENABLE
-                ctl->server.port == KPOP_PORT &&
-#else
                 ctl->server.service && !strcmp(ctl->server.service, KPOP_PORT ) &&
-#endif
                 ctl->server.authenticate == A_KERBEROS_V4);
 
            stringdump("pollname", ctl->server.pollname); 
@@ -259,11 +255,7 @@ void dump_config(struct runctl *runp, struct query *querylist)
            stringdump("via", ctl->server.via); 
            stringdump("protocol", 
                       using_kpop ? "KPOP" : showproto(ctl->server.protocol));
-#ifndef INET6_ENABLE
-           numdump("port",  ctl->server.port);
-#else
-           stringdump("port",  ctl->server.service);
-#endif
+           stringdump("service",  ctl->server.service);
            numdump("timeout",  ctl->server.timeout);
            numdump("interval", ctl->server.interval);
 
@@ -280,8 +272,6 @@ void dump_config(struct runctl *runp, struct query *querylist)
                stringdump("auth", "any");
            else if (ctl->server.authenticate == A_PASSWORD)
                stringdump("auth", "password");
-           else if (ctl->server.authenticate == A_OTP)
-               stringdump("auth", "otp");
            else if (ctl->server.authenticate == A_NTLM)
                stringdump("auth", "ntlm");
            else if (ctl->server.authenticate == A_CRAM_MD5)
@@ -296,19 +286,21 @@ void dump_config(struct runctl *runp, struct query *querylist)
                stringdump("auth", "ssh");
            else if (ctl->server.authenticate == A_OTP)
                stringdump("auth", "otp");
+           else if (ctl->server.authenticate == A_MSN)
+               stringdump("auth", "msn");
 
-#if defined(HAVE_GETHOSTBYNAME) && defined(HAVE_RES_SEARCH)
+#ifdef HAVE_RES_SEARCH
            booldump("dns", ctl->server.dns);
-#endif /* HAVE_GETHOSTBYNAME && HAVE_RES_SEARCH */
+#endif /* HAVE_RES_SEARCH */
            booldump("uidl", ctl->server.uidl);
 
            listdump("aka", ctl->server.akalist);
            listdump("localdomains", ctl->server.localdomains);
 
-#if defined(linux) || defined(__FreeBSD__)
+#ifdef CAN_MONITOR
            stringdump("interface", ctl->server.interface);
            stringdump("monitor", ctl->server.monitor);
-#endif /* linux || __FreeBSD__ */
+#endif
 
            stringdump("plugin", ctl->server.plugin);
            stringdump("plugout", ctl->server.plugout);
@@ -317,7 +309,14 @@ void dump_config(struct runctl *runp, struct query *querylist)
                stringdump("esmtpname",ctl->server.esmtp_name);
            if (ctl->server.esmtp_password)
                stringdump("esmtppassword",ctl->server.esmtp_password);
-           booldump("tracepolls", ctl->tracepolls);
+           booldump("tracepolls", ctl->server.tracepolls);
+           indent(0);
+           switch(ctl->server.badheader) {
+               /* this is a hack - we map this to a boolean option for
+                * fetchmailconf purposes */
+               case BHREJECT: puts("'badheader': FALSE,"); break;
+               case BHACCEPT: puts("'badheader': TRUE,"); break;
+           }
 
            indent(0);
            fputs("'users': ", stdout);
@@ -333,10 +332,9 @@ void dump_config(struct runctl *runp, struct query *querylist)
        fprintf(stdout, "'localnames':[");
        for (idp = ctl->localnames; idp; idp = idp->next)
        {
-           char        namebuf[USERNAMELEN + 1];
+           char namebuf[USERNAMELEN + 1];
 
-           strncpy(namebuf, visbuf(idp->id), USERNAMELEN);
-           namebuf[USERNAMELEN] = '\0';
+           strlcpy(namebuf, visbuf(idp->id), sizeof(namebuf));
            if (idp->val.id2)
                fprintf(stdout, "(\"%s\", %s)", namebuf, visbuf(idp->val.id2));
            else
@@ -351,6 +349,7 @@ void dump_config(struct runctl *runp, struct query *querylist)
        booldump("fetchall", ctl->fetchall);
        booldump("keep", ctl->keep);
        booldump("flush", ctl->flush);
+       booldump("limitflush", ctl->limitflush);
        booldump("rewrite", ctl->rewrite);
        booldump("stripcr", ctl->stripcr); 
        booldump("forcecr", ctl->forcecr);
@@ -368,14 +367,13 @@ void dump_config(struct runctl *runp, struct query *querylist)
        else
            fputs("'lmtp':FALSE,\n", stdout);
            
-#ifdef INET6_ENABLE
-       stringdump("netsec", ctl->server.netsec);
-#endif /* INET6_ENABLE */
        stringdump("preconnect", ctl->preconnect);
        stringdump("postconnect", ctl->postconnect);
        numdump("limit", ctl->limit);
        numdump("warnings", ctl->warnings);
        numdump("fetchlimit", ctl->fetchlimit);
+       numdump("fetchsizelimit", ctl->fetchsizelimit);
+       numdump("fastuidl", ctl->fastuidl);
        numdump("batchlimit", ctl->batchlimit);
 #ifdef SSL_ENABLE
        booldump("ssl", ctl->use_ssl);
@@ -384,6 +382,7 @@ void dump_config(struct runctl *runp, struct query *querylist)
        stringdump("sslproto", ctl->sslproto);
        booldump("sslcertck", ctl->sslcertck);
        stringdump("sslcertpath", ctl->sslcertpath);
+       stringdump("sslcommonname", ctl->sslcommonname);
        stringdump("sslfingerprint", ctl->sslfingerprint);
 #endif /* SSL_ENABLE */
        numdump("expunge", ctl->expunge);
@@ -395,18 +394,13 @@ void dump_config(struct runctl *runp, struct query *querylist)
 
        indent('\0');
        fprintf(stdout, "'antispam':'");
-       if (!ctl->antispam)
-           fputs("',\n", stdout);
-       else
+       for (idp = ctl->antispam; idp; idp = idp->next)
        {
-           for (idp = ctl->antispam; idp; idp = idp->next)
-           {
-               fprintf(stdout, "%d", idp->val.status.num);
-               if (idp->next)
-                   fputs(" ", stdout);
-           }
-           fputs("',\n", stdout);
+           fprintf(stdout, "%d", idp->val.status.num);
+           if (idp->next)
+               fputs(" ", stdout);
        }
+       fputs("',\n", stdout);
        listdump("mailboxes", ctl->mailboxes);
 
        indent('}');