wget now takes only a URL as a argument; not host + file name

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1654 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2009-03-28 16:30:10 +00:00
parent 68f8ca16e2
commit 4d00519a5a
6 changed files with 86 additions and 22 deletions

View File

@ -353,8 +353,7 @@ examples/wget
A simple web client example. It will obtain a file from a server using the HTTP A simple web client example. It will obtain a file from a server using the HTTP
protocol. Settings unique to this example include: protocol. Settings unique to this example include:
CONFIG_EXAMPLE_WGET_HOSTNAME - The host that serves the file CONFIG_EXAMPLE_WGET_URL - The URL of the file to get
CONFIG_EXAMPLE_WGET_FILENAME - The name of the file to get (with leading '/')
CONFIG_EXAMPLE_WGET_NOMAC - (May be defined to use software assigned MAC) CONFIG_EXAMPLE_WGET_NOMAC - (May be defined to use software assigned MAC)
CONFIG_EXAMPLE_WGET_IPADDR - Target IP address CONFIG_EXAMPLE_WGET_IPADDR - Target IP address
CONFIG_EXAMPLE_WGET_DRIPADDR - Default router IP addess CONFIG_EXAMPLE_WGET_DRIPADDR - Default router IP addess

View File

@ -37,12 +37,12 @@ WD = ${shell pwd}
TOPDIR = $(WD)/../.. TOPDIR = $(WD)/../..
include $(TOPDIR)/Make.defs include $(TOPDIR)/Make.defs
OBJS = host.o1 webclient.o1 OBJS = host.o1 webclient.o1 uip_parsehttpurl.o1
BIN = wget BIN = wget
HOSTCFLAGS += -DCONFIG_WEBCLIENT_HOST=1 HOSTCFLAGS += -DCONFIG_WEBCLIENT_HOST=1
HOSTCFLAGS += -I. -include hostdefs.h HOSTCFLAGS += -I. -include hostdefs.h
VPATH = $(TOPDIR)/netutils/webclient:. VPATH = $(TOPDIR)/netutils/webclient:$(TOPDIR)/netutils/uiplib:.
all: $(BIN) all: $(BIN)
.PHONY: clean context clean_context distclean .PHONY: clean context clean_context distclean
@ -56,11 +56,22 @@ net/uip:
net/uip/webclient.h: net/uip $(TOPDIR)/include/net/uip/webclient.h net/uip/webclient.h: net/uip $(TOPDIR)/include/net/uip/webclient.h
@cp -a $(TOPDIR)/include/net/uip/webclient.h net/uip/. @cp -a $(TOPDIR)/include/net/uip/webclient.h net/uip/.
$(BIN): net/uip/webclient.h $(OBJS) net/uip/uip-lib.h: net/uip $(TOPDIR)/include/net/uip/uip-lib.h
@cp -a $(TOPDIR)/include/net/uip/uip-lib.h net/uip/.
nuttx:
@mkdir nuttx
nuttx/config.h: nuttx
@touch nuttx/config.h
headers: net/uip/webclient.h net/uip/uip-lib.h nuttx/config.h
$(BIN): headers $(OBJS)
$(HOSTCC) $(HOSTLDFLAGS) $(OBJS) -o $@ $(HOSTCC) $(HOSTLDFLAGS) $(OBJS) -o $@
clean: clean:
@rm -f $(BIN).* *.o1 *~ @rm -f $(BIN).* *.o1 *~
@rm -rf net @rm -rf net nuttx

View File

@ -42,6 +42,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
#include <errno.h>
/**************************************************************************** /****************************************************************************
* Private Data * Private Data
@ -66,7 +67,7 @@ static void callback(FAR char **buffer, int offset, int datend, FAR int *buflen)
static void show_usage(const char *progname, int exitcode) static void show_usage(const char *progname, int exitcode)
{ {
fprintf(stderr, "USAGE: %s <host> <filename>\n", progname); fprintf(stderr, "USAGE: %s <url>\n", progname);
exit(exitcode); exit(exitcode);
} }
@ -80,13 +81,18 @@ static void show_usage(const char *progname, int exitcode)
int main(int argc, char **argv, char **envp) int main(int argc, char **argv, char **envp)
{ {
char buffer[1024]; char buffer[1024];
int ret;
if (argc != 3) if (argc != 2)
{ {
show_usage(argv[0], 1); show_usage(argv[0], 1);
} }
printf("WGET: Getting %s from %s\n", argv[2], argv[1]); printf("WGET: Getting %s\n", argv[1]);
wget(80, argv[1], argv[2], buffer, 1024, callback); ret = wget(argv[1], buffer, 1024, callback);
if (ret < 0)
{
fprintf(stderr, "WGET: wget failed: %s\n", strerror(errno));
}
return 0; return 0;
} }

View File

@ -1,12 +1,50 @@
/****************************************************************************
* examples/wget/hostdefs.c
*
* Copyright (C) 2009 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*****************************************************************************/
#ifndef __HOSTDEFS_H #ifndef __HOSTDEFS_H
#define __HOSTDEFS_H #define __HOSTDEFS_H
/****************************************************************************
* Included Files
*****************************************************************************/
# include <stdio.h> # include <stdio.h>
typedef unsigned char ubyte; /****************************************************************************
typedef unsigned short uint16; * Preprocessor Defintiions
typedef unsigned int uint32; *****************************************************************************/
typedef unsigned char boolean;
# define HTONS(a) htons(a) # define HTONS(a) htons(a)
# define HTONL(a) htonl(a) # define HTONL(a) htonl(a)
@ -22,4 +60,16 @@ typedef unsigned char boolean;
# define ERROR (-1) # define ERROR (-1)
# define OK (0) # define OK (0)
/****************************************************************************
* Type Definitions
*****************************************************************************/
typedef unsigned char uint8;
typedef unsigned char ubyte;
typedef unsigned short uint16;
typedef unsigned int uint32;
typedef unsigned char boolean;
typedef void *(*pthread_startroutine_t)(void *);
#endif /* __HOSTDEFS_H */ #endif /* __HOSTDEFS_H */

View File

@ -155,6 +155,6 @@ int user_start(int argc, char *argv[])
/* Then start the server */ /* Then start the server */
wget(80, CONFIG_EXAMPLE_WGET_HOSTNAME, CONFIG_EXAMPLE_WGET_FILENAME, g_iobuffer, 512, callback); wget(CONFIG_EXAMPLE_WGET_URL, g_iobuffer, 512, callback);
return 0; return 0;
} }

View File

@ -122,10 +122,9 @@ extern "C" {
* query answer. * query answer.
* *
* Input Parameters * Input Parameters
* port - The port number to which to connect, in host byte order. * url - A pointer to a string containing either the full URL to
* hostname - A pointer to a string containing either a host name or * the file to get (e.g., http://www.nutt.org/index.html, or
* a numerical IP address in dotted decimal notation (e.g., 192.168.23.1). * http://192.168.23.1:80/index.html).
* filename - A pointer to the name of the file to get.
* buffer - A user provided buffer to receive the file data (also * buffer - A user provided buffer to receive the file data (also
* used for the outgoing GET request * used for the outgoing GET request
* buflen - The size of the user provided buffer * buflen - The size of the user provided buffer
@ -138,9 +137,8 @@ extern "C" {
* *
****************************************************************************/ ****************************************************************************/
EXTERN int wget(uint16 port, EXTERN int wget(FAR const char *url, FAR char *buffer, int buflen,
FAR const char *hostname, FAR const char *filename, wget_callback_t callback);
FAR char *buffer, int buflen, wget_callback_t callback);
#undef EXTERN #undef EXTERN
#ifdef __cplusplus #ifdef __cplusplus