mirror of https://github.com/ipxe/ipxe.git
Display name and status of each file as it is downloaded.
parent
6e46dddc2c
commit
218651e125
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue