[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: [PATCH] resbumit: wget support for no_proxy env var
From: Bernhard Fischer <rep.dot.nop () gmail ! com>
Date: 2007-07-24 21:23:34
Message-ID: 20070724212334.GA24001 () aon ! at
[Download RAW message or body]
On Tue, Jul 24, 2007 at 03:12:22PM -0600, dann frazier wrote:
>hey,
> The following patch adds support for the no_proxy envvar to the wget
>applet. Most of the code is lifted directly from GNU's wget source
>(with a few simplifications).
>
>Originally submitted here:
> http://article.gmane.org/gmane.linux.busybox/20296
>
>The only outstanding feedback I have is the request to use argz if
>available. I certainly don't mind adding this if someone can tell me
>how to properly check for its availability.
>
>fyi, my goal with this patch is to enhance the debian installer to
>allow users who specify a proxy to disable proxy access for certain
>servers. For example, to use an internal mirror while still using the
>proxy to install security updates.
That's what apt-proxy is for, but ok.
See below.
>
>--- busybox-1.6.0/networking/wget.c.orig 2007-06-18 20:09:36.000000000 +0100
>+++ busybox-1.6.0/networking/wget.c 2007-06-21 00:36:21.000000000 +0100
Please diff that against svn trunk, just in case.
>@@ -84,6 +84,51 @@
> }
> #endif
>
>+#if ENABLE_FEATURE_WGET_NOPROXY
>+char *strdupdelim (const char *beg, const char *end);
>+char *strdupdelim (const char *beg, const char *end)
which other applet uses this?
>+{
>+ char *res = xmalloc (end - beg + 1);
>+ memcpy (res, beg, end - beg);
>+ res[end - beg] = '\0';
>+ return res;
>+}
>+
>+/* Parse a string containing comma-separated elements, and return a
>+ vector of char pointers with the elements. Spaces following the
>+ commas are ignored. */
>+char **sepstring (const char *s);
>+char **sepstring (const char *s)
which other applet uses this?
>+{
>+ char **res;
>+ const char *p;
>+ int i = 0;
>+
>+ if (!s || !*s)
>+ return NULL;
>+ res = NULL;
>+ p = s;
>+ while (*s) {
>+ if (*s == ',') {
>+ res = xrealloc (res, (i + 2) * sizeof (char *));
>+ res[i] = strdupdelim (p, s);
>+ res[++i] = NULL;
>+ ++s;
>+ /* Skip the blanks following the ','. */
>+ while (*s == ' ')
>+ ++s;
skip_whitespace() ?
>+ p = s;
>+ } else {
>+ ++s;
>+ }
>+ }
>+ res = xrealloc (res, (i + 2) * sizeof (char *));
>+ res[i] = strdupdelim (p, s);
>+ res[i + 1] = NULL;
>+ return res;
>+}
>+#endif
This _sounds_ a bit bloated but i didn't check if we already have
infrastructure that could and should be reused.
>+
> int wget_main(int argc, char **argv);
> int wget_main(int argc, char **argv)
> {
>@@ -108,6 +153,11 @@
> bool got_clen = 0; /* got content-length: from server */
> int output_fd = -1;
> bool use_proxy = 1; /* Use proxies if env vars are set */
>+#if ENABLE_FEATURE_WGET_NOPROXY
>+ int i, j;
>+ char *tmp;
>+ char **no_proxy = NULL;
>+#endif
> const char *proxy_flag = "on"; /* Use proxies if env vars are set */
> const char *user_agent = "Wget";/* "User-Agent" header field */
> static const char * const keywords[] = {
>@@ -175,6 +225,22 @@
> server.host = target.host;
> server.port = target.port;
>
>+#if ENABLE_FEATURE_WGET_NOPROXY
>+ tmp = getenv ("no_proxy");
>+ if (tmp)
>+ no_proxy = sepstring((const char *)str_tolower(tmp));
>+
>+ for (i = 0; no_proxy && no_proxy[i]; i++){
>+ j = strlen(server.host) - strlen(no_proxy[i]);
>+ if (j < 0)
>+ continue;
>+ if (!strcmp(str_tolower(server.host + j),
>+ no_proxy[i])) {
>+ use_proxy = 0;
can you use the recently added ..._strings stuff?
You'd e.g. memchr for ',' set them to nil. Perhaps this makes the above
to public functions superfluous.
Also, what's the size(1) increase for this new option?
cheers,
_______________________________________________
busybox mailing list
busybox@busybox.net
http://busybox.net/cgi-bin/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic