Add host based test for wget()

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1644 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2009-03-26 02:38:07 +00:00
parent e3f089a210
commit 9ab52a276a
5 changed files with 31 additions and 13 deletions

View File

@ -671,3 +671,5 @@
* Z80: Patch incorported: "[2696648] Z80: interrupt flag stored in parity bit" * Z80: Patch incorported: "[2696648] Z80: interrupt flag stored in parity bit"
(submitted by JPelletier). The is the same fix that was needed for the (submitted by JPelletier). The is the same fix that was needed for the
eZ80 and fixed in 0.4.2. eZ80 and fixed in 0.4.2.
* netutils: Added logic to support a simple wget() function
* examples/wget: Added a test for wget()

View File

@ -8,7 +8,7 @@
<tr align="center" bgcolor="#e4e4e4"> <tr align="center" bgcolor="#e4e4e4">
<td> <td>
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1> <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> </td>
</tr> </tr>
</table> </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; * 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 (submitted by JPelletier). The is the same fix that was needed for the
eZ80 and fixed in 0.4.2. 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; pascal-0.1.3 2009-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;

View File

@ -46,7 +46,9 @@
* Included Files * Included Files
****************************************************************************/ ****************************************************************************/
#include <nuttx/config.h> #ifndef CONFIG_NETUTILS_WEBCLIENT_HOST
# include <nuttx/config.h>
#endif
#include <sys/types.h> #include <sys/types.h>
/**************************************************************************** /****************************************************************************

View File

@ -43,11 +43,16 @@ typedef unsigned char uint8;
typedef unsigned short uint16; typedef unsigned short uint16;
typedef unsigned int uint32; typedef unsigned int uint32;
typedef unsigned char boolean; typedef unsigned char boolean;
# define HTONS(a) htons(a) # define HTONS(a) htons(a)
# define HTONL(a) htonl(a) # define HTONL(a) htonl(a)
# define CONFIG_CPP_HAVE_WARNING 1 # define CONFIG_CPP_HAVE_WARNING 1
# define FAR
# define ndbg(...) printf(__VA_ARGS__) # define ndbg(...) printf(__VA_ARGS__)
# define nvdbg(...) printf(__VA_ARGS__) # define nvdbg(...) printf(__VA_ARGS__)
# define TRUE (1) # define TRUE (1)
# define FALSE (0) # define FALSE (0)
# define ERROR (-1) # define ERROR (-1)

View File

@ -48,21 +48,25 @@
* Included Files * Included Files
****************************************************************************/ ****************************************************************************/
#include <nuttx/config.h> #ifndef CONFIG_NETUTILS_WEBCLIENT_HOST
#include <nuttx/compiler.h>
# 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/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
#include <errno.h> #include <errno.h>
#include <debug.h>
#include <netinet/in.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> #include <net/uip/webclient.h>
/**************************************************************************** /****************************************************************************
@ -236,7 +240,6 @@ static inline int wget_parseheaders(struct wget_s *ws)
{ {
int offset; int offset;
int ndx; int ndx;
char *dest;
offset = ws->offset; offset = ws->offset;
ndx = ws->ndx; 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) if (strncasecmp(ws->line, g_httpcontenttype, strlen(g_httpcontenttype)) == 0)
{ {
/* Found Content-type field. */ /* Found Content-type field. */
dest = strchr(ws->line, ';');
char *dest = strchr(ws->line, ';');
if (dest != NULL) if (dest != NULL)
{ {
*dest = 0; *dest = 0;
@ -283,7 +287,7 @@ static inline int wget_parseheaders(struct wget_s *ws)
#ifdef CONFIG_WEBCLIENT_GETHOST #ifdef CONFIG_WEBCLIENT_GETHOST
if (strncasecmp(ws->line, g_httplocation, strlen(g_httplocation)) == 0) 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) 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, int wget(FAR const char *host, uint16 port, FAR const char *file,
FAR char *buffer, int buflen, wget_callback_t callback) FAR char *buffer, int buflen, wget_callback_t callback)
{ {
#ifndef CONFIG_NETUTILS_WEBCLIENT_HOST
static uip_ipaddr_t addr; static uip_ipaddr_t addr;
#endif
struct sockaddr_in server; struct sockaddr_in server;
struct wget_s ws; struct wget_s ws;
char *dest; 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. */ /* First check if the host is an IP address. */
#ifndef CONFIG_NETUTILS_WEBCLIENT_HOST
if (!uiplib_ipaddrconv(host, (unsigned char *)addr)) if (!uiplib_ipaddrconv(host, (unsigned char *)addr))
{ {
/* 'host' does not point to a avalid address string. Try to resolve /* '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; addr = server.sin_addr.s_addr;
} }
#endif
/* Create a socket */ /* Create a socket */
@ -454,7 +462,6 @@ int wget(FAR const char *host, uint16 port, FAR const char *file,
} }
} }
okout:
close(sockfd); close(sockfd);
return OK; return OK;