aboutsummaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorMichael Brown <mcb30@etherboot.org>2007-08-03 12:49:21 +0100
committerMichael Brown <mcb30@etherboot.org>2007-08-03 12:49:21 +0100
commit218651e1259da924a19db66e7cb9ae885075892f (patch)
treede255dec650ac21b552c04d9ce83578ef7cd4cdc /src/core
parent6e46dddc2c7521a076a4d274e4a89a69e9c1981d (diff)
downloadipxe-218651e1259da924a19db66e7cb9ae885075892f.tar.gz
Display name and status of each file as it is downloaded.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/monojob.c21
1 files changed, 17 insertions, 4 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;
}