c4795c04c0bd3069082bfe2a932f694908e6a7a1
[people/xl0/gpxe.git] / src / tests / ftptest.c
1 #include <stdint.h>
2 #include <string.h>
3 #include <byteswap.h>
4 #include <console.h>
5 #include <vsprintf.h>
6 #include <gpxe/async.h>
7 #include <gpxe/ftp.h>
8
9 static void test_ftp_callback ( char *data, size_t len ) {
10         unsigned int i;
11         char c;
12
13         for ( i = 0 ; i < len ; i++ ) {
14                 c = data[i];
15                 if ( c == '\r' ) {
16                         /* Print nothing */
17                 } else if ( ( c == '\n' ) || ( c >= 32 ) || ( c <= 126 ) ) {
18                         putchar ( c );
19                 } else {
20                         putchar ( '.' );
21                 }
22         }
23 }
24
25 void test_ftp ( struct sockaddr_tcpip *server, const char *filename ) {
26         struct ftp_request ftp;
27         int rc;
28
29         printf ( "FTP fetching %s\n", filename );
30         
31         memset ( &ftp, 0, sizeof ( ftp ) );
32         memcpy ( &ftp.server, server, sizeof ( ftp.server ) );
33         ftp.filename = filename;
34         ftp.callback = test_ftp_callback;
35
36         rc = async_wait ( ftp_get ( &ftp ) );
37         if ( rc ) {
38                 printf ( "FTP fetch failed\n" );
39         }
40 }