diff options
author | Michael Brown <mcb30@etherboot.org> | 2007-08-03 12:49:21 +0100 |
---|---|---|
committer | Michael Brown <mcb30@etherboot.org> | 2007-08-03 12:49:21 +0100 |
commit | 218651e1259da924a19db66e7cb9ae885075892f (patch) | |
tree | de255dec650ac21b552c04d9ce83578ef7cd4cdc | |
parent | 6e46dddc2c7521a076a4d274e4a89a69e9c1981d (diff) | |
download | ipxe-218651e1259da924a19db66e7cb9ae885075892f.tar.gz |
Display name and status of each file as it is downloaded.
-rw-r--r-- | src/core/monojob.c | 21 | ||||
-rw-r--r-- | src/include/gpxe/monojob.h | 2 | ||||
-rw-r--r-- | src/usr/autoboot.c | 13 | ||||
-rw-r--r-- | src/usr/dhcpmgmt.c | 10 | ||||
-rw-r--r-- | src/usr/imgmgmt.c | 2 |
5 files changed, 30 insertions, 18 deletions
diff --git a/src/core/monojob.c b/src/core/monojob.c index b4042a3d..ea9bc834 100644 --- a/src/core/monojob.c +++ b/src/core/monojob.c @@ -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; } diff --git a/src/include/gpxe/monojob.h b/src/include/gpxe/monojob.h index f6cebb6b..aaa38d03 100644 --- a/src/include/gpxe/monojob.h +++ b/src/include/gpxe/monojob.h @@ -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 */ diff --git a/src/usr/autoboot.c b/src/usr/autoboot.c index 2afe596e..91836978 100644 --- a/src/usr/autoboot.c +++ b/src/usr/autoboot.c @@ -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; } /** diff --git a/src/usr/dhcpmgmt.c b/src/usr/dhcpmgmt.c index f1eb2d63..bd05c5ee 100644 --- a/src/usr/dhcpmgmt.c +++ b/src/usr/dhcpmgmt.c @@ -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; } diff --git a/src/usr/imgmgmt.c b/src/usr/imgmgmt.c index 0a77469a..bead4867 100644 --- a/src/usr/imgmgmt.c +++ b/src/usr/imgmgmt.c @@ -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; |