From: Enlightenment C. <no...@cv...> - 2008-08-13 05:29:47
|
Enlightenment CVS committal Author : englebass Project : e_modules Module : weather Dir : e_modules/weather Modified Files: e_mod_main.c Log Message: Better check for missing http_proxy env. =================================================================== RCS file: /cvs/e/e_modules/weather/e_mod_main.c,v retrieving revision 1.63 retrieving revision 1.64 diff -u -3 -r1.63 -r1.64 --- e_mod_main.c 18 May 2008 16:24:43 -0000 1.63 +++ e_mod_main.c 13 Aug 2008 05:29:43 -0000 1.64 @@ -57,7 +57,9 @@ { const char *host; int port; -} proxy; +} proxy = { + NULL, 0 +}; /* Module Function Protos */ static void _weather_cb_mouse_down (void *data, Evas * e, Evas_Object * obj, @@ -442,31 +444,36 @@ static void _weather_get_proxy (void) { - char env[128]; + char *env; - snprintf (env, sizeof (env), "%s", getenv ("http_proxy")); - if (!env[0]) snprintf (env, sizeof (env), "%s", getenv ("HTTP_PROXY")); + env = getenv ("http_proxy"); + if ((!env) || (!*env)) env = getenv ("HTTP_PROXY"); + if ((!env) || (!*env)) return; if (strncmp (env, "http://", 7)) return; char *host = NULL; char *p; int port = 0; + env = strdup(env); host = strchr (env, ':'); host += 3; p = strchr (host, ':'); if (p) - { - *p = 0; - p++; - if (sscanf (p, "%d", &port) != 1) - port = 0; - } + { + *p = 0; + p++; + if (sscanf (p, "%d", &port) != 1) + port = 0; + } + // FIXME: A proxy doesn't necessarily need a port if ((host) && (port)) - { - proxy.host = evas_stringshare_add (host); - proxy.port = port; - } + { + if (proxy.host) evas_stringshare_del(proxy.host); + proxy.host = evas_stringshare_add (host); + proxy.port = port; + } + free(env); } static int |