diff --git a/src/logging.c b/src/logging.c index 0c70d3b..b02b883 100644 --- a/src/logging.c +++ b/src/logging.c @@ -645,30 +645,33 @@ void nwipe_log_summary( nwipe_context_t** ptr, int nwipe_selected ) total_duration_seconds = (u64) c[i]->duration; - if( total_duration_seconds % 60 ) - { - minutes = total_duration_seconds / 60; + // if( total_duration_seconds % 60 ) + // { + // minutes = total_duration_seconds / 60; + // + // seconds = total_duration_seconds - ( minutes * 60 ); + // } + // else + // { + // minutes = total_duration_seconds / 60; + // + // seconds = 0; + // } + // if( minutes > 59 ) + // { + // hours = minutes / 60; + // if( minutes % 60 ) + // { + // minutes = minutes - ( hours * 60 ); + // } + // else + // { + // minutes = 0; + // } + // } - seconds = total_duration_seconds - ( minutes * 60 ); - } - else - { - minutes = total_duration_seconds / 60; - - seconds = 0; - } - if( minutes > 59 ) - { - hours = minutes / 60; - if( minutes % 60 ) - { - minutes = minutes - ( hours * 60 ); - } - else - { - minutes = 0; - } - } + /* Convert binary seconds into three binary variables, hours, minutes and seconds */ + convert_seconds_to_hours_minutes_seconds( total_duration_seconds, &hours, &minutes, &seconds ); /* Device Model */ strncpy( model, c[i]->device_model, 17 ); @@ -779,3 +782,33 @@ void Determine_bandwidth_nomenclature( u64 speed, char* result, int result_array snprintf( result, result_array_size, "%4llu B/s", speed / INT64_C( 1 ) ); } } + +void convert_seconds_to_hours_minutes_seconds( u64 total_seconds, int* hours, int* minutes, int* seconds ) +{ + /* Convert binary seconds into binary hours, minutes and seconds */ + + if( total_seconds % 60 ) + { + *minutes = total_seconds / 60; + + *seconds = total_seconds - ( *minutes * 60 ); + } + else + { + *minutes = total_seconds / 60; + + *seconds = 0; + } + if( *minutes > 59 ) + { + *hours = *minutes / 60; + if( *minutes % 60 ) + { + *minutes = *minutes - ( *hours * 60 ); + } + else + { + *minutes = 0; + } + } +} diff --git a/src/logging.h b/src/logging.h index 86d199a..8015e4b 100644 --- a/src/logging.h +++ b/src/logging.h @@ -41,5 +41,6 @@ void nwipe_perror( int nwipe_errno, const char* f, const char* s ); int nwipe_log_sysinfo(); void nwipe_log_summary( nwipe_context_t**, int ); // This produces the wipe status table on exit void Determine_bandwidth_nomenclature( u64, char*, int ); +void convert_seconds_to_hours_minutes_seconds( u64, int*, int*, int* ); #endif /* LOGGING_H_ */ diff --git a/src/nwipe.c b/src/nwipe.c index 325caca..92d682e 100644 --- a/src/nwipe.c +++ b/src/nwipe.c @@ -437,6 +437,10 @@ int main( int argc, char** argv ) } /* Wait for all the wiping threads to finish, but don't wait if we receive the terminate signal */ + + /* set getch delay to 2/10th second. */ + halfdelay( 10 ); + i = 0; while( i < nwipe_selected && terminate_signal == 0 ) { @@ -454,7 +458,7 @@ int main( int argc, char** argv ) i++; continue; } - sleep( 2 ); /* DO NOT REMOVE ! Stops the routine hogging CPU cycles */ + sleep( 1 ); /* DO NOT REMOVE ! Stops the routine hogging CPU cycles */ } if( terminate_signal != 1 ) @@ -464,6 +468,7 @@ int main( int argc, char** argv ) do { sleep( 1 ); + } while( terminate_signal != 1 ); } } @@ -577,6 +582,13 @@ int main( int argc, char** argv ) void* signal_hand( void* ptr ) { int sig; + int hours; + int minutes; + int seconds; + + hours = 0; + minutes = 0; + seconds = 0; // Define signals that this handler should react to sigset_t sigset; @@ -588,6 +600,7 @@ void* signal_hand( void* ptr ) sigaddset( &sigset, SIGUSR1 ); int i; + char eta[9]; /* Set up the structs we will use for the data required. */ nwipe_thread_data_ptr_t* nwipe_thread_data_ptr; @@ -642,14 +655,20 @@ void* signal_hand( void* ptr ) { status = "[syncing]"; } + + convert_seconds_to_hours_minutes_seconds( c[i]->eta, &hours, &minutes, &seconds ); + nwipe_log( NWIPE_LOG_INFO, - "%s: %05.2f%%, round %i of %i, pass %i of %i %s", + "%s: %05.2f%%, round %i of %i, pass %i of %i, eta %02i:%02i:%02i, %s", c[i]->device_name, c[i]->round_percent, c[i]->round_working, c[i]->round_count, c[i]->pass_working, c[i]->pass_count, + hours, + minutes, + seconds, status ); } else