From 9ab52a276ae31205d49d337b6ac95229dcf52562 Mon Sep 17 00:00:00 2001 From: patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> Date: Thu, 26 Mar 2009 02:38:07 +0000 Subject: [PATCH] Add host based test for wget() git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1644 42af7a65-404d-4744-a932-0658087f49c3 --- ChangeLog | 2 ++ Documentation/NuttX.html | 4 +++- include/net/uip/webclient.h | 4 +++- netutils/dhcpd/dhcpd.c | 5 +++++ netutils/webclient/webclient.c | 29 ++++++++++++++++++----------- 5 files changed, 31 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 787750476e..424dacb91b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -671,3 +671,5 @@ * Z80: Patch incorported: "[2696648] Z80: interrupt flag stored in parity bit" (submitted by JPelletier). The is the same fix that was needed for the eZ80 and fixed in 0.4.2. + * netutils: Added logic to support a simple wget() function + * examples/wget: Added a test for wget() diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html index 086552061a..59e40d1d67 100644 --- a/Documentation/NuttX.html +++ b/Documentation/NuttX.html @@ -8,7 +8,7 @@ <tr align="center" bgcolor="#e4e4e4"> <td> <h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1> - <p>Last Updated: March 22, 2009</p> + <p>Last Updated: March 25, 2009</p> </td> </tr> </table> @@ -1362,6 +1362,8 @@ nuttx-0.4.4 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> * Z80: Patch incorported: "[2696648] Z80: interrupt flag stored in parity bit" (submitted by JPelletier). The is the same fix that was needed for the eZ80 and fixed in 0.4.2. + * netutils: Added logic to support a simple wget() function + * examples/wget: Added a test for wget() pascal-0.1.3 2009-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> diff --git a/include/net/uip/webclient.h b/include/net/uip/webclient.h index 554ec3adf5..a20b5eac1c 100644 --- a/include/net/uip/webclient.h +++ b/include/net/uip/webclient.h @@ -46,7 +46,9 @@ * Included Files ****************************************************************************/ -#include <nuttx/config.h> +#ifndef CONFIG_NETUTILS_WEBCLIENT_HOST +# include <nuttx/config.h> +#endif #include <sys/types.h> /**************************************************************************** diff --git a/netutils/dhcpd/dhcpd.c b/netutils/dhcpd/dhcpd.c index 53e7462b28..be7a5c3afe 100644 --- a/netutils/dhcpd/dhcpd.c +++ b/netutils/dhcpd/dhcpd.c @@ -43,11 +43,16 @@ typedef unsigned char uint8; typedef unsigned short uint16; typedef unsigned int uint32; typedef unsigned char boolean; + # define HTONS(a) htons(a) # define HTONL(a) htonl(a) + # define CONFIG_CPP_HAVE_WARNING 1 +# define FAR + # define ndbg(...) printf(__VA_ARGS__) # define nvdbg(...) printf(__VA_ARGS__) + # define TRUE (1) # define FALSE (0) # define ERROR (-1) diff --git a/netutils/webclient/webclient.c b/netutils/webclient/webclient.c index d00fd29b74..62c4500484 100644 --- a/netutils/webclient/webclient.c +++ b/netutils/webclient/webclient.c @@ -48,21 +48,25 @@ * Included Files ****************************************************************************/ -#include <nuttx/config.h> -#include <nuttx/compiler.h> +#ifndef CONFIG_NETUTILS_WEBCLIENT_HOST + +# include <nuttx/config.h> +# include <nuttx/compiler.h> +# include <debug.h> + +# include <net/uip/uip.h> +# include <net/uip/uip-lib.h> +# include <net/uip/resolv.h> + +#endif #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #include <string.h> #include <errno.h> -#include <debug.h> #include <netinet/in.h> - -#include <net/uip/uip.h> -#include <net/uip/uip-lib.h> -#include <net/uip/resolv.h> #include <net/uip/webclient.h> /**************************************************************************** @@ -236,7 +240,6 @@ static inline int wget_parseheaders(struct wget_s *ws) { int offset; int ndx; - char *dest; offset = ws->offset; ndx = ws->ndx; @@ -269,7 +272,8 @@ static inline int wget_parseheaders(struct wget_s *ws) if (strncasecmp(ws->line, g_httpcontenttype, strlen(g_httpcontenttype)) == 0) { /* Found Content-type field. */ - dest = strchr(ws->line, ';'); + + char *dest = strchr(ws->line, ';'); if (dest != NULL) { *dest = 0; @@ -283,7 +287,7 @@ static inline int wget_parseheaders(struct wget_s *ws) #ifdef CONFIG_WEBCLIENT_GETHOST if (strncasecmp(ws->line, g_httplocation, strlen(g_httplocation)) == 0) { - dest = ws->line + strlen(g_httplocation) - 1; + char *dest = ws->line + strlen(g_httplocation) - 1; if (strncmp(dest, g_httphttp, strlen(g_httphttp)) == 0) { @@ -332,7 +336,9 @@ static inline int wget_parseheaders(struct wget_s *ws) int wget(FAR const char *host, uint16 port, FAR const char *file, FAR char *buffer, int buflen, wget_callback_t callback) { +#ifndef CONFIG_NETUTILS_WEBCLIENT_HOST static uip_ipaddr_t addr; +#endif struct sockaddr_in server; struct wget_s ws; char *dest; @@ -342,6 +348,7 @@ int wget(FAR const char *host, uint16 port, FAR const char *file, /* First check if the host is an IP address. */ +#ifndef CONFIG_NETUTILS_WEBCLIENT_HOST if (!uiplib_ipaddrconv(host, (unsigned char *)addr)) { /* 'host' does not point to a avalid address string. Try to resolve @@ -357,6 +364,7 @@ int wget(FAR const char *host, uint16 port, FAR const char *file, addr = server.sin_addr.s_addr; } +#endif /* Create a socket */ @@ -454,7 +462,6 @@ int wget(FAR const char *host, uint16 port, FAR const char *file, } } -okout: close(sockfd); return OK; -- GitLab