summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2005-05-02 01:58:45 +0200
committerMichael Brown2005-05-02 01:58:45 +0200
commitf9f1d2c84c51ea2d03bd3c292037644afcebba38 (patch)
treec4b6474eb28ce767422940f558f7be79c85ee6c8 /src
parenthttp.h obsoleted (no content) (diff)
downloadipxe-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.c42
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 );
}