david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

Display name and status of each file as it is downloaded.

This commit is contained in:
Michael Brown 2007-08-03 12:49:21 +01:00
parent 6e46dddc2c
commit 218651e125
5 changed files with 30 additions and 18 deletions

View File

@ -16,6 +16,8 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <gpxe/process.h>
#include <console.h>
@ -54,11 +56,14 @@ struct job_interface monojob = {
/**
* Wait for single foreground job to complete
*
* @v string Job description to display
* @ret rc Job final status code
*/
int monojob_wait ( void ) {
int monojob_wait ( const char *string ) {
int key;
int rc;
printf ( "%s... ", string );
monojob_rc = -EINPROGRESS;
while ( monojob_rc == -EINPROGRESS ) {
step();
@ -67,12 +72,20 @@ int monojob_wait ( void ) {
switch ( key ) {
case CTRL_C:
job_kill ( &monojob );
return -ECANCELED;
break;
rc = -ECANCELED;
goto done;
default:
break;
}
}
}
return monojob_rc;
rc = monojob_rc;
done:
if ( rc ) {
printf ( "%s\n", strerror ( rc ) );
} else {
printf ( "ok\n" );
}
return rc;
}

View File

@ -10,6 +10,6 @@
struct job_interface;
extern struct job_interface monojob;
extern int monojob_wait ( void );
extern int monojob_wait ( const char *string );
#endif /* _GPXE_MONOJOB_H */

View File

@ -61,15 +61,20 @@ static int boot_filename ( const char *filename ) {
return -ENOMEM;
}
if ( ( rc = imgfetch ( image, filename,
register_and_autoexec_image ) ) != 0 ) {
register_and_autoload_image ) ) != 0 ) {
printf ( "Could not load %s: %s\n",
filename, strerror ( rc ) );
goto done;
}
if ( ( rc = imgexec ( image ) ) != 0 ) {
printf ( "Could not boot %s: %s\n",
filename, strerror ( rc ) );
image_put ( image );
return rc;
goto done;
}
done:
image_put ( image );
return 0;
return rc;
}
/**

View File

@ -56,15 +56,9 @@ int dhcp ( struct net_device *netdev ) {
}
/* Perform DHCP */
printf ( "DHCP (%s %s)...", netdev->name, netdev_hwaddr ( netdev ) );
printf ( "DHCP (%s %s)", netdev->name, netdev_hwaddr ( netdev ) );
if ( ( rc = start_dhcp ( &monojob, netdev, dhcp_success ) ) == 0 )
rc = monojob_wait();
if ( rc == 0 ) {
printf ( "done\n" );
} else {
printf ( "failed (%s)\n", strerror ( rc ) );
}
rc = monojob_wait ( "" );
return rc;
}

View File

@ -53,7 +53,7 @@ int imgfetch ( struct image *image, const char *uri_string,
if ( ( rc = create_downloader ( &monojob, image, image_register,
LOCATION_URI, uri ) ) == 0 )
rc = monojob_wait();
rc = monojob_wait ( uri_string );
uri_put ( uri );
return rc;