summaryrefslogtreecommitdiffstats
path: root/src/core/monojob.c
diff options
context:
space:
mode:
authorMichael Brown2007-08-03 13:49:21 +0200
committerMichael Brown2007-08-03 13:49:21 +0200
commit218651e1259da924a19db66e7cb9ae885075892f (patch)
treede255dec650ac21b552c04d9ce83578ef7cd4cdc /src/core/monojob.c
parentPrint multiple commands per line in help (diff)
downloadipxe-218651e1259da924a19db66e7cb9ae885075892f.tar.gz
ipxe-218651e1259da924a19db66e7cb9ae885075892f.tar.xz
ipxe-218651e1259da924a19db66e7cb9ae885075892f.zip
Display name and status of each file as it is downloaded.
Diffstat (limited to 'src/core/monojob.c')
-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;
}