Advertise IPv6 support on the show-status page.
[privoxy.git] / loadcfg.c
index 76363eb..d1fb7c1 100644 (file)
--- a/loadcfg.c
+++ b/loadcfg.c
@@ -1,4 +1,4 @@
-const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.93 2009/03/18 21:46:26 fabiankeil Exp $";
+const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.96 2009/04/17 11:38:28 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/loadcfg.c,v $
@@ -35,6 +35,15 @@ const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.93 2009/03/18 21:46:26 fabiankeil
  *
  * Revisions   :
  *    $Log: loadcfg.c,v $
+ *    Revision 1.96  2009/04/17 11:38:28  fabiankeil
+ *    Add and use parse_forwarder_address() to reduce code duplication.
+ *
+ *    Revision 1.95  2009/04/17 11:34:34  fabiankeil
+ *    Style cosmetics for the IPv6 code.
+ *
+ *    Revision 1.94  2009/04/17 11:27:49  fabiankeil
+ *    Petr Pisar's privoxy-3.0.12-ipv6-3.diff.
+ *
  *    Revision 1.93  2009/03/18 21:46:26  fabiankeil
  *    Revert the last commit as there's a better way.
  *
@@ -1043,12 +1052,12 @@ struct configuration_spec * load_config(void)
                   break;
                }
             }
-#ifdef HAVE_GETADDRINFO
+#ifdef HAVE_RFC2553
             else
             {
                cur_acl->wildcard_dst = 1;
             }
-#endif /* def HAVE_GETADDRINFO */
+#endif /* def HAVE_RFC2553 */
 
             /*
              * Add it to the list.  Note we reverse the list to get the
@@ -1196,29 +1205,9 @@ struct configuration_spec * load_config(void)
 
             if (strcmp(p, ".") != 0)
             {
-               cur_fwd->forward_host = strdup(p);
-
-               if (*cur_fwd->forward_host == '[' && 
-                     NULL != (p = strchr(cur_fwd->forward_host, ']')))
-               {
-                  *p++ = '\0';
-                  memmove(cur_fwd->forward_host, cur_fwd->forward_host + 1,
-                        (size_t) (p - cur_fwd->forward_host));
-                  if (*p == ':')
-                  {
-                     cur_fwd->forward_port = atoi(++p);
-                  }
-               }
-               else if (NULL != (p = strchr(cur_fwd->forward_host, ':')))
-               {
-                  *p++ = '\0';
-                  cur_fwd->forward_port = atoi(p);
-               }
-
-               if (cur_fwd->forward_port <= 0)
-               {
-                  cur_fwd->forward_port = 8000;
-               }
+               cur_fwd->forward_port = 8000;
+               parse_forwarder_address(p, &cur_fwd->forward_host,
+                  &cur_fwd->forward_port);
             }
 
             /* Add to list. */
@@ -1269,31 +1258,12 @@ struct configuration_spec * load_config(void)
             /* Parse the SOCKS proxy host[:port] */
             p = vec[1];
 
+            /* XXX: This check looks like a bug. */
             if (strcmp(p, ".") != 0)
             {
-               cur_fwd->gateway_host = strdup(p);
-
-               if (*cur_fwd->gateway_host == '[' && 
-                     NULL != (p = strchr(cur_fwd->gateway_host, ']')))
-               {
-                  *p++ = '\0';
-                  memmove(cur_fwd->gateway_host, cur_fwd->gateway_host + 1,
-                        (size_t) (p - cur_fwd->gateway_host));
-                  if (*p == ':')
-                  {
-                     cur_fwd->gateway_port = atoi(++p);
-                  }
-               }
-               else if (NULL != (p = strchr(cur_fwd->gateway_host, ':')))
-               {
-                  *p++ = '\0';
-                  cur_fwd->gateway_port = atoi(p);
-               }
-
-               if (cur_fwd->gateway_port <= 0)
-               {
-                  cur_fwd->gateway_port = 1080;
-               }
+               cur_fwd->gateway_port = 1080;
+               parse_forwarder_address(p, &cur_fwd->gateway_host,
+                  &cur_fwd->gateway_port);
             }
 
             /* Parse the parent HTTP proxy host[:port] */
@@ -1301,29 +1271,9 @@ struct configuration_spec * load_config(void)
 
             if (strcmp(p, ".") != 0)
             {
-               cur_fwd->forward_host = strdup(p);
-
-               if (*cur_fwd->forward_host == '[' && 
-                     NULL != (p = strchr(cur_fwd->forward_host, ']')))
-               {
-                  *p++ = '\0';
-                  memmove(cur_fwd->forward_host, cur_fwd->forward_host + 1,
-                        (size_t) (p - cur_fwd->forward_host));
-                  if (*p == ':')
-                  {
-                     cur_fwd->forward_port = atoi(++p);
-                  }
-               }
-               else if (NULL != (p = strchr(cur_fwd->forward_host, ':')))
-               {
-                  *p++ = '\0';
-                  cur_fwd->forward_port = atoi(p);
-               }
-
-               if (cur_fwd->forward_port <= 0)
-               {
-                  cur_fwd->forward_port = 8000;
-               }
+               cur_fwd->forward_port = 8000;
+               parse_forwarder_address(p, &cur_fwd->forward_host,
+                  &cur_fwd->forward_port);
             }
 
             /* Add to list. */
@@ -1382,58 +1332,18 @@ struct configuration_spec * load_config(void)
             /* Parse the SOCKS proxy host[:port] */
             p = vec[1];
 
-            cur_fwd->gateway_host = strdup(p);
-
-            if (*cur_fwd->gateway_host == '[' && 
-                  NULL != (p = strchr(cur_fwd->gateway_host, ']')))
-            {
-               *p++ = '\0';
-               memmove(cur_fwd->gateway_host, cur_fwd->gateway_host + 1,
-                     (size_t) (p - cur_fwd->gateway_host));
-               if (*p == ':')
-               {
-                  cur_fwd->gateway_port = atoi(++p);
-               }
-            }
-            else if (NULL != (p = strchr(cur_fwd->gateway_host, ':')))
-            {
-               *p++ = '\0';
-               cur_fwd->gateway_port = atoi(p);
-            }
-
-            if (cur_fwd->gateway_port <= 0)
-            {
-               cur_fwd->gateway_port = 1080;
-            }
+            cur_fwd->gateway_port = 1080;
+            parse_forwarder_address(p, &cur_fwd->gateway_host,
+               &cur_fwd->gateway_port);
 
             /* Parse the parent HTTP proxy host[:port] */
             p = vec[2];
 
             if (strcmp(p, ".") != 0)
             {
-               cur_fwd->forward_host = strdup(p);
-
-               if (*cur_fwd->forward_host == '[' && 
-                     NULL != (p = strchr(cur_fwd->forward_host, ']')))
-               {
-                  *p++ = '\0';
-                  memmove(cur_fwd->forward_host, cur_fwd->forward_host + 1,
-                        (size_t) (p - cur_fwd->forward_host));
-                  if (*p == ':')
-                  {
-                     cur_fwd->forward_port = atoi(++p);
-                  }
-               }
-               else if (NULL != (p = strchr(cur_fwd->forward_host, ':')))
-               {
-                  *p++ = '\0';
-                  cur_fwd->forward_port = atoi(p);
-               }
-
-               if (cur_fwd->forward_port <= 0)
-               {
-                  cur_fwd->forward_port = 8000;
-               }
+               cur_fwd->forward_port = 8000;
+               parse_forwarder_address(p, &cur_fwd->forward_host,
+                  &cur_fwd->forward_port);
             }
 
             /* Add to list. */
@@ -1574,12 +1484,12 @@ struct configuration_spec * load_config(void)
                   break;
                }
             }
-#ifdef HAVE_GETADDRINFO
+#ifdef HAVE_RFC2553
             else
             {
                cur_acl->wildcard_dst = 1;
             }
-#endif /* def HAVE_GETADDRINFO */
+#endif /* def HAVE_RFC2553 */
 
             /*
              * Add it to the list.  Note we reverse the list to get the
@@ -1919,19 +1829,21 @@ struct configuration_spec * load_config(void)
 
    if ( NULL != config->haddr )
    {
-      if (*config->haddr == '[' && NULL != (p = strchr(config->haddr, ']')) &&
-            p[1] == ':' && 0 < (config->hport = atoi(p + 2)))
+      if ((*config->haddr == '[')
+         && (NULL != (p = strchr(config->haddr, ']')))
+         && (p[1] == ':')
+         && (0 < (config->hport = atoi(p + 2))))
       {
-         *p='\0';
-         memmove((void *) config->haddr, config->haddr + 1,
-               (size_t) (p - config->haddr));
+         *p = '\0';
+         memmove((void *)config->haddr, config->haddr + 1,
+            (size_t)(p - config->haddr));
       }
-      else if (NULL != (p = strchr(config->haddr, ':')) &&
-            0 < (config->hport = atoi(p + 1)))
+      else if (NULL != (p = strchr(config->haddr, ':'))
+         && (0 < (config->hport = atoi(p + 1))))
       {
          *p = '\0';
       }
-      else 
+      else
       {
          log_error(LOG_LEVEL_FATAL, "invalid bind port spec %s", config->haddr);
          /* Never get here - LOG_LEVEL_FATAL causes program exit */
@@ -2108,6 +2020,4 @@ static void savearg(char *command, char *argument, struct configuration_spec * c
   Local Variables:
   tab-width: 3
   end:
-
-  vim:softtabstop=3 shiftwidth=3
 */