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 &lt;spudmonkey@racsa.co.cr&gt;
 	* Z80: Patch incorported: &quot;[2696648] Z80: interrupt flag stored in parity bit&quot;
 	  (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 &lt;spudmonkey@racsa.co.cr&gt;
 
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