david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[monojob] Report ongoing job status as overall return status on timeout

If a job times out then use the most recent ongoing error status
reported via job_progress() (if available) as the overall return
status.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2013-11-01 15:13:33 +00:00
parent d1be9f4acc
commit dc7a023715
1 changed files with 5 additions and 2 deletions

View File

@ -69,6 +69,7 @@ int monojob_wait ( const char *string, unsigned long timeout ) {
unsigned long total;
unsigned int percentage;
int shown_percentage = 0;
int ongoing_rc;
int key;
int rc;
@ -97,10 +98,13 @@ int monojob_wait ( const char *string, unsigned long timeout ) {
last_keycheck = now;
}
/* Monitor progress */
ongoing_rc = job_progress ( &monojob, &progress );
/* Check for timeout, if applicable */
elapsed = ( now - start );
if ( timeout && ( elapsed >= timeout ) ) {
monojob_rc = -ETIMEDOUT;
monojob_rc = ( ongoing_rc ? ongoing_rc : -ETIMEDOUT );
break;
}
@ -109,7 +113,6 @@ int monojob_wait ( const char *string, unsigned long timeout ) {
if ( string && ( elapsed >= TICKS_PER_SEC ) ) {
if ( shown_percentage )
printf ( "\b\b\b\b \b\b\b\b" );
job_progress ( &monojob, &progress );
/* Normalise progress figures to avoid overflow */
completed = ( progress.completed / 128 );
total = ( progress.total / 128 );