diff options
author | Michael Brown | 2005-05-02 01:58:45 +0200 |
---|---|---|
committer | Michael Brown | 2005-05-02 01:58:45 +0200 |
commit | f9f1d2c84c51ea2d03bd3c292037644afcebba38 (patch) | |
tree | c4b6474eb28ce767422940f558f7be79c85ee6c8 /src | |
parent | http.h obsoleted (no content) (diff) | |
download | ipxe-f9f1d2c84c51ea2d03bd3c292037644afcebba38.tar.gz ipxe-f9f1d2c84c51ea2d03bd3c292037644afcebba38.tar.xz ipxe-f9f1d2c84c51ea2d03bd3c292037644afcebba38.zip |
More URL parsing moved into url.c
Diffstat (limited to 'src')
-rw-r--r-- | src/core/nic.c | 42 |
1 files changed, 7 insertions, 35 deletions
diff --git a/src/core/nic.c b/src/core/nic.c index f846f360..53dac57e 100644 --- a/src/core/nic.c +++ b/src/core/nic.c @@ -291,48 +291,20 @@ int download_url ( char *url, int ( * process ) ( unsigned char *data, unsigned int blocknum, unsigned int len, int eof ) ) { - struct url_info url_info; struct protocol *proto; struct sockaddr_in server; + char *filename; - DBG ( "Loading %s\n", url ); + printf ( "Loading %s\n", url ); /* Parse URL */ - parse_url ( &url_info, url ); - - /* Identify protocol */ - proto = identify_protocol ( url_info.protocol ); - if ( ! proto ) { - if ( url_info.protocol ) { - printf ( "Unknown protocol %s\n", url_info.protocol ); - } else { - printf ( "No default protocols\n" ); - } - goto error_out; - } - - /* Resolve hostname */ - server.sin_addr = arptable[ARP_SERVER].ipaddr; - if ( url_info.host ) { - if ( ! resolv ( &server.sin_addr, url_info.host ) ) { - printf ( "Cannot resolve host %s\n", url_info.host ); - goto error_out; - } + if ( ! parse_url ( url, &proto, &server, &filename ) ) { + DBG ( "Unusable URL %s\n", url ); + return 0; } - - /* Resolve port number */ - server.sin_port = url_info.port ? - strtoul ( url_info.port, NULL, 10 ) : 0; - - /* Restore URL */ - unparse_url ( &url_info ); - + /* Call protocol's method to download the file */ - return proto->load ( url, &server, url_info.file, process ); - - error_out: - unparse_url ( &url_info ); - return 0; + return proto->load ( url, &server, filename, process ); } |