diff options
author | Michael Brown | 2007-01-11 05:51:20 +0100 |
---|---|---|
committer | Michael Brown | 2007-01-11 05:51:20 +0100 |
commit | 6918cf9e9e67e5b0fb79cae2f9da921b81cac399 (patch) | |
tree | af162c8e5142692024a568ec4513b898225d0ee5 /src/tests | |
parent | Fix bug in buffer.c, add buffer mini-unit test. (diff) | |
download | ipxe-6918cf9e9e67e5b0fb79cae2f9da921b81cac399.tar.gz ipxe-6918cf9e9e67e5b0fb79cae2f9da921b81cac399.tar.xz ipxe-6918cf9e9e67e5b0fb79cae2f9da921b81cac399.zip |
Change FTP to use a data buffer rather than a callback function.
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/ftptest.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/tests/ftptest.c b/src/tests/ftptest.c index c4795c04..d7208f94 100644 --- a/src/tests/ftptest.c +++ b/src/tests/ftptest.c @@ -4,9 +4,10 @@ #include <console.h> #include <vsprintf.h> #include <gpxe/async.h> +#include <gpxe/buffer.h> #include <gpxe/ftp.h> -static void test_ftp_callback ( char *data, size_t len ) { +static void print_ftp_response ( char *data, size_t len ) { unsigned int i; char c; @@ -23,18 +24,29 @@ static void test_ftp_callback ( char *data, size_t len ) { } void test_ftp ( struct sockaddr_tcpip *server, const char *filename ) { + char data[256]; + struct buffer buffer; struct ftp_request ftp; int rc; printf ( "FTP fetching %s\n", filename ); + memset ( &buffer, 0, sizeof ( buffer ) ); + buffer.addr = virt_to_phys ( data ); + buffer.len = sizeof ( data ); + memset ( &ftp, 0, sizeof ( ftp ) ); memcpy ( &ftp.server, server, sizeof ( ftp.server ) ); ftp.filename = filename; - ftp.callback = test_ftp_callback; + ftp.buffer = &buffer; rc = async_wait ( ftp_get ( &ftp ) ); if ( rc ) { printf ( "FTP fetch failed\n" ); + return; } + + printf ( "FTP received %d bytes\n", buffer.fill ); + + print_ftp_response ( data, buffer.fill ); } |